View Full Version : Convolver DSP plug-in for Windows Media Player 10


Pages : [1] 2

jrpavel
06-17-05, 07:52 PM
Convolver is

- a DSP plug-in for Windows Media Player 10. The install package also contains

- two DirectX/DirectShow filter versions — ConvolverWrapper or the equivalent ConvolverFilter — for Adobe Audition and other applications such as Zoom Player Pro and TheaterTek 2.2, or J.River Media Center (when used with the DirectX host plug-in). Finally, there are a number of

- command line applications for testing performance, and convolving files directly, for example.


Why would you want to do this? With a suitable impulse response generated by a tool such as DRC (http://drc-fir.sourceforge.net/doc/drc.html) you will be able to play sound corrected for your room response. ; For more details, see Ed Wildgoose's http://www.duffroomcorrection.com site.

Moreover, you can use Convolver to do bass management, feed cross-overs or equalizers, create an almost binaural effect from a 5.1 movie track, or in any other setup that require convolution.


Features:

- Performance is already very good, and subject continual improvement
- Arbitrary-length convolutions (1 million tap limit imposed only as a sanity check)
- Multiple channel input and output, PCM and IEEE Float
- Mixing, scaling and delay of both inputs and outputs; attenuation of source
- Wide range of impulse file formats accepted (including WAV and raw 32-bit PCM)
- WIndows Media Player plug-in and DirectShow filter interfaces

The code is, at present, of alpha quality. I would welcome help with testing, suggestions for features (or help with implementing them!) and with optimization.

For more details, see http://convolver.sourceforge.net

Feedback welcome

shigaloo
06-17-05, 08:54 PM
thanks, will definately check it out

Prehjan
06-18-05, 06:22 AM
i have been thinking about such a capability on my systems

cool

thanks

Martin

jfma
06-18-05, 11:11 AM
Thanks for this project. It will definitely be welcome by everyone.

I cannot help coding, but this is a first wish list:

1. Directshow filter. I know this has already been asked, but it is a must.

2. Automatic selection among several filters depending on sample rate and number of channels.

3. Internally everything should be processed at the max resolution possible (floating point).

4. Independent filter for each channel. Subwoofer channel is specially important.

Thanks again.

Jose

jrpavel
06-18-05, 12:11 PM
Jose, Thanks for your wishlist.

I started this project as a way of getting to a DirectShow filter, so it's definitely on the list.

Automatic filter selection is on the list. Suggestions for a suitable user interface would be welcome. Would it be enough to just allow you to set 3 filters, for example.

I have deliberately required a filter to be a WAV file. So it can be multi-channel with different filters (contained in the single WAV file) for each channel. I have used this approach to avoid having to use a separate configuration file to map filters to channels since WAV files are self-describing.

The code does indeed process everything as float, and I have rejigged it into a C++ idiom, so that it can be compiled to do everything in double, although it remains to be seen whether that is necessary.

jfma
06-19-05, 04:59 AM
So when you say 3 filters, you mean 44.1K, 48K and 96K. I am assuming then, that if you play a stereo CD, you would pick the 7.1 channel 44.1KHz filter and use only the left and right channels in that filter. Am I right?

If that is the case, you will only need a filter for each usable sampling frequency. Another option to simplify users life would be to have a single filter, and change the sample rate to fit the sample rate of the filter.

jrpavel
06-19-05, 05:21 AM
So when you say 3 filters, you mean 44.1K, 48K and 96K. I am assuming then, that if you play a stereo CD, you would pick the 7.1 channel 44.1KHz filter and use only the left and right channels in that filter. Am I right?

If that is the case, you will only need a filter for each usable sampling frequency. Another option to simplify users life would be to have a single filter, and change the sample rate to fit the sample rate of the filter.

Thanks for your feedback.

I'm open to ideas. I was just thinking any 3 filters, and the plug-in applies the first filter that is compatible. This begs the question of what compatible should mean. You could require:

- identity
- subsetting of channels (as you outline above)

This is not a matter of difficulty of implementation, it is a matter of establishing what people would find useful and usable (in particular so that the results are predictable).

I'm not attracted to the resampling option, as part of the reason for using something like this plug-in is to get better sound. Having said that, it may be that WMP10 / kmixer will do the resampling for the plug-in automatically. I'll need to check.

jfma
06-19-05, 02:16 PM
it is a matter of establishing what people would find useful and usable

In practice, I think I would make the measurements for each channel. Once I have the impulse response for all channels, I would build the 8 (7.1) channel WAV file to feed the convolver. At most, and if my soundcard allows it, I'd perform two sets of measurements, one at 44.1KHz and the other at 48KHz. The other sampling frequencies could be obtained with a good resampler (WaveLab or similar program).

After all this is done, what I'd like is a convolver as automatic as possible. Nothing to care about, just feed it sound and get room and speaker corrected sound. At most, I would have volume controls to ensure no clipping occurs.

I understand that, after a while, all of us enjoy a little experimentation. But that would be a second stage. Why don't you put an "advanced" button to open up all the exotic options and leave the standard interface and options as simple as possible?

Jose

BradSwanson
06-19-05, 02:32 PM
This might me an ignorant remark, but with DRC you would still have to have a seperate bass management solution, individual output delays, and individual speaker volume controls before feeding the convolver your source? Are there ANY other features that a good soundcard like the M-Audio 7.1 w/ bass management should have to complement these filters? I have been waiting for a sound card with more features but it seems like with DRC and your convolver, we won't be needing a thing more?....maybe just better DAC's! Thanks for explaining this to us less "DRC" educated types.

Samsonite

jrpavel
06-19-05, 04:35 PM
In practice, I think I would make the measurements for each channel. Once I have the impulse response for all channels, I would build the 8 (7.1) channel WAV file to feed the convolver. At most, and if my soundcard allows it, I'd perform two sets of measurements, one at 44.1KHz and the other at 48KHz. The other sampling frequencies could be obtained with a good resampler (WaveLab or similar program).

After all this is done, what I'd like is a convolver as automatic as possible. Nothing to care about, just feed it sound and get room and speaker corrected sound.


These are the lines along which I was thinking. In fact it is probably easier to measure each channel with the full set of frequencies that you are likely to need than to resample. I suppose the question is whether automatically using a 7.1 filter on stereo input is likely to be helpful or unhelpful.


At most, I would have volume controls to ensure no clipping occurs.


I have put in an attenuation setting in the latest build.


I understand that, after a while, all of us enjoy a little experimentation. But that would be a second stage. Why don't you put an "advanced" button to open up all the exotic options and leave the standard interface and options as simple as possible?

Jose

I'll consider implementing advanced options later, once it become clearer what they ought to be.

Herc
06-19-05, 04:55 PM
bass management all the way

jrpavel
06-20-05, 01:52 AM
This might me an ignorant remark, but with DRC you would still have to have a seperate bass management solution, individual output delays, and individual speaker volume controls before feeding the convolver your source?

I would hope that these could all be encoded into a perhaps-modified DRC-generated filter. But I don't know how practical that would be.


Are there ANY other features that a good soundcard like the M-Audio 7.1 w/ bass management should have to complement these filters? I have been waiting for a sound card with more features but it seems like with DRC and your convolver, we won't be needing a thing more?....maybe just better DAC's! Thanks for explaining this to us less "DRC" educated types.

Samsonite

I don't have a definitive answer to this question. (DRC is a sophisticated tool and not my work.)

jrpavel
06-26-05, 10:42 AM
For those put off by the 50Mb download, there is now an installation-only package that is about 4Mb. See http://convolver.sourceforge.net/. Feedback welcome.

JohnAd
06-27-05, 02:31 AM
For those put off by the 50Mb download, there is now an installation-only package that is about 4Mb. See http://convolver.sourceforge.net/. Feedback welcome.

You seem to have checked in all the temporay files into cvs, normal practice is to not to call any compiler generated files source and to keep then out of cvs. One good way of doing this is to use the file .cvsignore.

Let me know if you want any help tiding up the source tree or with anything else.

Cheers

John

Tukkis
06-27-05, 03:54 AM
I haven't followed the progress of DRC for a while.

Did anyone ever figure out a plugin for zoom player? Is that what directshow is?

jrpavel
06-27-05, 04:22 AM
You seem to have checked in all the temporay files into cvs, normal practice is to not to call any compiler generated files source and to keep then out of cvs. One good way of doing this is to use the file .cvsignore.

Let me know if you want any help tiding up the source tree or with anything else.

Cheers

John

Many thanks for the offer. Will attend to the binaries issue.

More than happy to take you up on your offer of assistance with that, and also if you were able to offer some technical advice on adapting what is essentially a DMO into a DirectShow filter, that would be most welcome. My email is jrp at dial dot pipex dot com.

John

Schroinx
06-27-05, 11:11 AM
I haven't followed the progress of DRC for a while.

Did anyone ever figure out a plugin for zoom player? Is that what directshow is?

I'm the kind of type who thinks that filters like this and others should be software independent e.g. independing of which player ppl uses, esp. if the software is not freeware. Not everyone uses Zoom Player. Also because some ppl. will use this for listening to music in various formats, watching movies in various formats, not to mention SDTV/HDTV and recordings.

My 5c...

Edit: Maybe with ffdshow or ac3filter as everyone seems to use this anyway.

/Schroinx

Schroinx
06-27-05, 11:14 AM
Oh, and forgive me for my lack of understanding. How excatly do one generate this wave file? Is special gear/software needed?

/Schroinx

Schroinx
06-27-05, 11:17 AM
And I totally forgot my manners: I really like the idea of a software 7.1 channel DRC for windows. It will be a major improvement. Big pad on the shoulder. Keep up the good work :)

regards
/Schroinx

jrpavel
06-27-05, 01:39 PM
So far, convolver is a WMP10 DSP plug-in.

According to the MS documentation:


DSP plug-ins are Microsoft DirectX Media Objects (DMOs) that connect to the Player by using COM interfaces.

A DMO is being analogous to a filter object in Microsoft DirectShow®. In fact, a DMO can be inserted into a DirectShow filter graph by using a DMO Wrapper filter.

A Windows Media Player DSP plug-in must implement the IMediaObject interface and the IWMPPluginEnable interface as a minimum requirement.

In addition to these interfaces, the plug-in can implement any additional interfaces required to do the job. For instance, DMOs can implement several interfaces specific to the DMO architecture. By implementing the DMO interfaces as required, you can create a plug-in that functions both as a DMO and as a Windows Media Player plug-in.


so it should be straightforward to get a DirectShow filter which can then be used with ffdshow, Zoom, etc. I just have not yet figured out exactly how to do it...

So far, the plug-in convolves channel by channel. An enhancement will be to allow processed channels to be redirected to other channels (for bass management, multi-amp setups, etc). The design issue is how to do this flexibly in the context of a simple interface.... Suggestions welcome.

To generate impulse responses, use DRC, or see
http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool. You will need to use something like SoX to amalgamate the per-channel PCM files into a single WAV file.

Mooneyass
06-27-05, 02:00 PM
So is anyone using this? I used DRC in AXCO but found re-ripping and playing disc images in the crappy player a pain. If I could integrate this into my living room PC running Meedio (uses WMP) then I'd be a very very happy camper.

Thanks Guys,

Wesley J

jrpavel
07-04-05, 05:43 PM
The latest release (1.14) now supports PCM WAV file filters (as well as the original 32-bit IEEE float ones).

There is also a (flakey) DMO, which you should be insert into a filter graph (it appears under the DMO Audio category). This is experimental and probably non-functioning, if it manages to get itself registered.

Still no bass management, etc.

jrpavel
07-07-05, 05:10 PM
New release 1.15 seems to register itself correctly both as a WMP10 DSP plug-in and a DMO, which can be inserted into a filter graph ...

Still not a full-blown DirectShow filter, but getting closer.

melavi
07-13-05, 10:13 AM
it works great in graph edit, the framerate (with movie in ac3, dts..) is just blocking a moment every time of the wav input length. Is it possible to adjust a higher latency?

regards,
Avi

jrpavel
07-13-05, 01:05 PM
Thanks for the feedback.

There is a good deal of scope for optimization, now that the basics are in place.

It should be straightforward to implement partitioned convolution from what I have, which should give a lower latency.

If you could send me details of the setup that you are using, including filter files, to jrp at dial dot pipex dot com I will have a look.

Mark_A_W
07-13-05, 09:45 PM
So far, convolver is a WMP10 DSP plug-in.

According to the MS documentation:



so it should be straightforward to get a DirectShow filter which can then be used with ffdshow, Zoom, etc. I just have not yet figured out exactly how to do it...

So far, the plug-in convolves channel by channel. An enhancement will be to allow processed channels to be redirected to other channels (for bass management, multi-amp setups, etc). The design issue is how to do this flexibly in the context of a simple interface.... Suggestions welcome.

To generate impulse responses, use DRC, or see
http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool. You will need to use something like SoX to amalgamate the per-channel PCM files into a single WAV file.

