Convolver DSP plug-in for Windows Media Player 10 - AVS Forum
Forum Jump: 
Reply
 
Thread Tools
post #1 of 326 Old 06-17-2005, 05:52 PM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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
jrpavel is offline  
Sponsored Links
Advertisement
 
post #2 of 326 Old 06-17-2005, 06:54 PM
Advanced Member
 
shigaloo's Avatar
 
Join Date: Apr 2004
Posts: 630
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
thanks, will definately check it out
shigaloo is offline  
post #3 of 326 Old 06-18-2005, 04:22 AM
AVS Special Member
 
Prehjan's Avatar
 
Join Date: Dec 2004
Location: Los Angeles
Posts: 2,318
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
i have been thinking about such a capability on my systems

cool

thanks

Martin
Prehjan is offline  
post #4 of 326 Old 06-18-2005, 09:11 AM
Member
 
jfma's Avatar
 
Join Date: Jun 2003
Location: Madrid
Posts: 42
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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
jfma is offline  
post #5 of 326 Old 06-18-2005, 10:11 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jrpavel is offline  
post #6 of 326 Old 06-19-2005, 02:59 AM
Member
 
jfma's Avatar
 
Join Date: Jun 2003
Location: Madrid
Posts: 42
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jfma is offline  
post #7 of 326 Old 06-19-2005, 03:21 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by jfma View Post

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.
jrpavel is offline  
post #8 of 326 Old 06-19-2005, 12:16 PM
Member
 
jfma's Avatar
 
Join Date: Jun 2003
Location: Madrid
Posts: 42
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:


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
jfma is offline  
post #9 of 326 Old 06-19-2005, 12:32 PM
Member
 
BradSwanson's Avatar
 
Join Date: May 2002
Location: Indianapolis, IN
Posts: 149
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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
BradSwanson is offline  
post #10 of 326 Old 06-19-2005, 02:35 PM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by jfma View Post

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.

Quote:
Originally Posted by jfma View Post

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

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

Quote:
Originally Posted by jfma View Post

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.
jrpavel is offline  
post #11 of 326 Old 06-19-2005, 02:55 PM
Advanced Member
 
Herc's Avatar
 
Join Date: Apr 2004
Posts: 677
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 2 Post(s)
Liked: 10
bass management all the way
Herc is offline  
post #12 of 326 Old 06-19-2005, 11:52 PM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by BradSwanson View Post

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.

Quote:
Originally Posted by BradSwanson View Post

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 is offline  
post #13 of 326 Old 06-26-2005, 08:42 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jrpavel is offline  
post #14 of 326 Old 06-27-2005, 12:31 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally Posted by jrpavel View Post

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

My Company - Upsilon Software
Free Projects - DScaler & hcfr fork
JohnAd is offline  
post #15 of 326 Old 06-27-2005, 01:54 AM
AVS Special Member
 
Tukkis's Avatar
 
Join Date: Jan 2004
Location: Brisbane, Australia
Posts: 1,209
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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?
Tukkis is offline  
post #16 of 326 Old 06-27-2005, 02:22 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by JohnAd View Post

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
jrpavel is offline  
post #17 of 326 Old 06-27-2005, 09:11 AM
Senior Member
 
Schroinx's Avatar
 
Join Date: Sep 2002
Location: Denmark
Posts: 225
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
Quote:
Originally Posted by Tukkis View Post

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

Regards
Schroinx
Schroinx is offline  
post #18 of 326 Old 06-27-2005, 09:14 AM
Senior Member
 
Schroinx's Avatar
 
Join Date: Sep 2002
Location: Denmark
Posts: 225
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
Oh, and forgive me for my lack of understanding. How excatly do one generate this wave file? Is special gear/software needed?

/Schroinx

Regards
Schroinx
Schroinx is offline  
post #19 of 326 Old 06-27-2005, 09:17 AM
Senior Member
 
Schroinx's Avatar
 
Join Date: Sep 2002
Location: Denmark
Posts: 225
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
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

Regards
Schroinx
Schroinx is offline  
post #20 of 326 Old 06-27-2005, 11:39 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
So far, convolver is a WMP10 DSP plug-in.

According to the MS documentation:

Quote:
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/wi...Measuring_Tool. You will need to use something like SoX to amalgamate the per-channel PCM files into a single WAV file.
jrpavel is offline  
post #21 of 326 Old 06-27-2005, 12:00 PM
AVS Special Member
 
Mooneyass's Avatar
 
Join Date: May 2001
Location: Calgary, Alberta, Canada
Posts: 1,328
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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

I hate Sony. I love BD. I hate Sony...

My Blog
Mooneyass is offline  
post #22 of 326 Old 07-04-2005, 03:43 PM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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 is offline  
post #23 of 326 Old 07-07-2005, 03:10 PM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jrpavel is offline  
post #24 of 326 Old 07-13-2005, 08:13 AM
Newbie
 
melavi's Avatar
 
Join Date: May 2005
Location: Paris
Posts: 9
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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
melavi is offline  
post #25 of 326 Old 07-13-2005, 11:05 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jrpavel is offline  
post #26 of 326 Old 07-13-2005, 07:45 PM
AVS Special Member
 
Mark_A_W's Avatar
 
Join Date: Dec 2002
Location: Melbourne, Australia
Posts: 8,110
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by jrpavel View Post

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/wi...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/wi...pulse_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.

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

Loving my Electric Bike!!
Mark_A_W is offline  
post #27 of 326 Old 07-14-2005, 06:28 AM
Newbie
 
melavi's Avatar
 
Join Date: May 2005
Location: Paris
Posts: 9
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally Posted by Mark_A_W View Post

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 ?
melavi is offline  
post #28 of 326 Old 07-14-2005, 07:21 AM - Thread Starter
Senior Member
 
jrpavel's Avatar
 
Join Date: Mar 2004
Posts: 297
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
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.
jrpavel is offline  
post #29 of 326 Old 07-14-2005, 08:37 AM
Newbie
 
melavi's Avatar
 
Join Date: May 2005
Location: Paris
Posts: 9
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Sorry, i couldn t post because i have less than 5 messages.
Here is my config on graphedit
melavi is offline  
post #30 of 326 Old 07-14-2005, 08:38 AM
Newbie
 
melavi's Avatar
 
Join Date: May 2005
Location: Paris
Posts: 9
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
melavi is offline  
Reply Home Theater Computers

User Tag List

Thread Tools
Show Printable Version Show Printable Version
Email this Page Email this Page


Forum Jump: 

Posting Rules  
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off