Here's another convolver plugin: foo_dsp_convolver.
Official plugin (foo_convolve (http://www.foobar2000.org/components/view/foo_convolve)) adds small but noticeable gaps between songs if used in converter. "Don't reset DSP..." option solves this problem, but slows down conversion, that's why I wrote foo_dsp_convolver.
Also, it allows to use "Mix adjust" slider with linear-phase impulses, and supports more than 2 channels.
Changelog:
0.4.8
- minor fixes;
- added signal extrapolation to reduce a possibility of clicks during track change;
- recompiled with latest SDK (2018-10-11). Works with foobar2000 1.4.x; users of 1.3.x need to download and install MSVC redist (here (https://aka.ms/vs/15/release/VC_redist.x86.exe)).
Old versions are available here (http://www.hydrogenaudio.org/forums/index.php?showtopic=85106)
Just out of curiosity, I noticed 3 different FFT methods in the source...
May I ask why thats so? Speed testing?
Well... FFmpeg works only with FFT size between 16 and 65536, ooura works everywhere but slowest of them, etc...
And just for fun. "Speed testing" is not implemented.
btw: I wonder why there's no access to fb2k internal FFT routines...
Because there may be no such thing I guess. Remove standard DSPs, decoders, vis and voila! − no FFTs left at all. Right?
iirc, FB2K uses modded versions of KISSFFT for FFT processing.
foobar2000 does use FFT for spectrograms & other visualisation.
//! Retrieves spectrum for audio data at specified offset (see get_absolute_time()), with specified FFT size.
virtual bool get_spectrum_absolute(audio_chunk & p_chunk,double p_offset,unsigned p_fft_size) = 0;
[font= "Courier New"]virtual void visualisation_stream_v3::chunk_to_spectrum(audio_chunk const & chunk, audio_chunk & spectrum, double centerOffset) = 0;[/font]
That doesn't matter much, but... it isn't clear: does it return full FFT results or ampllitude only (ie sqrt(re*re + im*im))?
For this input chunk:
[font= "Courier New"]{m_data={...} m_srate=44100 m_nch=1 m_setup=4 m_samples=512}[/font]
I got this output chunk:
[font= "Courier New"]{m_data={...} m_srate=44100 m_nch=1 m_setup=4 m_samples=256}[/font]
So I assume the latter.
This convolver does not seem to work at all. I use filters generated by Audiolense and they work fine with the old convolver.
With this convolver I only get some sound in right channel, although only left channel active in peak meter.
I have tried different sample rates: 44.1k, 48k and 96.
Also different filter lengths: 16k, 64k and 132k taps.
Same result - only some sound in right channel.
Thanks for the report. Try ver. 0.3.5.
I only get some sound in right channel, although only left channel active in peak meter.
BTW, are you sure that your speakers correctly connected?
0.3.5 fixed my problems with the single channel. My setup was connected wrong as you suspected.
A big thanks for your work on this plugin. The most exciting feature for me is the multi-channel support, which the original convolver lacks. Together with the matrix mixer plugin I can finally get to play around with the active crossover filters that Audiolense XO can make.
Thank you for your time and effort towards improving the convolver plugin, I use the original convolver ALL the time
I was wondering in regards to your plugin, apart from the speed increase from FFTW, is there any actual *quality* gain (measurable in some way, noise floor perhaps)? I noticed that with the FFTW files in the foobar2000 directory, the program is using ~150mb ram more I tried running both the 'patient' mode FFTW file and the 'exhaustive' one (I generated both) though I did not see much if any difference (a few mb maybe?). This behavior happens even if the plugin is not in use in the DSP, which seems odd to me but then again I probably don't know enough about it
If there is actually a quality difference (accuracy difference), is there any way you could implement your 'techniques' in a way that would allow for stereo convolution too? http://people.bu.edu/edlarson/stereoconv.html (http://people.bu.edu/edlarson/stereoconv.html) is available however I have a feeling your methods of processing are probably superior.
Note: I got the idea about FFTW being of better quality/accuracy from their website http://www.fftw.org/accuracy/ (http://www.fftw.org/accuracy/) (probably not surprising)
Thank you for your time
-Matt
I was wondering in regards to your plugin, apart from the speed increase from FFTW, is there any actual *quality* gain (measurable in some way, noise floor perhaps)?
I doubt it. Maybe FFTW is a bit more accurate but the 'noise floor' is very low anyway.
I noticed that with the FFTW files in the foobar2000 directory, the program is using ~150mb ram more
Oops. I'll try to reduce the amount of memory reserved for FFTW.
The current version in this thread says 0.3.5, however it has been updated to 0.3.6 which has the memory issues fixed (thank you lvqcl)
0.3.6 on foobar 1.1.2b2:
Failed to load DLL: foo_dsp_convolver.dll
Reason: Invalid access to memory location
0.3.5 was working fine
Works here perfectly. fb2k v1.1.2 beta 2, windows7 x64.
Pls tell me details about this problem.
Not much to tell: Win7 U 32b, with fftw-wisdom.dat in foobar folder. I downloaded your component, d&d in foobar and on start that error pops. Previous version was working fine, as said
If you want me to run some debug tests, PM me
[edit]: On exit foobar crashes:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 01EBFB8Eh
Access violation, operation: write, address: 01EBFB8Eh
Call path not available.
Code bytes (01EBFB8Eh):
01EBFB4Eh: 6E 00 20 00 28 00 54 00 72 00 61 00 64 00 69 00
01EBFB5Eh: 74 00 69 00 6F 00 6E 00 61 00 6C 00 20 00 4D 00
01EBFB6Eh: 6F 00 6E 00 67 00 6F 00 6C 00 69 00 61 00 6E 00
01EBFB7Eh: 29 00 24 00 4D 00 6F 00 6E 00 67 00 6F 00 6C 00
01EBFB8Eh: 69 00 61 00 6E 00 20 00 28 00 54 00 72 00 61 00
01EBFB9Eh: 64 00 69 00 74 00 69 00 6F 00 6E 00 61 00 6C 00
01EBFBAEh: 20 00 4D 00 6F 00 6E 00 67 00 6F 00 6C 00 69 00
01EBFBBEh: 61 00 6E 00 29 00 24 00 50 00 65 00 6F 00 70 00
Stack (001BF8D8h):
001BF8B8h: 00000000 29B27025 FFFFFD34 000002E4
001BF8C8h: FFFFFD34 000002CC 00000018 00000000
001BF8D8h: 7722BB45 020907D0 7FFDC000 7FFDF000
001BF8E8h: 00000000 00000040 001BF988 77233A07
001BF8F8h: 00204688 77371CAF 772A7340 772A7380
001BF908h: 00000000 00000000 00000000 00000000
001BF918h: 00000000 00000000 00000000 00000000
001BF928h: 00000000 00000000 00000000 00000000
001BF938h: 00000000 00000000 00000000 00000000
001BF948h: 00000000 00000000 00000000 005C005A
001BF958h: 001F28DE 00000000 7FFDC000 00000000
001BF968h: 00000000 7FFDF000 001BF8FC 001BF4D8
001BF978h: 001BF9F8 771ED75D 000D1BC7 FFFFFFFE
001BF988h: 001BF99C 7723384D 0239F51C 7722F0C0
001BF998h: 0239F520 001BF9B0 75892B04 00000000
001BF9A8h: 77E8F3B0 FFFFFFFF 001BF9BC 011FC369
001BF9B8h: 00000000 001BFA08 011FC595 00000000
001BF9C8h: 219F8510 00000000 00000000 7FFDC000
001BF9D8h: 0239F520 0239F51C 0239FBF0 0239F520
001BF9E8h: 012257A0 01225798 001BF9C8 001BF4D4
Registers:
EAX: 01EBFB8E, EBX: 7FFDC000, ECX: 020907D0, EDX: 00206054
ESI: 0000000C, EDI: 002046C0, EBP: 001BF8F0, ESP: 001BF8D8
Unable to identify crash location!
Loaded modules:
foobar2000 loaded at 010C0000h - 012B0000h
ntdll loaded at 771D0000h - 7730C000h
kernel32 loaded at 75840000h - 75914000h
KERNELBASE loaded at 75550000h - 7559A000h
COMCTL32 loaded at 74210000h - 743AE000h
msvcrt loaded at 75BB0000h - 75C5C000h
GDI32 loaded at 75B60000h - 75BAE000h
USER32 loaded at 75770000h - 75839000h
LPK loaded at 759A0000h - 759AA000h
USP10 loaded at 75AC0000h - 75B5D000h
SHLWAPI loaded at 76CE0000h - 76D37000h
DSOUND loaded at 70520000h - 70592000h
ADVAPI32 loaded at 76AE0000h - 76B80000h
sechost loaded at 77330000h - 77349000h
RPCRT4 loaded at 77350000h - 773F1000h
ole32 loaded at 76B80000h - 76CDC000h
WINMM loaded at 705A0000h - 705D2000h
POWRPROF loaded at 73890000h - 738B5000h
SETUPAPI loaded at 77030000h - 771CD000h
CFGMGR32 loaded at 754D0000h - 754F7000h
OLEAUT32 loaded at 76E30000h - 76EBF000h
DEVOBJ loaded at 75500000h - 75512000h
UxTheme loaded at 740D0000h - 74110000h
dbghelp loaded at 71300000h - 713EB000h
SHELL32 loaded at 75E90000h - 76AD9000h
zlib1 loaded at 5A4C0000h - 5A4D4000h
shared loaded at 6F220000h - 6F24B000h
imagehlp loaded at 75E60000h - 75E8A000h
COMDLG32 loaded at 75920000h - 7599B000h
Secur32 loaded at 751C0000h - 751C8000h
SSPICLI loaded at 751E0000h - 751FA000h
CRYPT32 loaded at 75380000h - 7549C000h
MSASN1 loaded at 75370000h - 7537C000h
gdiplus loaded at 73F40000h - 740D0000h
IMM32 loaded at 75710000h - 7572F000h
MSCTF loaded at 75630000h - 756FC000h
CRYPTBASE loaded at 75250000h - 7525C000h
CLBCatQ loaded at 76DA0000h - 76E23000h
MMDevApi loaded at 73E00000h - 73E39000h
PROPSYS loaded at 74110000h - 74205000h
winroll loaded at 10000000h - 10007000h
dwmapi loaded at 73DE0000h - 73DF3000h
foo_dsp_crossfeed loaded at 00860000h - 0088A000h
foo_dsp_centercut loaded at 008A0000h - 008C6000h
foo_input_alac loaded at 008F0000h - 0090D000h
foo_verifier loaded at 00D70000h - 00DB3000h
foo_input_dts loaded at 6F1B0000h - 6F213000h
foo_musicbrainz loaded at 6F150000h - 6F1AC000h
WINHTTP loaded at 73BF0000h - 73C48000h
webio loaded at 73B30000h - 73B7F000h
libfftw3f-3 loaded at 63740000h - 6380B000h
foo_dsp_std loaded at 6CAE0000h - 6CB28000h
foo_masstag loaded at 02030000h - 02084000h
foo_dsp_bs2b loaded at 00F50000h - 00F77000h
foo_abx loaded at 01F70000h - 01FA2000h
foo_chacon loaded at 6F6D0000h - 6F6F4000h
foo_skip loaded at 6E860000h - 6E882000h
foo_vis_shpeck loaded at 6CA90000h - 6CAD1000h
MSIMG32 loaded at 73970000h - 73975000h
foo_dsp_fsurround_beta loaded at 033D0000h - 034A4000h
WINSPOOL loaded at 707B0000h - 70801000h
foo_dsp_freeverb loaded at 021E0000h - 021FE000h
foo_dsp_downmix loaded at 02350000h - 02388000h
foo_benchmark loaded at 027A0000h - 027CD000h
foo_dsp_crossfader loaded at 027D0000h - 02802000h
foo_dsp_loudspeakereq loaded at 02E20000h - 02E4C000h
foo_ac3 loaded at 02EA0000h - 02ED0000h
foo_playcount loaded at 6CF10000h - 6CF4C000h
foo_facets loaded at 03540000h - 035C1000h
foo_cdda loaded at 6CA40000h - 6CA8E000h
foo_rgscan loaded at 6C9F0000h - 6CA3D000h
foo_ui_std loaded at 6C8D0000h - 6C9E8000h
foo_bitcompare loaded at 032F0000h - 03318000h
foo_run loaded at 035F0000h - 0364F000h
foo_dsp_prvb loaded at 03360000h - 0338B000h
foo_musicdns loaded at 6C8A0000h - 6C8C1000h
libofa loaded at 6C860000h - 6C891000h
libfftw3-3 loaded at 03DF0000h - 03F25000h
MSVCP100 loaded at 6C7F0000h - 6C859000h
MSVCR100 loaded at 6C730000h - 6C7EE000h
foo_uie_wsh_panel_mod loaded at 6C670000h - 6C72E000h
foo_convolve loaded at 03A30000h - 03A81000h
foo_osd loaded at 037B0000h - 037E1000h
foo_dsp_mm loaded at 038B0000h - 038F1000h
foo_dsp_fakegapless loaded at 73860000h - 7387A000h
foo_dsp_effect loaded at 03A90000h - 03AC7000h
foo_texttools loaded at 6C630000h - 6C664000h
foo_jesus loaded at 6C610000h - 6C62A000h
foo_fileops loaded at 6C5C0000h - 6C607000h
foo_runcmd loaded at 6C580000h - 6C5B3000h
foo_freedb2 loaded at 6C540000h - 6C580000h
foo_input_tta loaded at 03BA0000h - 03BE2000h
foo_dsp_lowpass loaded at 03B20000h - 03B52000h
foo_channel_mixer loaded at 03D10000h - 03D4A000h
foo_uie_biography loaded at 6C4E0000h - 6C538000h
foo_random loaded at 03D50000h - 03D89000h
foo_dsp_vlevel loaded at 03B80000h - 03B8B000h
MSVCR80 loaded at 705E0000h - 7067B000h
foo_input_std loaded at 6C380000h - 6C4D5000h
foo_textdisplay loaded at 6C340000h - 6C37F000h
foo_input_monkey loaded at 03F30000h - 03F78000h
foo_vst loaded at 6C310000h - 6C33A000h
MSVCP90 loaded at 713F0000h - 7147E000h
MSVCR90 loaded at 71480000h - 71523000h
foo_dsp_delta loaded at 03F90000h - 03FAF000h
foo_discogs loaded at 6C2A0000h - 6C301000h
WININET loaded at 76F10000h - 77028000h
Normaliz loaded at 77320000h - 77323000h
iertutil loaded at 75C60000h - 75E59000h
urlmon loaded at 759B0000h - 75AC0000h
XmlLite loaded at 75520000h - 7554F000h
foo_np_simple loaded at 6C270000h - 6C29E000h
foo_converter loaded at 6C1F0000h - 6C26B000h
foo_dsp_soundtouch loaded at 03FF0000h - 04016000h
foo_input_tak loaded at 6C1A0000h - 6C1E4000h
tak_deco_lib loaded at 04050000h - 04070000h
foo_dsp_fsurround loaded at 04080000h - 040B1000h
AUDIOSES loaded at 730B0000h - 730E6000h
SXS loaded at 75260000h - 752BF000h
JScript loaded at 6C0E0000h - 6C192000h
VERSION loaded at 74890000h - 74899000h
CRYPTSP loaded at 74D70000h - 74D86000h
rsaenh loaded at 74B20000h - 74B5B000h
RpcRtRemote loaded at 752C0000h - 752CE000h
scrrun loaded at 6C0B0000h - 6C0DA000h
WindowsCodecs loaded at 73CE0000h - 73DDB000h
apphelp loaded at 75200000h - 7524B000h
WS2_32 loaded at 75730000h - 75765000h
NSI loaded at 75700000h - 75706000h
mswsock loaded at 74D30000h - 74D6C000h
DNSAPI loaded at 74C00000h - 74C44000h
IPHLPAPI loaded at 72350000h - 7236C000h
WINNSI loaded at 72340000h - 72347000h
rasadhlp loaded at 72B80000h - 72B86000h
psapi loaded at 77310000h - 77315000h
Stack dump analysis:
Address: 7722BB45h (ntdll+5BB45h), symbol: "RtlTimeToTimeFields" (+3A8h)
Address: 77233A07h (ntdll+63A07h), symbol: "LdrShutdownProcess" (+97h)
Address: 77371CAFh (RPCRT4+21CAFh), symbol: "RpcStringBindingParseW" (+174h)
Address: 772A7340h (ntdll+D7340h), symbol: "NlsAnsiCodePage" (+1F0h)
Address: 772A7380h (ntdll+D7380h), symbol: "NlsAnsiCodePage" (+230h)
Address: 771ED75Dh (ntdll+1D75Dh), symbol: "RtlAddMandatoryAce" (+5ADh)
Address: 7723384Dh (ntdll+6384Dh), symbol: "RtlExitUserProcess" (+74h)
Address: 7722F0C0h (ntdll+5F0C0h), symbol: "RtlDecodePointer" (+0h)
Address: 75892B04h (kernel32+52B04h), symbol: "ExitProcess" (+15h)
Address: 011FC369h (foobar2000+13C369h)
Address: 011FC595h (foobar2000+13C595h)
Address: 012257A0h (foobar2000+1657A0h)
Address: 01225798h (foobar2000+165798h)
Address: 011FCB70h (foobar2000+13CB70h)
Address: 011FC5BBh (foobar2000+13C5BBh)
Address: 011FA1C0h (foobar2000+13A1C0h)
Address: 01200C0Fh (foobar2000+140C0Fh)
Address: 011FCB70h (foobar2000+13CB70h)
Address: 75891194h (kernel32+51194h), symbol: "BaseThreadInitThunk" (+12h)
Address: 7722B495h (ntdll+5B495h), symbol: "RtlInitializeExceptionChain" (+63h)
Address: 77371FCBh (RPCRT4+21FCBh), symbol: "RpcStringBindingParseW" (+490h)
Address: 758A2B55h (kernel32+62B55h), symbol: "UnhandledExceptionFilter" (+0h)
Address: 758A2B55h (kernel32+62B55h), symbol: "UnhandledExceptionFilter" (+0h)
Address: 771ED75Dh (ntdll+1D75Dh), symbol: "RtlAddMandatoryAce" (+5ADh)
Address: 7722B468h (ntdll+5B468h), symbol: "RtlInitializeExceptionChain" (+36h)
Address: 011FA205h (foobar2000+13A205h)
Address: 011FA205h (foobar2000+13A205h)
Address: 705213B0h (DSOUND+13B0h)
Address: 7052126Ch (DSOUND+126Ch)
Address: 705217ECh (DSOUND+17ECh)
Address: 7052126Ch (DSOUND+126Ch)
Address: 73F556ADh (gdiplus+156ADh)
Address: 70521394h (DSOUND+1394h)
Address: 705212E0h (DSOUND+12E0h)
Address: 70521AB0h (DSOUND+1AB0h)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 7052126Ch (DSOUND+126Ch)
Address: 70521388h (DSOUND+1388h)
Unfortunately, I can't send reports from affected PC, but they look similar with "Unable to identify crash location!"
I cannot find the source of this problem, but
1. try foo_dsp_convolver 0.3.7 (changes between 0.3.6 and 0.3.7 are not related with your problem but who knows...)
2. try to delete foo_dsp_downmix.dll and foo_dsp_fsurround.dll (they use libfftw3f-3.dll too) and see what happens.
3. try to delete fftw-wisdom.dat.
I should have tried above.
I thought deleting fft library used by pro_optimizer components, but as it was the same file as your component is using, I didn't do it. Then I noticed foo_musicdns was using libfftw3-3.dll and knowing that I had problem with this component in past I disable it, but that didn't change anything
New version, didn't change issue, but deleting "fftw-wisdom.dat" solved the case, so there is some problem. I made new fftw-wisdom file, but problem stays
If your CPU is Core2 or at least has SSE2 support you can also try fftw-wisdom from this archive (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6276)
will the generated wisdom file be any different from the one generated from the other archive? (more optimized)
From FFTW manual: "It would be perfectly possible to export wisdom from a program running on one processor and import it into a program running on another processor. Doing so, however, would mean that the second program would use plans optimized for the first processor, instead of the one it is running on... The more the underlying hardware and software changes between the creation of wisdom and its use, the greater grows the risk of sub-optimal plans."
So it is better to generate wisdom on a target computer.
If your CPU is Core2 or at least has SSE2 support you can also try fftw-wisdom from this archive (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6276)
Tried wizards: 18; 16; 8; 4; 0 without success on Celeron D 3 GHz (feat. MMX, SSE, SSE2, SSE3, ET64, XD)
what about fftw-wisdom_24.dat?
same, unfortunately
Well, I have no idea why such things happen. You can continue to use 0.3.5, or delete fftw-wisdom.dat to disable FFTW support.
(You can also try empty fftw-wisdom.dat, but I don't think it will help).
Pardon my ignorance, but what is that wisdom-thingie? I know about wisdom teeth, but that's about it.
If you don't want to use FFTW library, you don't need it. (FFTW library offers very fast FFT routines but using it may or may not be legal).
In other words, you probably don't need it.
When foobar is in portable mode and impulses files located in foobar2000 directory, convolver version 0.3.8/0.4.0 gives error "Error during loading of impulse file: Object not found". It seems relative paths don't work. WinXP SP3, foobar2000 1.1.7. Impulses folder path "D:\foobar2000\ConvolverImpulses\De-Emphasis\"
Please post a screenshot with its settings.
Please post a screenshot with its settings.
Convolver's settings?
(http://imageshack.us/photo/my-images/855/20110730172654.png/)
And convolver is the only active dsp.
Thanks for the report. I can reproduce this problem on WinXP but not on Win7.
I'll add a workaround for it.
This is truly a wonderful plugin as it allows me to use foobar2000 as an active crossover (along with foo_mm).
The official convolver cannot do this as it is limited to two channels only.
There is an alternative through foo_vst and ConvolverVST, but ConvolverVST can only have one configuration which is shared between all vst hosts. I use ConvolverVST with a minimum delay crossover for movies and youtube. foobar2000 on the other hand is using a very long filter with time domain correction, that causes major lip-sync problems in movies.
I do however have three suggestions for improvements:
1. Let user specify multiple FIR filters with different sample rates and detect the input sample rate. This will eliminate the need for a resampler in the DSP chain.
2. Support assymetric channel config (e.g. 2 in, 6 out) through the .cfg format rather than .wav. This will eliminate the need for a matrix mixer like foo_mm.
3. A checkbox to disable gapless mode. When comparing the effect of two filters with a keyboard shortcut, it is rather nice to be able to hear that it has switched.
Thanks again.
1) maybe, in some (distant?) future
2) unlikely, because this plugin is just a generic convolver, not up/downmixer or crossover filter.
3) ??? "gapless" means that it doesn't add extra samples at the beginning and the end of tracks (as opposed to foo_convolve).
2. You do not need a special convolver for a crossover. A generic will do just fine. I believe the .cfg file definition is for a generic convolver. It is widely supported by ConvolverVST, brutefir and more.
It is really quite simple. In comes stereo split into 2x3 - high, mid and low. These 2x3 channels goes through the 6 channel convolver and there you have a crossover. But it is not a problem as such, since the plugin works perfectly with foo_mm.
Hello SSHD, I see you mentioned foo_mm as sa good Xover.
Where can I download it?
I looked for it, but I could find it so far.
Many thanks
Regards, Andrea.
foo_mm is a Matrix Mixer you can use to convert 2 channels to 2x3 channels - not as crossover.
http://skipyrich.com/wiki/Index.php/Foobar2000:Matrix_Mixer (http://skipyrich.com/wiki/Index.php/Foobar2000:Matrix_Mixer)
Thank you SSHD, I misunderstood.
Regards, Andrea
If I use any impulse with this component and then try to use foo_yac (http://www.hydrogenaudio.org/forums/index.php?showtopic=82745), it fails with:
Can't apply filter: .\filter\44\some_impulse.wav
With "official" convolver (by Peter or Garf, not sure) this issue is not present, so I'm reporting here
Ver. 0.4.6 should fix it.
0.4.7 - possible cause of crash fixed.
How this plugin handles signals with samplerates more than 44100 kHz, when using 44100 kHz impulses? Does it autimatically resamples?
What maximum length of impulse file is supported?
1) No, it doesn't resample anything. So it's a good idea to add resampler into DSP list before this plugin.
2) about 4 millions of samples IIRC.
Version 0.4.8 is available (see the 1st post).
Thanks for the convolver plugin ...
As a request, could you think about adding the ability to automatically resample convolver impulse as seen by the audio file sample rate ? So we wouldn't need any resampler just above in the dsp chain ...
Best regards,
nAr
.
How does one route channels to and from the convolver.
For instance for Virtual Surround, each of the five audio channels (5.1 6 channel file) needs an IR for each ear, and all of them need to be mixed together for binaural 2 ch. output.
I would imagine there would be similar routing requirements for crossover type applications.
How does one route channels to and from the convolver.
For instance for Virtual Surround, each of the five audio channels (5.1 6 channel file) needs an IR for each ear, and all of them need to be mixed together for binaural 2 ch. output.
If you have 6 channels signal, you need 6 channels impulse for convolver.
Convolver can't mix/route channels. Use Matrix Mixer (http://skipyrich.com/store/foo_dsp_mm.7z)
The convolver doesn't support crossmixing or anything like that. You can technically try to work around something like this, by using two instances of the Matrix Mixer:
1) Upmix with Matrix Mixer to twice as many channels, using two target channels for each source channel.
2) Convolve using a double channel count waveform.
3) Use another instance of Matrix Mixer to downmix the two sets of channels to stereo, mixing each of the impulses for each speaker together.
But I would need 32 channels, as I'm working with 16 channel virtualization.
Also, struggling to get matrix mixer installed. Where is the doc? It seems to be non standard.
Hi,
I am trying to use the plugin with a four channel impulse, build with one stereo impulse duplicated with Audacity in a 4 channel wave file, but in the end, after loading this in foobar, only the first and fourth output channels are working. the 2 middle ones are 'muted'.
any info to help me to solve this ?
thanks,
Laurent
I am trying to use the plugin with a four channel impulse, build with one stereo impulse duplicated with Audacity in a 4 channel wave file, but in the end, after loading this in foobar, only the first and fourth output channels are working. the 2 middle ones are 'muted'.
Does audio signal that you are trying to process with convolver has 4 channels too?
Hi,
Yes. my DSP processing chain is :
Resampling to 96khz
Foo_dsp_convolver, with stereo impulse for phase control
Stereo to 4 channels
Foo_dsp_convolver, with quad impulse for activ crossover
When i remove the second convolver, i have my 4 channels on my soundcard (Digiface) (L/R/L/R)
As soon as i insert it, i have only the 1st and the 4th activ.
Could it be linked to a 24/32bits conversion somewhere that i could have done wrong ? I would like to test with a 'blank' 4 channels impulse (like a passthrough), but how can i build it ?
thanks,
Laurent
Upload your quad impulse somewhere, and I'll take a look.
I would like to test with a 'blank' 4 channels impulse (like a passthrough), but how can i build it ?
In you not have blank 4 channels impulse, how did you build your own 4-channels impulse at all? Blank impulse with samplerate 96 kHz in attachment.
Hi,
Thanks for your feedbacks. Following the idea of the blank impulse ( i never realized i could do this simply with Rephase), I played with various formats of blank impulses, simply at 44.1khz in order to simplify my processing chain :
Stereo blank impulse created by Rephase
With Audacity, I copy paste the impulse to create a quad impulse
And in foobar, my DSP chain is just
Stereo to 4 channels
Foo_dsp_convolver with various blank quad impulses
i played with the number of taps (from 8192 to 524288) , and the format (24bPCM to 32bfloat)
I succeeded to make this working with my four channels ... but to a certain limit of size and format of the pulse : After many many (...) trials, i realized that with big pulses, when i load the pulse into foo_dsp_convolver, sometimes, the Sample length is totally wrong. Please note that my goal is to use quite big impulses ( 131 000 taps or more).
I therefore came back to stereo, and compared stereo pulse loadings between convolver(gapless) and the original convolver. Conclusion is that with the original convolver, the number of samples is always good, whereas with convolver(gapless), sometimes the number is crazy ( like even 1 sample, 2 channels, 44.1kHz).
it looks to me there is a problem, or a limit somewhere in the pulse loading that is unclear to me ...
Any idea ?
whereas with convolver(gapless), sometimes the number is crazy ( like even 1 sample, 2 channels, 44.1kHz)
This convolver automatically detects excessive digital silence in impulse and ignores it.
As lvqcl already said: share your actual problematic impulses files.
this one is a big quad impulse which does not work properly : https://www.dropbox.com/t/pBFhgpw6WP9Rgp1n
Something gone wrong with this impulse Open it in Audacity and see yourself. Peak level in 2nd and 4th channels is -40 dB. So, yes, these channels are almost muted..
As for convolver, it works as expected.
EDIT: Sorry, they are not muted of course. I can't reproduce your problem. Using Convert stereo to 4 channels and then convolver with your impulse, no channels in output are muted.
https://youtu.be/xjy8jPuwxCw
After many many (...) trials, i realized that with big pulses, when i load the pulse into foo_dsp_convolver, sometimes, the Sample length is totally wrong. Please note that my goal is to use quite big impulses ( 131 000 taps or more).
I therefore came back to stereo, and compared stereo pulse loadings between convolver(gapless) and the original convolver. Conclusion is that with the original convolver, the number of samples is always good, whereas with convolver(gapless), sometimes the number is crazy ( like even 1 sample, 2 channels, 44.1kHz).
it looks to me there is a problem, or a limit somewhere in the pulse loading that is unclear to me ...
Any idea ?
The impulse file that you uploaded has 524288 samples. To optimize performance, this plugin cuts too quiet samples from the beginning and the end of an impulse. That's why it shows "2917 samples" - that's all that was left after trimming.
Besides that, the plugin works as expected, no channels are muted.
BUT: the order of channels in foobar2000 is Front Left, Front Right, Back Left, Back Right. With your impulse, channels 2 and 4 (i.e. Front Right and Back Right) are lowpassed. Probably that's not what you want, so you need to swap channel 2 and channel 3 in your impulse file.
first of all, thanks lvqcl and Rollin for your time spent on my questions. I really appreciate.
So this convolver is not a straight convolver. It works 'on its own' on the input impulse, i did'nt know that. Does it also works on the input signal to adapt/simplify the convolution ? i Thought that the 'no delay convolution' was obtained by a clever buffer inside the dsp, but it seems not to be the case.
Do you also know the process used to simplify the impulse ? because i find it a little bit stange on the 2 blank pulses bellow. one in 24bit PCM, the other in 32bit PCM. Exactly the same file (from rephase) in audacity, but 2 ways of saving it. the first one, is read with 16k sample, what i would expect. the other one ... 1 sample .... stange no ?
However, if i go back to my initial question with my quad impulse file : it is also strange, because i clearly confirm that the quad impulse file i transferred give me a complete mute on channel 2 and 3. I am using foobar 1.6.5 on a w10 64b system.
>With your impulse, channels 2 and 4 (i.e. Front Right and Back Right) are lowpassed. Probably that's not what you want,
No, that's exactly what i want. Channel 2, is in fact Right low band, Channel 3 Left High Band, and CHannel 4 Left low band. that is how it is connected after on my multichannel DA.
because i find it a little bit stange on the 2 blank pulses bellow. one in 24bit PCM, the other in 32bit PCM. Exactly the same file (from rephase) in audacity, but 2 ways of saving it. the first one, is read with 16k sample, what i would expect. the other one ... 1 sample .... stange no ?
They are not the same. 24 bit file has noise. You cannot see it in Audacity with default settings but it is there. Samples with noise are not silent samples, so they aren't trimmed. Also, phase in 32 bit file is inverted, but this is irrelevant in this case. See spectrograms for noise.
24 bit file:
32 bit file:
If in Audacity you will set Range for spectrograms to 180 dB, this noise will be visible too.
However, if i go back to my initial question with my quad impulse file : it is also strange, because i clearly confirm that the quad impulse file i transferred give me a complete mute on channel 2 and 3. I am using foobar 1.6.5 on a w10 64b system.
What happens if you use only two DSPs - Convert stereo to 4 channels and Convolver with your quad impulse? What happens if you use only one DSP - Convert stereo to 4 channels?
/quote]What happens if you use only two DSPs - Convert stereo to 4 channels and Convolver with your quad impulse? What happens if you use only one DSP - Convert stereo to 4 channels?
Hi,
With only stereo to 4, i have all my 4 channels. and with the addition of dsp convolver with this particular filter, channel 2 and 3 are muted. But i build another quad filter, and this last one works well, with 4 channels ok. So there is something wrong with my first quad impulse, but what ?
Thanks also for your analysis of the 2 Audacity recording : conversion to 24bPCM is surprisingly creating low backgroung noise ... I will avoid this conversion and stay in 32bit float.
Tonight, i tested carefully the audio quality, with a stereo impulse (phase shift compensation), btw standard convolver, and dsp_convolver, and the advantage is clear for standard convolver. Is it normal if both convolver work from the same impulse ? how do you explain this ?
thanks,
Precision of processing is higher than human perception in both convolvers. But standard convolver has some limitation. So, most probably, standard covolver does not what your think it does in this case.
Show your DSP chains and settings of both convolvers, and share impulse. So i can tell you what causes differences.
[quote
Tonight, i tested carefully the audio quality, with a stereo impulse (phase shift compensation), btw standard convolver, and dsp_convolver, and the advantage is clear for standard convolver. Is it normal if both convolver work from the same impulse ? how do you explain this ?
Sorry for this, there was a gain bias btw the two settings, so the difference in quality is finally not so clear ! i need to take time to listen and compare. There is definitely a difference btw the 2 processes. so i added a VST altenativ with convolverVST to compare and also measure the resulting impulse and phase correction. I'll report the results.
thanks for reading
Can someone recompile it for foobar2000 v2 and 64 bit?
Can someone recompile it for foobar2000 v2 and 64 bit?
using this version from Case right now:
https://foobar.hyv.fi/2.0/?view=foo_dsp_stereoconv (https://foobar.hyv.fi/2.0/?view=foo_dsp_stereoconv)
Can someone recompile it for foobar2000 v2 and 64 bit?
+1, I would like this too. The other one is usable, but still.
+1, I would really appreciate a 64-bit version.
I cannot use the stereo convolved as I need 8 channels.
Just as an FYI: Foobar has a very nice VST host component (https://www.foobar2000.org/components/view/foo_dsp_vst3).
So it's possible to use convolution VST effects, including free ones like MConvolutionEZ (https://www.meldaproduction.com/MConvolutionEZ) or Freeverb (https://freeverb3vst.osdn.jp/).
I used the convolver in Foobar for headphone correction, but I then switched to using Equalizer APO and I like it better this way.