Skip to main content

Topic: Yet Another Convolver (Read 11772 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • j_b
  • [*]
Yet Another Convolver
foo_dsp_yac v1.0

This one chooses the impulse filter based on the current track’s tags and the current sample rate. The tag name is "filter" and the tag value is the name of the impulse file. The file path is ".\filter\n\", where "n" is the sample rate divided by 1000. For example, if the tag "filter" == "PopEQ.wav" and the sample rate is 44100, foo_dsp_yac will use ".\filter\44\PopEQ.wav". The impulse file may be mono or stereo in any format Foobar can decode but its sample rate must equal the current sample rate and it can contain no more than 16K frames. Also, the audio track being convolved must be stereo.

The filter size limitations are necessary because foo_dsp_yac does convolution the old fashioned way: multiply and accumulate. foo_dsp_yac is intended for simple equalization, which, unlike reverb and other special effects, doesn’t require large impulse response files. Even so, a slow CPU may not be able to keep up at high sample rates regardless of the filter size. If the process affinity mask indicates more than one logical processor, the left and right channels will be convolved in separate threads.


  • j_b
  • [*]
Yet Another Convolver
Reply #1
foo_dsp_yac v1.1

New version posted. As described above except the tag and filter path are user selectable. Additional controls for multi-threading, console info, and stripping leading/trailing zeros from the filter kernel. It's faster, too.

  • odyssey
  • [*][*][*][*][*]
Yet Another Convolver
Reply #2
Works great  I'm just using it with EQ-modified unit2k impulse files that also works on the old component.

I'm a little curious how I create impulse-files for different sample rates. I suppose I need a 2k pulse in the native samplerate (i.e. I can't just adjust the samplerate of the unit2k impulse)?

I didn't do much extensive testing yet. I need to create all sorts of different EQ's first
Can't wait for a HD-AAC encoder :P

  • MC Escher
  • [*][*][*]
Yet Another Convolver
Reply #3
If I don't know I'm probably not the audience for this plugin, but I'm curious: what's a convolver and what does it do?

  • odyssey
  • [*][*][*][*][*]
Yet Another Convolver
Reply #4
If I don't know I'm probably not the audience for this plugin, but I'm curious: what's a convolver and what does it do?

It uses an impulse file to transform the audio. I'm not too much into the technical details, but you can take a simple impulse file (I use the Unitpulse2K.wav from the Misc-package) and perform some processing on it (e.g. EQ, sometimes reverb and stuff - Though, reverb won't work with this component). Define the impulse file in the tags as described above and it will perform the processing on the audio.

It gives you pretty good quality on EQ, as I've noticed artifacts using the built-in EQ in foobar2000. Instead I use a better parametric EQ in an audio editor on the impulse file. With this component, you can create different impulse-files for different tracks, whereas the older convolve-component only uses a static impulse file.
Can't wait for a HD-AAC encoder :P

  • j_b
  • [*]
Yet Another Convolver
Reply #5
Works great  I'm just using it with EQ-modified unit2k impulse files that also works on the old component.

I'm a little curious how I create impulse-files for different sample rates. I suppose I need a 2k pulse in the native samplerate (i.e. I can't just adjust the samplerate of the unit2k impulse)?

I didn't do much extensive testing yet. I need to create all sorts of different EQ's first

A unit pulse is the same regardless of sample rate: a one in a sea of zeros. You can use a tool, like sndfile-convert, to change the sample rate stored in the wave file header. Depending on the nature of the impulse response, you may need a longer unit pulse file for higher sample rates.

  • j_b
  • [*]
Yet Another Convolver
Reply #6
If I don't know I'm probably not the audience for this plugin, but I'm curious: what's a convolver and what does it do?

Convolution is a mathematical way of combining two signals to form a third signal. It is the single most important technique in Digital Signal Processing. In digital audio, convolution is used to filter, shape, or color the recorded sound.

  • knutinh
  • [*][*][*][*][*]
Yet Another Convolver
Reply #7
If I don't know I'm probably not the audience for this plugin, but I'm curious: what's a convolver and what does it do?

Convolution is a mathematical way of combining two signals to form a third signal. It is the single most important technique in Digital Signal Processing. In digital audio, convolution is used to filter, shape, or color the recorded sound.

Further:
Any linear, time-invariant system can be expressed as a convolution. Many/most physical systems of interest belong to the LTI cathegory (or can be approximated as one).

-k

  • romor
  • [*][*][*][*][*]
Yet Another Convolver
Reply #8
Is it possible to make this DSP gapless?

While playing with it I noticed this:
1. Regardless output device, if buffer length is set low (i.e. 100 ms), sound is outputted with dense glitches like in pattern:


2. There is issue with "convolver (gapless)" DSP component which I reported here: http://www.hydrogenaudio.org/forums/index....mp;#entry805524

  • j_b
  • [*]
Yet Another Convolver
Reply #9
Is it possible to make this DSP gapless?

No.

While playing with it I noticed this:
1. Regardless output device, if buffer length is set low (i.e. 100 ms), sound is outputted with dense glitches like in pattern:

Convolution is CPU intensive and having sufficient buffer space allows the music to continue while the next chunk of samples is being processed.

2. There is issue with "convolver (gapless)" DSP component which I reported here:

The reasons a filter cannot be applied include:
* The file length is 0.
* More than two channels.
* The sample rate doesn't not match the music.
* More than 16K samples.
* The foobar service that reads the filter reports an error.

  • AndreaT
  • [*][*]
Yet Another Convolver
Reply #10
Hello J_B,

sorry for placing a "stupid" question, but I need to understand if this convolver is good for RDR application where a single WAV file is used to provide a Stereo impulse correction filter.

I precise that the WAV file is Stereo, so L ch is independent by the R ch.

Regards, Andrea

  • j_b
  • [*]
Yet Another Convolver
Reply #11
The right channel of the music file is convolved with the right channel of the impulse response file. Likewise the left channel. There is no cross-channel convolution as commonly found in stereo convolution for HRTF and similar applications. foo_dsp_yac is really just a glorified tone control. I wrote it to add selective EQ to vintage stereo recordings where the vocals are on one channel and the instruments are on the other.

  • AndreaT
  • [*][*]
Yet Another Convolver
Reply #12
Thank you J_B for the clarification.
Merry Xmas
Andrea