Skip to main content

Topic: foo_convolve - Impulse response convolver (Read 280820 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Download for foobar2000 0.8.x (250K)
Please see the official additional 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

Edit: Added download instructions for foobar2000 0.9.x compatible version.
  • Last Edit: 13 September, 2007, 05:56:20 AM by foosion

  • xbenchman
  • [*][*][*]
foo_convolve - Impulse response convolver
Reply #1
Thanks Garf,

Looks like a new toy to play with.

  • Melomane
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #2
ERROR (CORE) : Failed to load DLL: foo_convolve.dll, reason: Unable to load dll.

win98 se foobar 0.667
Music is my first love.

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #3
Get libmmd.dll from rarewares. Does it solve things?

http://rarewares.hydrogenaudio.org/files/libmmd7.zip
  • Last Edit: 20 June, 2003, 04:51:45 PM by Garf

foo_convolve - Impulse response convolver
Reply #4
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?
Was that a 1 or a 0?

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #5
I reuploaded it, the new version does not need libmmd.dll.

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #6
Quote
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.

foo_convolve - Impulse response convolver
Reply #7
Quote
Quote
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.
Was that a 1 or a 0?

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #8
Quote
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.

Quote
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.
  • Last Edit: 20 June, 2003, 05:34:47 PM by Garf

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #9
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).

  • ExUser
  • [*][*][*][*][*]
  • Read-only
foo_convolve - Impulse response convolver
Reply #10
Quote
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?

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #11
Quote
Quote
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.
  • Last Edit: 20 June, 2003, 07:47:52 PM by Garf

  • ExUser
  • [*][*][*][*][*]
  • Read-only
foo_convolve - Impulse response convolver
Reply #12
Quote
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?

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #13
Quote
Quote
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.
  • Last Edit: 21 June, 2003, 04:41:31 AM by Garf

  • ExUser
  • [*][*][*][*][*]
  • Read-only
foo_convolve - Impulse response convolver
Reply #14
Quote
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...

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #15
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.
  • Last Edit: 21 June, 2003, 02:07:25 PM by Garf

  • lucpes
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #16
I may have found a bug:

[speakers off!] download one of the files that are here: http://www.geocities.com/beamsonic/studio.htm,

Garf Edit: We killed the site. I uploaded files to 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...
  • Last Edit: 21 June, 2003, 06:46:18 PM by Garf

  • lucpes
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #17
Problem "solved" by keeping the impulse sample as short as possible (trimming the impulse to get most of the 0's around it out).

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #18
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.
  • Last Edit: 21 June, 2003, 06:34:20 PM by Garf

  • Garf
  • [*][*][*][*][*]
  • Developer (Donating)
foo_convolve - Impulse response convolver
Reply #19
Uploaded new version with bugfixes and speed improvements.

  • Messer
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #20
Thanks for this truly essential tool, Garf.
Tiny req: I think that "dry/wet" slider would be nice for your tool.

  • _Shorty
  • [*][*][*][*][*]
  • Banned
foo_convolve - Impulse response convolver
Reply #21
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.

  • Messer
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #22
Quote
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.

  • _Shorty
  • [*][*][*][*][*]
  • Banned
foo_convolve - Impulse response convolver
Reply #23
I'm not strictly confident that a mix control would be useless in this case, it was just a thought, given how it operates.

  • lucpes
  • [*][*][*][*][*]
foo_convolve - Impulse response convolver
Reply #24
Quote
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....

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
  • Last Edit: 22 June, 2003, 08:32:06 AM by lucpes