Ed's measuring tool doesn't a windows executable yet....:(

I did it with Cool Edit using Jones Rush's guide (bottom of page is link);
http://www.duffroomcorrection.com/wiki/Measuring_the_impulse_response

Why do you want to amalgamate the channels? Wouldn't it be easier to leave them all separate? Or is this required to make a WMP DSP plug-in?

For instance I'm pretty sure I'll start with the .1 channel only, due to CPU limitations (video processing with ffdshow as well...), then add the 3 front channels one day when I upgrade, and finally the surrounds.

A direct show filter is the holy grail because many different players can then access it. :D

Oh, and ffdshow audio has the convolver in it now, it just won't use the same impulse files that I generated for Foobar using Jones's guide - something about the number of taps or something...
Anyway, maybe you and Milan could work together?

Thanks for all the hard work.

Mark

melavi
07-14-05, 08:28 AM
Oh, and ffdshow audio has the convolver in it now, it just won't use the same impulse files that I generated for Foobar using Jones's guide - something about the number of taps or something...
Anyway, maybe you and Milan could work together?

Thanks for all the hard work.

Mark

With just a 4000taps in ffdshow's the cpu load is to high, there is no sound and 1frame per sec (i have a P4@2.4). Maybe only with my config.
while foobar and 65000 tap i have ~3-4% and 10% with this convolver although the latency is still not optimized.
Have you the same pb with ffdshow ?

jrpavel
07-14-05, 09:21 AM
Thanks for the further feedback.

I'm not sure that I understand what you are saying.

With my convolver, the only time that I can get it to break sweat is when I turn on debugging and it generates masses out output. Otherwise it doesn't register on my laptop.

This is with WMP10. I have not tried with ffdshow.

Can you be more specific about your setup, so that I can see if I can replicate it? My email is jrp at dial dot pipex dot com.

melavi
07-14-05, 10:37 AM
Sorry, i couldn t post because i have less than 5 messages.
Here is my config on graphedit

melavi
07-14-05, 10:38 AM
http://avielbaz.free.fr/images_forum/convolver.jpg

melavi
07-14-05, 10:41 AM
i just make fast test with a same impuls for each channel, i make it with adobe audition (6 wave in 1).

jrpavel
07-14-05, 11:32 AM
Is there any way that you can let me have your filter, please, so that I can try it?

jrpavel
07-14-05, 11:47 AM
Ed's measuring tool is windows-executable, if you look around the duffroomcorrection site.

The Jones Guide leads you to a PCM file. To get it to work with Convolver, you will need to save it as a WAV file.

melavi
07-14-05, 07:56 PM
Is there any way that you can let me have your filter, please, so that I can try it?

Hello,
i send you a email :)

Mark_A_W
07-14-05, 09:53 PM
Ed's measuring tool is windows-executable, if you look around the duffroomcorrection site.

The Jones Guide leads you to a PCM file. To get it to work with Convolver, you will need to save it as a WAV file.

Hmm, I had a look, and downloaded rec_imp.zip again...and there's no file in there that I can run...

Help! What am I missing?

jrpavel
08-06-05, 08:11 PM
I have just put up on http://convolver.sourceforge.net/ a new release (1.19) that offers the option of using partitioned convolution, with reduced lag and possible performance improvement.

Ed's RecImp tool can be compiled into a Windows executable.

Others have tried the DRC route, and tried to combine the individual channel impulse responses that it produces into a single (5.1) WAV file using Audition. Unfortunately the Audition-generated WAV file does not seem to be interpreted correctly by Convolver.

I will investigate this further. In any case, I need to replace the Microsoft-provided example file that I use for reading WAVs with a GPL equivalent, such as libsndfile or libaudiofile.

Feedback welcome.

jrpavel
08-12-05, 07:21 AM
A further build (1.21) has some more optimizations.

The optimum attenuation is now calculated correctly. :o

There are also a number of command line utilities (eg, perftest to allow you to see how your filter performs with different partition lengths). and makeIR allows you to generate a filter from a text file specification).

Let me know how you get on with it.

Although Convolver will be visible to ffdshow, I now want to spend more time on the DirectShow wrapper and to recognise a wider range of filter file formats. I have at least one example of multi-channel files generated by Audition not being interpreted correctly.

Happy convolving / duff :) room correction.

melavi
08-18-05, 09:42 PM
Hello Jrpavel

Happy to see that convolver has been updated :)
I have pb to make a correct multiwave file.
I have multiple mono.txt or mono.wav.
I just have to make a copy/past and use makeIR but it s too long, maybe with office word or exel there is a tips?

Regards,
Avi

jrpavel
09-03-05, 05:58 PM
I have just put a further release up (1.23).

It supports a greater variety of filter file formats and is slightly faster. See the notes on http://convolver.sourceforge.net

I suggest that you try this release (or 1.21) as 1.22 was broken when used with more than one partition.

Creating stereo or multi-channel wav files from mono files can be accomplished with Adobe Audition or a utility like SoX. MakeIR will allow manual creation of multi-channel files, but may well be impractical if you have massive impulse response files.

Avi: If you email me your PCM files (jrp at dial dot pipex dot com), I will have a look at them. (Simple French messages are fine by me.)

vairulez
09-04-05, 01:58 AM
jrpavel, can your convolver dmo be used to add a low-pass and high-pass filter on the lfe channel ?
How can I build such an impulse ?

Sinobi
09-04-05, 04:04 AM
Vairulez
His convolver is a convolver...only.
What type of filters you put into the impulse responses that you enter in the convolver is up to you.
Normally you would use the results from DRC as convolver input files,
and if you do you can set up the target curve in DRC to match the low/high-pass you need.
If you are new to all this, read the following:
http://drc-fir.sourceforge.net
http://www.duffroomcorrection.com/images/d/de/DRC_Guide_v1.0.pdf
http://www.avsforum.com/avs-vb/showthread.php?t=445559
http://www.avsforum.com/avs-vb/showthread.php?t=283878
http://www.duffroomcorrection.com

Henrik

jrpavel
09-04-05, 03:32 PM
Henrik, Thanks. Helpful.

convolver will soon also be available in a DirectShow filter wrapper, which should make it easier to use in DScaler5, ffdshow, etc, and, with suitable impules responses, it should be possible to stick it in a graph that does more interesting things.

jrpavel
09-10-05, 03:11 PM
Version 1.24 is now available on http://convolver.sourceforge.net.

It includes ConvolverWrapper, which allows convolver to be used as a DirectShow filter. Many thanks to John Adcock.

Sinobi
09-10-05, 04:58 PM
Great, so this means it can be used in Zoomplayer?

If yes, I've been waiting for this moment more than anything else for 2 years now.
Sadly this month is the only month in many years where I only have stereo speakers as I am building new center and surrounds right now....
It's like if someone gives you your favorite candy and then tells you to wait five days till saturday arrives before you eat it......

Henrik

vairulez
09-11-05, 03:27 AM
can anyone explain how to use it as directshow filter ?

Mark_A_W
09-11-05, 05:51 AM
It appears as a filter in Zoomplayer for Custom media playback, but when selected I couldn't get it to appear in the filter properties during playback - I dunno if it loaded.

I'd like to be able to pick all the wav files individually rather than having to combine them into 1 big wav file - I can do a stereo file, but I haven't tried to combine multichannel yet. It'd be nice to avoid this step, but I don't know whether that would be an easy change...

Keep up the good work!

Mark

jrpavel
09-12-05, 05:40 PM
Thanks. I will try to post instructions for ZoomPlayer once I have worked out the right steps to get ConvolverWrapper to be inserted.

I'd be interested in suggestions for making the plug-in easier to use for multi-channel processing without having to create a single .wav impulse response file.

The main issue is producing a comprehensible interface that covers all the different possible combinations.

I've put up a slightly faster version (1.25).

Mark_A_W
09-13-05, 01:24 AM
How about just having lots of selection positions, one for an input file of each channel?

Centre
Front right
etc

Rather than the single wav file input you have now? Is that easy?

The output from Denis S's DRC program is raw PCM data (.pcm) can you accept that directly?

Currently in Jones Rush's guide you import this into Cooledit and save it as a wav file (and combine 2 channels while you're at it, but not 8 channels...).

If we could just select the .pcm files directly (after renaming them as you generate them with DRC) it would save 2 steps - one of which is the tricky multi wav combining step.

If you don't have a file for a particular channel then you either leave it out or tick a "skip" box.

Oh, and faster as in less CPU intensive in use? Or faster to calculate the attenuation level?

THANKS

Mark

vairulez
09-15-05, 05:46 AM
I'd be interested in suggestions for making the plug-in easier to use for multi-channel processing without having to create a single .wav impulse response file

for those of us who only want to convolve one channel (LFE for example) it would be great to have the possibility to only enter the impulse for that channel.

Sinobi
09-15-05, 06:48 AM
for those of us who only want to convolve one channel (LFE for example) it would be great to have the possibility to only enter the impulse for that channel.
Would't that be a problem with the processing delay?
The LFE channel will be delayed and the other channels will not.
That would open up the need for the possibility to have a simple delay for the other channels.

Henrik

vairulez
09-15-05, 06:55 AM
you're right

jrpavel
09-17-05, 07:29 PM
OK, let's have a go at drawing some of this together.

The current version of convolver takes a single (possible multi-channel) filter file and convolves it with the input stream, channel by channel.

The convolution is probably as fast as it's going to get without moving to another FFT package. On a 2GHz Pentium M or a 3.2GHz Pentium 4 and a long filter, convolver convolves at roughly 20 times real time speed (1.5s to convolve 2 x 65536 x 10 x 44.1KHz samples) -- calculate optimum attenuation convolves 10 filter-lengths' worth of noise, if you would like to report your experience. There are currently two builds up (VC++ 2003 and Intel C++). I'll see if VC++ 2005 or FFTW are faster in due course, but the results on the net are equivocal. Can anyone report how this compares with the likes of BruteFir, or

There is clearly a demand for a more flexible approach.

I suggest the following and would welcome comments:

- allow the user to specify a list of mono impulse files (of equal length, or zero-pad to the maximum length?)

- for each filter allow the user to specify a list of (up to eight?) input channels and scaling factors to which the filter will be applied.

- for each filter, input and scaling factor combination, allow the user to specify an output channel, to which the convolved output will be sent. Where an output file has more than one input filter and scaling factor, sum the scaled outputs

- where an output channel has no convolved input specified, introduce a delay to sync with the convolved outputs

Questions:

- would such a framework be flexible enough to do the job?

- Have I missed any considerations?

- would it be preferable to have the plug-in generate its own filters (eg, high, low mid-band pass, rather than read user-provided filters)?

What would those filters be?

This would obviously not be suitable for room correction, or generate specific cross-overs for their particular setup, but would make it easier for users who don't want to have to generate their own filters. Perhaps the answer is to do both, but in separate plug-ins, to avoid having an overly-complex interface.

- is there a requirement to be able to use stereo impulse files? While theoretically, you should record mono responses, it has been suggested to me that a stereo response file may sound good in some circumstances.

Over to you.

vairulez
09-18-05, 02:27 AM
where an output channel has no convolved input specified, introduce a delay to sync with the convolved outputs

it's a very good idea

would it be preferable to have the plug-in generate its own filters (eg, high, low mid-band pass, rather than read user-provided filters)?


that would be nice, but you might include that in a seperate filter that would be used for filtering. May be you should do an ffdshow-like interface taht would include different plug ins (convolver, filter, crossover, input and output mixer, delays, bass redirection .....)

jrpavel
09-21-05, 01:06 PM
I have now had a report that 1.26 works with ffdshow using the following graph:

Source -> avi splitter -> ffdshow audio dec -> Convolver wrapper -> ffdshow
audio processor -> Direct Sound

cpu usage was 60-80% using 71330 taps @48Khz with 6 channels on a Semprom 3000+

1.26i may perform even better on more recent processors. Processors with larger caches may also perform better.


I am starting work on a version of the plug-in that will allow cross-channel processing (for bass management, etc).

Mark_A_W
09-21-05, 05:10 PM
Cool, I'll try it out over the next few days.

With the ffdshow video resize as well, I think I need a gruntier processor....

jrpavel
09-26-05, 02:46 PM
Just looking at how best to design / optimize the cross-channel version:

Looking at the full design sketched above allows the possibility of

- associating a filter with the weighted sum of a specified set of input channels
- summing the weighted outputs of such filters to generate the output for a channel

* Do people need the full generality of such a design?

For example, it would be possible to:

- require that both input and output channels are associated with at most one filter

- require that input channels are associated with at most one filter

- require that output channels are associated with at most one filter; or

- allow only the inputs (or the outputs) to be weighted before they are summed.

While it would be easy to say that "we need the full generality" there will be usabilty / configuration complexity / performance downsides.

What does the panel think?

jrpavel
10-01-05, 04:50 PM
Well we now have a prototype of a more fully-featured version of the convolution plug-in. It now provides channel-mixing/splitting capabilities:

To summarise:

- Version 1 required an impulse to be presented to it as a multi-channel WAV file, which it convolved, channel by channel, with the input.

- Version 2 requires a set of single-channel impulse response (FIR filter) files. Each impulse response is convolved with the pointwise weighted sum of a specified set of input channels. The resulting outputs are also weighted, summed and directed to specified output channels. So as well as room correction, you should be able to use high and low pass filters, for example, to split an input channel and redirect the output to different output channels. At present, the filter files, weightings and channel redirection are specified through a simple text configuration file. Once the design has been tested further, a user interface will be provided.

The plug-in can also be used as a DirectShow filter using the included ConvolverWrapper, so you should be able to plug it into ffdshow, etc.

Check out the details at convolver.sourceforge.net.

Version 2 is unoptimized -- optimizations will depend in good part on what sort of configurations people use.

Feedback welcome, ideally with the configuration and filters that you are using. Testing of version 2.1 has been pretty limited. jrp at dial dot pipex dot com

Enjoy

Mark_A_W
10-01-05, 05:58 PM
Cool! Thanks for keeping this going JR!

BTW, anyone have any idea how to use RecImp on XP? How do I make any use of a "precomplied executable?".


And has anybody generated a filter file for a 0.1 channel? In DRC would you create a target response with every frequency over 200hz is severely attenuated? Ed you there?

This is getting really close now guys :)

Mark_A_W
10-01-05, 06:30 PM
Sorry for the double post..

I'm trying to make a Zoomplayer DVDAutoGraph file for Convolver Wrapper, or even getting it to work in Zoomplayer for Manual filter control for TS files.

What are the Input and Output pins called? in0 and out0 like melavi's graphedit image on page 1 shows?

I keep getting connection errors, it seems to connect after AC3filter ok, but it won't connect to Reclock Audio Renderer (or any other renderer).

Any tips?

Mark

Ben_Tech
10-01-05, 06:44 PM
In theory, v2.1 could be used as the crossover system in an actively amplified setup I believe. That makes it all the more interesting to the DIY crowd.

Thank you for your hard work!

Ben_Tech
10-01-05, 08:41 PM
Mark, as with any filter, you should be able to load it up in graphedit and see what the pin names are. But, there is always the chance that this filter won't load there, I have not tried it yet. This is what I do when making manual filter graphs.

I would also try to connect it to the various wave and directsound renderers that your card offers there.

jrpavel
10-29-05, 01:39 PM
A further release (2.3) is now available from convolver.sf.net.

This is better optimized than previous releases (it can handle 8 65523-tap 48kHz single-channel filters at about 5 times playback speed on a 3GHz P4). I want to optimize it further, but need to be sure that the design is right.

