Download for foobar2000 0.8.x (250K) (http://sjeng.org/ftp/fb2k/foo_convolve.zip)
Please see the official additional components (http://www.foobar2000.org/components/) page for the foobar2000 0.9.x compatible version.
This DSP component takes impulse response and does a
fast convolution of the sound data with that impulse
response.
Basically, it allows quick computation of any combination of
linear effects, such as equalization, echo, flange, reverb,
phase shift and so on. It can transform the sound to exactly
the image you would get as where the impulse response was
recorded, allowing you to get an accurate reproduction of
a big theather or stadium.
This effect is available as 'Acoustic Mirror' in Sound Forge.
A restricted version is available as 'Digital Convolution'
in Cool Edit.
A small manual is included in the readme.
Some discussion about convolutions:
http://www.hydrogenaudio.org/show.php/act/...t/ST/f/1/t/9116 (http://www.hydrogenaudio.org/show.php/act/ST/f/1/t/9116)
Edit: Added download instructions for foobar2000 0.9.x compatible version.
Thanks Garf,
Looks like a new toy to play with.
ERROR (CORE) : Failed to load DLL: foo_convolve.dll, reason: Unable to load dll.
win98 se foobar 0.667
Get libmmd.dll from rarewares. Does it solve things?
http://rarewares.hydrogenaudio.org/files/libmmd7.zip (http://rarewares.hydrogenaudio.org/files/libmmd7.zip)
Garf,
Thanks for creating this - it could be extremely powerful. libmmd.dll fixed this same error for me.
Question - what tools would you recommend for creating custom impulse responses, say for a room correction amplitude equalizer? Could this be done with Sound Forge?
I reuploaded it, the new version does not need libmmd.dll.
Question - what tools would you recommend for creating custom impulse responses, say for a room correction amplitude equalizer? Could this be done with Sound Forge?
I have no experience with 'room correction amplitude equalization', but basically, if you find a single tool that can do it, and allows you to feed the impulse through it, you're set.
You can even use analogue equipment.
Question - what tools would you recommend for creating custom impulse responses, say for a room correction amplitude equalizer? Could this be done with Sound Forge?
I have no experience with 'room correction amplitude equalization', but basically, if you find a single tool that can do it, and allows you to feed the impulse through it, you're set.
You can even use analogue equipment.
Thanks, I think I can make this work for equalization. By the way, any chance this plugin could be made to have the option for separate impulse responses for each channel? I'm interested in equalization and that would help a lot.
Also, is it correct to assume that the impulse response must be created with the same sampling rate as the file to be convolved? If not I would expect the time/frequency values would shift.
Thanks, I think I can make this work for equalization. By the way, any chance this plugin could be made to have the option for separate impulse responses for each channel? I'm interested in equalization and that would help a lot.
Way ahead of you Just make stereo impulse responses.
Also, is it correct to assume that the impulse response must be created with the same sampling rate as the file to be convolved? If not I would expect the time/frequency values would shift.
Correct.
Thanks to Case the example impulses are now in WavPack format (which foobar can read by default, you needed a plugin for the FLAC ones I had before).
It can do an 2 048 tap equalization at 42 times realtime.
The default 18 tap foobar2k equalizer runs at 30 times
realtime. In effect, it can equalize faster than the
equalizer can.
How difficult is it to generate the tap data from the equalization parameters?
It can do an 2 048 tap equalization at 42 times realtime.
The default 18 tap foobar2k equalizer runs at 30 times
realtime. In effect, it can equalize faster than the
equalizer can.
How difficult is it to generate the tap data from the equalization parameters?
As explained in the readme, just feed an impulse through your effect of choice. In this case, diskwrite 'Unitimpulse2k.wav' with EQ settings of choice enabled.
If you want to, you can speed it up further by editing the resulting WAV with a sound editor and cutting the near silence before and after the impulse.
As explained in the readme, just feed an impulse through your effect of choice. In this case, diskwrite 'Unitimpulse2k.wav' with EQ settings of choice enabled.
Ah, so it can't be done algorithmically?
As explained in the readme, just feed an impulse through your effect of choice. In this case, diskwrite 'Unitimpulse2k.wav' with EQ settings of choice enabled.
Ah, so it can't be done algorithmically?
How is this not 'algorithmically'???
You need to transform the frequency response of the EQ into an impulse response. Guess what diskwriting the impulse with EQ enabled does...
Edit: I guess that you're asking whether it's possible to make an EQ component that uses the foo_convolve engine as a backend for the equalizer. Yes. In fact I checked and there are similarities between the current backends, but my code is faster, and you can finetune the filter length. Not to mention it also works in stereo.
How is this not 'algorithmically'???
You need to transform the frequency response of the EQ into an impulse response. Guess what diskwriting the impulse with EQ enabled does...
Edit: I guess that you're asking whether it's possible to make an EQ component that uses the foo_convolve engine as a backend for the equalizer. Yes. In fact I checked and there are similarities between the current backends, but my code is faster, and you can finetune the filter length. Not to mention it also works in stereo.
I mean directly calculating the tap data, rather than running a Dirac pulse through a system and finding its impulse response.
Ack. I think I need to start being more specific when I'm posting about technical stuff...
It's possible. I don't think it has much of a point though. The advantage of the convolver is that it's infinitely flexible and that you can combine the equalization with any other effect.
I may have found a bug:
[speakers off!] download one of the files that are here: http://www.geocities.com/beamsonic/studio.htm (http://www.geocities.com/beamsonic/studio.htm),
Garf Edit: We killed the site. I uploaded files to http://sjeng.org/ftp/fb2k/analogue.zip (http://sjeng.org/ftp/fb2k/analogue.zip)
(I took the DBX 160 file) open in wave editor, keep only first 16384 samples, duplicate channel to get stereo, then save & set as impulse file in FB2k. Play something, then close FB2k. Open it and play the thing again, but now go into DSP properties to the convolver settings. You'll be granted with either a crash or a very loud distorted sound (kinda like microphone feedback).
edit: added speakers off warning...
Problem "solved" by keeping the impulse sample as short as possible (trimming the impulse to get most of the 0's around it out).
It's a bug - the impulse doesn't get loaded when the config panel isn't opened. Will fix.
Edit: You don't need to convert to stereo - the component will convert automatically.
Uploaded new version with bugfixes and speed improvements.
Thanks for this truly essential tool, Garf.
Tiny req: I think that "dry/wet" slider would be nice for your tool.
you don't think this type of thing would/should be an all or nothing affair? Seems to me that your impulse response would be giving you exactly what you wanted and there wouldn't be any need for mixing it with the original.
you don't think this type of thing would/should be an all or nothing affair? Seems to me that your impulse response would be giving you exactly what you wanted and there wouldn't be any need for mixing it with the original.
Well, yes, you're probably right.
I'm just used to wet/dry sliders in DSP effects Especially in reverb, hrtf-related effects and similiar stuff. It's just an easy and fast way to adjust "amount" of effect you'd like at the moment. It's not "a must" for convolver, but that was first thing that I've been kinda "missing" while I was playing with IRs converted from SF Acoustic Mirror
Guess it could also be general request for DSP manager, but there are some plugins (like gap killers, crosfaders...) that couldn't utilize this functionality for any reasonable purpose... So, no.
I'm not strictly confident that a mix control would be useless in this case, it was just a thought, given how it operates.
Uploaded new version with bugfixes and speed improvements.
Thanks!!! Now if I can borrow a tube preamp... it would be great... muhahaha B)
edit: @Garf: can you include these in the analogue 'pack' (the pipeline preamps)?
http://www.noisevault.com/index.php?page=3.... (http://www.noisevault.com/index.php?page=3&action=category&cat_id=12&sid=302830928cf2eccdb95971ec8e748504)
BUG! [speakers off...] what happens if I load a 32bit float (IEEE) file as the impulse file? -> answer: blown tweeter fuses dammit... I need to get new fuses
Updated
- Added auto level adjustment
- Added Wet/Dry mixer setting
- Fixed a few crashing bugs.
BUG! [speakers off...] what happens if I load a 32bit float (IEEE) file as the impulse file? -> answer: blown tweeter fuses dammit... I need to get new fuses
There is no reason that 32-bit float files won't work, except for that the component uses foobars readers for input files and 0.6x apparently has a bug in it's float readers.
Note that internally everything gets converted to 32 bit float anyway.
PS. noisevault.com is cool!
- Added Wet/Dry mixer setting
Thank you
Garf,
Can you add a cross channel feature? This would allow us to make one channel a mix of convolution of left and right channels (like for "crossfeed" types of applications). I guess we would need a stereo impulse response for each channel:
Left channel stereo impulse response:
Impulse response left channel: Left channel input to Left channel output
Impulse response right channel: Right channel input to Left channel output
Right channel stereo impulse response:
Impulse response left channel: Left channel input to Right channel output
Impulse response right channel: Right channel input to Right channel output
Then we might need a wet/dry mixer for the crossfeed channels too.
There is probably a more elegant solution to this, but I'm sure you get the idea.
Different subject:
Should the impulse response be dithered? I thought dither should be used at the last stage before conversion to prevent error stackup. The input signal to the convolver is not dithered, so why should the impulse response be? If the impulse response is dithered should the output dithering be disabled? I can see arguments both ways, wondering if there is a prevailing logic on this.
Can you add a cross channel feature?
I don't think this is worth the hassle at all, and I can't see many if any practical situations in which this would be useful.
You can crossmix after the convolver BTW. If there's a need for a crossmixer I'll make one.
The input signal to the convolver is not dithereds o why should the impulse response be?
Don't forget that as far as the convolver is concerned it's 32 bits floats - dithering makes little difference there. You can give it dithered input as well, for example with a CD that was properly mastered.
I would recommend simple dithering but no noise shaping for the impulse signal.
If the impulse response is dithered should the output dithering be disabled?
Keep output dithering enabled.
- Added Wet/Dry mixer setting
There seems to be delay between original and processed signal, so wet/dry mixer does not work as it's supposed to. Try to load "dirac delta" impulse and play with the slider...
Yay, of course. I'll have to look whether this is fixable without significantly increasing memory consumption.
I just checked, and it does seem to work correctly. Note that if the impulse you are using does not have the pulse at the very first sample in the file, you will have a delay filter and 'of course' wet/dry mixing may not give what you intend, but the plugin does work correctly!
With a true dirac pulse (at sample 0), the result is the same no matter what mixer setting is used, which is correct.
D'oh! You're right.
Of course I tried it on included unitpulse2k.wav - hence the result
Yup...
It's padded out with silence because some effects cause changes/ringing before the actual pulse and I wanted to capture those so it's truely identical.
Could you post this component on Jan's 3rd Party Plugins list so it'll get added to the site, or have you already looked into this?
Can you add a cross channel feature?
I don't think this is worth the hassle at all, and I can't see many if any practical situations in which this would be useful.
You can crossmix after the convolver BTW. If there's a need for a crossmixer I'll make one.
Garf,
I'm not saying there's much need for crossmixing, but I do have an application. In a previous post (http://www.hydrogenaudio.org/forums/index.php?act=ST&f=1&t=6459) I suggested a simple stereo ambience effect (which allows adding stereo ambience to a mono recording as well as to mono) that could ideally be implemented with cross-channel convolution.
The special case (theta = 90° per pass) has two factors which I've tried rather laboriously with Cool Edit (Delay and Amplify/Crossmix/Invert features), but it does work rather nicely with just 4 passes:
1. Delay between passes (e.g. 1152 samples at 44.1 kHz = 26.112 ms)
2. Attenuation Coefficient per pass (e.g. -18 dB)
Assume you have L and R original sample values, you end up adding a delayed and attenuated version with channels swapped and one inverted to the input signal.
You can then pass this delayed signal through the same transformation/attenuation and add that too. (By this stage it's -L and -R but delayed and attenuated)
As an example, if you have a delta function on the left channel only, delay by 1152 and attenuate by 6dB per pass (rather "wet" sounding), the output pulse switches channel with each pass of the delay and inverts when going from right to left:
L(0) = 1.0000
R(1152) = 0.5000
L(2304) = -0.2500
R(3456) = -0.1250
L(4608) = 0.0625
My previous post showed this on an argand diagram (complex number) representation, including options to use non-90° steps per pass, which could also be represented using separate left and right convolution functions.
That defines the left channel's stereo convolution function for 4 passes (in practice -18 dB is a subtler, less wet effect, and sounds rather natural). I must get round to posting some samples.
The right channel's stereo convolution function for 4 passes of -6 dB per pass, 1152 samples delay per pass would be:
R(0) = 1.0000
L(1152) = -0.5000
R(2304) = -0.2500
L(3456) = 0.1250
R(4608) = 0.0625
When used subtly, the effect is a rather polished sheen and space around recordings that can be quiet pleasant when used sparingly yet doesn't colour the sound's frequency response like some measured room effects or comb-filter stereo effects.
Compared to the Cool Edit approach I've used a couple of times now, I could actually save some steps in achieving this effect by generating the same-channel file with one convolution using your foo_convolve as it stands, then mix-pasting with a file created by convolving a cross-mixed version with a different convolution function (and auto gain off).
Further applications of crossmixed FIR convolution include playback of binaural material over loudspeakers (probably requires rather exact listener location, so probably not very useful) and probably some kinds of cancellation of room-interaction with loudspeakers (you need to generate the inverse convolution function to cancel out the effects). I suspect the frequency-flattening part of the latter doesn't need cross-mix, and cross mix might not add much value to it.
By the way, Garf, I note in the Readme.txt that you wrote it 18000 years in the future:
Copyright © 20003 Gian-Carlo Pascutto
Just thought I'd point it out.
DickD
Okay, two thoughts:
1) Maybe it would be better to make a seperate plugin for this.
2) I could make crossmix impulses optional. I think they are bloat, but it is nice functionality and it's probably possible to implement them without slowing down/increasing memory usage if they aren't used. I have time now to work on this kind of thing.
Further applications of crossmixed FIR convolution include playback of binaural material over loudspeakers (probably requires rather exact listener location, so probably not very useful)
I don't know how this works
and probably some kinds of cancellation of room-interaction with loudspeakers (you need to generate the inverse convolution function to cancel out the effects).
Inverse convolution is tricky - you can't even mathematically guarantee it works, and in practise you often end up with a lot of noise. If I got it correct, this is no more than changing a multiplication by a division in my code, so it wouldn't be very hard to try. I actually already did once but was very unimpressed by the result.
By the way, Garf, I note in the Readme.txt that you wrote it 18000 years in the future:
Copyright © 20003 Gian-Carlo Pascutto
Just thought I'd point it out.
YOU BLEW MY COVER!!1
Sorry for blowing your cover - those time cops will be after you!
BTW, can I ask why you do an FFT in your plugin? Is it simply to measure the approximate effective scaling of the impulse response and automatically adjust the gain?
I agree that cross-mixing is bloat for most purposes (e.g. simple equalization), though it provides better representation of reflections for room simulation (particularly binaural room simulation for headphones).
The other application of cross-mixing convolution I forgot to mention is for speaker simulation on headphones. If you like the sound of your home HiFi setup in its sweet spot, you could record its impulse response on each channel in stereo using, for example, binaural headphones (like those on Jim Bamford's Binaural Field Recordings site (http://jimtreats.crosswinds.net/MyTreats/Binaural/index.htm)). By crossmix-convolving that with your music, you could, for example use FB2K and foo_clienc to output MP3 or MP2 files to play on a portable with earphones that sound just like your favourite system (apart from any non-linear effects). Without crossmixing impulse responses, you don't get the crossfeed effect.
I know most people don't have binaural microphones or dummy heads to do this measurement (or the deconvolution to create a binaural effect over loudspeakers) but a few people with the right equipment could create impulse responses for a variety of pleasant-sounding loudspeaker set-ups to act as loudspeaker simulation for headphones that could be even more natural (and doubtless more coloured!) than many crossfeed plugins.
A few links relating to this are included on:
http://www.geocities.com/kangimp/ (http://www.geocities.com/kangimp/)
One worth looking for is Angelo Farina and his Aurora and Ramsete software. You may need to use Google or www.archive.org to download the cached versions of pages, because I'm having trouble reading them direct. This package includes some methods regarding the calculation of inverse impulse responses (i.e. for deconvolution of linear effects) and he also has numerous scientific papers on these matters. There are various methods suggested which have different qualiteis.
Getting a bit technical, division works perfectly in the Fourier domain to deconvolve in the time domain (albeit that highly attenuated frequencies when amplified back to the original level tend to be very noisy - it's division by a small number represented in a fixed-point scale). The same happens in image deblurring with 2D Fourier Transforms, where high spatial frequencies tend to become noisy in the sharpened image.
However, simply dividing by the convolution function in the time domain doesn't do the same thing. I think that's equivalent to convolution in the frequency domain (or perhaps convolution by the complex-conjugate - my memory is a bit fuzzy). I can't imagine it sounding pretty, especially with all those divide-by-zeroes!
where * represents convolution and x is multiplication:
m(t) = g(t) * h(t)
M(f) = G(f) x H(f)
If you want to recover the original signal, g(t) (which can be represented by its full Fourier Transform, G(f)) which is the sound before it was convolved by the impulse response of your system and listening room, you can take the Fourier Transform of the output, M(f) and divide it by the F.T. of the impulse response, H(f) to obtain G(f). This is the same as multiplying it by 1/H(f). If so we have:
G(f) = M(f) x (1/H(f))
so we can also say
g(t) = m(t) * inverseFFT(1/H(f))
So if you know h(t), you can derive the deconvolution function by taking its Fourier Transform, H(f), inverting it (watch out for divide-by-zero!) and taking the inverse Fourier Transform of that. You might find that this contains some complex components (I haven't thought it through to work that out), and near-infinite components (divide by zero for frequencies that were fully attenuated in the original).
For example, your DAC should contain a brickwall filter to remove frequencies between about 20 and 22.05 kHz, which the pure deconvolution function would try to correct for, leading to masses of HF noise (because of the near-zero functions). It's not desirable or pracitcal to overcome this filter, so I'd modify the deconvolution filter to act only on audible frequencies, up to around 20 kHz while not attempting to boost frequencies too near the Nyquist. This could be done in the Fourier domain, e.g. by setting zeroes instead of calculating 1/H(f) for frequency bins above +20 kHz (and those below -20 kHz in negative frequency) or it could be done by post-filtering the deconvolution function with a suitable low-pass.
There are a number of technical difficulties in these sorts of techniques and various solutions.
Impulses, being very brief, are rather low energy, and this energy is spread by the true impulse response so that the measured response is prone to being noisy (causing problems with accurate deconvolution). One method of improving the signal-to-noise ratio is to average many many impulse responses and reduce the measurement error of the average.
For simple frequency equalization, tone sweeps (chirps) can work and can contain more energy per frequency than a single Dirac delta function pulse.
From a prior life when I was heavily into research about clipped digital correlation or noisy analogue signals, I also remember techniques like chirp-Z are possible for some similar analysis (equivalent to correlation) and might be adaptable.
One nice technique, also used in radar and time-domain reflectometry, is the use of pseudorandom noise, which has a white spectrum, just like a delta function, but much higher average energy. You can either cross-correlate the received signal with the known pseudrandom input signal and determine the time signature or you can take the Fourier transform of the correlation function to determine the power spectrum. I suspect a similar technique could be adapted to deriving impulse responses and inverse convolution functions from relatively noisy measurements. A correlation function is closely related to an impulse response. Similar ideas are used in spread-spectrum communications techniques like Code Division Multiple Access (CDMA).
BTW, can I ask why you do an FFT in your plugin? Is it simply to measure the approximate effective scaling of the impulse response and automatically adjust the gain?
The convolution works entirely in the frequency domain. It already does what you describe halfway.
Getting a bit technical, division works perfectly in the Fourier domain to deconvolve in the time domain (albeit that highly attenuated frequencies when amplified back to the original level tend to be very noisy - it's division by a small number represented in a fixed-point scale).
This is what I tried. I made several restrictions, one that it was restricted to zero phase filters (no complex components), and that any boost was forcedly limited to 30dB (to prevent overamplification of noise). But even reversing simple equalization didn't work all that well. It needs further experimentation.
But I will try crossmix convolution first.
For simple frequency equalization, tone sweeps (chirps) can work and can contain more energy per frequency than a single Dirac delta function pulse.
From a prior life when I was heavily into research about clipped digital correlation or noisy analogue signals, I also remember techniques like chirp-Z are possible for some similar analysis (equivalent to correlation) and might be adaptable.
One nice technique, also used in radar and time-domain reflectometry, is the use of pseudorandom noise, which has a white spectrum, just like a delta function, but much higher average energy. You can either cross-correlate the received signal with the known pseudrandom input signal and determine the time signature or you can take the Fourier transform of the correlation function to determine the power spectrum. I suspect a similar technique could be adapted to deriving impulse responses and inverse convolution functions from relatively noisy measurements. A correlation function is closely related to an impulse response. Similar ideas are used in spread-spectrum communications techniques like Code Division Multiple Access (CDMA).
In audio, MLS and IRS signals are used to derive (deconvolve) the impulse response, in a similar way to the ones you suggest. They are available too at Angelo Farina's Aurora set of plugins.
The convolution works entirely in the frequency domain. It already does what you describe halfway.
...
This is what I tried. I made several restrictions, one that it was restricted to zero phase filters (no complex components), and that any boost was forcedly limited to 30dB (to prevent overamplification of noise). But even reversing simple equalization didn't work all that well. It needs further experimentation.
But I will try crossmix convolution first.
Ah, seeing that you use FFTs to actually perform the convolution, they're bound to be windowed FFTs - presumably using lapping transform windows? The mathematics about convolution in time being equivalent to multiplication in frequency domain may well break down somewhat for windowed/blocked FFTs. Also, you need to ensure that you divide one complex number by the other for it to remain true. I think if you dump the complex parts, you always obtain a symmettrical ("even") time-domain signal from the inverse FT, comprised entirely of cosine components (cosine is an even function, sine is odd (mirror image about zero), and various other exp(ix + theta) functions, where theta isn't a multiple of pi/2 are neither odd nor even).
I'm guessing that zero-phase (cosine) filters might end up beating with non-zero-phase filters in the original impulse response that you EQ'd? Just a suggestion. You wrote (or at least modified) the latest equalizer plugin, so you know how that works internally better than I do.
@KikeG: Thanks for the MLS / IRS thing for deconvolution. I found on Google a link to the Aurora site describing this, and a thread where you told me this before, so apologies for making you repeat it!
Ah, seeing that you use FFTs to actually perform the convolution, they're bound to be windowed FFTs - presumably
using lapping transform windows? The mathematics about convolution in time being equivalent to multiplication in frequency domain may well break down somewhat for windowed/blocked FFTs.
Given that the overlapping is done properly, it doesn't. I started with a FIR convolver and optimized it.
I'm guessing that zero-phase (cosine) filters might end up beating with non-zero-phase filters in the original impulse response that you EQ'd?
I think foobars equalizer is zero-phase also, but I'm not sure. (I was inverting the original equalizer).
Brilliant plugin!
I was wondering if you might consider adding a pre delay slider eg:- from -500 to +500 ms.
This would be great for old tape delay impulses as well as offset problems with badly trimmed impulses.
Thanks again, keep up the good work.
P.S.
Check out:-
http://sound.media.mit.edu/KEMAR.html (http://sound.media.mit.edu/KEMAR.html)
For impluses of 3d spacial positioning based upon how the human ear hears. Useful for sound design (especially for film).
For regulating delay edit the impulse. It makes no sense whatsoever to make this configurable in the plugin.
All professional digital reverbs have pre-delay sliders/knobs. This is also true of convolution units. Pre-delay can make a room sound "larger".
I don't care what design mistakes other people made. You can do it by editing the impulse. There is no point to including it in the component.
Lexicon, TC, & Waves units do not use impulses to achieve reverb, yet these companies include pre-delay in all their reverb units as it is considered essential.
It seems, however, you have already made up your mind though. I was just hoping you could make this great plugin perfect, thats all.
Thanks again for your plugin.
Another interesting proposition, possibly required for certain types of effects... mid/side impulses.
Positive pulse similar to unitpulse2k.wav passed through effect -> mid impulse.
Positive pulse in one channel with negative pulse in opposite channel passed through effect -> side impulse.
Output = Mid calculated from stereo input -> mid impulse
Output += Side calculated from stereo input -> side impulse
Probably only useful for stealing stereo expansion effects from closed source or closed license software signal filters.
Lexicon, TC, & Waves units do not use impulses to achieve reverb, yet these companies include pre-delay in all their reverb units as it is considered essential.
It seems, however, you have already made up your mind though. I was just hoping you could make this great plugin perfect, thats all.
Thanks again for your plugin.
What Garf is saying is that the convolver _SUPPORTS_ pre-delay. It is achieved by simply editing the impulse. There are a thousand and one different ways to permute the impulse before it is used, and the most efficient way to support them all is to make the end-user apply them before the plug-in deals with the impulse.
Furthermore, reverb is impossible without impulses. Reverb itself is just a specialized case of a convolution filter. Even if your DSP takes the input audio, delays it 50ms, then mixes it back into the music at half-volume or something, that is just a hard-coded convolution filter. I know that's a little pedantic, but it is the truth.
Perhaps it is exactly because they do not use a traditional convolution filter for their reverb that they feel it necessary to include a pre-delay function. Are there any reverberators out there that use convolution but still do the pre-delay thing?
Correction for previous request, I have no idea how the hell this would work, if at all.
Of course, I can see the relevance of summing stereo impulses of individual channels, perhaps for processing each channel with its own HRTF impulse. Of course, that'd be doubly slow for plain stereo... double again for 4.0...
How does one go about converting Sound Forge impulse files (.sfi) to .wav format for loading in FB2K?
Feed that unitpulse2k.wav through it. You can trim it down to the single pulse sample first, as the output will be extended to the full length of the impulse.
MIX ADJUST not work fine here.
Load impulse file, for exemple unitpulse2k
(because problem is very clear)
put slider to 0 %
play
sound isn't different from sound without convolver (fortunately...).
put slider to 100 %
sound no change (logically!)
put slider to 50 %
I can not explain in English what I hears but it is catastrophic!
same problem with all impulses files
foobar 0.667 and 0.7 b22
please, can you confirme if it is a bug or if i have a problem in my system?
Melomane, read whole thread - I had the same "problem". Unitpulse is not really unitpulse (Dirac delta) but unitpulse plus const., so it works as delay filter.
Thank you Messer, now i understand.
i have use file from convolve.zip (0.6 foobar) and all are wrong.
I don't care what design mistakes other people made. You can do it by editing the impulse. There is no point to including it in the component.
Garf, just wondering...
If the impulse contains response that comes _before_ actual pulse (some pre-echoes etc.), then there's no way to compensate delay by editing impulse file only...
There is also no way to compensate for that on output, unless you want to cut off the pre-echo of the first few samples.
kode54 is correct. It's also reason why the included unitpulse2k is not a true dirac pulse, so effects that influence before the impulse have some 'room'. I noticed that otherwhise most effects aren't able to work well.
If you have an effect with delay and want to have a delayed wet/dry mix, work with the impulse in an external wave editor.
Nah, that's not really a whining, I was just "thinking aloud" about possible situations where adjustable delay could be handy Not that it's worth the hassle...
Garf, in case you need some more whining as motivation
Could you please, pretty please, look into adding crossmixing?
Where can I download the latest foo_convolve plugin?
Where can I download the latest foo_convolve plugin?
It's included in the special installer from Case's site (http://ttp://www.saunalahti.fi/cse/html/foobar.html) or available at official fb2k components site (http://www.foobar2000.org/components.html).
Where can I download the latest foo_convolve plugin?
It's included in the special installer from Case's site (http://ttp://www.saunalahti.fi/cse/html/foobar.html) or available at official fb2k components site (http://www.foobar2000.org/components.html).
Thanks for the links.
I couldn’t find it on http://fb2k-plugins.hydrogenaudio.org/ (http://fb2k-plugins.hydrogenaudio.org/)
I was wondering the processing pipeline of FooConvolver?
Is it:-
Impulse converts to 64 bit float and then is processed with what is in the playlist (which is also converted to 64 bit float).
ie:- 64 bit float x 64 bit float regardless of format the originals were in.
all processed using 64 bit float precision?
Also what happens when the samplerates do not match?
Impulse converts to 64 bit float and then is processed with what is in the playlist (which is also converted to 64 bit float).
ie:- 64 bit float x 64 bit float regardless of format the originals were in.
all processed using 64 bit float precision?
Also what happens when the samplerates do not match?
All processing is in 32 bit float precision. (There is no quality advantage in 64 bits and it takes up more memory).
When samplerates don't match the samplerate of the output takes priority, and the impulse is treated as having that samplerate (so basically you want to avoid that unless you want to try to get some funny effects).
So does anybody have a good impulse for use with Sennheiser HD580's, an audigy 2 using kernel streaming, and pop/rock music? (weezer, red hot chili peppers, beck, cake, radiohead, etc) (and some classical/techno of course).
So does anybody have a good impulse for use with Sennheiser HD580's, an audigy 2 using kernel streaming, and pop/rock music? (weezer, red hot chili peppers, beck, cake, radiohead, etc) (and some classical/techno of course).
Try UnitpulseDirac.wav.
So does anybody have a good impulse for use with Sennheiser HD580's, an audigy 2 using kernel streaming, and pop/rock music? (weezer, red hot chili peppers, beck, cake, radiohead, etc) (and some classical/techno of course).
Try UnitpulseDirac.wav.
Ahaha, touche!
The HD580 is great without equalization or impulses but sometimes the perfect lineariry does get boring. In those cases I kinda like "Tube Amps/Studer +6dB Updated" for a warmer feeling.
This is what I tried. I made several restrictions, one that it was restricted to zero phase filters (no complex components), and that any boost was forcedly limited to 30dB (to prevent overamplification of noise). But even reversing simple equalization didn't work all that well. It needs further experimentation.
You need at more sophisticated approach for this.
Try DRC program by Dennis SAbrigion. It can be found at Freashmeat
Morten
Is it possible to add support for one impulse response per sample rate ?
I use an impulse response in order to correct the equalization of my speakers, because the equalizer don't have a parametric section. But I have both 44100 Hz and 48000 Hz files in my playlist.
It would be nice if the convolver would use toto44.wav as impulse response when a 44.1 kHz file is played, and switch to toto48.wav when a 48kHz file is played.
Exhibited *very* strange behaviour.
Upon first run with it, attempted to go into prefs, and it foobar crashed as soon as I click "foobar2000".
Removed *all* componets, and it worked fine. So i slowly added them all back in, and now it works fine. lol. *shrugs*
Steve
Is it possible to add support for one impulse response per sample rate ?
I use an impulse response in order to correct the equalization of my speakers, because the equalizer don't have a parametric section. But I have both 44100 Hz and 48000 Hz files in my playlist.
It would be nice if the convolver would use toto44.wav as impulse response when a 44.1 kHz file is played, and switch to toto48.wav when a 48kHz file is played.
[a href="index.php?act=findpost&pid=205850"][{POST_SNAPBACK}][/a]
Shouldn't correct and easier behaviour be to resample the impulse response instead?
I don't know.
If you know as a fact that it works (=produce the desired effect) it would be the easiest solution by far, yes, though some people might prefer having the freedom to choose their own resampler, or to record the impulse again.
though some people might prefer having the freedom to choose their own resampler
That will be true to some extent, since I'd just use foobar's resampler services.
After reading about foo_convolve, I decided to use it to emulate the Winamp built-in MP3 equalizer. The problem is that the impulses are wav files. I'm not good with theory, I mean can I convert the wav impulse to mp3 and feed it through Winamp? If this is not possible, do I have any other option?
Just feed the wav through winamp??
I think Wizard is suggesting that Winamp has a format specific equalizer, that is triggered only when playing that particular format. Hence a wav file won't work if you want to capture the settings used with mp3 files.
I don't have a clue whether it works this way though...
I think Wizard is suggesting that Winamp has a format specific equalizer, that is triggered only when playing that particular format. Hence a wav file won't work if you want to capture the settings used with mp3 files.
I don't have a clue whether it works this way though...
[a href="index.php?act=findpost&pid=252464"][{POST_SNAPBACK}][/a]
Exactly upNorth! Winamp's in_mp3 has an option "Fast Layer 3 EQ", which is only for MP3 playback and I have a certain preset that I'd like to emulate.
Hi,
Garf, you planned to add cross-channel convolution, have you dropped the idea?
Please, if at all possible, that would be very very good thing.
All those crossfeed plugins are too limited. 2 stage convolution would be ideal to reach any desirable result.
(http://headwize.com/images/hdrm3.gif)
To make decent headphone listening with convolve plugin, you'd need to convolve as you crossmix.
Using crossfeed plugin after convolve does not do it right. You really need to manipulate crossfeed data in both time and frequency response.
http://headwize.com/tech/headrm1_tech.htm (http://headwize.com/tech/headrm1_tech.htm)
will there pleeease be a 0.9 version when it's final ?
Could Garf or someone else tell me what the functionalities of this convolver are?
Am I right that if you have a stereo signal it expects a stereo convolution and convolves each channel of the original signal with the corresponding channel of the convolution file?
If you had an n channel original and an n channel convolution would that work too?
Presumably in general convolution will take an n channel original and convolve it with an n*m matrix of mono signals to get an m channel result. This convolver doesn't do that I don't suppose?
And are all sample rates supported as long as the original has the same rate as the convolution?
Thanks for any help.
will there pleeease be a 0.9 version when it's final ?
[a href="index.php?act=findpost&pid=355570"][{POST_SNAPBACK}][/a]
I gave Peter the source code so all new versions should include it by default.
Bump. If this convolver just convolves with a single mono convolution is any convolver more flexible, for foobar or any other playback software?
Bump
Bump. If this convolver just convolves with a single mono convolution is any convolver more flexible, for foobar or any other playback software?
[a href="index.php?act=findpost&pid=359829"][{POST_SNAPBACK}][/a]
Is it still in mono? Would be useful to have it in stereo, due to room asymmetry. Seems like a small change (?)
Bump. If this convolver just convolves with a single mono convolution is any convolver more flexible, for foobar or any other playback software?
[a href="index.php?act=findpost&pid=359829"][{POST_SNAPBACK}][/a]
Is it still in mono? Would be useful to have it in stereo, due to room asymmetry. Seems like a small change (?)
[a href="index.php?act=findpost&pid=371784"][{POST_SNAPBACK}][/a]
And what about foobar2000 0.9 support? Because as of now foobar would be as useless as amaroK, which would be better since its a good native Linux player... but I need convolution, and the probably only way to get that is through the insanely difficult BruteFIR... tried many days, couldn't get it working... (though I'm making progress...).
I was wondering if convolver in 0.9 will support 5.1 or more channels in the impulse file.
Any news on 0.9 convolver?
This is the last thing I need to feel at home with 0.9. Any new news?
same here
also waiting
i'm also missing the 0.9 convolver. any plans on updating it?
I would go down on my knees if I have to.
Please, please release a 0.9 ver!
I've been waiting this plugin also and I need it almost desperately.
is there ant plan for the development to support foobar2000 0.9?
I miss this plugin so much
The convolver is not part of the standard foobar install.
Is there any chance that the author for foo_convolve could re-compile it for v0.9 foobar?
Thanks!
it's available now @ http://www.foobar2000.org/components/index.html (http://www.foobar2000.org/components/index.html)
Regarding the way Equalization works in Winamp
Winamp's input API allows for Equalizer handling in the input plugin, but you have to go way back to find a Winamp that required the input plugin to Equalize the audio. Most Winamp versions has it's own integrated Equalizer that sits between the DSP and output stages. Nullsoft even improved this Equalizer with new code a while back.
Regarding the way Equalization works in Winamp
...
How is this relevant to the discussion? I hope you realize that the last mention of equalization in Winamp is from December 2004.
I hope you realize that the last mention of equalization in Winamp is from December 2004.
I did not look at the post date sorry. I will start to look at the post dates from now on.
But why are there so old posts still around here? Time to prune the forum database perhaps?
Clean everything from before 2005 and maybe put really important info in a Wiki.
Wikis are for archival of information while forums are for discussions of up to date topics.
Thank you!
Now I wonder how to learn how to make Impulse response files from scratch using Adobe Audition.
Now I wonder how to learn how to make Impulse response files from scratch using Adobe Audition.
That should be easy. Make a new mono wave file and add for example 8192 samples silence. Put one sample as high as possible somwhere in middle. I suggest you to edit mono file at this stage, because if the impulse differs between channels, I think it can result small delay and/or gain difference between channels. Now you should have impulse responce which doesn't do any "efects". Now you can apply some efects with Adobe Audition to it. Just duplicate the mono file to stereo afterwards. Impulse responce should be at same sampling rate as the audio where it is applied.
I hope you realize that the last mention of equalization in Winamp is from December 2004.
I did not look at the post date sorry. I will start to look at the post dates from now on.
But why are there so old posts still around here? Time to prune the forum database perhaps?
Clean everything from before 2005 and maybe put really important info in a Wiki.
Wikis are for archival of information while forums are for discussions of up to date topics.
Thank you!
Old stuff is still very useful, old threads move to the bottom of forums so the ones noone is ever going to reply to annoy noone, and if someone wants to resume discussion of an old topic, perhaps something to do with recent developments, they can do so without having to repeat everything that has already been said.
I'm not quite sure how to correctly use the convolver plugin. In my case I would like to use it as an alternative to Dolby Headphone. I have an impulse file from a rehearsal room, but I assume that it isn't enough to only use the convolver plugin, because the stereo field still seems to be unnaturally wide. Would a simple crossfeed plugin, that's put before the convolver plugin, be the best solution here?
I'm not quite sure how to correctly use the convolver plugin. In my case I would like to use it as an alternative to Dolby Headphone. I have an impulse file from a rehearsal room, but I assume that it isn't enough to only use the convolver plugin, because the stereo field still seems to be unnaturally wide. Would a simple crossfeed plugin, that's put before the convolver plugin, be the best solution here?
I suppose so. I don't think that it matters much if the crossfeed DSP is before or after the convolver, the results should be almost equal.
Is there a way to get the convolver to work with 6-channel audio? I don't even need seperate impulses for each channel, just one to apply to all.
I think I've fallen love in... Many thanks!
I'm running foobar2k v0.9.4.4 and I get en error stating that foobar "Failed to load DLL: foo_convolve.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000."
So, how do I fix that?
I'm running foobar2k v0.9.4.4 and I get en error stating that foobar "Failed to load DLL: foo_convolve.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000."
So, how do I fix that?
same here. Dependency Walker highlights files mpr.dll & wzcdlg.dll.
even after downloading and placing those files in foobar & system32 directory, same problem occurs on launch.
I have no problem. it's work fine.
same here. Dependency Walker highlights files mpr.dll & wzcdlg.dll.
even after downloading and placing those files in foobar & system32 directory, same problem occurs on launch.
It is not recommended to attempt to fix component loading problems by downloading random DLL files and placing them all over your hard drive. Unless you know exactly what you are doing, you will likely do more harm than good, if you achieve anything at all. Also note that the Dependency Walker FAQ (http://www.dependencywalker.com/faq.html) has an entry dealing with MPR.DLL.
Which version of foobar2000 do you use? The convolver DLL that is linked to in the first post is made for foobar2000 0.8.x. If you use 0.9.x, you will have to get the convolver version from the official additional components page (http://www.foobar2000.org/components/).
Ah, downloading from the components page instead of from the link at the beginning of the thread fixed it (of course, since I'm running an 0.9 version...). I'm pretty sure that it wasn't obvious that the link in the thread was for v0.8 when I downloaded though. Or maybe I'm just stupid... Either way, it works now, so I'm a happy camper.
Ah, downloading from the components page instead of from the link at the beginning of the thread fixed it (of course, since I'm running an 0.9 version...). I'm pretty sure that it wasn't obvious that the link in the thread was for v0.8 when I downloaded though. Or maybe I'm just stupid... Either way, it works now, so I'm a happy camper.
this is so embarassing. i did the same thing
thanks for the tip
foosion
hi,
is it possible to implement multi-channel support for the convolver somehow?
I'm trying to build up an active 4-way speaker system and it would be just perfect
to load 8 different FIR filters...
thanks...
Hi,
I have long time had a problem with visualisations(even build-in ones) skipping every 4 seconds when using Convolver. Is there anything on the Convolver's code that can be causing this behaviour?
I found that setting the playback thread priority on fb2k's advanced options to 3 or lower helps on the issue, but causes skipping when other programs are using cpu-time.
This visualisation skipping has been in every 0.9x foobar2000 I have tried, the last beta included.
Environment: 2.2GHz AMD Athlon XP, 512MB RAM, Windows XP SP2, foobar2000 0.9x, foo_convolve 0.3
Thanks in advance
How are things with crossfeed convolution? That would be so great to experiment with. Or has the development of this component ended?
My interest is in speaker simulation using headphones. I would be happy with symmetrical crossfeed using just one "stereo" impulse response, one channel for left and right direct sound effects and the other for left and right crossfeed effects. I don't think asymmetric true stereo crossfeed effects are that necessary since the ideal listening setting is symmetrical anyway.
Can you recommend me some impulse which makes the sound softer (warmer). I am using Audigy4,KS 24 bit.
I have a few questions related to the Plugin:
a) Does anyone know of a visual/graphical wave editor that allows one to "adjust" the wave manually?
b) How does the length of the unitpulse2k "spike" affect the plugin?
Is there a way to make the recorded pulse more detailed (maybe by broadening or repeating the pulse a few times)?
Thanks.
a) Does anyone know of a visual/graphical wave editor that allows one to "adjust" the wave manually?
Most editors can do that: Audacity (open source) or CEP/Audition
Just zoom enought in the wave and make "adjustments"
not working in Win7 RC. hoping for an update.
Failed to load DLL: foo_convolve.dll
Reason: This component is not compatible with this version of Windows and needs to be recompiled with a newer version of the foobar2000 SDK; please contact the author of this component to obtain an updated version of this component.
Which version are you using?
0.3 works fine on latest foobar and Windows 7
my bad.. I didn't update
since the last update date is 2006, I assume I have the same version
I don't really know how this whole convolution thingy works and so this question might be "stupid", but I'll try anyway.
Lets say you record the unitpulse dirac played through an expensive and very balanced reference speaker in a anechoic chamber
and also record it played through your speaker at home.
Now I could take the home file to the studio and simulate how it sounds at home, right?
But what if I'd like to do it the other way around, namely trying to get the studio sound into the home. (at least in terms of tonality)
Guess what would be need is a tool that takes two impulses and combines them somehow,
e.g. first inverse all "ups and downs" to get a flat sound and then optionally apply the other impulse, so you'd end up with the sound of that other impulse..
Does that make any sense?
I made an impulse file with an EQ which works nicely. I also tried making an impulse file using the freeverb DSP to add some reverb - This file was not attenuated, but when I use it, the output is attenuated by ~7dB. Why? When I open the file in Audition it doesn't seem attenuated.
It seems very light on resources. If I apply a higher quality EQ (maybe a parametric EQ) to the impulse, would the quality still be very high and possibly higher than the built in EQ?
Hello Garf and others,
I don't know if this thread is still active / sometimes checked by the developer (that would be Garf, right)? I want to thank you for your effort - I am a fan and avid user of the convolving plugin.
Like many others I use Foobar2000 (v1.0.3) with the foo_upnp.dll plugin (http://www.foobar2000.org/components/view/foo_upnp) to stream lossless and HD music to my HD-capable streaming client (Linn Majik DS (http://www.linn.co.uk/files/81be18f3/MajikDS_infosheet.pdf)) and HiFi Stereo System. Works beautifully, as it merges the many advantages and impressive functionality of Foobar2000 (slim build, low use of system resources, plugins!!!) with the comfort of (bitperfect) HD network streaming and the sound quality of a good DAC/power electronics... This is truly a solution that meets audiophile needs!
Again like many others, I am also using foo_convolve.dll (a seperate DSP-Chain for foo_upnp.dll was recently introduced) to realize digital room correction and speaker driver-time-alignment ( example: http://www.acourate.com/ (http://www.acourate.com/) ). Which also works flawlessly. The only quibble I have would be that one has to manually change the convolution-filter file each time one plays a different resolution.
My question: Do you think it technically possible to update the plugin - so that one could prepare & load multiple filter files (with different resolutions, 16/44.1, 16/48, 24/96 and 24/192 for instance) into the plugin, and have it automatically change filter-files according to incoming file resolution? Ideally not dependent on foobar's default control playback - as people using foo_upnp.dll for streaming don't use those - but somehow "inside the plugin"? A "plugin-input-resolution sensitive multifilter-convolver", so to speak.
If technically possible (I know, even to a person like me who's not into programming the task seems complex), would it inspire you to try and implement this functionality? Or do you know someone who might be interested? It would add so much more value to an already gorgeous plugin. And make a lot of people even happier...
Best regards, Martin
I always add resampler DSP just before convolver.
I always add resampler DSP just before convolver.
That is what I wanted to avoid!
I know there are different resampling plugins for Foobar2000 (SOX (http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=67373&view=findpost&p=600000) for instance). I briefly considered just having one convolving filter in 24/192 or 24/96 with SOX-resampling prior to foo_convolve.dll in the DSP-chain.
But ultimately my goal would be to have the convolved files streamed to the client
without sample rate conversion. Which, as I said, would require filter files (and beforehand - acoustic measurement) in up to 4 different resolutions (16/44.1, 16/48, 24/96 and 24/192). I have a few FLAC files in 24 bit / 192 kHz, and lots in 24/96...
The reason is, I believe each resampling process potentially harms the signal. That is not just my personal opinion, but what many listening tests have shown... Plus, I have heard that resamplers have the biggest problems with material of a resolution which equals the one chosen as output resolution. Which would mean the worst performance on my HD material. I'd want to avoid that!
Granted, the most practical solution would be to first resample and then apply one high resolution filter file. Which is possible with the existing plugins. The audiophile approach is the more complex one, with multiple filters - one for each resolution. I hope to inspire someone to help make the latter possible...
Cheers, Martin
Martin,
I’m in the process of ripping my LP library and I noticed that some of my older LPs could benefit from a little EQ. So, having the need and not wanting to wait for someone else to do it, I wrote it my self: A convolver plugin that chooses the impulse file based on a track tag and the current sample rate.
It took me a couple days because I am just learning the Foobar API and I don’t know C++. Most of the time was spent combing through example source code looking for bits that did what I needed. However, cutting and pasting invariably resulted in the compiler barfing or Foobar crashing. I don’t know the secret incantations to make C++ do what I want. I ended up writing the whole thing is C, bypassing most of the Foobar API. As a result, the plugin probably breaks a lot of rules and restrictions the API is meant to enforce. It works for me, though, and that’s all I want.
Please don’t ask me for a copy. What I did is experimental, just for me, and not release quality. I’m posting this to spur further development of foo_convolve to make it choose impulse files based on playing track’s tags and the current sample rate. On the other hand, if someone would point me to example code that can read the cached tags and read arbitrary audio files from the context of a DSP plugin, I could proceed and eventually produce something that could be shared.
I wrote it my self: A convolver plugin that chooses the impulse file based on a track tag and the current sample rate.
I had wet dreams about such feature in the convolver component!
Please don’t ask me for a copy. What I did is experimental, just for me, and not release quality. I’m posting this to spur further development of foo_convolve to make it choose impulse files based on playing track’s tags and the current sample rate. On the other hand, if someone would point me to example code that can read the cached tags and read arbitrary audio files from the context of a DSP plugin, I could proceed and eventually produce something that could be shared.
Please do! I love you
Hello Garf ,
I hope you open the source code to the public.
Purpose:
・The recompile for the latest version.
・I want to remodel it to four channel output simultaneously.
(I am sorry by poor English. )
Hello Garf ,
I hope you open the source code to the public.
Not likely to happen, because:
?The recompile for the latest version.
The version on the official components site already works with the latest foobar2000. Also, it requires a closed source commercial library to do the convolving.
?I want to remodel it to four channel output simultaneously.
It should already support convolving as many channels input as long as the impulse has a matching number of channels.
I noticed a problem with certain impulse responses where the impulse is not the first sample.
Since such impulse responses introduce a delay the audio track will start a couple of samples later and the end will be cut-off early by the same number of samples
It would be nice to have an option to throw away the initial delay samples and end the track normally.
edit: Please note that changing the impulse responses is not an option, because it will alter the results. :/
Or instead of throwing away the initial delay samples / adding at the end maybe some kind of buffering and left shifting of the samples would work.
Buffering would break gapless playback.
Another idea would be for you to add a silence:// track to the end of the conversion batch, and either convert all files to a single output track, or append them manually with an editor. Oh, and setting it to not reset the DSPs between tracks is essential for that manual padding to work.
Cutting each file manually after conversion with a wave editor. That's not the most comfortable workaround, is it?
And "Mix adjust" option doesn't work properly with such impulses...
Hi,
here’s one more guy who’d like do convolve each stereo channel separately in order to simulate speaker over headphones. This thread doesn’t look like the plugin’s development is going on, but I’ll try to explain what would be necessary to do anyway:
A normal stereo recording has to channels. If you listen to it with speakers, you here both channels with both ears. Sounds like speakers do, including the room acoustics. Using headphones, you here the left channel with your left ear and the right channel with your right ear. Sounds sort of not so good.
In order to simulate speakers, the plugin would have to convert each stereo channel to a mono recording (which has two channels!), convolve the left two-channel mono signal with a stereo impulse response for sounds coming from the left (azimuth 30°), and convolve the right two-channel mono signal with a stereo impulse response for sounds coming from the right (azimuth 330° oder -30°). So each original stereo-channel has to be doubled, the twins have to be treated as stereo signals and convolved with a stereo impulse response (different ones for each twin couple/doubled stereo side), with makes the original stereo channel a new stereo signal. At the end, you have for channels, i.e. two stereo signals, which you have to mix. I hope my explanation isn’t to confusing. One important conclusion is that this can’t be done by combining the convolution plugin with a crossmixing plugin. This really wouldn’t work, never ever.
And there still isn’t any room response. What I described would sound as if your headphones were speakers in R³, so, with no reflections at all, as long as the HRTF you use is really only an HRTF, not including room information.
I really would appreciate this functionality in the plugin, because it is a lot of work to open every music file in Audacity, exporting the channels separately as mono files, convolve-processing them with foobar2000 using HRTFs, mixing them together again in Audacity and exporting all this as a new music file, which has a certain HRTF inherent. This would mean to have two different verions of the whole music collection.
I would instantly programm such a plugin for foobar2000, if I knew how.
It would be even greater though, to have this trick system wide, not only in foobar2000. Binaural phantasy.
A normal stereo recording has to channels. If you listen to it with speakers, you here both channels with both ears. Sounds like speakers do, including the room acoustics. Using headphones, you here the left channel with your left ear and the right channel with your right ear. Sounds sort of not so good.
There are tons of components for foobar2000 optimized for headphone usage and also ones that does exactly what you propose - Why would you need to use convolver, to achieve just that?
@edd: http://www.hydrogenaudio.org/forums/index....showtopic=54966 (http://www.hydrogenaudio.org/forums/index.php?showtopic=54966)
A normal stereo recording has to channels. If you listen to it with speakers, you here both channels with both ears. Sounds like speakers do, including the room acoustics. Using headphones, you here the left channel with your left ear and the right channel with your right ear. Sounds sort of not so good.
There are tons of components for foobar2000 optimized for headphone usage and also ones that does exactly what you propose - Why would you need to use convolver, to achieve just that?
As I said, you have to convolve each stereo channel with
two HRTFs in order to simulate speakers.
@edd: http://www.hydrogenaudio.org/forums/index....showtopic=54966 (http://www.hydrogenaudio.org/forums/index.php?showtopic=54966)
That sounds great, have to look at it closer later on. Thanks!
BTW: I’ve tried the long way over Audacity with several music files. Sounds like speakers in an anechoic chamber (as it’s supposed to), which sounds like … headphones. Almost. But it works. I need the RIR of a proper recording studio.
Unfortunately the plugin doesn’t work anymore with foobar.
It would be even greater though, to have this trick system wide, not only in foobar2000. Binaural phantasy.
I made it (more or less), with JACK. Ingenious. I think, you don’t even need the impulse response of a good recording studio/mixing studio. You’ll just notice, that some recordings sound strange without the reverb of a room.
It should already support convolving as many channels input as long as the impulse has a matching number of channels.
I can't make it to work:
Could not load impulse file (unexpected channel count).
Are you sure it's supported?
I use it all the time (Stereo Convolver 1.0.1) with version 1.1.5...
ahh, you werent talking about stereo convolver just caught that
Hello Folks, as someone of you already stated, I confirm that the old 2006 plugin Convolver 0.3 doesn't work properly.
Please, is anyone there that could drive me to a good one for the current Foobar2000 v1.1 or the newer 1.2?
Thanks and regards, Andrea
It would be even greater though, to have this trick system wide, not only in foobar2000. Binaural phantasy.
I made it (more or less), with JACK. Ingenious. I think, you don’t even need the impulse response of a good recording studio/mixing studio. You’ll just notice, that some recordings sound strange without the reverb of a room.
Or the idea of hooking DirectSound/Xaudio2/WinMM to make it in games/emulators sounds rather appealing....hmm....
I noticed a problem with certain impulse responses where the impulse is not the first sample.
Since such impulse responses introduce a delay the audio track will start a couple of samples later and the end will be cut-off early by the same number of samples
It would be nice to have an option to throw away the initial delay samples and end the track normally.
edit: Please note that changing the impulse responses is not an option, because it will alter the results. :/
The track duration should probably be extended by the FFT length.
Hello Folks, as someone of you already stated, I confirm that the old 2006 plugin Convolver 0.3 doesn't work properly.
Please, is anyone there that could drive me to a good one for the current Foobar2000 v1.1 or the newer 1.2?
Thanks and regards, Andrea
Hmm, I wasn't aware that it stopped working? What's wrong with it?
Hi Garf,
I found a plug-in called "Gapless Convolver " ver 0.4.5 that is working better than the official ver 0.3, however I am not sure it working perfectly. No time yet to measure.
Anyhow, I am looking for something reliable and stereo (I would use stereo inverted impulse response for DRC application).
Regards, Andrea
Hello Garf,
I tested again the Convolver v 0.3 with the current 1.2beta of Foobar and it crashes everytime I try to open it from "View -> DSP -> Convolver" option, while it doesn't crash if I open from "File -> Preference -> DSP Manager....".
Stated this, I have to ask you if this Convolver is capable to handle Stereo inpulse WAV file.
For my Digital Room Correction purpose I need to have L channel correct differently from R channel, so I created a Stereo WAV impulse file having the two channel different.
However, doing so I am getting a bad sound, the stereo image is very bad (instable) and the bass are very poor.
So, just for fun, I made a new Stereo WAV file having both channels indentical (so it is a true mono file) and containing a new correction impulse computed from the average response of the stereo channels (in other words: (L+R)/2.
Doing so I get a stable stereo image and the bass are back to a reasonable good and balanced musciality.
However, because I am driving both channels correction by the same average corrective impulse, I am not getting the best possible results.
Any explanation for this?
Could you help me getting what I would have?
Many thanks and Merry Xmass.
Andrea
Hello Garf, I am sorry to have to confirm that the "official" Convolver ver 0.3 has problems (bugs??) (at least when playing stereo impulse).
As explained, my usage of a convolver is for DRC application, so a reverse impulse response is used for frequency response linearization.
I verified it comparing it vs. the well known ConvolverVST 4.4 and the matter is immediately audible (no need to go further in the investigation, just listen to it and you will understand).
Looking forward
Regards, Andrea
Great plug Garf. Is it a zero-latency design? If no, is the clean audio path (Mix Adjust = 0%) latency compensated? There is strong phase issue with my own impulses for (say) Mix = 50% (it's possible they need editing).
BTW, I'd also love it if I could use different impulses for each sample rate (in my case it's for headphone or room corrections).
I have downloaded the Convolver component, with the hopes of auditioning some IR guitar cabs, but I have no idea how to use it. It appears to be installed but I can't find any mention of it apart from the under the "Installed Components" window. Can anyone help me please?
Preferences > DSP > right panel > double clic
Preferences > DSP > right panel > double clic
Thank you so much!!
aliendough: You might want to try the newer foo_dsp_convolver available here: https://hydrogenaud.io/index.php/topic,85107.0.html (https://hydrogenaud.io/index.php/topic,85107.0.html)
Has improvements over the other one and the settings are easily handled like most Foobar DSP's, i.e. add to the "Active" DSP component list and click the "..." button.
I tried to download the convolver plugin, but I don' t know how to inastall it. It appears in the list of componets but it is dark and I can't see Dsp in the list to the left.
Can anybody help me ?
Thanks
Are you talking about foo_dsp_convolver as I linked to above? Once you have downloaded foo_dsp_convolver.fb2k-component, go to your "Components" window in Foobar preferences, hit the "Install" button, and select the file. Then "Apply" to restart. Same as other standard components. Then it will show up as "Convolver (gapless)" in your Available DSPs list.
I was talking of the standerd plugin. I have now succeded in installing it.
Thanks
After installing the Convolver component & setting is as an active DSP, I am not hearing any difference.
Should I define an impulse file ?
If yes, which one & where can I get it ?
Should I also change the level adjust to something different than 0.0 dB ?
I found convolver impulse files: https://www.sjeng.org/foobar2000.html
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.
This convolver cannot process multichannel at all.
I've just started using this plugin with the impulse file from AutoEQ (https://github.com/jaakkopasanen/AutoEq/tree/master/results) for my HD600. The results are very impressive. I'm not sure how this plugin hasn't been on my radar earlier.
Has a 64 bit version of this been made? If this is the right page, it looks like it was made by Peter. This is what I use for EQ on my headphones.
https://www.foobar2000.org/components/view/foo_convolve
There is a 64-bit version of the stereo convolution dsp compiled by Case here: https://foobar.hyv.fi/?view=foo_dsp_stereoconv (https://foobar.hyv.fi/?view=foo_dsp_stereoconv)
There is a 64-bit version of the stereo convolution dsp compiled by Case here: https://foobar.hyv.fi/?view=foo_dsp_stereoconv (https://foobar.hyv.fi/?view=foo_dsp_stereoconv)
I use that one too, but I need this one for EQ. The other one has a crossfeed effect (depending on the impulses you put in). Can the Stereo Convolver be used for EQ?
I had some time to test - foo_dsp_stereoconv gives much different results from foo_convolve, even when using the same impulses and volume-matched. From the looks of it, using mono impulses meant for EQ with the Stereo Convolver makes the music entirely mono.
@Cannonaire , I am using MConvolutionEZ from MeldaProduction (free package available). In my opinion this is one of the best convolver today. Ver 15 is also for 32bit OS, while Ver 16 is only 64bit.
The only best convolver is afir filter in FFmpeg. Anything else is crap.
@Cannonaire , I am using MConvolutionEZ from MeldaProduction (free package available). In my opinion this is one of the best convolver today. Ver 15 is also for 32bit OS, while Ver 16 is only 64bit.
Is that a component for foobar? If so, please link it if you can. I would love to try it. I need whatever I end up using to be a DSP in foobar.
MConvolutionEZ is a VST plugin; the Foobar vst3 host you need to run it with is of course an actual dsp; I don't know if that matches what you're looking for, but it would extend your effect possibilities endlessly.
MConvolutionEZ is a VST plugin; the Foobar vst3 host you need to run it with is of course an actual dsp; I don't know if that matches what you're looking for, but it would extend your effect possibilities endlessly.
I will look into using the VST host. I haven't used them before, but it's likely I'll need to use it to replace a different component I use anyway. Thank you!
I'm still wondering though - Peter seems to have updated all of his other components for v2.0/x64. Did he abandon this one? It seems like a Convolver would be a basic function for EQ in a player as versatile as foobar.
The components repository page says this was released by Peter. Is that a mistake, or was it really Peter who last released this?
https://www.foobar2000.org/components/view/foo_convolve
Can I somehow extract impulse responses from equalizer apo to be used with this component?
You could try to feed it single impulse input and record output....
Hey guys/gals!
I became a great fan of foo_convolver over the years and I go to great lengths to create the best possible filters with Acourate software. I don't see myself using another librarian, but recently I changed computers and the convolver won't install correctly.
I tried downgrading to 32-bit foobar2000 and it doesn't work either. Could anyone help? What's going on? What am I doing wrong?
I simply cannot live without this extra component.
I assume you mean foo_convolve not "foo_convolver." What do you mean by "won't install correctly?" What do you do, and then what happens?
It is 32-bit only so requires 32-bit Foobar; two other choices that can use 32 or 64 bit are foo_dsp_stereoconv (https://foobar.hyv.fi/?view=foo_dsp_stereoconv) and foo_dsp_convolver. (https://foobar.hyv.fi/?view=foo_dsp_convolver)
BTW, I just installed foo_convolve 0.3.3 on Foobar 1.6.18 and everything went fine:
https://www.foobar2000.org/getcomponent/efd071729d99e8c14cae0368b8a8ecaf/Convolver.fb2k-component (https://www.foobar2000.org/getcomponent/efd071729d99e8c14cae0368b8a8ecaf/Convolver.fb2k-component)