Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Convolver: DSP DirectShow filter / WMP plug-in (Read 13973 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Convolver: DSP DirectShow filter / WMP plug-in

Convolver is a DSP plug-in for Windows Media Player 10 available from convolver.sf.net. The install package also contains two DirectX/DirectShow filter versions 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, eg.  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 and scaling 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

Why would you want to do any of 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.

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.

Feedback welcome to jrp [at] dial dot pipex dot com or I will leave this thread open for feedback / supoort.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #1
Convolver, an audio DSP plug-in in for Windows Media Player or any application that accepts DirectShow filters, is available from http://convolver.sourceforge.net.

For example, it can also be used as a DirectShow filter with media players such as Zoom Player Pro and TheaterTek 2.2 that accept DirectShow audio filters. There is a setup walkthrough for ZoomPlayer.

Convolver will take a set of single-channel impulse response files and convolve them with the input stream.

Why would you want to do this? With a suitable impulse response generated by a tool such as DRC you will be able to play sound corrected for your room response. See http://www.duffroomcorrection.com

You will also be able to generate cross-overs, equalizers and other tools that require the source signal to be filtered and redirected to different output channels.

Convolver is a work in progress, but now reasonably mature (early Beta status, so far as the guts go, alpha, so far as the user interface is concerned).

Feedback welcome to jrp [at] dial dot pipex dot com or at the support thread that I have started at http://www.hydrogenaudio.org/forums/index....showtopic=38767

Convolver: DSP DirectShow filter / WMP plug-in

Reply #2
I have trouble installing:
"Module d:\program files\convolver\convolver\convolverWMP.dll failed to register HRESULT -2147221164. Contact your support personnel."

edit: I'm on Win2k. WMP 10 is not installed.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #3
Quote
I have trouble installing:
"Module d:\program files\convolver\convolver\convolverWMP.dll failed to register HRESULT -2147221164. Contact your support personnel."

edit: I'm on Win2k. WMP 10 is not installed.
[a href="index.php?act=findpost&pid=342009"][{POST_SNAPBACK}][/a]


Gecko, Thanks for trying.

Convolver is built as a plug-in for WMP10 and I have not tried it with earlier versions, or with Win2k.

Is the "d:", as opposed to "c:" significant?

I think that that that error number means "class not registered", although it is not clear whether refers to the plug-in itself, or to a class that it expects to find, such as the WMP10.

I'll have a further look later, but in the meantime, can you please tell me whether

regsvr32 "d:\program files\convolver\convolver\convolverWMP.dll"

from the command prompt produces the same result?

A couple of further thoughts:

- Do you have DirectX 9c installed?
- Long shot: you might try deleting version.dll, comdlg32.dll and msdmo.dll from the convolver directory (one at a time) and trying the regsvr32 command above after each removal

Thanks

Convolver: DSP DirectShow filter / WMP plug-in

Reply #4
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 I just snuck in 2.10, which contains only optimizations (for 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 bug fixes, is some slightly more intrusive optimization for a potentially bigger step up in performance (which is already not bad: 6-channel 65536-tap 48kHz convolution happens at 5 times real time on a 3GHz P4, or 2GHz Pentium M; similarly 4-channel 65536-tap 44.1kHz convolution runs takes about 18% of a 2.2GHz P4 cpu).  In real life, your filters would be a quarter of that length and the performance would rise much more than proportionatly.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #5
so this is like the convolver for foobar2000.. which can be used with those HRTF sets to make stereo in a room sound out of a stereo signal.

It was then combined with a lot of effort to make a demo 5.1 spatialise correctly.. is this something your plugin could do with zoomplayer and a dvd audio stream? this would be interesting if it out performed dolby headphone, and would certainly have a lot of people interested

Convolver: DSP DirectShow filter / WMP plug-in

Reply #6
It is certainly in the same line of country.

Yes, you can take a dolby digital signal, convert it to PCM using ac3filter or ffdshow or whatever, and pass the resulting 6 or 8 channels through ConvolverWrapper and convolve them with whatever filters you have specified.  (The walkthrough shows you how to insert ConvolverWrapper into a ZoomPlayer graph.)

You can then perform convolution on the 6 or 8 input channels and mix (scale and sum) the resulting 6 or 8 outputs into the output channels that you specify (which could be just 2).

Is that what you mean?

If you give me some further pointers to what you want to achieve, I will gladly have a look.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #7
I think I've misunderstood a few things when I followed the links.

The DirectX filter is (just) a convolver? The whole room correction thing is only an application which in foobar I would be better off using the built in convolver?

I tried the regsvr32 command line which returned an error 0x8something (I can find out the complete number if it would help you).

Convolver: DSP DirectShow filter / WMP plug-in

Reply #8
that sounds about right.

you simply want to impersonate a 5.1 cinema setup with the convolver, preferably done as easily as possible.. i think the convolver stuff done before to do 5.1 had to do 2 passes front and rear, and the combine.. not sure about the .1 part..

if this is easy to setup i'd love to have a go and see how it compares to dolby headphones good but not perfect attempt.

The other question is how much CPU it uses as well i guess, lower the better, within reason. i'd be happy to scale down my ffdshow resizing/sharpening if the quality was markedly improved.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #9
Still not sure I understand exactly what you want to do, but you are welcome to play. If you trying to get stereo from 5.1, adding some reverb on the way, then yes it's easy.

Looking at
http://www.hydrogenaudio.org/forums/index....showtopic=27418 if what you want to achieve is stereo to stereo
Code: [Select]
p0 = convolve(s0,r0) + convolve(s1,r1)
p1 = convolve(s0,r1) + convolve(s1,r0)

where the s are the input channels, p are the output channels and r are the impulse channels, then you need a config file like

Code: [Select]
44100 2 2 0
dolby_headphone_live_ch0.wav
0.0
0.0
dolby_headphone_live_ch1.wav
1.0
0.0
dolby_headphone_live_ch0.wav
1.0
1.0
dolby_headphone_live_ch1.wav
0.0
1.0


(Note that you will need to split the stereo wav file provided at the link above into two single-channel files.  In real life, I expect that you will want to have four different filters.)

The following is the same config file with some annotations (which you should not include in the file that you use)
Code: [Select]
44100 2 2 0      // 44.1kHz filters, 2 channels (0 and 1) in and out
dolby_headphone_live_ch0.wav    // left impulse (r0)
0.0    // convolve(s0,r0)
0.0    // addconvolve(s0,r0) to p0
dolby_headphone_live_ch1.wav    // right impulse (r1)
1.0    // convolve (s1,r1)
0.0    // add convolve (s1,r1) to p0
dolby_headphone_live_ch0.wav    // r0
1.0    // convolve(s1,r0)
1.0    // add convolve(s0,r1) to p1
dolby_headphone_live_ch1.wav    // r1
0.0    // convolve(s0,r1)
1.0    // add convolve(s0,r1) to p1
// blank line



On CPU usage, 6x65536 taps at 48kHz should take less than 20% cpu on a 3GHz P4. I will get that down a bit, but that is already not bad, as you will probably use 16k rather than 64k tap impulses.

With this particular example, because the filter length is a 6681, which does not factorise to powers of 2, 3, 5, etc, you will get better performance by setting the number of partitions to 11 (which will also reduce latency).  The filters will be processed at 10 times real time speed.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #10
I have not really played much with foobar so wouldn't like to comment, but yes, if you are using it, it has a built-in convolver.  This Convolver plug-in is for Windows Media Player and applications such as ZoomPlayer Pro that use DirectShow filters.

Do you still get the same error with 2.10?

Convolver: DSP DirectShow filter / WMP plug-in

Reply #11
thanks for the info.

I really just want to create almost binaural effect of a 5.1 movie. preferrably without  any preprocessing of the files at all.

Insert a dvd, press play, the movie plays you hear all 5 speakers around your head almost as if you had actual speakers in the typical position.

It's more than reverb, but i know for stereo the convolver stuff i've tried before is pretty good at giving the impression of a sound in space.. whether its as effective as Dolby headphone is the question.. hopefully there is plenty of scope for it to be better

Convolver: DSP DirectShow filter / WMP plug-in

Reply #12
OK. The long and the short of it is that Convolver convolves (natch) and cross-feeds. Hopefully you can take it from there.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #13
Quote
Do you still get the same error with 2.10?

Yes, the error persists.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #14
Gecko, this is a plug-in for WMP10 (and probably 9). At a risk of stating the obvious, if you don't have WMP it won't be of much use to you although, despite the message, it should have registered itself as a DirectShow filter, in which case you will be able to use it with ZoomPlayer Pro, etc.

What are you trying to achieve?

Convolver: DSP DirectShow filter / WMP plug-in

Reply #15
Quote
Gecko, this is a plug-in for WMP10 (and probably 9). At a risk of stating the obvious, if you don't have WMP it won't be of much use to you although, despite the message, it should have registered itself as a DirectShow filter, in which case you will be able to use it with ZoomPlayer Pro, etc.

What are you trying to achieve?
[a href="index.php?act=findpost&pid=342546"][{POST_SNAPBACK}][/a]

I was thinking of using it together with Media Player Classic and inside of DirectX filter aware applications such as Cool Edit, but unfortunately it doesn't show up. It is listed in ACID but fails to load (missing component).

Basically all I wanted was a convolver.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #16
Thanks for your feedback.

I suspect that Media Player Classic does not have the necessary interfaces to support this plug-in.  Happy to be proved wrong, but your experience does not sound promising.

It is not clear what DirectX interfaces Cool Edit / Audition requires. I will research this further and get it put on the todo list.  It should be possible, but it does not seem to be recognised at all at the moment, as you say.

Similarly for ACID.  It may be that the dlls that I used to supply (2.8 and earlier) alongside Convolver are XP-specific or you don't have DirectX 9 on your machine or that ACID expects a particular interface to be implemented that is not required for a DMO (which is what is currently implemented).

I'm afraid that I don't have a Win2k machine any longer, so cannot do any further diagnosis.  Any details that you can supply gratefully received.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #17
2.11, just released, fixes a couple of bugs that caused crashes in calculation of optimum attenuation and ConvolverWrapper access to property page.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #18
Quote
I really just want to create almost binaural effect of a 5.1 movie. preferrably without  any preprocessing of the files at all.


The following filter config file should do what you want (convert from 5.1 to stereo), if I have understood correctly. You will need the files from http://www.hydrogenaudio.org/forums/index....showtopic=27418.  (The flac impulse files provided there are stereo.  They need to be split into left and right channel .wav files.)

Code: [Select]
48000 6 2 0
dolby-headphone-ref-48k-LEFT-left.wav
0.5
0.2
dolby-headphone-ref-48k-LEFT-right.wav
0.5
1.2
dolby-headphone-ref-48k-RIGHT-left.wav
1.5
0.2
dolby-headphone-ref-48k-RIGHT-right.wav
1.5
1.2
dolby-headphone-ref-48k-CENTER-left.wav
2.5
0.2
dolby-headphone-ref-48k-CENTER-right.wav
2.5
1.2
dolby-headphone-ref-48k-CENTER-left.wav
3.5
0.2
dolby-headphone-ref-48k-CENTER-right.wav
3.5
1.2
dolby-headphone-ref-48k-SURROUND-LEFT-left.wav
4.5
0.2
dolby-headphone-ref-48k-SURROUND-LEFT-right.wav
4.5
1.2
dolby-headphone-ref-48k-SURROUND-RIGHT-left.wav
5.5
0.2
dolby-headphone-ref-48k-SURROUND-RIGHT-right.wav
5.5
1.2


As a test, I have tried this with the  6-channel wav sample from http://www.iis.fraunhofer.de/amm/download/...wnloadpage.html Unfortunately that is a 44.1kHz file, so you need to convert it to 48kHz to work with the the filters supplied in the thread mentioned above, but you get a recognisable noise when playing back with WMP10.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #19
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.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #20
and 2.13 ...

Automatic zero padding of filter lengths for optimal FFTW performance

The distribution package registers ConvolverFilter   

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 

Convolver: DSP DirectShow filter / WMP plug-in

Reply #21
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.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #22
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.

For example, the binaural effect of a 5.1 movie can now be done with a config file like:
Code: [Select]
48000 6 2 0
dolby-headphone-ref-48k-LEFT.wav
0
0.5
0.2
dolby-headphone-ref-48k-LEFT.wav
1
0.5
1.2
dolby-headphone-ref-48k-RIGHT.wav
0
1.5
0.2
dolby-headphone-ref-48k-RIGHT.wav
1
1.5
1.2
dolby-headphone-ref-48k-CENTER.wav
0
2.5
0.2
dolby-headphone-ref-48k-CENTER.wav
1
2.5
1.2
dolby-headphone-ref-48k-CENTER.wav
0
3.5
0.2
dolby-headphone-ref-48k-CENTER.wav
1
3.5
1.2
dolby-headphone-ref-48k-SURROUND-LEFT.wav
0
4.5
0.2
dolby-headphone-ref-48k-SURROUND-LEFT.wav
1
4.5
1.2
dolby-headphone-ref-48k-SURROUND-RIGHT.wav
0
5.5
0.2
dolby-headphone-ref-48k-SURROUND-RIGHT.wav
1
5.5
1.2


(ie. you don't need to split the stereo impluse response files.)

2.15 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.

Convolver: DSP DirectShow filter / WMP plug-in

Reply #23
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.

For those of you interested in generating impulse response files for room correction, a simple impulse-recording utility can be found at http://www.duffroomcorrection.com/wiki/Sim..._Measuring_Tool

Convolver: DSP DirectShow filter / WMP plug-in

Reply #24
<Wrong place to post, will repost elsewhere later>