Please note that this version will take a minute or more to tune itself to your system each time you use a filter of a length that has not yet been encountered.

I haven't had much feedback on version 2.x.

This could mean many things:


The plug-in is absolutely perfect and does exactly what people want
It won't install
It crashes
It's too slow for practical use
It doesn't do anything useful
People can't figure out what it does, or how to use it
People are put off by the (temporary) interface
Not enough people know about it
None of the above ... ;)


Anyway, happy convolving.

Tukkis
10-30-05, 01:35 AM
Probably point F part b. A guide for Zoom Player to install and use it for dvd.

Mark_A_W
10-30-05, 05:41 AM
Yup, I added to the list of additional DVD filters and tried to get it to connect using Zoom Player and got Pin Connection errors.

ZP complatibility is all that's holding me back.

jrpavel
10-30-05, 05:56 AM
OK. Thanks for the feedback. I'll have a look at ZoomPlayer compatability specifically.

vairulez
10-30-05, 06:15 AM
The plug in works great with TT 2.2 as an audio postprocessor.

jrpavel
10-30-05, 10:24 AM
I don't think that you can add it to the list of ZoomPlayer's additional DVD filters (or at least it does not appear on the list of available filters when I try it).

I have succeeded in getting convolver to process MP3 playback (by adding it to the MP3 Decoder configuration in Advanced | Filter Control | Customized Media Playback| Audio & Vide Decoders).

I'll have a go at doing the same for DVD playback.

You will need to be sure that you use a filter configuration with convolver that has the right number of channels and right sample rate (44.1kHz or 48kHz, say).

Happy to hear from anyone that gets there before I do.

Sinobi
10-30-05, 01:07 PM
I aswell would like to be able to use it for DVD playback in Zoomplayer.
Actually that is my only need....

Henrik

Mark_A_W
10-30-05, 03:52 PM
I made a file called

"ConvolverWrapper.filterdata"

Containing

DefineFilter(ConvolverWrapper.dll)
AudioFilter(Name=ConvolverWrapper,CLSID={6105E395-1C5A-4B3E-9701-FB71C2523AB6},InPin=Input,OutPin=Output)

And added it to the Zoom Player\DVDAutograph directory.

It appears as an additional DVD filter now, but I get pin connection errors. (I can't remember how to use graphedit, it's been years). Are the above Pin names correct?

Edit: I fixed the pin names above, but you can download the file a few posts down

jrpavel
10-30-05, 05:55 PM
I need some time to look at this, but you will need to ensure that the filter that you defined to process the output from your DVD audio filter. Convolver can't process AC3 directly, only the PCM that your DVD audio filter should generate.

The pins are called "Input" and "Output" in graphedit.

Mark_A_W
10-30-05, 06:25 PM
I had it connecting after AC3filter set for 5.1 output (not SPDIF).

Anyway, thanks - I'll try with the names "Input" and "Output".

Mark

Mark_A_W
10-30-05, 07:02 PM
Ok, it seems AC3filter will connect to ConvolverWrapper (using Input).

But nothing can connect to ConvolverWrapper "Output". Tried Default Directsound. Reclock, etc.

Closer....

Mark_A_W
10-30-05, 07:17 PM
Got it!!!

It's AC3filter - I only have a stereo Impulse file - and it will only work with AC3filter (or whatever) set to stereo. If I set AC3filter to 5.1 I get the pin connection error.

How do I enter the files individually? There's only the option for one Impulse file...I think I better go check version I've got :)

This is the file that works:

It goes here
C:\Program Files\Zoom Player\DVDAutoGraph

Then ConvolverWrapper will appear as an additional filter for DVD playback (like Ffdshow).

Getting very close now....

Mark

Mark_A_W
10-31-05, 12:47 AM
(Sorry I keep posting to myself...)

OK, I had an old version - I'm trying to figure out this config file thing.

JR, can you provide an example of a simple 5.1 config file? Just the basics to get going with.

Thanks

Mark

jrpavel
10-31-05, 02:27 AM
Excellent. Sounds promising.

A filter config file that just does passthrough:

D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
0.0
0.0
D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
1.0
1.0
D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
2.0
2.0
D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
3.0
3.0
D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
4.0
4.0
D:\Impulses\PerfectDiracDelta-48000-1-65535.wav
5.0
5.0

Note the blank final line.

This just takes channel X (unscaled) and sends it to channel X (unscaled) after applying the wav filter.

