VituixCAD

Rev 2.0.5.0 (2018-10-02) with IR to FR conversion is out now. This software is more or less beta all the time :)

Manual in EN will be updated in few days but I suppose FFT tool should be quite easy to learn if one has played with measurement softwares.

Kimmo thank you, very good feature. The common impulse and frequency window is an excellent idea, clear, fast, missing in some measuring systems.
 
^Thanks!

Manual in English updated for rev. 2.0.5.0 (refresh if needed). German translation has been delayed for few months due to continuous changes. Maybe it's good time to update that too.

I can add support also for other than ARTA pir and CLIO mls files, if specification for binary file format is available. I'll leave searching, asking/begging and investigations to users who need to convert other IR formats to frequency responses.
Generally, I'm hoping that adequate FFT features would be available in measurement programs. External tools and add-ons need (free) work and using is extra step in design procedure.
 
Rev 2.0.5.0 (2018-10-02) with IR to FR conversion is out now. This software is more or less beta all the time :)

Manual in EN will be updated in few days but I suppose FFT tool should be quite easy to learn if one has played with measurement softwares.
Wow, very nice. :cool:

I particularly like the real time update of the frequency response while the cursors in the impulse response are being adjusted. This is great for seeing the effect of reflections in the impulse response and avoiding them.

I did have a strange issue where choosing FFT length 4096 or 8192 was causing a large shift in the signal level in the FR window relative to other FFT length choices, but after opening a few different files I'm not able to reproduce it again.
 
I did have a strange issue where choosing FFT length 4096 or 8192...

Most probable reason is that 4096 and 8192 were shorter than total length of time window. Manual adjustment of FFT length is possible after window adjustments are done but shortening of automatic selection has some risks.
Automatic selection is possible to lock, but that would prevent user to increase accuracy/resolution at low frequencies. Limiting of shortest possible FFT length would be more sophisticated and user friendly.
 
Last edited:
^Could you tell me where you don't see a change?
If you mean Invert bypass button in version 1.1, that inverts bypass status of all blocks in selected way. No problem to create and set up filter chain which does not change transfer function when bypass statuses are inverted.
 
Please download and install the latest build of rev 2.0.5.1 (2018-10-06) to get all new and modified features listed in changelog:

* Reading of txt/frd/zma files changed more flexible to allow empty lines, comments between data rows, scientific notation and comma as field separator.

Conversion IR to FR
* Added magnitude scaling.
* Added 'Info header' checkbox. Writes metadata to output files.
* Added support for drag&drop.
 
I am trying VituixCAD now in Wine on Linux.

I just used the manual on the website.
I only have two major issues;

1 - moving parts is extremely slow when the grid is on (when grid is turned off it works fine)
2 - if I go to options I get a error "InvalidArgument=Value of '-1' is not valid for 'index'

This is the log file;

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: InvalidArgument=Value of '-1' is not valid for 'index'.
Parameter name: index
at System.Windows.Forms.ComboBox.ObjectCollection.get_Item(Int32 index)
at Vituixman.FormOptions.RBmCpnukLF(Object , DrawItemEventArgs )
at System.Windows.Forms.ComboBox.OnDrawItem(DrawItemEventArgs e)
at System.Windows.Forms.ComboBox.WmReflectDrawItem(Message& m)
at System.Windows.Forms.ComboBox.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
VituixCAD2
Assembly Version: 2.0.5.1
Win32 Version: 2.0.5.1
CodeBase: file:///C:/Program%20Files/VituixCAD/VituixCAD2.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
hjiylwi3
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
 
^I don't know what is going on with Wine but you could try to download and install the latest build VituixCAD2_setup.exe having few workarounds:
* Schematic and grid is drawn to visible area of picture box only (+5px extra to improve scrolling). This is not required to get high speed on real Windows.
* Exception handling added for combo boxes in Options window. This does nothing except prevents crash to enable setting and saving of valid options. Error might be related to few changes in data types in user config. Real Window with newer .NET versions does not care about that.

You could also try to test newer .NET engine. Instructions by jlaakso is for .NET 4.0 which is very old+obsolete. Some functions might be better now. New .NET versions support older.
 
Last edited:
Hi folks,

first of all, big thanks to Kimmo for creating this nice piece of software! I like the ease of use and the visualization capabilities very much!

However, I have a few problems. Not sure if its my fault or if there are actual bugs in the software... I am only making active crossovers and corrections, and I measure using REW (again, ease of use). However, if I design filter settings in REW to linearise a driver and then recreate the same filters in VituixCAD I get quite different results (and yes, I already looked into the "Active PEQ response as analog RCL" setting). If I implement said filters generated in REW in my DSP-setup using EqualizerAPO, the response predicted by REW is practically spot on. I know that there are different approaches to implement PEQs etc. and that there is no standard. I'd greatly appreciate if there was a way to get VituixCAD to handle these things like REW/EqAPO does. I think there are quite a few people out there using these two tools.

