foo_dsp_convolver, Gapless convolver |
![]() ![]() |
foo_dsp_convolver, Gapless convolver |
Nov 21 2010, 02:55
Post
#1
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
Here's another convolver plugin: foo_dsp_convolver.
Official plugin (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. Download This post has been edited by lvqcl: Jan 3 2011, 21:12 |
|
|
|
Nov 21 2010, 12:30
Post
#2
|
|
![]() Group: Developer (Donating) Posts: 711 Joined: 1-December 07 Member No.: 49165 |
Just out of curiosity, I noticed 3 different FFT methods in the source...
May I ask why thats so? |
|
|
|
Nov 21 2010, 13:47
Post
#3
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
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. |
|
|
|
Nov 22 2010, 05:21
Post
#4
|
|
![]() Group: Developer Posts: 251 Joined: 8-April 09 From: Russia, Zlatoust Member No.: 68779 |
QUOTE 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?
|
|
|
|
Nov 22 2010, 10:58
Post
#5
|
|
![]() Group: Developer (Donating) Posts: 711 Joined: 1-December 07 Member No.: 49165 |
iirc, FB2K uses modded versions of KISSFFT for FFT processing.
|
|
|
|
Nov 22 2010, 17:55
Post
#6
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
foobar2000 does use FFT for spectrograms & other visualisation.
CODE //! 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; |
|
|
|
Nov 23 2010, 21:59
Post
#7
|
|
![]() Group: FB2K Moderator Posts: 2359 Joined: 30-November 07 Member No.: 49158 |
virtual void visualisation_stream_v3::chunk_to_spectrum(audio_chunk const & chunk, audio_chunk & spectrum, double centerOffset) = 0;
-------------------- Full-quoting makes you scroll past the same junk over and over.
|
|
|
|
Nov 23 2010, 22:50
Post
#8
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
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))?
|
|
|
|
Nov 23 2010, 23:32
Post
#9
|
|
![]() Group: FB2K Moderator Posts: 2359 Joined: 30-November 07 Member No.: 49158 |
For this input chunk:
{m_data={...} m_srate=44100 m_nch=1 m_setup=4 m_samples=512} I got this output chunk: {m_data={...} m_srate=44100 m_nch=1 m_setup=4 m_samples=256} So I assume the latter. -------------------- Full-quoting makes you scroll past the same junk over and over.
|
|
|
|
Dec 18 2010, 02:06
Post
#10
|
|
|
Group: Members Posts: 199 Joined: 16-June 03 Member No.: 7218 |
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. |
|
|
|
Dec 18 2010, 13:47
Post
#11
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
Thanks for the report. Try ver. 0.3.5.
QUOTE 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? This post has been edited by lvqcl: Dec 18 2010, 13:51 |
|
|
|
Dec 18 2010, 23:20
Post
#12
|
|
|
Group: Members Posts: 199 Joined: 16-June 03 Member No.: 7218 |
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. |
|
|
|
Dec 24 2010, 18:33
Post
#13
|
|
|
Group: Members Posts: 19 Joined: 24-December 10 Member No.: 86759 |
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 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 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/ (probably not surprising) Thank you for your time -Matt |
|
|
|
Dec 24 2010, 19:14
Post
#14
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
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. |
|
|
|
Jan 3 2011, 20:36
Post
#15
|
|
|
Group: Members Posts: 19 Joined: 24-December 10 Member No.: 86759 |
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
|
|
|
|
Jan 3 2011, 23:42
Post
#16
|
|
![]() Group: Members Posts: 607 Joined: 16-January 09 Member No.: 65630 |
0.3.6 on foobar 1.1.2b2:
QUOTE Failed to load DLL: foo_dsp_convolver.dll Reason: Invalid access to memory location 0.3.5 was working fine -------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Jan 4 2011, 00:21
Post
#17
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
Works here perfectly. fb2k v1.1.2 beta 2, windows7 x64.
Pls tell me details about this problem. |
|
|
|
Jan 4 2011, 00:36
Post
#18
|
|
![]() Group: Members Posts: 607 Joined: 16-January 09 Member No.: 65630 |
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: CODE 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!" This post has been edited by romor: Jan 4 2011, 00:56 -------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Jan 4 2011, 13:34
Post
#19
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
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. |
|
|
|
Jan 4 2011, 23:12
Post
#20
|
|
![]() Group: Members Posts: 607 Joined: 16-January 09 Member No.: 65630 |
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 -------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Jan 4 2011, 23:39
Post
#21
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
If your CPU is Core2 or at least has SSE2 support you can also try fftw-wisdom from this archive
|
|
|
|
Jan 4 2011, 23:50
Post
#22
|
|
|
Group: Members Posts: 19 Joined: 24-December 10 Member No.: 86759 |
will the generated wisdom file be any different from the one generated from the other archive? (more optimized)
|
|
|
|
Jan 5 2011, 00:05
Post
#23
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
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. |
|
|
|
Jan 5 2011, 01:03
Post
#24
|
|
![]() Group: Members Posts: 607 Joined: 16-January 09 Member No.: 65630 |
If your CPU is Core2 or at least has SSE2 support you can also try fftw-wisdom from this archive Tried wizards: 18; 16; 8; 4; 0 without success on Celeron D 3 GHz (feat. MMX, SSE, SSE2, SSE3, ET64, XD) -------------------- Scripts (mainly foobar2000 related): http://goo.gl/yje3h
|
|
|
|
Jan 5 2011, 01:08
Post
#25
|
|
![]() Group: Developer Posts: 2983 Joined: 2-December 07 Member No.: 49183 |
what about fftw-wisdom_24.dat?
|
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 22nd May 2013 - 02:03 |