Mark_A_W
10-31-05, 05:43 AM
Ok, thanks...one more simple question (and yes I've read your website...)

Umm, which channel is which?

1 = FL?
2 = C?
3 = FR?
4 = SL?
5 = SR?
6 = sub?

Is that right?

Getting REALLY close now...
I won't forget the blank final line!

Thanks

Mark

jrpavel
10-31-05, 06:43 AM
The strict answer is, I think, that channel order is undefined beyond 2 (ie, it will depend on the Decoder that you are using).

If your decoder uses the Microsoft ordering, it is the following:


0 Front Left - FL 9 Side Left - SL
1 Front Right - FR 10 Side Right - SR
2 Front Center - FC 11 Top Center - TC
3 Low Frequency - LF 12 Top Front Left - TFL
4 Back Left - BL 13 Top Front Center - TFC
5 Back Right - BR 14 Top Front Right - TFR
6 Front Left of Center - FLC 15 Top Back Left - TBL
7 Front Right of Center - FRC 16 Top Back Center - TBC
8 Back Center - BC 17 Top Back Right - TBR


If that does not work, try


Channel 0->"FL"
Channel 1->"C"
Channel 2->"FR"
Channel 3->"SL"
Channel 4->"SR"
Channel 5->"LFE"


Note that you can map the channels within the config file (because beneath each filter path you specify both inputs and outputs for that path).

jrpavel
10-31-05, 01:19 PM
I have now tried this and convolving with ZoomPlayer works for me.

See here (http://convolver.sourceforge.net/using_convolve_with_zoomplayer_p.htm) for a walkthrough.

jrpavel
10-31-05, 11:55 PM
Back to the Channel order question.

AC3 FIlter seems to use

0:L, 1:R, 2:C, 3:LFE, 4:SL, 5:SR

Mark_A_W
11-01-05, 02:39 AM
And so it is done!

We now have multichannel DRC under windows XP - thanks JR.

Now I gotta make multichannel sine sweep recordings....anyone have an easy way to do that?

For DVD they should be at 48khz shouldn't they? Does it matter?

jrpavel
11-01-05, 02:56 AM
Yes, you will need 48kHz impulses.

Remember that you will need multiple single-channel responses to feed the current version of Convolver.

jrpavel
11-01-05, 09:16 AM
... Now I gotta make multichannel sine sweep recordings....anyone have an easy way to do that?

See www.duffroomcorrection.com (http://www.duffroomcorrection.com) or http://www.ece.nmsu.edu/~pdeleon/ASAP/BSS/Impulse_Responses.html

jrpavel
11-01-05, 05:31 PM
Here a couple of 48kHz filter that cut off above and below 80kHz.

You will need a config that looks something like

D:\convolver\Media\filters\high_sub.wav
0.0
0.0
D:\convolver\Media\filters\high_sub.wav
1.0
1.0
D:\convolver\Media\filters\high_sub.wav
2.0
2.0
D:\convolver\Media\filters\sub_low.wav
0.1 1.1 2.1 3.5 4.1 5.1
3.0
D:\convolver\Media\filters\high_sub.wav
4.0
4.0
D:\convolver\Media\filters\high_sub.wav
5.0
5.0


to perform bass management with Zoom Player Pro, or whatever player you are using to host Convolver / Convolver Wrapper, assuming that your sub is fed by Channel 3 (eg, for AC3Filter, I think).

The filter was generated by an Octave/Matlab script like the following one:


#
# Robert Scheer 10/6/2004
# Chris Birkinshaw 06/05/05
#
# Beginning of user parameters
#
n=12; # exponent for filter size
fxo1=80; # sub crossover frequency in Hz
fxo=3000; # mid/high crossover frequency in Hz
fs=48000; # sample rate in Hz
#
# End of user parameters
#
#
k=2^n; # order of filter
fn1=2*fxo1/fs; # normalized subsonic cutoff frequency
fnxo=2*fxo/fs; # normalized xo frequency
i=linspace(1,k,k); # k-tap filter array
f_lo=linspace(0,200,512); # for plot of low end of freq response
f_hi=linspace(0,20000,512);# for plot of entire freq response
hir=fir1(k,fnxo,'high','scale'); # high-pass impulse response
lir=fir1(k,[fn1,fnxo],'pass','scale'); # band-pass ir
sub=fir1(k,fn1,'low','scale'); # low-pass ir
hirtxt=hir(i); # my klugey way of taking k elements
lirtxt=lir(i); # from the k-element impulse responses
subtxt=sub(i);
#save -text filters/mid_high.txt hirtxt
#save -text filters/mid_low.txt lirtxt
#save -text filters/sub_low.txt subtxt
wavwrite(hirtxt,fs,16,'filters/mid_high.wav');
wavwrite(lirtxt,fs,16,'filters/mid_low.wav');
wavwrite(subtxt,fs,16,'filters/sub_low.wav');



NB There is a bug in 2.3 that means that it disables itself after changing a filter after playing a track. I'll put a fixed version up tomorrow.

Mark_A_W
11-01-05, 08:07 PM
See www.duffroomcorrection.com (http://www.duffroomcorrection.com) or http://www.ece.nmsu.edu/~pdeleon/ASAP/BSS/Impulse_Responses.html

Thanks - you can see my system on Ed's Duffroomcorrection site :)

I'll take a look at the other site. But what I was meaning was actually recording, say the left surround, is a bit trickier than the front left - without cable swapping anyway.

Last time I used Cooledit to do the measurements - it only handles stereo, not multichannel.

So actually getting the sine sweep out the correct channel is a little tricky, I think I'll have do it by cable swapping.

Hmm, what about the sub channel - should the sweep be limited to say 20 to 200hz?

Cheers

Mark

jrpavel
11-02-05, 02:11 AM
I am not a recording expert, but have a look at

http://www.duffroomcorrection.com/wiki/Measuring_the_impulse_response

http://www.acoustics.net/objects/pdf/IR-paper.pdf

http://www.ymec.com/manual/era/impulse.htm

http://www.purebits.com/download.html

or a range of other places.

Let me know how you get on.

abracadaver
11-02-05, 10:05 AM
Did someone ever find the precompiled windows executable for rec_imp which should be on the duffroomcorrection site ?

jrpavel
11-02-05, 11:32 AM
I'll see if I can add it to the Convolver package or get it put up on the duffroomcorrection site.

My recollection is that it is a bit fragile when using the ASIO drivers (as opposed to the standard Windows ones),

John

abracadaver
11-02-05, 03:26 PM
I'll see if I can add it to the Convolver package or get it put up on the duffroomcorrection site.

My recollection is that it is a bit fragile when using the ASIO drivers (as opposed to the standard Windows ones),

John

That would be great, currently I'm using adobe audit but the trial won't last.
I have a e-mu 1820M so both WDM and ASIO drivers available.

jrpavel
11-02-05, 04:30 PM
A new release (2.4) is available on http://sourceforge.net/project/showfiles.php?group_id=139099
corrects some bugs a slightly more optimized.

Enjoy, and, as ever, all feedback (bugs, the extent to which this does not meet your needs, etc) welcome.

A couple of points:

I am not supporting raw PCM files as filters, because convolver, at present, needs to know sample rates, which would need to be specified separately. Perhaps in a future release I will just ignore filter sample rates, if that makes sense.

A lot of the available impulse response files available on the net are stereo, but filter paths use a mono filter. I'll think more about whether they can be used without splitting them into left and right channels, without unduly complicating the config file spec.

Suggestions for addressing these cosmetic points welcome.

Mark_A_W
11-02-05, 07:48 PM
I'll see if I can add it to the Convolver package or get it put up on the duffroomcorrection site.

My recollection is that it is a bit fragile when using the ASIO drivers (as opposed to the standard Windows ones),

John

Thanks I tried to get a Software Engineer to compile it at work, but he said it "used linux threading and sound libraries" and he couldn't do it.

Ed? Help!

jrpavel
11-02-05, 08:14 PM
It can use such threading, etc, when compiled under Linux, but it compiles without any problem under Windows. The issue is that the -- asio in particular -- sound libraries seem a bit fragile. Work continues.

jrpavel
11-03-05, 07:06 PM
Version 2.5 is now up on convolver.sourceforge.net (http://convolver.sf.net) .

The good news is that it should provide more helpful diagnostics. Let me know if you get something unhelpful or broken looking.

The not so good news is that you will need to add an initial line specifing the number of input and output channels that you intend to use (even if not all of them are used by the filter path sets that you go on to specify. So

2 6


would specify that you are putting stereo in and expecting 6 channels out.

You will need to supply sound with the right number of input channels and ensure that you have setup the correct number of speakers (Tools | Options | Devices | Speakers | Properties | Advanced from Windows Media Player ... also accessible via Control Panel) otherwise you will either get no playback or unfiltered playback (I would be interested in knowing which). I would also be interested in the impact of settng/unsetting the 24-bit setting on that speaker setting dialogue.

The purpose of requiring you to specify the channels, rather than deducing them as the previous version did, is that you may want to test one channel at a time, on a multi-channel setup, for example.

Enjoy.

PS: Any feedback to jrp at dial dot pipex dot com, if not here.

jrpavel
11-06-05, 05:01 PM
Good news and bad news:

Good news is that there are now a couple of impluse generator programs: :D

http://homepage.ntlworld.com/john.mulcahy/roomeq/index.html
and http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool.

There is also a new version of DRC: http://drc-fir.sourceforge.net/

The bad news is that 2.5 will not work if the number of input and output channels is not identical. I will correct this bug shortly. :o

Mark_A_W
11-06-05, 05:29 PM
Thanks John, I'm struggling along behind - it's hard to get time with 2 little kids...

Sinobi
11-06-05, 05:50 PM
Thanks John, I'm struggling along behind - it's hard to get time with 2 little kids...
No s..t.....
I have 2 small and one teen....(screeam)
and buying a new house and building the new speakers and drowning in projectors that needs to be tested for a magazine doesn't help.......HELP.
I just need 2-3 days off from the world so I can make this surround room correction dream of mine work.

I fully understand you Mark....

Henrik

jrpavel
11-07-05, 01:59 AM
it's hard to get time with 2 little kids...

... not at all: spend the time with the kids; no contest

jrpavel
11-07-05, 05:04 PM
convolver 2.6 is now up on convolver.sf.net (http://sourceforge.net/project/showfiles.php?group_id=139099)

This is a more serious attempt at trying to handle a different number of input channels from output channels (for use with cross-overs). You may need to specify the number of channel through the Speakers setting in Control Panel. If Windows Media Player does not support the number of channels that you specify, it will disable the plug-in.

You will need to restart Windows Media Player if the number of channels is changed by selecting a new config file, as WMP does not reinitialize the plug-in after settings are changed.

As ever, feedback/experiences welcome.

R_R
11-08-05, 01:17 AM
Hello,

I've tested ver. 2.6, and I'm still unable to setup a crossover filter (2 channels in-4 channels out). In contrast to previous versions, now the plugin accepts the config file, and calculates attenuation. It do not crash Media Player, but the sound is left unproccessed (2 channels in-2 unfiltered channels out).

I've tried my filters with 2 4 first line, and cuadraphonic in control panel, and with 2 8 first line, and 7.1 in control panel (card is M-Audio Revo 7.1). Media player has been restarted with any settings change.

Maybe it would be useful for debugging purposes that the plugin could report how many channels it "sees" as usable in Windows Media.

Aside from this, now I can confirm that the "HCCD / 24-bit setting" makes the plugin stop proccessing.

Hope this helps.

Best regards,

Roberto

jrpavel
11-08-05, 01:52 AM
Robert, Thanks for the feedback. I'll make some further tweaks. John

jrpavel
11-08-05, 05:03 PM
2.7 is now available. It should handle different numbers of input and output channels correctly for crossovers (but only playback 32, 16 and 8-bit PCM and 32-bit IEEE Float sources -- the full set of usable formats will be available in the next release).

The filter files themselves, specified through the config file, should continue to be in single-channel WAV format (so that they specify the sample rate, for example).

R_R
11-09-05, 01:30 AM
Hello John,

Do you mean raw pcm format in the filter impulses?

I tried this way and convolver said: (picture)

loraw.pcm is a 32 bits IEEE raw pcm.

jrpavel
11-09-05, 02:04 AM
Sorry if that was not clear. The filters can be any WAV files -- no change -- but the playback of 20 and 24-bit PCM formats are not yet supported.

RAW format PCM filter files are not usable because they are uninterpretable (channels, sample rate) without additional information.

jrpavel
11-12-05, 07:54 PM
Version 2.8 is now up on convolver.sf.net.

A wider range of playback formats is now supported (in order of preference: 32-bit IEEE float , 32, 24, 16 and 8-bit PCM, 24, 20 and 16-bit PCM in 32-bit containers, 20 and 16-bit PCM in 24-bit containers, and 64-bit IEEE float)

The config file now requires specification of channel to speaker mapping in config file. (Set it to 0 to disable it.) More details on convolver.sf.net

The config file also requires the sample rate to be specified in config file. This is used when reading raw 32-bit .PCM filter files such as those produced by DRC.

A convolver icon shows on Windows Media Player's status bar when Convolver is active.

So the first line of the config file might be something like:

44100 2 2 0

for a simple stereo to stereo setup or

48000 6 6 3F

for a 5.1 setup with channel to speaker mapping.

Let me know how you get on (jrp [at] dial dot pipex dot com)

R_R
11-13-05, 04:29 AM
Hi John,

Good work, many thanks! Now crossovers works! Now an amateur can design his own crossover, equalizers, room correction, you name it. To date I only knows of linux setups that could do this (brutefir).

CPU usage seems pretty good, with ~18% for a stereo two ways crossover with long FIR filters (64k coefficients), P-IV, 2.2GHz.

On the picky side, I see that channel mapping has a strange behaviour, with setting different to 0 it seems that a third pair of channels is "created" (?). "Manual" mapping by the user with 0 setting is straightforward, though.

Now that important things works, I dare to add something to the wish list. Cascading filters would be a great addition. I mean, having the output of one filter to be the input of another filter. That could simplify the task of setting up separately crossovers, DRC, channel mixing, etc. Now is possible, but one has to convolve externally different impulses to get the combined behaviour.

Again, congrats and thanks.

Roberto

jrpavel
11-13-05, 05:30 AM
Roberto, Thanks. Glad that you have it working.

I can do a bit more on cpu usage, but nothing earth shattering. As it is, the FFT routines take more than half of processing time.

A couple of suggestions: do you really need 64k coefficients? How many of them are zero, or close to 0? Coefficients that are close to zero (10e-18, say) slow things down considerably. Trimming your impulse responses / filters will do more than I will be able to do, particularly with previous generation Pentium 4s with limited caches.

Could you explain more precisely the channel mapping issue?

The next thing on my list, after a bit more optimization, and subject to further design changes based on feedback, is a user interface to replace the config file, but that will be quite an effort, and I want to make sure that the guts work before applying such icing.

I'll have a think about the cascading of filters. It may be quite tricky. Others have asked for the ability to add delay to a channel (again this is doable externally), or the ability to select different filter automatically based on what is being played back.

These are all usability issues that depend on how people use convolver in practice.

Anyway, thanks for the feedback and lets see how it goes.

R_R
11-13-05, 07:00 AM
Roberto, Thanks. Glad that you have it working.

I can do a bit more on cpu usage, but nothing earth shattering. As it is, the FFT routines take more than half of processing time.


Ok. Now it is faster than any other windows convolver I've came across.


A couple of suggestions: do you really need 64k coefficients?


Well, in fact no, is more a matter of testing the limits. But I like precise ecualization in the bass range, and it means very long filters. Probably 16k will more than suffice.


Could you explain more precisely the channel mapping issue?


Yes, this is my crossover.txt:

44100 2 4 0
f:\filtros\lo-norm.wav
0.0
2.0
f:\filtros\lo-norm.wav
1.0
3.0
f:\filtros\hi-norm.wav
0.0
0.0
f:\filtros\hi-norm.wav
1.0
1.0

Nothing special, highs goes to channels 0 and 1 and lows to 2 and 3, left and right respectively.

If I change the first line to:
44100 2 4 3F

Then I have output also in channels 4 & 5, and it happens to be a copy of channels 2 & 3, but downmixed to mono (see picture).

In fact I'm not sure of this last sentence, it could be that it is channel 3 repeated in 4 & 5, but I'm sure that outputs in 4 & 5 are identical (easy to test when highs are in 2 & 3: Image comes from center spot, nothing on the sides).

Well, I hope that it becomes clear.

Roberto

jrpavel
11-13-05, 11:49 AM
Roberto, could you try 33, instead of 3f as the channel mask, please?

R_R
11-13-05, 12:10 PM
John, 33 works OK.

jrpavel
11-13-05, 05:43 PM
Good. 3f is, I think, a 5.1 spec, while 33 is good fo Quad, which is, I think, consistent with your setup.

jrpavel
11-15-05, 03:28 PM
convolver 2.9 is up on convolver.sf.net

This has some internal technical tweaks that may make it a more compatible DMO.

VERSION.dll, comdlg32.dll and msdmo.dll are now excluded from the distribution; they should be on the target system already. This may avoid problems with non-XP SP2 systems. DirectX 9 will be required.

... and 2.10 has some optimizations that give about 5% better performance. You can delete any wisdom.fftw files that you find in the convolver directory or elsewhere, if upgrading.

Next step, apart from any bug fixes, is some slightly more intrusive optimization for a potentially bigger step up in performance (which is already acceptable: 6-channel 65536-tap 48kHz convolution happens at 5 times real time on a 3GHz P4, or 2GHz Pentium M).

jrpavel
11-17-05, 05:41 PM
2.11, just released, fixes a couple of bugs that caused crashes in calculation of optimum attenuation and ConvolverWrapper access to property page.

janterje
11-21-05, 11:51 PM
This sounds extremely interesting! good work jrpavel!

This DSP plugin would let you use digital room correction on all channels when playing a movie in Microsoft Media Center Edition that uses WMP10? Or do i need to install Theatertek or Zoomplayer?

Someone should make a A-Z guide! I'm going to order a new soundcard thats better then my built in and test this out.

jrpavel
11-22-05, 02:52 AM
Thanks janterje.

MCE does not play DVDs without a filter like NVIDIA Puredecoder (standalone, or built in to TheaterTek) or it can use the ones that come as part of Intervideo WinDVD, etc.

What ZoomPlayer Pro does is to allow the Convolver Wrapper to be inserted into the filter graph so that it can do its work.

Someone else may be able to explain how they got Convolver Wrapper to work with TheaterTek.

So if you can find a way of getting ConvolverWrapper into the graph with whatever codec you are using, you are done.

Any pointers to other widgets for accomplishing this would be gratefully received.

vairulez
11-22-05, 07:02 AM
for theatertek it's very simple :
andrew added an option called the audio-postprocessor. You can add there any directshow filter having a merit of do_not_use+1 and that can take in input/output pcm interleaved.
The filter is inserted in the graph after the audio decoder and before the renderer

jrpavel
11-22-05, 08:26 AM
Thanks. That's helpful.

Schroinx
11-22-05, 10:32 AM
So what you're saying is that it does not work with WMP10/MCE5 or?

jrpavel
11-22-05, 12:39 PM
My understanding is that MCE2005 needs a 3rd party DVD filter, which will play back DVDs with WMP10, but the MCE interface does not use WMP10 to playback videos, it uses the 3rd party filter directly.

Nevertheless, it ought to be possible to insert ConvolverWrapper into the playback graph that MCE2005 sets up; I have not yet tried to work out how to do that.

I'm happy to be corrected on this point, or to have a recipe for making Convolver work with the MCE2005 interface.

Schroinx
11-22-05, 12:54 PM
I believe this to be true. I don't think the WMP10 can play dvds without 3rd party filters either. I use the dscaler5 dvd filters. However with my very limited understanding of the subject I am unable to help you out.

Anyhow to my understanding one would want to have the DRC filters working on all sound output not regading the source eg dvd, mp3, tv or whatnot?

I have read most of the replies in this tread, and I was wondering about it could be made as a plug-in for the ffdshow eventually, as this could provide the frame for the UI. However I do not know about ffdshow's audio stuff supports MCE5?

jrpavel
11-22-05, 01:23 PM
I'm not sure that ffdshow accepts plug-ins. It could, no doubt, use the Convolver convolution classes -- indeed it is said to have some of its own -- but, as you suggest, it may not help you unless ffdshow can be used as the 3rd party playback filter that the MCE interface uses.

vairulez
11-23-05, 07:10 AM
there's no way to access mce playback graph, that's why ffdshow for example doesn't work with mce

Sinobi
11-23-05, 07:24 AM
It's been said before:
MCE is for people who wants it easy and doesn't require the top notch performance.
Sad but true.

Henrik

jrpavel
11-23-05, 10:31 AM
Sure, but you could presumably write your own filter just as NVIDIA, Intervideo et al have done and add the sound processing in there. (Perhaps even some of the DScalers already done this.)

sic0048
11-23-05, 01:09 PM
Since you can use TheaterTek in MCE, couldn't you allow TheaterTek to add in the FFdshow filters, of which one could be the convolver filter? I haven't tried this myself, but always assumed it would work. I would really like to know since I own MCE05 and would like to use FFdshow in the process. Up to this point, I've been concentrating on other areas of the HTPC, so I haven't downloaded TT to try it yet.

jrpavel
11-23-05, 03:25 PM
TT contains an NVIDIA decoder and so I suspect that MCE uses that, rather than TT itself. (This is based on speculation, rather than direct experimentation.)

vairulez
11-24-05, 08:15 AM
TT can be used in mce thanks to a software called mymovies.
you could presumably write your own filter just as NVIDIA, Intervideo et al have done and add the sound processing in there
yep good luck ;)

jrpavel
11-24-05, 09:07 AM
But mymovies effectively pushes MCE out of the way and runs TT?

Rolling your own, is indeed, as your smiley suggests, a bit of a tall order...

jrpavel
11-24-05, 05:32 PM
convolver 2.12 is now up on http://convolver.sf.net

This now contains the first version of ConvolverFilter which provides an alternative, but functionally equivalent, DirectShow filter to ConvolverWrapper.

This now shows up as a DXFilter in applications such as Adobe Audition.

Enjoy.

jrpavel
11-25-05, 07:50 PM
and 2.13 ...

Automatic zero padding of filter lengths for optimal FFTW performance

The distribution package registers ConvolverFilter :o

I've also added ConvolverFilter.filterdata and ConvolverWrapperDMO.filterdata files for Zoom Player Pro

2.14 corrects a bug introduced in 2.12 that stopped the plug-in from functioning :o

Sinobi
11-25-05, 07:54 PM
You are a fast programmer....... :)

Henrik

jrpavel
11-29-05, 08:59 AM
Quick poll:

I note that many of the impulse response freely available on the net are stereo wavs. At present, convolver only accepts mono impulse response files (which are applied to the sum of 1 or more input channels) and the results summed to produce the output channels specified in the config file.

To add a little more flexibility (and save having to split the stereo wavs) I propose to add to the config file a line after each impulse response filename specifying which channel should be take from that impulse response file.

I realise that this will be just extra clutter for those generating their (mono) impulse respone files using DRC, but I think that it may, on balance, be worth it.

Sinobi
11-29-05, 09:48 AM
Sounds like a good idea.

Henrik

R_R
11-29-05, 09:51 AM
Hello John,

If I undestood correctly, using mono impulse responses will still be possible. Then I think that the new option is fine.

jrpavel
11-29-05, 11:36 AM
Yes, mono would still be possible, but you would have to add a 0 on a new line afer each filter filename to say "take the first channel".

(I realise that this is not v elegant, but I am reluctant to spend a lot of time on building a smarter config file parser when I hope to replace the config file with a user interface when the basic architecture is stable.)

R_R
11-30-05, 01:48 AM
That's OK for me. It's very clear, and adds possibilities.

knutinh
11-30-05, 05:31 AM
Wouldnt a floating-point IR file format be better suited that a fixed-point wav file?

regards
Knut

R_R
11-30-05, 09:08 AM
Sure, but you can use them if you want, or even floating point wavs (I'm using that right now).

jrpavel
11-30-05, 12:00 PM
That's right. Any libsndfile-compatible format is acceptable for Impulse Responses, with the proviso that raw .pcm or .PCM files are interpreted as 32-bit mono floats.

jrpavel
12-09-05, 03:32 PM
Convolver 2.15 is now up on http://convolver.sf.net

This allows multi-channel filter files to be used (specifying which channel is to be used for a filter path through the config file) -- so you can use all those stereo impulse files available on the internet, for example. Note that existing config files with mono filters will need to be edited to add a single line containing 0 after each filter file name.

It also allows tuning rigour to be set through the properties page.

Negative scaling factors are allowed (which will result in phase inversion). For straight inversion, don't use -0.0 for channel 0; use -0.99999 instead.

There has also been a good deal of internal refactoring and cleaning up for future optimization (so I would be particularly grateful for those interested in giving convolver a thrashing, as the testing needs to be much more extensive).

As ever, feedback welcome. In particular, I have been considering putting on a windows interface to replace the config text file approach.

Other feedback that I have had suggests, however, that the text file approach is straightforward even for the inexperienced, with the consequence that I would be better spending my time on

- making the config file parser more robust / helpful in its error messages and concentrating on features such as

- delay (not clear what that means yet), and

- the ability to select different configs automatically, depending on the input sample rate / channel numbers

for example.

The windows interface would be quite a lot of work and it is not clear that it would make convolver much easier to grasp (essentially because for each filter path you still need to specify

- the input channels and scaling factors to be applied to them;

- the impulse response file that is to be used (and which channel from that file)

- and the output channels are to receive the output (again with scaling factors, and the assumption that the outputs from different filter paths to a particular channel are summed)

I don't really want to spend time on the interface until convolver is feature complete.

However, I am open to persuasion about priorities.

Mooneyass
12-09-05, 08:02 PM
So, what is the currently prefered method for generating impulse response files? From the work I've done in the past, the simplest method was using the tools in ACXO. Is the file output from this useful here?

Thanks,

Wes

jrpavel
12-10-05, 01:59 AM
Wes,

Check out www.duffroomcorrection.com which has pointers to methods both for cross-over generation and impulse response generation.

ACXO output should be usable, as should rec_imp (http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool)

Mark_A_W
12-10-05, 04:13 AM
Ed's been helping me with his rec_imp app - he compiled the Win32 version because I pestered him endlessly :)

But it just errors on my PC. I tried uninstalling ASIO4ALL (not using it anyway), but that didn't help.

Please post here if you have any more luck.

abracadaver
12-10-05, 06:28 AM
Ed's been helping me with his rec_imp app - he compiled the Win32 version because I pestered him endlessly :)

But it just errors on my PC. I tried uninstalling ASIO4ALL (not using it anyway), but that didn't help.

Please post here if you have any more luck.

Actually I have the same problem with rec_imp. I run XP SP2 and have a e-mu 1820M. It produces a error the moment I run it.
Both with asio and wdm drivers.

Mooneyass
12-10-05, 11:27 AM
Yup, me too, that's why I ask. I'll try out ACXO and see how that works. Thanks guys.

Wes

jrpavel
12-11-05, 04:54 AM
I've had a go at compiling up rec_imp and there are indeed problems with the RTAudio library that it uses. I will pop a version that uses only DirectSound in with 2.16, which will contain some smalll optimizations, unless someone comes up with some show-breaking bugs with 2.15.

jrpavel
12-11-05, 05:27 PM
2.16 is now up on http://convolver.sf.net

It contains some internal optimizations over 2.15

2.16i is compiled with the Intel C++ compiler, 2.16 with the VC++ 2003. The former *may* be faster if you have a newer CPU. I'd be interested in hearing reports of any differences that you find.

I attach a DirectSound version of rec_imp (no ASIO support) for generating impulse response files. See http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool for more details. No guarantees. The RtAudio library still seems to contain some bugs, but it works for me on a couple of different machines. I'll do a little more work on this, so feedback would be welcome.

jrpavel
12-12-05, 04:38 PM
I've compiled up separate DS and ASIO versions of rec_imp and put them on http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool

The ASIO version is still flakey, but see how you get on.

jrpavel
12-14-05, 09:05 AM
Coming soon: I am adding the capability to specify a list of filter paths (ie, a list of config files) which will be tested in turn and the first to match the input stream (no of channels, sample rate) will be used.

I am hoping that this will make Convolver more usable with, eg, DVDs where the source format can change from stereo to 5.1 and back again on some DVDs.

I will also try to allow the specification of filter paths that by-pass convolutiuon.

For those of you that have managed to get something usable working, it would be helpful to make a contribution either here or on http://www.duffroomcorrection.com/wiki/DirectShow/DirectX_Convolver_filter_/_Windows_Media_Player_plug-in (so that others can learn from our experience) setting out your filters (and how you generated them), configuration files and equipment.

Equally, you might want to highlight any show-stopping usablity features (including complexity, I know).

hjb
12-17-05, 10:39 AM
I am really enjoying experimenting with jpravel's Convolver - thanks so much for all the hard work.

I followed Jones_Rush's guide - complicated but it works - I have not tweaked much but i get noticable results. I am now trying to use the newly compiled rec_impDS (the old version did not run on my MCE2k m/c).

My question is - if I use rec_imp, can I feed the output into DRC and then use the resulting file as a filter without converting to Wav (per the jones_rush guide)? i.e. use the impulse response PCM file directly in convolver?

I am thinking the following commands to build a do-it-all batch file:

1. rec_imp (with arguments)

2. Use the resulting file as input file in DRC

3. Use the resulting pcm as input file for Convolver

Am I missing a conversion here? I think that if I run this once for left, once for right it should work.

I am trying to build a batch file which run all of this for me automatically - if someone else has this working, please would you post your batch file so I can compare?

Thanks everyone!!

Michele Spinolo
12-17-05, 12:35 PM
Dear jrpavel,

I was wondering if the convolver plug-in could be used even getting AC-3/DTS streams as output.

Today we are plenty of HW and SW solution (motherboards, audiocards, ffdshow, ac3filter) which are able to encode audio streams in AC-3 or DTS.
Thus I was wondering if the convolver plug-in could be used after AC-3/DTS decoding (performed for example by TT2.2 or ffdshow) and before AC-3/DTS encoding.

For example inserting it in ffdshow audio filters will help to perform almost all kind of operation with movies audio: today ffdshow only lacks of a powerful convolver!

jrpavel
12-17-05, 12:49 PM
Thanks for the feedback, and glad that you have got rec_imp working on your setup.

Convolver is able to read .pcm files, interpreting them essentially as a sequence of 32-bit floats, which means that they can provide an impulse only for a single channel / filter path.

This means that if you are using stereo, or multi-channel, you will need a series of .pcm files to do the job (as you correctly surmise).

There are different schools of thought about how best to do this. Eg for a stereo setup:

i) record mono impulses from each speaker separately and apply them to the corresponding channel -- the method that you are outlining;

ii) record stereo impulses L-LR and R-LR and apply the sum of convolved L-L and R-L to the left channel, and of convolving L-R and R-R with the right channel. (See http://www.ramsete.com/aurora/waveconv.htm for a schematic diagram)

Let us know how you get on.

hjb
12-17-05, 01:14 PM
Thanks jrpavel - I will let you know how it goes - i'll post the .bat when I have it working.

I followed the link stereo impulse response. If I want to use that method, I presume I cannot use rec_imp - am I correct ?

jrpavel
12-17-05, 02:00 PM
That may well be right. I think that rec_imp produces only mono recordings, but perhaps Ed Wildgoose or Denis Sbragion may be able to say more.

jrpavel
12-17-05, 02:11 PM
Michele,

Yes, convolver (or its DirectShow filter forms) can do this. Eg, I have heard that they already work with TT2.2

Michele Spinolo
12-17-05, 07:16 PM
Michele,

Yes, convolver (or its DirectShow filter forms) can do this. Eg, I have heard that they already work with TT2.2

The "problem" is, I think, the convolver plug-in can only be used if analog audio is picked as output, while if someone would like to output via s/pdif it is not possible.

Just a small suggestion: why don't you get in touch with Milan Cukta in order to add your convolver filter to ffdshow audio? :)

jrpavel
12-18-05, 07:39 AM
Michele, I see. I'll have a look at how SPD/IF is handled.

For the moment my priority is to get Convolver to a stable state and perhaps improve the performance, particularly for matrix convolutions. I can then have a look at using the routines in other wrappers such as ffdshow.

Michele Spinolo
12-18-05, 08:31 AM
Michele, I see. I'll have a look at how SPD/IF is handled.

For the moment my priority is to get Convolver to a stable state and perhaps improve the performance, particularly for matrix convolutions. I can then have a look at using the routines in other wrappers such as ffdshow.

Great Pavel!
Obviously it was just a suggestion!

S/Pdif is somehow needed, if you want to convolve movies sound and getting a digital output, because a 5.1 (6.1) signal can only be routed through a single s/pdif output only if it is compressed (AC-3 or DTS).
Also a digital output is in someway mandatory, IMHO, for HTPC due to Reclock, which does not work with analog output.

Mark_A_W
12-18-05, 03:18 PM
Reclock works fine with analogue outputs - in fact that's what it was originally designed for.

I think trying to get a digital output for convolved 5.1 is a very bad idea - unless you have a soundcard and processor with 3 SPDIF outs and INPUTS, and I've never seen that.

To make digital work, you need to decode it, convolve it, then reencode it (like AC3filter can).

I think the reencoding with a lossy compressor will negate any benefits of convolving. To me the only way to use a 5.1 channel convolver is with the analogue outputs.

For stereo I use SPDIF, but that doesn't need reencoding.

jrpavel
12-19-05, 10:33 AM
For those of you interested in IR measurement, consider http://www.avsforum.com/avs-vb/showthread.php?t=529224

Do the new rec_imp builds work for people, or does it all still crash?

hjb
12-19-05, 02:50 PM
jrpavel
I have yet to fully test rec_impDS but this build certainly runs - the previous build crashed on my MCE2k m/c.

You mentioned the other Impulse Response prog - Room EQ Wizard - as I understood it, RoomEQWizard was for parametric adjustments of certain AV equipment - do you know if it can be used for generating an IR instead of rec_imp ? If so, any idea how? Would it generate file types which can be fed directly into DRC for example ? Why would it be better? or is it just an alternative?

Thanks,


EDIT*** - I see that the latest version of roomEQwizard now allows the saving of a wav IR file - I'll start experimenting as an alternative to rec_imp.

R_R
12-19-05, 03:30 PM
For those of you interested in IR measurement, consider http://www.avsforum.com/avs-vb/showthread.php?t=529224

Do the new rec_imp builds work for people, or does it all still crash?

Works fine for me.

Mooneyass
12-19-05, 09:43 PM
So, is rec_imp working with ASIO such as my my M-Audio FW410?

abracadaver
12-20-05, 03:35 AM
For those of you interested in IR measurement, consider http://www.avsforum.com/avs-vb/showthread.php?t=529224

Do the new rec_imp builds work for people, or does it all still crash?

I have tried the rec_impDS version yesterday on my E-MU 1820M and that worked.
Thanks !

jrpavel
12-20-05, 07:19 AM
There is said to be a bug in the loop-back with rec_imp.

Can anyone confirm / refute, before I apply the suggested patch?

jrpavel
12-20-05, 07:20 AM
So, is rec_imp working with ASIO such as my my M-Audio FW410?

We'd be interested in your experience of either the ASIO or DS rec_imp versions.

jrpavel
12-20-05, 02:24 PM
A slightly tweaked version of rec_imp_jrp is available on http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool. It contains a small fix for loopback use.

bidland
12-20-05, 04:59 PM
John,

I have some problems with noise when running the convolution plug-in (Version 2.16).
The same filter is working fine with the Foobar plug-in. Maybe I got the config wrong?

44100 2 2 0
C:\Program Files\Convolver\Convolver\Filter\center.wav
0
0.0
0.0
C:\Program Files\Convolver\Convolver\Filter\center.wav
0
1.0
1.0

I'm trying to do a simple stereo setup with 2 in and 2 out, both channels using the same DRC filter file.

I have also tried the rec_imp files. Both versions are working, but there is a level difference compared to the Aurora plugins. Both measurements were done with an input level at -1 dBFS. The IR wav from Aurora was close to 0 dB, but the rec_impds version was 25 dB lower. The resulting frequency response was very similar, except for some differences below 30Hz. I will try the new version and compare some loop-back measurements.

I'm using a Digigram VXpocket V2 card.

Bjorn

jrpavel
12-20-05, 05:32 PM
Bjorn, The config file looks OK to me.

Do you get the same problem with different partition numbers (0, 2, 4)?

What are you trying to play back?

If you could email me your set-up (config + center.wav) I will have a look (jrp at dial dot pipex dot com)

I cannot really help much with rec_imp -- I've only compiled it, but not done any detailed comparisons with other approaches.

bidland
12-21-05, 05:33 AM
I'm trying to play a file ripped from a CD. 16 bit, 44.1 kHz linear PCM.

I only tried 0 and 2 in partition numbers.
Will do another test tonight.
Bjorn

jrpavel
12-21-05, 05:37 PM
Well I can't immediately hear anything untoward playing back an MP3 with this filter (albeit with the next release).

I'll keep this under review.

bidland
12-21-05, 11:53 PM
The noise is gone!

I had used the Default Direct sound device, but when I changed to VXpocket WDM as playback device it works fine.

I also compared the rec_imp/glsweep to the Aurora plugin. There are two differences.
The generated inverse sweep in Aurora is always at max level (0 dBFS), but in glsweep the level is very low. The file looks as if it's empty when you open it in Audition, but when you zoom in it's there.

This difference doesn't seem to cause any difference in result, though. A loopback results in a nice impulse response.

The cause of the level difference seems to be in the convolving prosess (convolving the recorded file with the inverse sweep). I cross-checked the files in Aurora and glsweep/lsconvolve, and the resulting impulse response was always about 5 dB lower with lsconvolve. The difference seems to be even greater with acoustical measurements.

I'm not sure if this is a real problem. It's not easy to see the real SNR in the impulse response with a log dB scale. A linear scale is more revealing, but Audition don't have this options, as far as I know.

BM

jrpavel
12-22-05, 04:30 AM
Good news.

I can't explain the differences between the different impulse response measurement methods ...

Michele Spinolo
12-25-05, 01:32 PM
A slightly tweaked version of rec_imp_jrp is available on http://www.duffroomcorrection.com/wiki/Simple_Automated_IR_Measuring_Tool. It contains a small fix for loopback use.

Dear jrpavel,

as you suggested I tried to implement the patch you made in order to being able to compile the fixed loopback rec_imp version under Linux.
Unluckly I am not really a C/C++ expert so...can you provide a little help? :)

jrpavel
12-26-05, 07:11 AM
Michele, I suggest that you start with the sources of Ed's version (available on the same page) and replace its rec_imp.c with the rec_imp.c from my version. You should then be able to use the makefile from Ed's version.

jrpavel
12-30-05, 06:08 PM
Convolver 2.17 is available via http://convolver.sf.net

This release:

* Allows WAV (or other libsndfile-compatible) files to be interpreted as filter paths (without the need for a config text file). The source channels are convolved with the corresponding channels of the WAV file (so not in matrix fashion).

* Allows a config file to comprise a list of filter path filenames, with automatic selection of the first compatible filter path (by number of input and output channels, sample rate), where a filter path filename is either a text config file, or a WAV file

There are some speed improvements.

This is a VC++ 2005 test build.

PS: Ed has put up a new rec_imp on http://www.duffroomcorrection.com

Michele Spinolo
12-30-05, 06:28 PM
Great!

Thank you very much jrpavel! :)

jrpavel
01-06-06, 05:08 PM
Convolver 2.17 is available via http://convolver.sf.net

This release fixes a bug when WAV files are used directly as filters (rather than via a config file). Some slight performance improvements.

jrpavel
01-07-06, 06:16 PM
I have updated the http://convolver.sf.net site to make it easier to navigate. I have also added some example config files (http://convolver.sourceforge.net/configegs.html).

If you have any further examples (or interesting filters) that you would be willing to share, please post them to me at jrp at dial dot pipex dot com. Similarly, if you have some practical experience of generating filters, that would be helpful.

jrpavel
01-14-06, 07:27 AM
This release allows Convolver to run on all x86 cpus (not just Pentium 4).

Convolver is a (free) real time DSP audio plug-in for Windows Media Player.

The install package also contains two DirectX/DirectShow filter versions — ConvolverWrapper or the equivalent ConvolverFilter — for Adobe Audition and real time applications such as Zoom Player Pro, TheaterTek 2.2, J.River Media Center (when used with the DirectX host plug-in), or Console.

Convolver will take a set of impulse response (FIR filter) files and convolve them with sound paths mixed from the input channels, mixing the results into a set of specified output channels.

Applications

Why would you want to do this? There are several main applications:

With a suitable impulse response generated by a tool such as DRC you will be able to play sound corrected for your room response. For more details, see Ed Wildgoose's Duff Room Correction site.
You should also be able to use Convolver for bass management, cross-overs, cross-talk cancellation, equalization and other purposes that require the source signal to be filtered and redirected to different output channels.
You can also use Convolver as an effects filter (reverb) in Adobe Audition, or other sound or music application that accepts DX filters.


Features

Performance is excellent, possibly the best available under Windows, and subject continual improvement. A stereo 65536-tap filter, the largest that makes sense when applied to a 44.1kHz source, executes at 40 times real time, representing a 3% cpu hit, on a 3.4GHz Pentium 4.
Arbitrary-length convolutions for unusual applications (1 million tap limit imposed only as a sanity check)
Multi-channel input and output, PCM and IEEE Float
Mixing and scaling of both input and output channels
Wide range of filter file formats accepted (Microsoft WAV, SGI/Apple AIFF/AIFC, Sun AU/Snd, Raw (headerless 32-bit IEEE float), Paris Audio File (PAF)
Commodore IFF/SVX, Sphere/NIST WAV, IRCAM SF, Creative VOC, SoundForge W64, GNU Octave MAT4/5, Portable Voice Format, Fasttracker 2 XI, HMM Tool Kit HTK)
Sample encodings supported include unsigned and signed 8, 16, 24 and 32 bit PCM, IEEE 32 and 64 floating point, U-LAW, A-LAW, IMA ADPCM, MS ADPCM, GSM 6.10, G721/723 ADPCM, 12/16/24 bit DWVWk, OK Dialogic ADPCM, and 8/16 DPCM.
Windows Media Player plug-in and DirectShow filter interfaces
Several filters can be loaded at once. The first to match the playback format (channels, sample rate) is automatically selected.


Requirements

Convolver runs on Windows XP/2000 with DirectX9. (It may also run on earlier versions of Windows.)
The Windows Media Player plug-in needs WMP10 or WMP9. Otherwise you will get a convolverWMP.dll failed to register message upon installation. If you continue installation in such circumstance, you may, nevertheless, get access to ConvolverFilter / ConvolverWrapper.
I have not found a way of running it with the Windows Media Center Edition (MCE) interface.
ConvolverFilter and ConvolverWrapper DirectShow filters need a DX host (eg, Adobe Audition).
From version 2.19, Convolver runs on all x86 cpus. Earlier versions needed a Pentium 4 class cpu.

jrpavel
01-15-06, 05:41 PM
Changes:

Speed improvements, particularly for shorter filters

New tuning rigour option: limit tuning to 1 minute

Fixed ConvolverFilter when more than one partition specified (bug introduced in 2.17)

ConvolverWrapper media format negotiation and properties page fixes (bug introduced in 2.17)

sime_george
01-17-06, 02:28 PM
jrpavel - thanks for your excellent work on this plugin which I have only recently discovered. I am having the following problem when trying to configure the convolver (same error when using WMP10 plugin and convolverCMD.exe) :

Convolution error: Problem with filter paths: convolver-config.txt: Unexpected exception

My convolver-config.txt is the following :

44100 2 2 0
c:\left_rps.pcm
0
0.0
0.0
c:\right_rps.pcm
1
1.0
1.0

Where left_rps.pcm and right_rps.pcm are the outputs from DRC. I have also tried using a single "filter.wav" file produced by the CoolEditPro process with the same result.

I had a quick look at the source code and it seems to be throwing an unhandled exception in channelpaths.cpp, line 239 but I can't see why. Any ideas what I may be doing wrong ?

Thanks,

Simon

jrpavel
01-17-06, 03:01 PM
Simon, Thanks for the report. Can't see anything obviously wrong.

Do you have a single blank line at the end of your config file?

Please zip and send me the config and pcms (jrp a t dial dot pipex dot com) and I will fix this.

In the meantime, you should be able to use your filter.wav without any config file.

jrpavel
01-17-06, 05:49 PM
Clarification of some diagnostics

Planning rigour limited to 1 minute per path

Planning rigour resets to Measure, to avoid lengthy startup times

jrpavel
01-17-06, 05:59 PM
My convolver-config.txt is the following :

44100 2 2 0
c:\left_rps.pcm
0
0.0
0.0
c:\right_rps.pcm
0 <---
1.0
1.0



For the benefit of others, the 1 after right_rps.pcm should be a 0, as amended above (as we are selected the first channel from a single-channel pcm)

pmd918
01-18-06, 11:18 AM
I'm a bit confused about the use of Convolver with TheaterTek.

Can TheaterTek upconvert all DVD sources to 7.1? If so, how?

The reason I ask is this: I am thrilled with the prospect of doing DRC for my home theater. But I have read in many places that Pro Logic IIx is by far the best way to get 7.1 from DVD or music sources. As we all know, there are no current PC software offerings that do IIx. That's why I currently pass thru S/PDIF using TheaterTek and my M-Audio Revolution card to my Rotel Receiver.

So, in the opinion of the experienced Convolver users here, is it worth the tradeoff to get DRC and sacrifice Pro Logic IIx?

And actually, I'll probably have to make a sacrifice on the video side, as well. I currently use ffdshow. Probably won't have the processing power to use both. True?

Also, in my implementation, would it be better to use Convolver as an ffdshow plugin, or as audio postprocessing in TheaterTek?

This is all very confusing.

jrpavel
01-18-06, 12:44 PM
Welcome to the bleeding edge.

A couple of things:

convolver can only process pcm, not compressed formats such as DD or DTS, which need to be decoded first. This would then generate analogue output, not SPD/IF output, although you could try to reencode it, but the whole process would probably do more harm than good to your sound.

Convolver is efficient and will get more so, so you should be able to run it with video no problem

pmd918
01-18-06, 12:57 PM
jrpavel,

Thanks for the quick response.

I already understand your point, so let me reiterate my question in a different form.

The way I see it, I have 2 choices:

A) Use the best alternative for 7.1 performance. That's Dolby Pro Logic IIx. The only way to currently achieve this is to pass the S/PDIF signal from the HTPC to my receiver. In this case, I get the "best" decoding, but can't get DRC.

B) Take advantage of Convolver for DRC. Here I use TheaterTek/ffdshow/Convolver to get DRC (plus bass management, crossovers, etc.), and pass analog signals to my receiver. In this case I get DRC, but sacrifice the "best" 7.1 decoding.

My first question for the people who use DRC is which scenario is better? Both involve tradeoffs. My gut tells me that correcting for room problems would give a far greater acoustic benefit than the difference between Pro Logic IIx and other algorithms to get 7.1. But I'm not sure, that's why I ask the question.

My other questions, which assume the "experts" would choose choice "B" above, are:

1) Can TheaterTek even give me 7.1? If so, How?

2) Is it better to use Convolver from within ffdshow, or as postprocessing in TheaterTek audio options?

