INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 2 3 [4] 5 6 7 8 ... 10   Go Down

Author Topic: Native JRiver 64bit fp convolution engine for Room Correction (FIR filters)?  (Read 295269 times)

skeeterfood

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 779
  • We're all just food for the skeeters.

I just started looking into this, but based on the REW (Room EQ Wizard) forums the following hardware combinations seem to be the "best bang for the buck" I've found.  Any comments?
  • Parts Express EMM-6 Electret Measurement Microphone ~$50, the calibration is now unique for each microphone according to Parts Express.
    Quote
    The calibration files for these microphones are very accurate. Each mic has a linear calibration file consisting of 256 entries (25 per octave) at a resolution of 0.1dB. Each file is tailored to ONE specific microphone, not to a particular day's production run or group of microphones which measure within a certain tolerance.
    If you don't buy that, you can spend more and get a professionally calibrated one starting at $70 from Cross-Spectrum Labs.
  • ART USB Dual Pre ~$50 16-bit 48Khz
    or
  • Tascam US-122MKII ~$100 24-bit 96Khz
  • XLR Cable to go from EMM-6 to ART/Tascam ~$10

-John
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 426

I've used the Art USB Dual Pre and a similar ECM8000 Mic from Behringer. Good entry level set-up.
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

I've used the Art USB Dual Pre and a similar ECM8000 Mic from Behringer. Good entry level set-up.

That exact combination was my entry setup as well. Recommended.
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

I have done some more extenisve testing with the latest 17.0.67 build (Convolution obviously hasn't changed since 17.0.65). I am aware that the following will probably cost me all credibility - especially after Uli's confirmation that since build .65 the convolution engine is working "mathematically correct".

As mentioned before Matt did a great job in supporting standard Convolver config files (especially relevant with multichannel/-way setups). I also do my channel delays there (Audiolense filter are channel delayed automatically - but I would still optimize subwoofer delay manually as this always was a little but relevant optimization in the XO band).

First of all lets stay objectively. I showed a measured frequency response using my calibrated mic with REW RTA. It shows a perfect match BUT the XO band is not the same. Therefor time alignment with ConvolerVST and JRiver Convolution is not the same. This should/must be the same as the same filters and config files are used, and during live measurement only the Convolution is switched. I optimized the subwoofer delay settings based on JRiver Convolution running so this shows a better result in this case (look at screenshots before - open in new browser tab and switch between tabs to easily see the difference). My first idea was that either ConvolverVST or JRiver Convolution doesn't support decimal numbers with delays (it is not specified on the Convolver homepage) and therefor they are internally calculating with different delays although the same config file is used.

BUT I have done pretty extensive listening tests over the last 3 days (so it is not a bad day syndrome). I also asked my wife to provide another - unaffected - point of view. PLACEBO is a very hard call in this case as the difference between those two convolutions is a) rather obvious in switching directly between them and b) I want my brains to like JRiver Convolution better (see the reason I started this thread ;-). What is the difference I believe to be hearing? Well - in typical audiophile terms - ConvolverVST sounds rhythmically "right", full bodied, smooth. The most immediate difference I hear is in the soundstage - ConvolverVST has more depth and more width, more spaciousness in general, the soundfield opens up. JRiver convolution sounds more analytical, "thinner", probably a little more focused but resulting in a "very" flat soundstage. Listening to it for a few moments after using ConvolverVST always gives me the impression that "something isn't right, about the rhythm, it doesn't sound "natural" to me. And yes, this is also based to double blind tests where the difference of the two options were identified in all case but one. Well, how many times have we heard words like that with snake oil, sponsored audio reviews. Well, I get no money for saying it and I know my credibility will be lost - so a lose lose situation for me. Although I decided to not withdraw from this because of the hope that Matt doesn't accept the verdict "mathematically correct and bit-perfect output" and actually LISTENS to the output. My big hope is that Uli "AudioVero" takes his time and makes a listening test against his reference system using the same filters. There is probably nobody that knows how (his) FIR-filters should sound better than him.