Additionally, it would be really nice if VituixCAD could learn to read and edit the text exported filter settings of REW, which also work as config files for EqAPO. However, only makes sense if VituixCAD gets the same transfer function as REW/EqAPO from these settings.

Another thing I stumbled upon: I was looking for a quick and easy way to linearise my frequency response, so I loaded it into the calculator tool, mirrored it and then loaded the result as active filter via the transfer function file block. I expected to see a straight line as result, but got this:
attachment.php

Admittedly, this is quite a bit more linear than my initial response, yet not what I expected. Anything else (besides the obvious, manually setting filters) I can do to, well, basically normalize my responses?
 

Attachments

  • Inversekorrektur.png
    Inversekorrektur.png
    35.2 KB · Views: 678
However, if I design filter settings in REW to linearise a driver and then recreate the same filters in VituixCAD I get quite different results (and yes, I already looked into the "Active PEQ response as analog RCL" setting).

Active PEQ response as analog RCL is not only setting which defines response compatibility with DSP systems in real world. The other significant settings are:
- Sample rate in Impulse response window
- Active IIR response as digital biquad in Options window
- Bessel phase normalized in Options window
- Shelving frequency at middle gain in Options window.

Those selections are not necessarily enough for all existing dsp systems. The biggest problem is that user has responsibility to verify response features of dsp and select compatibility settings in VituixCAD. This is not easy and fast task for me either, and I've made some bad choices while designing speakers with dsp. Therefore I've had long term plan to replace previous five settings with a list of supported or compatible dsp systems. UI could be single combo box in Options window or in Drivers tab.
I don't have EqualizerAPO installed, so I don't know yet what settings are wrong in your case.

Comparing of responses in VituixCAD and dsp system should not be done with measured acoustical responses. Keep ideal flat response in both applications and compare responses of single equalizer type (LP, HP, PEQ, SHP6/12, SLP6/12) at a time. Select correct sample rate and check Active IIR response as digital biquad before response comparison.
 
Rev. 2.0.5.2 (2018-10-09)
* 'Active PEQ response as analog RLC', 'Active IIR response as digital biquad', 'Bessel phase normalized' and 'Shelving frequency at middle gain' checkboxes replaced with 'DSP system' combo box. Available options are: Analog, Behringer DCX 96k, FourAudio PPA 48k, Hypex PSC 48k, Hypex FA 192k, miniDSP 48k, miniDSP 96k, Xilica XA/XP 96k. Select 'Analog' for passive or active filter with linear circuits.
* Sample rate in Impulse response window does not change sample rate of active dsp crossover. Sample rate of crossover is defined by 'DSP system' selection in Options window.
 
^The latest revision makes life a bit easier with dsp compatibility settings as long as suitable option exists in 'DSP system' list. If not, compatible option might be difficult to figure out. I can help with that and add missing dsp gear to the list, but four things are needed from filter design program of dsp system:
1) Frequency response of Peak/Notch filter: 1000 Hz, +12 dB, Q=1.0
2) Frequency response of Bessel Low pass filter: 1000 Hz, 12 dB/oct.
3) Frequency response of 2nd order Shelving Low pass filter: 1000 Hz, +12 dB, Q=0.707
4) Sample rate of dsp device.
 
Last edited:
If I implement said filters generated in REW in my DSP-setup using EqualizerAPO, the response predicted by REW is practically spot on. I know that there are different approaches to implement PEQs etc. and that there is no standard. I'd greatly appreciate if there was a way to get VituixCAD to handle these things like REW/EqAPO does. I think there are quite a few people out there using these two tools.

I studied and tested EqualizerAPO a bit. It is able import frequency response of filter to graphic equalizer with variable band option. No problem to export driver's response from VituixCAD and import to EquAPO, though response file has close to 600 frequency points. Exact match is available if needed.

EqualizerAPO has common filter types with VituixCAD but those are not necessarily default/initial values. In addition, parameters of typical/standard shelving filters might be difficult to find because EquAPO has adjustable slope. HP/LP filters are single biquads (as in Hypex), which makes crossover design quite difficult and slow. Sample rate of dsp engine depends on settings of sound card which makes difficult to clone parameters back to VituixCAD.

I don't fully understand role of VituixCAD in this chain. If REW and EquAPO are good match, why to mix tools and transfer data back and forth. VituixCAD is for speaker design and those two look (just) room EQ applications.
 