Hope this clarifies my questions.

Thanks,
Phil

jrpavel
01-18-06, 04:54 PM
Phil,

Thanks. It does.

on AvB The short answer is that I would agree with your hunch.

It may well be that no one has done the comparison that you are contemplating. Getting stereo right is hard enough! And to make matters worse, your receiver may have different characteristics for different input types.

To make matters more complex still, you really ought to be applying to two filters (one for the left ear and one for the right) to get the theoretical best for each speaker, although a single filter may give good sound in practice.

I can't remember enough about TT to know how to get 7.1 out of it (particularly with a 5.1 DVD) so that may well be a show stopper.

On your last question I have not done a comparison between ffdshow and TT.

If you had time to experiment, you could document your findings (including how to set things up) on www.duffroomcorrection.com

Sorry not to be able to resolve your questions: like I say we're at the bleeding edge...

Briands
01-18-06, 07:50 PM
Phil,

I can't remember enough about TT to know how to get 7.1 out of it (particularly with a 5.1 DVD) so that may well be a show stopper.


I'm pretty sure the short answer is that it doesn't. I think Andrew has stated that even with the Audio Pak TT only does 5.1 analog.

jrpavel
01-21-06, 06:15 AM
https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=387169


Removed residual SIMD code that led to "Unexpected exception" notifications on non-Pentium 4 cpus. Thanks to Simon George for fix