The difference for me between listening with ConvolverVST and JRiver Convolution is like using a very decent playback software (eg. JRiver ;-) and a rather poor one (eg. WMP) and switching between them. I am very sure you will find that the vast majority of "poor sounding" media players will still provide "bit perfect" output (given WASAPI or Kernel streaming  pugins). I really don't want to, but for the time being, I will continue to use ConvolverVST exclusively. Note: this is only the second JRiver Convolution revision (built within a single week) and I will continue to benchmark further developments.

IMHO
Logged

soundcheck

  • Guest

@thelion

To eliminate processing related performance/sound degradation (as mentioned by Uli) I'd recommend to prepare and listen to an offline convolved reference audio file.

Just play that one back with all realtime convolver functions turned off to see how it sounds.


Two more important factors to know -- to be able to run a valid comparision -- is to figure out the amount of attenuation and/or dither applied to the stream by each of those convolvers.  
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 426


I also do my channel delays there (Audiolense filter are channel delayed automatically - but I would still optimize subwoofer delay manually as this always was a little but relevant optimization in the XO band).

BUT the XO band is not the same. Therefor time alignment with ConvolerVST and JRiver Convolution is not the same.

Are you saying that you "tweak the delays" in the ConvolverVST config file as described here: http://convolver.sourceforge.net/config.html

<snip>A config file is a plain text file describing a filter by specifying:
<snip>the delays to be applied to each input and output channels (in milliseconds)
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Yes. I found the Audiolense delay settings to be not reliable - it doesn't provide the smoothest XO band. It may have to do that I run multiple subwoofers from one output channel. I change the subwoofer delay in realtime (using the DSP of my subwoofer - ALLDSP) while checking the response with REW RTA. If your sub doesn't have an integrated DSP I recommend that you use the Convolver config file as described. Audiolense delays are a good starting point but double checking may be beneficial.
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 426

Yes. I found the Audiolense delay settings to be not reliable - it doesn't provide the smoothest XO band. It may have to do that I run multiple subwoofers from one output channel.

I use a separate correction for each sub. I do not seem to have your problem.
You could set your final delays into the Audiolense filters instead of the convolver config file by using this menu pick:


Logged

Trumpetguy

  • Citizen of the Universe
  • *****
  • Posts: 974

The test AudioVero performed, does it confirm correct cross-over behaviour (I am not smart enough to get it from his post), or was it a proof that the convolution was correct for a filter without xo?

TheLion: As the two convolvers are both bit perfect but measurably have different XO behaviour, one should think must be difference(s) other than the numerical implementation of the convolution. You claim audible differences. It seems you have a setup with active xo in all channels (no full range speakers). If there is something not right with the way the new convolver handles xo filters, and it all ends up slightly or terribly wrong in the time domain, this should be audible.

To put it a bit differently: Is there a chance the new convolver (build .065 and up) is correct for full range speakers, but that there remains some problem with the xo?
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

The test AudioVero performed, does it confirm correct cross-over behaviour ... or was it a proof that the convolution was correct for a filter without xo?
So far I have understood that there is only one filter for each channel. This way I have checked the output of such a channel for correctness.

For multiway applications a channel will be split into several channels, each one convolved with its XO filter. But such a convolution needs to be configured properly as carried out by the Convolver or Brutefir config files. Is there already such a possibility with MC?

TheLion is running a multichannel application. Again here each channel has its own filter (which may contain a XO function too). The relationship between the channels is just given by delay. There are two ways to carry out a delay: either by a delay implemented in the filter already or by an additional delay parameter in a config file (see Convolver or Brutefir). In the second case the convolution function also need to be followed by a delay line (maybe also delay first, then convolution). I guess that the 2nd case is not yet done with MC.

Finally with mixed channel applications you definitely need a description for the desired configuration.

Summary: I just have checked the correctness of a single channel. If this would be not ok then you can forget all higher sophisticated implementations.
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Uli,