Comparing of responses in VituixCAD and dsp system should not be done with measured acoustical responses. Keep ideal flat response in both applications and compare responses of single equalizer type (LP, HP, PEQ, SHP6/12, SLP6/12) at a time. Select correct sample rate and check Active IIR response as digital biquad before response comparison.

I looked a bit further into the matter. Thanks for reminding me of proper methodology, should have got that one on my own. At 1kHz the PEQs of VituixCAD and REW/EqAPO behave quite precisely alike. The differences begin to show at higher frequencies, as REW models PEQs in a way, that gain at Nyquist frequency is always 0 dB, resulting in asymmetric bell shapes for higher frequencies. Now that I know I can live with this.


I studied and tested EqualizerAPO a bit. It is able import frequency response of filter to graphic equalizer with variable band option. No problem to export driver's response from VituixCAD and import to EquAPO, though response file has close to 600 frequency points. Exact match is available if needed.
I never looked into that feature, thanks for the hint!

HP/LP filters are single biquads (as in Hypex), which makes crossover design quite difficult and slow.
It's easy to create LR-crossover filters from those, and I can't imagine any reason why I should use anything else... linearise drivers one octave above/below crossover frequency, apply desired LR-filter, adjust delay, done.
I don't fully understand role of VituixCAD in this chain. If REW and EquAPO are good match, why to mix tools and transfer data back and forth. VituixCAD is for speaker design and those two look (just) room EQ applications.
REW is freeware, easy to use, and has almost everything one might wish from a measuring point of view. Yes, sou are right, it's designed as a room EQ tool, and if you want to design a loundspeaker in REW you quickly reach the limits... no directivity visualization, no power response calculation, no grouped response EQing, no phase correct summation.... however, as mentioned above, linearise, apply LR-filters, adjust delay works. But if you want to see exactly what's the best linearisation and where to make compromises between axis and power response, I need something with VituixCADs abilities in visualization. EqAPO just works great, no/low latency, flawless system integration, and once you get your hear around the config file syntax easy and fast to configure, even FIR filters are supported (tough they add noticeable delay). And it's freeware as well. As my PC is my only sound playback device, I don't need anything else.

Again, thank you very much for your answers, and of course for this very nice software.
 
It's easy to create LR-crossover filters from those, and I can't imagine any reason why I should use anything else... linearise drivers one octave above/below crossover frequency, apply desired LR-filter, adjust delay, done.

It is easy as long as you need 2nd order slopes or simple basic types such as 4th order LR. But life is not always that simple. For example if you cannot equalize tweeter's band which is acoustically 5th order high past close to final XO frequency, but mid continues above XO with increasing response and few cone resonances. Then you may need 6th order low pass with certain phase response to match with tweeter -> Hypex, EqASO and others with single biquads are difficult and slow. Most of us don't remember corner frequencies and Q-factors for all 3rd...8th order textbook filters which could be faster/easier way to good result and ensure compatibility to some other dsp gear (if your product supports optional gear).
Single biquads have also advantages compared to tight textbook blocks for 3rd...8th order, and therefore dsp applications should have both options (just like in VituixCAD). Anyway, design in simulator must match with features of final dsp gear to get correct responses.
 
Hey there,

first of all, thank you Kimmo for your truly inspiring software! Knowing that there is such a powerful and friendly tool to develop loudspeakers is a great motivation in itself.

I have a tiny question: I would like to import measured FRs not just in horizontal and vertical planes, but at least at 45 degrees as well. Is there any possibility to automatically ascribe the values for both when importing?

Thank you,

G
 
^The latest revision makes life a bit easier with dsp compatibility settings as long as suitable option exists in 'DSP system' list. If not, compatible option might be difficult to figure out. I can help with that and add missing dsp gear to the list, but four things are needed from filter design program of dsp system:
1) Frequency response of Peak/Notch filter: 1000 Hz, +12 dB, Q=1.0
2) Frequency response of Bessel Low pass filter: 1000 Hz, 12 dB/oct.
3) Frequency response of 2nd order Shelving Low pass filter: 1000 Hz, +12 dB, Q=0.707
4) Sample rate of dsp device.

Hi Kimmo, thanks for all your efforts!

I attached a zip-file with the required data for EqualizerAPO running at 44.1 kHz. I added visuals to demonstrate matching (or lack thereof) with REW predictions. As my measuring setup isn't used to being looped back I got a bit of 1kHz noise and some 50Hz hum. Added a mass separation transformer, which helped some, but it induced some level depending boost below 250 Hz, see flat +12db response. This is not caused by the DSP.
 

Attachments

  • EqAPO 44,1 kHz.zip
    164.8 KB · Views: 37