Accept raw 64-bit float format filter files (.dbl). (Internal processing is still 32-bit.)

jrpavel
01-28-06, 08:05 PM
Available from https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=389095

See http://convolver.sf.net for usage details.

Some of the constituent libraries have been updated.

jrpavel
02-01-06, 05:23 PM
Convolver 2.24 Released

More small optimizations
Time-limited tuning corrected
Corrected bug introduced in 2.23 for multi-partition convolution

See https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=390156 and http://convolver.sf.net

jrpavel
02-05-06, 05:27 PM
See http://convolver.sf.net

Download from https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=391204


More small optimizations

Removed the requirement that config files must end with a final blank line.

Fixed bug when new filter incompatible with current playback setup is selected.

xAragornx
02-08-06, 03:16 PM
Hello all!

First of all, I would like to thank JR for the tremendous work he has done on his plug-in software so that we Windows users can have access to DRC. Although I have not yet used your plug-in, I can see that you have put in a lot of time.

I am a total newbie to DRC and have read all the information I could in this thread and other threads in this forum and have learned a tremendous amount. I am very technical and computer savy but I have to honest and say that I am very confused as to how to configure and setup my custom built HTPC for DRC. There is a ton of information everywhere but no one has compiled it in one concise how to go guide along with one software solution to set it all up on a computer. I for one would be willing to pay good money for such a software solution but at the moment, there does not seem to be any such solution around.

I have read Jones Rush's guide. It is long and complicated. I'm not sure how to work the guide for 5.1 channels. Then once I have this IR file, I'm sure how to use it in the convolver.

Here is my wish list:
-Easy software for the creation of the room specific IR file for multiple channels in windows.
-A realtime convolver driver for windows that would apply the IR file for all sound output to the sound card.

I'm looking to process all sound output by my HTPC. This would be MP3 music, CD's, DVD'S, games, TV played through my tuner card. My HTPC currently uses MCE and it seems that no one has figured out how to have the plug-in work in MCE.

At the very least, it would be great if there was a how to guide that would walk your through from the creation of the IR file to playing corrected sound in Windows. I have looked at the one on JR's website and it pretty good at explaining how to use the plug-in but it's not a start to finish guide.

This technology is so exciting and I can't wait to get it setup on my PC. I am willing to do my share of the work if someone would be willing to work with me. I can't help with the programming (I only know how to program in VB) but I can help with the testing and the creation of the how to the how to guide once I know what I am doing.

Any help that can be brought my way is highly appreciated.

Sergio

jrpavel
02-08-06, 03:55 PM
Sergio, Thanks for your interest.

I suggest that you look first at www.duffroomcorrection.com.

It explains how to generate impulse responses (using rec_imp + DRC and the Jones Rush guide, or you could try Room EQ Wizard). You will need to create impulse responses a channel at a time. Convolver will then apply them. If you want to get cleverer, you can try impulse responses from the left channel to the left ear and then left channel to right ear and get Convolver to combine them.

I would start with stereo, before trying 5.1 (where you may also want to add bass management, or other filtering).

I suspect that you will struggle to apply filtering to MCE, because it does not seem to have the hooks, despite the fact that there is a DirectShow version of Convolver. Having said that I have not looked hard for any.