My setup is multichannel and multiway. 7 speakers are high-passed at 80Hz XO, a subwoofer channel is low-passed at 80Hz and summed with the LFE channel (low-passed at 160Hz). All XO are Neville-Thiele 2nd order. For the 7 high-passed channels I use delays measured by Audiolense (filters are from Acourate which doesn't have multichannel measurement atm and therefor cannot set channel delays automatically), for the subwoofer channel I tried using the measured one from Audiolense and found it to be off by ~2-5ms. I apply all delays with the Convolver config file - the subwoofer delay is set directly in the DSP of my subwoofer.

See my post for the exact configuration: http://yabb.jriver.com/interact/index.php?topic=68828.msg464967#msg464967

Using this configuration file with the exact same filters with either ConvolverVST and JRiver Convolution results in different output in the XO band (~60Hz-100Hz). That's the objectively measured difference. Subjectively there is also a slight difference - JRiver convolution sounds a touch more "analytical and flat". Everyone is welcome to switch between those two convolution engines on the fly for themselves - your milage may vary.
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

I wonder about how you apply the Subwoofer-3_48 filter with MC. This means that MC has to collect all channels, filter them, add them and send them to the subwoofer output channel.
Is this already possible with MC? Then I may have missed a point as I only assume a single channel in - single channel out config right now.
What about the CPU load with VST Convolver or with MC convolution?
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Uli,

Matt made sure that his MC Convolution is compatible with Convolver config files - so the XO channel routing is the same. JRiver is working correctly with multiway XOs as confirmed by my RTA measurement (which shows low-passed subwoofer and high-passed Left Front playing together).

I checked the CPU loads and JRiver convolution shows just a touch more demand (1-3% more CPU load in my case) - despite the internal 64bit fp processing. Both convolution engines aren't any significant load for my i7 clocked at 3.8GHz.
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

Ok, I see that I need to test a Convolver config in addition. I'll try this tomorrow.
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207

TheLion,
as a user of acourate , I have been using pristine space for convolution and plogue bidule for routing.
I would be interested to know how the LFE and sub channels are routed, and how you deal with multiple subs.

As I understand it, you have 2 different filters for the LFE channel and the low passed sub channels. These are mixed together. Where do the delays occur in the chain?

Do you have the one filter for the pair of subs? Would it be better to have a filter for each sub?

Finally, can MC's room correction dsp feature be used for the channel delays and routing, then the convolver would just be doing sigle channel convolutions?

Brad
Logged

skeeterfood

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 779
  • We're all just food for the skeeters.

That exact combination was my entry setup as well. Recommended.

So what, if anything, is that setup lacking that caused you to upgrade?  I'm trying to minimize my start-up costs, but if I'm just going to want to upgrade, it might make sense to spend a bit more upfront.

Also, any comments about 16-bit 48Hz (ART) vs 24-bit 96KHz (Tascam)?  Will it make much of a difference in the measurements?

Finally, the system I'll be using this on consists of:

This is all in a DIY 12'x22' home theater.  Obviously none of this is high-end gear, again my focus is always bang-for-the-buck.  Do you think DRC will be worth the cost and effort on a system of this caliber?

Thanks!

-John
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

Ok, I see that I need to test a Convolver config in addition. I'll try this tomorrow.

Actually I try this simple configuration:

Code: [Select]
96000 2 3 0
0 0
0 0 0
C:\AcourateProjects\Test\Highpass96.wav
0
0.0
0.0
C:\AcourateProjects\Test\Highpass96.wav
1
1.0
1.0
C:\AcourateProjects\Test\Lowpass96.wav
0
0.5 1.5
2.0

The idea is to set up a stereo system with a subwoofer. The stereo signal is filtered by a highpass for the main speakers.  The subwoofer channel shall get the sum of left and right channel (with gain 0.5) , filtered by a lowpass.

But running this onfiguration just results in an output for the main channels. The additional sub channel does not play.
The configuration of TheLion is even more complex. So I assume that the playback is not ok because of a wrong interpretation of the config file by MC.
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Uli,

I am not sure why your config file doesn't work - it may be that MC doesn't support your 3 channel output format. Please try a "faux 5.1 or 7.1" setup. You also have to set the channel configuration in the "output format" tab of DSP Studio. See my "stereo with subwoofer" config I use without any issue:

44100 2 8 0
0 0
3.6 3.6 3.9 0 1.1 1.3 0 0.1
C:\EQ\Referenz-3db\Left-3_44.wav
0
0.0
0.0
C:\EQ\Referenz-3db\Right-3_44.wav
0
1.0
1.0
C:\EQ\Referenz-3db\Subwoofer-3_44.wav
0
0.0 1.0
3.0

I double and triple checked if MC Convolution is correctly applying the config file - everything works out fine. With my full 7.1 configuration I get 7 high-passed speaker channels, a low-passed Subwoofer channel and the LFE channel. The configuration file is working great. 
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Hi John,

I upgraded the ART because I bought a Prism Sound Orpheus Firewire interface that comes with integrated mic preamps of reference calibre (8 channel DAC/ADC). 16bit/48khz will be fine for these kind of measurements. The Behringer mic is good value and if professionally calibrated will be everything you need. Differences between calibrated mics are very slight and only show themselves in the ability to measure really high frequencies well - >5khz.

Will it be worth it? I would risk the measurement equipment as these 100 Dollars are generally a very smart investment. You can use it to really set correct levels, analyse the room (eg. find the need for treatments) and confirm "good" speaker and subwoofer placement. And learn a whole lot about your room acoustics with applications like REW. This alone will be worth it. Then take measurements, send them to Uli (AudioVero) together with 2 test tracks of your choosing and hear for yourselve if the difference is worth it for you. Or try the free Audiolense demo. Let me asure you - the difference will be massive and the most recognizable upgrade you will ever buy. It is a true game changer.

I hope this helps.

So what, if anything, is that setup lacking that caused you to upgrade?  I'm trying to minimize my start-up costs, but if I'm just going to want to upgrade, it might make sense to spend a bit more upfront.

Also, any comments about 16-bit 48Hz (ART) vs 24-bit 96KHz (Tascam)?  Will it make much of a difference in the measurements?

Finally, the system I'll be using this on consists of:

This is all in a DIY 12'x22' home theater.  Obviously none of this is high-end gear, again my focus is always bang-for-the-buck.  Do you think DRC will be worth the cost and effort on a system of this caliber?

Thanks!

-John
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

You also have to set the channel configuration in the "output format" tab of DSP Studio.
Thanks, the channel config does the job.
I do not know all the options, MC is quite new for me.

So I'll try tomorrow again to check the convolution result.
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

In a coming build:
Faster: Convolution uses SSE3 in the convolution kernel when supported (gives about an 8% speed-up to the convolution engine on supported processors).
Logged
Matt Ashland, JRiver Media Center

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

In a coming build:
Faster: Convolution uses SSE3 in the convolution kernel when supported (gives about an 8% speed-up to the convolution engine on supported processors).


Thanks Matt. That is always welcome. Any chance we will see an AVX path for even greater performance gains on the latest CPU's as well?
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 426

To TheLion:
How do you find the sound of the new JRiver convolver now?
Any improvement since your last comparison to ConvolverVST?

Listed features below all working? If so I'm ready to give it a try.

All processing is 64bit
Any number of paths, targetting any input or output channel, is supported
Filter files can be in any format supported by Media Center (.wav, .ape, .flac, .mp3, 16bit, 32bit, etc.)
Partitioning is used to avoid latency (equal length partitioning for now, maybe unequal length someday)
Latency is handled automatically so lip-sync for video works without additional user configuration
Filters can be any sample rate (so one high sample rate, high precision filter can be used for all sources)
Handles flushing nicely so the tail of the last song isn't heard when playing a new song
Handles volume attenuation for clip protection automatically
Convolution uses SSE3 in the convolution kernel
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

TheLion,
as a user of acourate , I have been using pristine space for convolution and plogue bidule for routing.
I would be interested to know how the LFE and sub channels are routed, and how you deal with multiple subs.

As I understand it, you have 2 different filters for the LFE channel and the low passed sub channels. These are mixed together. Where do the delays occur in the chain?

Do you have the one filter for the pair of subs? Would it be better to have a filter for each sub?

Finally, can MC's room correction dsp feature be used for the channel delays and routing, then the convolver would just be doing sigle channel convolutions?

Brad


Hi Brad,

You can see my subwoofer routing here: http://yabb.jriver.com/interact/index.php?topic=68828.msg464967#msg464967
I basically use ONE correction for my subwoofer (with an 3db tilted target curve just like all the other channels) but make 2 filters: one with an 80HZ low-pass (for crossover to the high passed speakers) and one with an 160Hz low-pass for LFE duties. These two summed together and routed to my sub output as you can see in the config file.

I apply the delays for all 7 speakers in the config file. For the subwoofer output the delay is set in the DSP of my subwoofer (ALLDSP in both subwoofers). I run both subwoofers off a single output. First step is to optimize the individual delay and level settings for each sub to get the most even output before DRC. Than one correction filter is calculated for both playing together. If individual filters work better depends on your setup. In my case the combined output is without any nulls/evens out my room modes and therefor works best. I use MC Room Correction to set the correct levels for all channels.
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

This morning I have carried out a test described by this configurtion:

Code: [Select]
96000 2 4 0
0 0
0 0 0 0
C:\AcourateProjects\Test\Filter96.wav
0
0.0
0.0
C:\AcourateProjects\Test\Filter96.wav
1
1.0
1.0
C:\AcourateProjects\Test\Filter96.wav
0
0.5
2.0
C:\AcourateProjects\Test\Filter96.wav
1
1.5
2.0
C:\AcourateProjects\Test\Test96.wav
0
0.25 1.25
2.0
C:\AcourateProjects\Test\Test96.wav
1
0.0
3.0

Most important is here the output channel 2. It is the sum of a logsweep left channel convolved with a lowpass and a logsweep right channel convolved with a highpass filter. Both convolutions are attenuated by factor 2. Then in addition the result is summed up with a quarter of the left and right logsweep channel convolved with a 1:1 filter. The result must be identical to the original logsweep. It is. This means again that the result IS BITPERFECT !

Thinking about testing the convolution with delays <> 0 and the setup of TheLion I see a weakness with the configuration syntax definition. The two lines at the top defining the delays for input and output do not allow to correctly adjust the delays in mixed channels configurations. So e.g. assume that a subwoofer gets the input of the front speaker channels but it is not located in the center but beside the right front speaker.  Then the front channel signal part played by the sub needs an individual delay for each channel to fit properly with the main speakers. This is not possible with the given configuration layout.
So IMO it is necessary to introduce two additional lines for delay definition. Something like

Code: [Select]
<filter filename>
<filter channel>
<input channel.weight 0> ... <input channel.weight n>
<input delay 0> ... <input delay n>
<output channel.weight 0> ... <output channel.weight m>
<output delay 0> ... <output delay m>

Example:
Code: [Select]
C:\AcourateProjects\Test\Test96.wav
0
0.25 1.25
1.3 0
2.0
2.58
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

Thanks for the tests Uli.  It's good to get another passing grade :)

We're not currently supporting delays in the convolution configuration file.  It's no problem to add support, but I figured I'd wait to see if any real world users wanted this.  If so, someone please send me a sample that uses delays.  I'm matt at jriver dot com.
Logged
Matt Ashland, JRiver Media Center

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

We're not currently supporting delays in the convolution configuration file.  It's no problem to add support, but I figured I'd wait to see if any real world users wanted this.  If so, someone please send me a sample that uses delays.  I'm matt at jriver dot com.
Matt,

a real world example already has been reported about by TheLion, see http://yabb.jriver.com/interact/index.php?topic=68828.msg465367#msg465367 and the configuration http://yabb.jriver.com/interact/index.php?topic=68828.msg464967#msg464967

Simply assume a 2.1 system with subwoofer located together with the right main speaker and also the listening position a bit more on the left side. No chance to get this correct at the listening place without introducing delays on the input channels.

Of course it is possible to put a delay into a filter. But with an output as convolution result of one filter but multiple inputs (which need to be delayed individually) there is no chance.
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Thanks for the tests Uli.  It's good to get another passing grade :)

We're not currently supporting delays in the convolution configuration file.  It's no problem to add support, but I figured I'd wait to see if any real world users wanted this.  If so, someone please send me a sample that uses delays.  I'm matt at jriver dot com.

Matt,

as Uli mentioned I am using delays in the convolution config file - this is a much more elegant solution than applying it directly with Acourate as manual optimization is quickly possible. I wasn't aware that this line (the third in the config file for output delays) isn't working at all. This definitly explains the measured difference in frequency response between using ConvolverVST and your convolution in the XO band. Also the perceivable difference between those two convolutions that I reported urlier is now explained -  if channel delay is not applied with your convolution but ConvolverVST does apply it my preference for latter is explained.

Could you please add support as specified in the Convolver config file schemata and also give the recommendation of Uli a thought? Please add support for delays in ms with at least one decimal. For the time being I will have to use your Parametric EQ or Room Correction to apply my channel delays.
Logged

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

Please I apologize.  I have to correct my statements about delay. The delay is just necessary to compensate different sound travel distances (it can also be achieved by the Room Correction option (though I do not clearly understand, why the room correction channels do not follow the channel mapping function on the output format option).  There is no need for a delay of input channels. Sorry if I have caused confusion. Anyway I also prefer a high resolution for delay adjustment (btw. Brutefir even allows to adjust subsample delays).


Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

Next build:
NEW: Added support for output delays in Convolution configuration files.

There are still a few unsupported features of Convolver configuration files.  I haven't seen them used, but just let me know if they're important to you:
Input line delays (different than output delays mentioned above)
Multiple output channels in a path (we support multiple input channels to one output channel, but not the other way around)
Output channel weights (this seems ambiguous / unnecessary since multiple paths can target an output channel, and you can set an input weight)

As for extending the configuration format, I would prefer to create a new convolution configuration format, probably using XML.
Logged
Matt Ashland, JRiver Media Center

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Matt,

thank you very much!

Please note the following: We have to define how "output delay" is used. I use it as "inverse-delay". It is a distance setting for me. Let's take the first 3 lines of my configuration as example:

48000 8 8 0
0 0 0 0 0 0 0 0
3.6 3.6 3.9 0 1.1 1.3 0 0.1

The left surround channel (7th channel) shows 0 ms delay. That's means (in my case) it is the ->closest<- to the listening position. My Center channel (3rd channel) is 3.9 ms ->away<-. Ergo the speaker which is farthest away from main listening position.

In this case your convolution engine needs to apply 3.9ms delay for the left surround (#7) and zero delay for the center channel to compensate. That means the higher the delay value in the config file the less delay your convolution needs to apply to the given channel!

I cannot see a usage for input delays.
Multiple output channels in a path are very useful for multiway speakers with digital XOs.

I would very much appreciate an extended configuration format using XML!

Is the feature "Latency is handled automatically so lip-sync for video works without additional user configuration" already implemented? The last time I tried it it wasn't the case.

Thank you very much!

Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

Please note the following: We have to define how "output delay" is used. I use it as "inverse-delay".

That's not my reading of the spec.  Each number is a delay in milliseconds, not an inverse relative to the largest delay.

See the last example here:
http://convolver.sourceforge.net/configegs.html


Quote
Is the feature "Latency is handled automatically so lip-sync for video works without additional user configuration" already implemented? The last time I tried it it wasn't the case.

It works for me, correcting the latency due to convolution itself.  If your filters introduce a delay, you'll have to compensate for that manually.

You might make sure lip-sync is correct with convolution off.  Then test with convolution on.
Logged
Matt Ashland, JRiver Media Center

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Matt,

I have added a screenshot from Audiolense showing the measured sound travel distances of my setup. You see the column "delay" is really the delay=distance of the speaker and NOT the delay that needs to be applied to the channel.

So my recommendation would be NOT to use the third line as "output delay" but as "distance setting in ms". This is in line with every receiver as well as your own MC room correction setting. You always enter the distance of the channel rather than the necessary output delay to compensate.  

Anyway - you just need to specify how the third line in the config file is interpreted by JRiver Convolution - as "necessary compensation delay" or "distance in ms"!?

Thank you!  
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

That's not my reading of the spec.  Each number is a delay in milliseconds, not an inverse relative to the largest delay.

See the last example here:
http://convolver.sourceforge.net/configegs.html


It works for me, correcting the latency due to convolution itself.  If your filters introduce a delay, you'll have to compensate for that manually.

You might make sure lip-sync is correct with convolution off.  Then test with convolution on.

Matt,

you are certainly reading the spec right. I am aware of that. My suggestion is just to make life easier and being consistent with all other uses of channel delay - one always enters the channel distance. But if you say you stick to the "Convolver Spec" the math behind converting the channel delays into output delays is rather trivial ;-)

You just need to specify it the way it makes the most sense for you! My thinking is that when you introduce your own extended configuration file a "distance in ms" delay setting would be much more intuitive to use. And by not supporting all Convolver config features right now you already are "not sticking to the spec" - this way you can make a useful change ;-) IMHO
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

Since we're supporting Convolver configuration files, I think we should do it according to their specification.  My reading of the spec is that the third line should be a line delay in milliseconds, not a distance (inverse) in milliseconds.

If we later make our own spec, I agree that doing the inverse might be better.  Or even using a distance like we do in our Room Correction.
Logged
Matt Ashland, JRiver Media Center

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

Since we're supporting Convolver configuration files, I think we should do it according to their specification.  My reading of the spec is that the third line should be a line delay in milliseconds, not a distance (inverse) in milliseconds.

If we later make our own spec, I agree that doing the inverse might be better.  Or even using a distance like we do in our Room Correction.

Simultaneous post ;-)

So we stick to the spec!
Logged

TheLion

  • MC Beta Team
  • Galactic Citizen
  • *****
  • Posts: 437

btw Matt, how many decimals with the delay setting are supported by your convolution engine? What happens if I enter something like 3.85ms for output delay?
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

btw Matt, how many decimals with the delay setting are supported by your convolution engine? What happens if I enter something like 3.85ms for output delay?

Any number of decimal places is supported.

The limit to precision will be one sample, or 1/[Sample Rate] seconds.

That means higher sample rate filters have a higher delay precision, although it probably doesn't really matter.
Logged
Matt Ashland, JRiver Media Center

AudioVero

  • Junior Woodchuck
  • **
  • Posts: 52

IMHO we have also to think about active speaker systems, we should not forget them. (*)
So if e.g. a stereo signal feeds 3 channels for each side (this is of course also supported by Convolver VST) then it may become difficult just to talk about speaker distances. How do you measure the distance to the acoustic center of a midrange driver compared to a tweeter? By a folding ruler ?  ;D  Indeed we find "distances" or better delays of just one sample. That's why e.g. Brutefir is defining the delays in samples (and subsamples).

The best way is to let the user select the unit, either feet or meter or millisecond or samples. So he chooses what is best to his opinion.

We always have to delay the quicker sound (a tweeter or a closer speaker). So also IMO it is best to treat a delay by its definition and to avoid inverse delays.  :) Simply define the delay for the slowest unit/device/driver as 0 and refer to it with the other units/devices/drivers.