MCE does, however, use WMP, I think for music, so you may be able to get part of the way.

Depending on your sound card, you may be able to use something like http://www.console.jp/eng/index.html and ConvolverFilter if you want to insert a permanent filter.

Happy to work with you to get something going.

It would be good if you were able to document your journey on the duffroomcorrection Wiki so that others can benefit from your experience, posting here when you get stuck or need others' views.

xAragornx
02-08-06, 04:21 PM
Thank for the info....

I guess the first step is to generate impulse responses for my speakers. I will go thru the guides and programs you suggested. I will then try to use your plug-in.

I'll document my journey as best I can for others out there.

I'm sure I'll have a ton of questions. I'll post as they come up.

hjb
02-08-06, 05:47 PM
I finally got around to putting the pieces together to get Convolver working with rec_imp and DRC - Thanks John and Ed !!

I will put up some more details on the DRC wiki in the next few days, but I am still experimenting. I get a noticable change, which sounds a little 'muffled' , and am now experimenting with flat target curves in DRC to lift the top end. My results are not as dramatic as I read "Jones" had - but I have high hopes!!

I am using MCE2005 with WMP10 and Convolver, DRC and rec_imp all latest and greatest releases. My sound card is an M-Audio Transit USB set to bit-perfect passthrough, 44100, 16bit and I am using the ASIO4ALL driver (could not get right levels of latency using the m-audio drivers, which resulted in 'cracking' sounds during the sweep). My microphone is probably a weak link - am using a Radio Shack boundary mic (next stop I will try to correct for the mic).

All of this feeds via S/PDIF into a Marantz 5200 and then to 6.1 B&W (600 series) speakers. I set the Marantz to play 6 channel stereo for my tests (which is independant of this experiment).

The following uses rec_imp to measure 2 channel - a Left then a Right sweep to build left and right files for convolver via DRC.

My batch file looks like this:


Set REC_IMP=c:\Program Files\DRC\Rec_Imp
Set DRC_DIR=C:\Program Files\DRC\DRC
Set CONVOLVER=c:\Program Files\DRC\Convolver
cd %REC_IMP%
rec_imp.exe LeftSpeakerImpulseResponse.pcm 44100 20 21000 20 0:1 0:1
move /y LeftSpeakerImpulseResponse.pcm "%DRC_DIR%"
rec_imp.exe RightSpeakerImpulseResponse.pcm 44100 20 21000 20 1:1 1:1
move /y RightSpeakerImpulseResponse.pcm "%DRC_DIR%"
cd %DRC_DIR%
drc.exe --BCInFile=LeftSpeakerImpulseResponse.pcm --PSPointsFile=bkHB.txt --PSOutFile=LeftSpeaker-rpsERB.pcm erb.drc
move /y LeftSpeaker-rpsERB.pcm "%CONVOLVER%
drc.exe --BCInFile=RightSpeakerImpulseResponse.pcm --PSPointsFile=bkHB.txt --PSOutFile=RightSpeaker-rpsERB.pcm erb.drc
move /y RightSpeaker-rpsERB.pcm "%CONVOLVER%

I have modified the PSPointsFile to be Flat (I think!):
0 -20.0
10 -10.0
20 0.00
400 0.00
12800 0.00
20000 0.00
21500 0.0
22050 0.0

And my convolver config file is:

44100 2 2 0
c:\Program Files\DRC\convolver\LeftSpeaker-rpsERB.pcm
0
0.0
0.0
c:\Program Files\DRC\Convolver\RightSpeaker-rpsERB.pcm
0
1.0
1.0

Note that I am using the ERB config file for DRC - just an experiment at this stage to try to 'lift' the higher frequencies.

I am not there yet, but the batch file make it easier for me to conduct my experiments.

I would appreciate any input on the above !

jrpavel
02-08-06, 06:01 PM
A further suggestion, to check your setup, try convolving a perfect dirac delta function filter with the playback channels (ie, 1 followed by some 0s). This should result in no change to the playback stream. (I attach one.)

You might email me some sample pcm files to have a look at.

Good luck...

jrpavel
02-09-06, 03:17 AM
In this release:

Added ability to delay output channels. This necessitates a change for existing config files. (The second line is a list of output channel delays in ms. Just set it to a row of 0s to start with.)

Removed initial noise after calculating optimum attenuation in some circumstances.

ConvolverCMD fixes.

Uli Brüggemann
02-10-06, 05:59 AM
I finally got around to putting the pieces together to get Convolver working with rec_imp and DRC - Thanks John and Ed !!

snip

greatest releases. My sound card is an M-Audio Transit USB set to bit-perfect passthrough, 44100, 16bit and I am using the ASIO4ALL driver (could not get right levels of latency using the m-audio drivers, which resulted in 'cracking' sounds during the sweep). My microphone is probably a weak link - am using a Radio Shack boundary mic (next stop I will try to correct for the mic).

snip

rec_imp.exe LeftSpeakerImpulseResponse.pcm 44100 20 21000 20 0:1 0:1
move /y LeftSpeakerImpulseResponse.pcm "%DRC_DIR%"
rec_imp.exe RightSpeakerImpulseResponse.pcm 44100 20 21000 20 1:1 1:1

snip

I would appreciate any input on the above !



Hi,

if you recognize cracking sounds during the sweep then the reason may be a soundcard working at 48 kHz samplerate despite the setting of 44100.

I have got this result also with some soundcards and Adobe Audition as another possibility to record a logsweep.

A lot of soundcards only have a frequency clock of 256*fs with fs=48 kHz. So for 44100 kHz a samplerate conversion on the fly is done during playback and recording. This leads to the described effect.

See also the appropriate chapter in the documentation of DRC.

So today I do all recordings in 48 kHz (or 96 kHz). And then I do the samplerate conversion for the filter generation in a separate step. See again DRC docs.

Uli

hjb
02-10-06, 07:12 AM
Interesting - I'll play around with 48k and see if it makes a difference - I did manage to get this working with the ASIO4ALL drivers which removed the cracking at 44.1k.

Also, if I move to 48k, I presume I would have to convert 48k reponse and filter back to 44.1 which would be another step.

jrpavel
02-14-06, 05:14 PM
Added ability to delay input channels (eg, for cross-talk cancellation applications).
This necessitates a change for existing config files.

ConvolverFilter issues corrected

Fix for perftest when running 0 paritions

Greater safety when settings changed


See https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=393670

jrpavel
03-01-06, 05:40 PM
Added dithering and noise shaping capability (more types of noise shaping to come)

Fixed initialization when no filter set

More optimization

See http://convolver.sf.net and https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=397861

jrpavel
03-06-06, 02:01 AM
Added more noise shaping types

Corrected scaling of 32-bit PCM samples

Some ergonomics tweaks to application of ConvolverFilter settings

jrpavel
03-09-06, 02:05 PM
This is a bug fix/tweak release:

ConvolverWrapper pin negotiation and buffer length fixes
Dropdown list fixes
Dithering and noise shaping fixes
Moved to mingw-compiled libsndfile 1.0.14
wisdom.fftw deposited only in startup directory

BerntR
03-12-06, 11:19 PM
for theatertek it's very simple :
andrew added an option called the audio-postprocessor. You can add there any directshow filter having a merit of do_not_use+1 and that can take in input/output pcm interleaved.
The filter is inserted in the graph after the audio decoder and before the renderer

Can someone explain this for a dummy?

Please

jrpavel
03-13-06, 02:47 AM
It means that ConvolverFilter and ConvolverWrapper can be used to modify (convolve) Theatertek's output.

See convolver.sf.net, www.duffroomcorrection.com and www.theatertek.com for more details, if you have not already done so.

BerntR
03-13-06, 07:25 AM
Well done on the Convolver development!

I know what to use it for, but not quite how to get it installed.

I am testing various players to see if it is possible to assemble a system that can play back all formats exept SA-CD - with a convolution engine in the chain. DVD-Audio seems to be the hardest part to get in place.

So far I've been successfull in following your step-by-step guides for the WMP and the Zoomplayer. But I haven't sorted out how to link the convolver to Theatertek or jrmediacenter.

I've browsed all there is to browse over at theatertek site, and I have identified "audio-postprocessor". But I haven't sorted out how to add Convolver or any other directshow filter. And what does "... having a merit of do_not_use+1..." mean?

jrpavel
03-13-06, 02:16 PM
Convolver works with JRiver Media player via the DX host plug-in (http://accessories.jrmediacenter.com/mediacenter/accessories.php)

TheaterTek should detect ConvolverWrapper/Filter on the basis of their "merit" which is a property of a plug-in invisible to the user.

console is another way of getting convolution into the chain (www.console.jp)

If you were able to provide additional walkthroughs I would be happy to add them to my site.

Mark_A_W
03-13-06, 03:12 PM
Well done on the Convolver development!

I know what to use it for, but not quite how to get it installed.

I am testing various players to see if it is possible to assemble a system that can play back all formats exept SA-CD - with a convolution engine in the chain. DVD-Audio seems to be the hardest part to get in place.


DVD-Audio? Good luck...

I believe the only way to play them on a PC is using Windvd with a SB Audigy soundcard. Is this still the case?

jrpavel
03-13-06, 03:19 PM
This release:

More robust approach to setting changes while convolver is running
Sync ConvolverWrapper variable buffer size changes
Internal changes (eg, use boost numeric casting functions, FastArray tweaks)


See https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=401324

BerntR
03-13-06, 08:21 PM
If you were able to provide additional walkthroughs I would be happy to add them to my site.

So far I've seen the Convolverwrapper in the DSP-window of jrmediacenter. It was just a case of (I think):

1) Download/install DirectX host in the plugin section
2) Play audio material
3) Enter player/options/dsp console

And there it is. But I do not yet know whether it works for video or audio only.

BTW, it also shows up in Console, but it seemed to miss the appropriate graphical representation for being setup inside the console. But this might have been due to user error as well. All I know is that Console is an expensive - and probably good way of routing the digital signal between various in'n outs and plugins. So it seems like a good approach. A solution where the convolution is linked to the output device seems more robust than one where it's linked to the input device/player.

BerntR
03-13-06, 08:37 PM
DVD-Audio? Good luck...

I believe the only way to play them on a PC is using Windvd with a SB Audigy soundcard. Is this still the case?

I don't know. It's hard to find confirmation either way. There's DVD-Audio (that anyone with a PC can produce) and then there's encrypted DVD-Audio. ShinObiwan says that he plays DVD-Audio through Console.

jrpavel
03-14-06, 01:59 AM
So far I've seen the Convolverwrapper in the DSP-window of jrmediacenter. It was just a case of (I think):

1) Download/install DirectX host in the plugin section
2) Play audio material
3) Enter player/options/dsp console

And there it is. But I do not yet know whether it works for video or audio only.


Thanks. Could you confirm? Some screen shots would be a good bonus. It would be good if you could check whether it also works for video.

BTW, it also shows up in Console, but it seemed to miss the appropriate graphical representation for being setup inside the console. But this might have been due to user error as well. All I know is that Console is an expensive - and probably good way of routing the digital signal between various in'n outs and plugins. So it seems like a good approach. A solution where the convolution is linked to the output device seems more robust than one where it's linked to the input device/player.

Thanks. If you double click on the convolverFilter/Wrapper box you will find their property pages...

jrpavel
03-16-06, 05:21 PM
In this release

Small optimizations (5%)
libdnsfile 1.0.15 (RIFX support)
ConvolverWrapper / DScaler5 sync
sample reference time calculation

Download from https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=402192

See http://convolver.sf.net for details

jrpavel
03-20-06, 03:35 PM
Convolution involves an initial lag of half a partition length -- so there is no output until Convolver is fed with half a paritionlengthsworth of input.

Some applications (eg, Audition's plug-in preview) expect a buffer of input to generate a buffer of output and so get confused if there is a lag (although in the case of Audition the filter is applied correctly).

It would be no problem to get Convolver to generate silence until there is some real output (although that initial silence would appear as part of the output when the filter is applied, in the case of Audition).

Would users prefer explicit initial silence, or is the current approach better?

knutinh
03-29-06, 08:36 AM
I don't know. It's hard to find confirmation either way. There's DVD-Audio (that anyone with a PC can produce) and then there's encrypted DVD-Audio. ShinObiwan says that he plays DVD-Audio through Console.
There is a "hack" that lets you rip encrypted DVD-A using an older version of a software player + some utilities. It isnt available anywhere but underground. Search hydrogenaudio forums.

-k

BerntR
04-02-06, 06:38 PM
There is a "hack" that lets you rip encrypted DVD-A using an older version of a software player + some utilities. It isnt available anywhere but underground. Search hydrogenaudio forums.
-k

I know. But I am still interested in sorting out the commercial available ways of playing DVD-Audio, and if it may be done with a convolution engine in the audio graph.

Dohem
04-06-06, 05:15 AM
Some questions; when I play a wav-file or divx-movie with mp3 audio the convolver is activated in windows media player, but not when playing a mpeg2-movie with dolby digital or mp2 audio, why?

How is the delay introduced by the convolver best compensated in wmp10 or zoom player? I know that ac3filter has a audio/video-delay. Is the lag-time shown in the convolver window the right value to use?

/Dohem

jrpavel
04-06-06, 01:56 PM
Dohem, Thanks for your questions.

Convolver signals to WMP that it is capable of processing Audio in PCM and IEEE_FLOAT format (and so not compressed formats). If WMP can find a way of converting to PCM or IEEE_FLOAT using an appropriate codec it will try to do so.

If the compressed format are sent directly to the output, then convolver will not be involved.

Others may be able to suggest workarounds.

On the delay, the lag shown is the theoretical delay introduced by convolution (half a partition length). It would be helpful to have feedback as to whether that is the delay to use in practice.

The current version produces no output during the initial delay period. The next version will revert to producing real silence. Again, it would be helpful to have feedback on the better approach in practice.

Dohem
04-07-06, 08:06 AM
Ok, sounds like some more testing have to bee done!

BerntR
04-07-06, 12:24 PM
jrpavel,

If I may forward another request, it would be a great feature if Convolver could handle different samling rates and formats within the same config file. I have limited experience with convolver, but I have the impression that the config file must be changed if the playback format changes.

So I was thinking of a config file that could handle a class of filters - all with the same sonic signature, but designed to handle differend sampling rates. 44khZ, 48kHz and 96kHz. And each of these could imply a different speaker configuration - two channel for stereo playback, eventually with a "reverb" filter for the back channels and multichannel filters for DVD etc.

Of cource there whould have to be some sampling rate detection on the input, (alternatively this could be tagged to the playback format) selecting the filters that fits the sampling rate and number of channels.

I have no idea what it takes to make this work or if there is a (better) workaround solution around this. So please bare over with me.

Thanks,

jrpavel
04-07-06, 02:18 PM
Ok, sounds like some more testing have to bee done!

Looking forward to receiving your results. :)