(*) PS: IMO this is also a good example why the strict channel assignment in the room correction option is confusing. At least for me. The active speaker channels have nothing to do with front, lfe, surround channel or back channel.
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207

Regarding delays, some subs and speakers have additional delay due to internal dsp.
Therefore the other speakers need additional delay.
 Hence their delay will no longer be directly related to their distance from the listener and trying to set the delay as a distance would be confusing.
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 426

Since we're supporting Convolver configuration files, I think we should do it according to their specification.

Yes definitely. I do not wish to be debugging configuration files.

When you do change, which will happen some day,  just work out a specification with our suppliers of DRC and XO solutions. They are a great group to have on board and thanks to all of you for providing this functionality.

Convolver features as of build 17.0.68:

Convolver  JRivolver
yesyesSupports Convolver config file format Config Format
noyesAll processing is 64bit
noyesFFT/iFFT evaluation is lazy (only run when necessary)
noyesPink noise RMS output automatically normalized to -6 dB below input
yesyesAny number of paths, targetting any input or output channel
noyesFilter files (impulse response) can be in any format supported by Media Center (.wav, .ape, .flac, .mp3, etc.)
yesyesPartitioning is used to reduce latency
noyesPartition size will automatically adjust with the sample rate
noyesLatency is handled automatically for lip-sync (not including filter delay)
noyesFilter files can be any sample rate (one filter can be used for all sources)
noyesHandles flushing nicely so the tail of the last song isn't heard when playing a new song
yesyesHandles volume attenuation for clip protection automatically (JRiver DSP clip protection used)
noyesConvolution uses SSE3 in the convolution kernel
yesyesOutput delays supported
yesnoInput line delays
yesnoMultiple output channels in a path
yesyesMultiple input channels to a path
yesyesInput channel weights
yesnoOutput channel weights
yes?yesBit perfect (limited testing by Uli Brüggemann)
Logged

Trumpetguy

  • Citizen of the Universe
  • *****
  • Posts: 974

I seem to have some processing issues:

2ch 16/44.1 2 paths in/out: Performance 13.3x real time (using SSE3), smooth playback
7.1 24/96 (also 24/48) 15paths in 8 channel out: Performance 1.0x (using SSE3), terrible glitches and frequent hick-ups. One of three CPUs peaks most of the time, average CPU load 30-70%.

This does not happen with the old ConvolverVST running with 8 partitions. Is my AMD athlon (benchmark ~1350) too weak? Is the new convolver this CPU intensive by design?

Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

I seem to have some processing issues:

2ch 16/44.1 2 paths in/out: Performance 13.3x real time (using SSE3), smooth playback
7.1 24/96 (also 24/48) 15paths in 8 channel out: Performance 1.0x (using SSE3), terrible glitches and frequent hick-ups. One of three CPUs peaks most of the time, average CPU load 30-70%.

This does not happen with the old ConvolverVST running with 8 partitions. Is my AMD athlon (benchmark ~1350) too weak? Is the new convolver this CPU intensive by design?

15 paths on 8 channels at 96 kHz all in 64-bit with an older CPU is probably just past the limit.

Would you mind zipping up your configuration and filter files and mailing them to matt at jriver dot com?  I'm interested to see how it performs on a newer CPU.
Logged
Matt Ashland, JRiver Media Center