jrpavel
04-07-06, 02:21 PM
If I may forward another request, it would be a great feature if Convolver could handle different samling rates and formats within the same config file. I have limited experience with convolver, but I have the impression that the config file must be changed if the playback format changes.


If I have understood correctly, this is already possible by providing a config file that is a list of config files. Look at http://convolver.sourceforge.net/config.html under "Filter List".

BerntR
04-07-06, 04:48 PM
You're way ahead of me.

Thanks,

jrpavel
04-07-06, 05:01 PM
In this release:

Peak gain calculation

More robust updating of settings during playback

Output initial half partition of silence (latency) explicitly for better interoperability with some DirectShow hosts.

3% faster fft (FFTW 3.1.1) Enable AMD K7 optimizations. Performance improvements for Intel EMT64 and large-size transforms with SIMD. SSE/SSE2 code disables itself on older 386 and 486 CPUs

Download from http://sourceforge.net/project/showfiles.php?group_id=139099&release_id=408055

Dohem
04-08-06, 12:56 PM
I tried zoom player pro instead of wmp10, succceeded to activate the convolver in the graph when playing a dvd with dolby digital audio and using the ac3filter decoder. Unfortunately my computer seems too old so the playback was not smooth. It was possible to delay the video 500ms in ac3filter, but when trying 1500ms the program hang.

jrpavel
04-08-06, 03:02 PM
What hardware are you using? Is the setup choppy without ac3filter/convolver?

You may want to try the current version of convolver to see if it makes any difference.

Increasing the number of partitions (try 2 or 4, eg) will reduce the lag.

Cutting the filter to remove trailing zeros will also reduce lag and the convolution load (which should in any case be low).

Let me know how you get on.

jrpavel
04-08-06, 03:04 PM
I haven't followed the progress of DRC for a while.

Did anyone ever figure out a plugin for zoom player? Is that what directshow is?

See http://convolver.sourceforge.net/zoom.html

Mark_A_W
04-08-06, 05:00 PM
I tried zoom player pro instead of wmp10, succceeded to activate the convolver in the graph when playing a dvd with dolby digital audio and using the ac3filter decoder. Unfortunately my computer seems too old so the playback was not smooth. It was possible to delay the video 500ms in ac3filter, but when trying 1500ms the program hang.

You could try the video delay in the Dscaler Mpeg decoder.

Dohem
04-10-06, 02:31 PM
Have decided to wait with room correction on movies until I have upgraded the PC, it is really not up-to-date. The playback is not choppy using a mpeg decoder supporting the graphic card´s hardware mpgeg decoder, otherwise the playback is choppy, so I cant use dscaler at the moment...

jrpavel
04-11-06, 05:35 PM
Estimated gain calculation
ConvolverFilter initialization

See https://sourceforge.net/project/showfiles.php?group_id=139099&release_id=409159

BerntR
04-13-06, 01:15 PM
jrpavel,

Have you made the Convolver work with WMP on DVD video as well as music? I am getting the impression that DSP plugins are bypassed in video mode?

I am using the same setup for convolver and AC3 filter on Zoomplayer and WMP, and only Zoomplayer seems to be able to do the filtering on video playback.

jrpavel
04-13-06, 04:01 PM
Convolver will only process pcm and ieee float audio. Compressed formats such as DD or DTS will need to be decompressed into one of these before they can be processed.

WMP may well pass DD or DTS straight through (to an SPDIF connection and your amp or receiver, eg).

Decompressing it, convolving it and recompressing is probably not worth thr candle.

BerntR
04-13-06, 06:07 PM
Decompressing it, convolving it and recompressing is probably not worth thr candle.

True, and thx for the answere.

I'll gladly settle for decompression and convolution. I see no need for a separate box for digital decompression and decoding.

I am trying to run basically the same graph in Zoomplayer and WMS. AC3 filter ships PCM and Convolver convolvolves it in Zoomplayer. But in WMP, AC3 Filter sends the PCM straight to the sound card. Or so it seems.

The fact that it works in Zoomplayer strongly indicates that this the ability to convolve or not is a feature of the player and not of the involved decoder and convolution engine.

jrpavel
04-16-06, 03:48 AM
But in WMP, AC3 Filter sends the PCM straight to the sound card. ...

The fact that it works in Zoomplayer strongly indicates that this the ability to convolve or not is a feature of the player and not of the involved decoder and convolution engine.

I agree, but am not clear what conclusion you draw from your observation.

BerntR
04-16-06, 07:56 AM
Tentative conclusion: Audio DSP is disabled in WMP when it is playing video material.

Schroinx
04-17-06, 05:23 AM
I don't know if this has already been brought op. Will the DRC filter be able to correct the delay of each channel as well? And also will it be able to adjust the volume for each channel, based on the output?

Rgds
/Schroinx

jrpavel
04-18-06, 05:03 PM
Schroinx, have a look at http://www.duffroomcorrection.com or, more specifically, at http://drc-fir.sourceforge.net for details of how to tune DRC. You might also post your question at http://www.avsforum.com/avs-vb/printthread.php?t=283878&page=19&pp=30

Mooneyass
04-20-06, 11:09 PM
Hey Guys,

I'm trying to get an impulse response but am not having any luck. I've use the Room EQ Wizard but cant find any docs on how to actually output the data in a .wav file for the convolver. So, I then moved to the SImple IR tool and I cant figure how to switch the output from left to right without also switching input channels..... Theres also a lot of pops in the sweep....

Can someone give me explicit super dumbed down instructions on how to record an IR?

Edit: It looks as though I have gotten the room response (L+R) curves from ACXO. Does the plugin handle 2 seperate files or do I have to make a stereo wave file?Thanks,

Wes

Mooneyass
04-20-06, 11:49 PM
Also, I cant the convolverwrapper to load into JRMC (latest) with the directx host. Has anyone got that working?

hjb
04-21-06, 08:38 AM
I was successful with rec_imp and DRC & Convolver :

I am using MCE2005 with WMP10 and Convolver, DRC and rec_imp all latest and greatest releases. My sound card is an M-Audio Transit USB set to bit-perfect passthrough, 44100, 16bit and I am using the ASIO4ALL driver (could not get right levels of latency using the m-audio drivers, which resulted in 'cracking' sounds during the sweep). My microphone is probably a weak link - am using a Radio Shack boundary mic (next stop I will try to correct for the mic).

All of this feeds via S/PDIF into a Marantz 5200 and then to 6.1 B&W (600 series) speakers. I set the Marantz to play 6 channel stereo for my tests (which is independant of this experiment).

The following uses rec_imp to measure 2 channel - a Left then a Right sweep to build left and right files for convolver via DRC.

My batch file looks like this:


Set REC_IMP=c:\Program Files\DRC\Rec_Imp
Set DRC_DIR=C:\Program Files\DRC\DRC
Set CONVOLVER=c:\Program Files\DRC\Convolver
cd %REC_IMP%
rec_imp.exe LeftSpeakerImpulseResponse.pcm 44100 20 21000 20 0:1 0:1
move /y LeftSpeakerImpulseResponse.pcm "%DRC_DIR%"
rec_imp.exe RightSpeakerImpulseResponse.pcm 44100 20 21000 20 1:1 1:1
move /y RightSpeakerImpulseResponse.pcm "%DRC_DIR%"
cd %DRC_DIR%
drc.exe --BCInFile=LeftSpeakerImpulseResponse.pcm --PSPointsFile=bkHB.txt --PSOutFile=LeftSpeaker-rpsERB.pcm erb.drc
move /y LeftSpeaker-rpsERB.pcm "%CONVOLVER%
drc.exe --BCInFile=RightSpeakerImpulseResponse.pcm --PSPointsFile=bkHB.txt --PSOutFile=RightSpeaker-rpsERB.pcm erb.drc
move /y RightSpeaker-rpsERB.pcm "%CONVOLVER%


Get rid of the --PSPointsFile arguments to DRC if you don't want to tweak the points file.

I solved the 'clicking' by increasing the latency by using ASIO4ALL instead of the regular drivers for my card (m-audio transit)

Mooneyass
04-21-06, 03:27 PM
Excellent! Thanks so much, I'll try it tonight. I love the ability to re-measure so easily with and batch file and the Simpe IR Tool.

I'll try increasing my latency too.

Thanks again,

Wes

janderclander14
04-22-06, 08:54 AM
Hi jrpavel,

First of all, congratulations for this awesome application. I've been wating for something like this for years!!

I have a suggestion for future improvement of convolver:

I think that in the current version, convolver does not convert the resolution of audio streams (i.e. if the input stream has 16 bits, the output stream will be 16 bits with independence of the IR resolution). This can cause, in some situations, the lose of some information due to truncation as IR has usually more resolution. I know convolver implements noise shaping functions to minimize the effects of truncating bits but maintain the full information is always desirable.

Nowadays I try to upconvert all stream to 32 bits (the IR resolution) before applying convolver in the decoding stage (through AC3filter) in order to maintain the full resolution at IR processing and output stage but with some audio formats this upconversion is not allways possible.

My suggestion is to add a combo box or something like this to convolver in order to specify which resolution (i.e. 32 bits, but also 16 or 24 for better compatibility) the input stream should be upconverted (by adding zeros in function on input's stream resolution) before applying IR (typically 32 bits) outputing, finally, the audio stream at the specified resolution.

Thanks!

jrpavel
04-23-06, 07:46 AM
Also, I cant the convolverwrapper to load into JRMC (latest) with the directx host. Has anyone got that working?

There have been reports of earlier version of ConvolverFilter / ConvolverWrapper working with J.River Media Center (with the DX host plug-in). In fact since the DX Host also accepts DMOs, I think that even the Convolver DSP plug-in itself will work.

Does Convolver work with Windows Media Plauer on your setup?

Please provide further details of what setup you are using and the diagnostics / symptoms so that we can try to resolve the issue.

jrpavel
04-23-06, 08:08 AM
I think that in the current version, convolver does not convert the resolution of audio streams (i.e. if the input stream has 16 bits, the output stream will be 16 bits with independence of the IR resolution). This can cause, in some situations, the lose of some information due to truncation as IR has usually more resolution.

This will depend on your setup / drivers, I think.

Convolver negotiates with its host (WMP, etc) over the format to be used. Input and output streams negotiations are independent.

The order of preference is 64 and 32-bit float, then 32, 24, 20, 16 and 8-bit integer.

Internal processing is 32-bit float.

What is your setup, please? (soundcard, drivers, etc) Have you tried checking the "24-bit audio" option (see near the bottom of http://convolver.sourceforge.net/usage.html for a screenshot)?

janderclander14
04-24-06, 05:33 AM
Hi jrpavel,

I'm using media player classic to watch dvds and divx mainly. My sound card is a Sound Blaster X-fi.

An example of the directshow chain for audio processing of AC3 (5.1) streams is the following:

AC3Filter (output 6pcms) -> Convolver -> ffdshowAudio -> Reclock -> output

If I set AC3Filter to 16 bits output (as default), then convolver receives 16 bits input and outputs also 16 bits pcms (i checked it through ffdshowAudio filter). However, If i set AC3Filter to 32 bits output (by adding zeros to the original sound file), convolver outputs 32 bits streams. Applying noise shapping has no effect in this case (as expected).

Ffdshow is always configured to output 32 bits streams and to receive all kinds of input streams.

For the case of divx with mp3 (stereo) sound, the chain is the following:

MP3decoder (output 2pcms) -> IntervideoAudioProcessor (DolbyPrologicII upmixing, output 6pcms) -> Convolver -> ffdshowAudio ->Reclock -> output

In this case, as MP3Decoder and IntervideoAudioProcessor always output 16 bits streams, this is what convolver receives and always outputs 6 pcms 16 bits streams (checked in ffdshowAudio). In this case ffdshowAudio filter process the 6pcms 16 bits streams and outputs 32 bits streams, but the added information of convolver has been lost. In this case, noise shaping has effect.

Due to this behaviour, I had assumed that Convolver outputs the same stream format as the input stream.

Hope this helps!

jrpavel
04-24-06, 01:47 PM
That's helpful. Are these chains with Convolver DMO, ConvolverFilter, or ConvolverWrapper?

janderclander14
04-24-06, 02:00 PM
I use ConvolverWrapper as, in my setup, it provides better compatibility with media player classic.

jrpavel
04-24-06, 02:59 PM
I'll have to reflect on why this is happening.

I can certainly get different input and output type (PCM, IEEE Float) with GraphEdit rendering an MP3 file.

When you say better compatibililty, what do you mean? Could you try at least ConvolverFilter, please. Convolver DSP plug-in should also work.

janderclander14
04-25-06, 04:42 AM
Yesterday, I've been performing some tests in order to realize what is happening and I think that I've found something:

First, I tried, as you suggested, ConvolverFilter instead of Wrapper. This causes media player classic to crash or only output static sound at very high volumes. I investigated outputs and inputs between filters and I realized that, as you have mentioned, convolver was outputting 64 bits floating point streams to ffsdhowaudio. I think that reclock cannot handle them and causes the problems (as it peforms resampling operations).

Then, I tried to fix this situation by forcing ConvolverFilter to output only integer streams. In order to do this, I configure ffdshow to only accept 24 bit input streams and it works! This forces convolver to output 24 bits integers to ffdshowaudio that is finally passed to reclock and the soundcard output. However, for some reason, the same setup does not work with 32 bit integers. Even though, I nevermind, as this produces the full directshow chain to work perfectly, outputing the sound at the maximum resolution that the sound card supports.

Returning to ConvolverWrapper the behaviour observed is the same as described previously.

Thank you very much for your interest!