Trumpetguy

  • Citizen of the Universe
  • *****
  • Posts: 974

15 paths on 8 channels at 96 kHz all in 64-bit with an older CPU is probably just past the limit.

Would you mind zipping up your configuration and filter files and mailing them to matt at jriver dot com?  I'm interested to see how it performs on a newer CPU.

You got mail.
In a way that is good news - I can justify some new procurements  ;) But with the ConvolverVST my computer was not breaking a sweat, as long as I used 8 or more partitons. Without partitions the computer would hang and eventually crash MC. Could you briefly explain what is more resource demanding now? And does the new way improve audio performance in any way?
Logged

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 67896
  • where the buffalo roam

hulkss,
Thanks for the list.

Jim
Logged

Paulv

  • Recent member
  • *
  • Posts: 6

hello, hum first post here!
with convolver I use 32 bits float mono  PCM correction files, JR does not seem to accept my files
shall I change the extension to raw with no other change?

does JR support "empty" output channels like in convolver:
"Output channels that have no filter path associated with them will be fed with silence"
this is usefull to map channels to the right speaker (active XOver and multiamplification)
(I am sure there are other means to do that but I like having only one config files)

and congratulation for this new feature
Paul
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

with convolver I use 32 bits float mono  PCM correction files, JR does not seem to accept my files
shall I change the extension to raw with no other change?

What do you mean by "raw" files?  What extension?  It needs to be playable by Media Center, so WAV, APE, or FLAC would be good choices.


Quote
does JR support "empty" output channels like in convolver:
"Output channels that have no filter path associated with them will be fed with silence"
this is usefull to map channels to the right speaker (active XOver and multiamplification)
(I am sure there are other means to do that but I like having only one config files)

Output channels that aren't targetted by any paths get passed unchanged.  So if there's silence in, you'd get silence out.  If you had music in, you'd get the same music out.
Logged
Matt Ashland, JRiver Media Center

Paulv

  • Recent member
  • *
  • Posts: 6

extension: .PCM
the kind used by denis sbraggion for room correction
what kind of file and extension should I use for 32 bits mono filters?
(sure I could use 16 bits wav files, but since all my computing of filters is 32 bits...)
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 40758
  • Shoes gone again!

extension: .PCM
the kind used by denis sbraggion for room correction
what kind of file and extension should I use for 32 bits mono filters?
(sure I could use 16 bits wav files, but since all my computing of filters is 32 bits...)


I'm not familiar with .PCM files.  Do they have a header?

A 64-bit or 32-bit WAV (which is PCM data with a header) would work if you can convert.
Logged
Matt Ashland, JRiver Media Center

Paulv

  • Recent member
  • *
  • Posts: 6

I believe .PCM files are headerless, 32 bits raw data, at least in convolver it works
I was not aware that .wav files could be 32 or 64 bits, (and audacity does not export to that format, I think) I will have to investigate
what is this .raw format that JRiver seems to support?
http://wiki.jriver.com/index.php/Audio_Formats
excuse my lack of knowledge
cheers from france
Paul
Logged
Pages: 1 2 3 [4] 5 6 7 8 ... 10   Go Up