INTERACT FORUM

Please login or register.

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

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

bobkatz

  • World Citizen
  • ***
  • Posts: 213

I have some good news:

1) Got automatic filter switching with sample rate working! It seems to be a matter of too long a cfg file name or some forbidden characters in the file name breaking it. I'll let you know as I further debug.

2) Got the 24-bit dither working (thanks Mojave!) with Voxengo Elephant. Use the 32-bit VST version! (it accepts 64 bit data and computes 64 bit anyway). I don't even know if my measurement gear can determine if there is a measurable (let alone audible) difference between 64 bit calculation all the way or truncation to 32-bit float at some point in the process. It's pretty low down, after all  :-).

Sound is fabulous. Still learning how to optimize Audiolense for the best sound.

Things are looking up! Now if only I could get ASIO line in working. In this or another thread someone posted how to do loopback, but that is a separate thing from line in. Can someone please outline that procedure?  JRiver warns that a separate interface may be necessary. I may see if I can at least do proof of concept with that before I start nagging Matt   ;D ;D
Logged

hulkss

  • Galactic Citizen
  • ****
  • Posts: 446

In this or another thread someone posted how to do loopback, but that is a separate thing from line in. Can someone please outline that procedure?  

Hi Bob
Mojave with the answer again.
http://yabb.jriver.com/interact/index.php?topic=70242.msg486195#msg486195

Brad
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207

Bob

I have been using the VST Host Plogue Bidule with success for a while (www.plogue.com).

One advantage of this is that it has a VST version, so you can use a VST Host inside JRiver. I presently use this with the convolver inside it (it is clearer how the channel routing and filters are applied).
You could also use this approach to get inputs into JRiver, without needing any loopback (with the correct mixer routing).
Make sure you select 16 or 32 channels in the output format though

Have you come across acourate? It does a similar job as audiolense. The few people that I have read that have tried both have preferred acourate. It generates linear phase filters and has a good algorithm that minimises pre ringing. You can give the filters a try by emailing a recorded impulse to the author of the software. One disadvatage is that it's more work to generate filters than audiolense, and is not as surround friendly.

 It would be interesting to hear your thoughts on whether the acourate generated filters have the same problems in the high freq region that you reported with a full correction with audiolense

Brad
Logged

TheLion

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

Bob,

when you are looking for the best possible way to use convolution together with line in "live" playback I strongly recommend using AcourateConvolver. It's sole purpose is to give you this capability - and it does it very well (including less delay).

Via AcourateASIO (a module of it) it can also be tightly integrated with JRiver - it serves as "virtual ASIO soundcard". Therefor you simply select AcourateASIO as "soundcard" for output in JRiver. AcourateConvolver takes this stream, does convolution in 64bit fp, digital volume (perceived loudness ISO 226) and flexible channel routing.

I have been using Audiolense for 2 years now, and Acourate for 18 months. You should definitely give both of them a try - depending on your room and setup there are significant differences in achievable sound quality.

Best
Walter
Logged

bobkatz

  • World Citizen
  • ***
  • Posts: 213

Thanks to you and Brad. Yes, I am already in the process of checking out Acourate. The convolver and the ASIO link see like my perfect solution to getting live line in with automatic sample rate switching, or playback from JRiver, and 24-bit dither (according to Uli he can implement that at the tail of his chain in Acourate convolver) all in the same application and integrated environment. The only weaknesses I have learned so far is Acourate is not so strong in the Surround domain, but I can wait till he gets that act together.

For that matter I have to figure how to get PCM audio in multichannel out of DVDs and Blu Rays encoded in DTS and Dolby Digital in JRiver... sounds like it's supposed to work (and what a marvelous thing that would be!). If it does work, I'll sell my Marantz A/V preamp with HDMI input and  multichannel balanced XLR outputs because I won't need it anymore! But the Marantz can read and decode cleanly SACDs, DVD-A, Blu-Ray, DVD through its HDMI input from my Sony Blu-Ray player and that's an amazing achievement in itself---but it's limited to analog output due to the copy-protection issues and so I eagerly await seeing JRiver talk to Acourate at 64-bit float over ASIO in a fully integrated environment! We are living in interesting times.

By the way, I got JRiver's sample rate switching to switch the convolver filters as well. It was simply a matter of getting the file names to EXACTLY conform with the specifications. And I thank (I think) Brad for turning me on to that format. The help here on the forum has been terrific. I'm shivering with excitement. In the meantime I have an automatic sample-rate switched playback from JRiver for file playback through the Convolver, dithered to 24 bits going. And it sounds sweet, beautiful and terrific, best my system has ever sounded. And that's saying a lot, believe me.

And for line input, I kludged together VST Host (a great program) and Convolver (source forge) VST. It doesn't automatically switch, but I can live with it for a few weeks until I get Acourate together.

Take care everyone, I'll fill you in as we progress. I couldn't have done it without you! BTW, we need to move this whole thread over to MC 18, eh? Maybe the forum administrators can move it.


Bob,

when you are looking for the best possible way to use convolution together with line in "live" playback I strongly recommend using AcourateConvolver. It's sole purpose is to give you this capability - and it does it very well (including less delay).

Via AcourateASIO (a module of it) it can also be tightly integrated with JRiver - it serves as "virtual ASIO soundcard". Therefor you simply select AcourateASIO as "soundcard" for output in JRiver. AcourateConvolver takes this stream, does convolution in 64bit fp, digital volume (perceived loudness ISO 226) and flexible channel routing.

I have been using Audiolense for 2 years now, and Acourate for 18 months. You should definitely give both of them a try - depending on your room and setup there are significant differences in achievable sound quality.

Best
Walter
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207

Bob

I read your thread over at the audiolense forum with interest.

You describe a problem with different attenuation at different sample rates. This may not be the solution, but I had a problem (using acourate) where I couldn't get correct amplitudes when measuring subs and mains separately. Uli said that the problem was that he has been unable to find a correct scaling algorithm for logsweep recordings for different freq ranges.

Hence the solution was to record the subs and mains with full range sweeps. So your problem may be that you record the different sampling rates over different freq ranges (20-24k and 20-44k).

Brad
Logged

TheLion

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

Thanks to you and Brad. Yes, I am already in the process of checking out Acourate. The convolver and the ASIO link see like my perfect solution to getting live line in with automatic sample rate switching, or playback from JRiver, and 24-bit dither (according to Uli he can implement that at the tail of his chain in Acourate convolver) all in the same application and integrated environment. The only weaknesses I have learned so far is Acourate is not so strong in the Surround domain, but I can wait till he gets that act together.

For that matter I have to figure how to get PCM audio in multichannel out of DVDs and Blu Rays encoded in DTS and Dolby Digital in JRiver... sounds like it's supposed to work (and what a marvelous thing that would be!). If it does work, I'll sell my Marantz A/V preamp with HDMI input and  multichannel balanced XLR outputs because I won't need it anymore! But the Marantz can read and decode cleanly SACDs, DVD-A, Blu-Ray, DVD through its HDMI input from my Sony Blu-Ray player and that's an amazing achievement in itself---but it's limited to analog output due to the copy-protection issues and so I eagerly await seeing JRiver talk to Acourate at 64-bit float over ASIO in a fully integrated environment! We are living in interesting times.

By the way, I got JRiver's sample rate switching to switch the convolver filters as well. It was simply a matter of getting the file names to EXACTLY conform with the specifications. And I thank (I think) Brad for turning me on to that format. The help here on the forum has been terrific. I'm shivering with excitement. In the meantime I have an automatic sample-rate switched playback from JRiver for file playback through the Convolver, dithered to 24 bits going. And it sounds sweet, beautiful and terrific, best my system has ever sounded. And that's saying a lot, believe me.

And for line input, I kludged together VST Host (a great program) and Convolver (source forge) VST. It doesn't automatically switch, but I can live with it for a few weeks until I get Acourate together.

Take care everyone, I'll fill you in as we progress. I couldn't have done it without you! BTW, we need to move this whole thread over to MC 18, eh? Maybe the forum administrators can move it.



Bob,

for decoding all possible multichannel formats (including lossless TrueHD and DTS-HD MA) the LAV filter suite is used automatically in JRiver (when using Red October). Make sure to use the "dtsdecoder.dll" trick to get DTS-HD MA decoding.

Audiolense is much more comfortable for channel setup, measurement and routing. With Acourate it is alot of manual work. But I did run a 12 channel active system (7.1 with 3-way fronts with digital XO) with it - so everything is possible.
Logged

bobkatz

  • World Citizen
  • ***
  • Posts: 213

Thanks Brad. I think the slightly different attenuation in Audiolense comes from my using slightly different targets at different rates to extend the frequency response of the target into the supersonic as the sample rate increases. Even though I'm careful to follow the rolloff of the loudspeakers, a little change creeps in and Audiolense thinks there is some danger of clipping and increases the attenuation. That's my theory. There are some mysteries as to how Audiolense chooses its amount of attenuation, and anyway, Bernt has posted on the Audiolense group that he's willing to add a feature where the user can choose the attenuation manually, provided that he knows it can increase the danger of clipping, of course.

Best wishes,


Bob

Bob

I read your thread over at the audiolense forum with interest.

You describe a problem with different attenuation at different sample rates. This may not be the solution, but I had a problem (using acourate) where I couldn't get correct amplitudes when measuring subs and mains separately. Uli said that the problem was that he has been unable to find a correct scaling algorithm for logsweep recordings for different freq ranges.

Hence the solution was to record the subs and mains with full range sweeps. So your problem may be that you record the different sampling rates over different freq ranges (20-24k and 20-44k).

Brad
Logged

BradC

  • World Citizen
  • ***
  • Posts: 207
Re: Native JRiver 64bit fp convolution engine for Room Correction (FIR filters)?
« Reply #458 on: February 02, 2013, 08:12:56 pm »

Bob,

would you mind posting here, or over at the acourate yahoo forum, your experiences and results with acourate.

I would be interested in what parameters gave you your preferred results

Thanks

Brad
Logged

bobkatz

  • World Citizen
  • ***
  • Posts: 213
Re: Native JRiver 64bit fp convolution engine for Room Correction (FIR filters)?
« Reply #459 on: February 02, 2013, 09:57:27 pm »

Dear Brad: I'll be happy to, once I learn how to use it! Uli gave me a headstart at my request. Basically, I really wanted to get AcourateConvolver working for me so I could do live input with automatic sample rate  sensing. I sent him my measurements from Audiolense and Uli went beyondthe call of duty and found a way to bring them into Acourate. I gave him the exact shape of my desired target and he converted them to Acourate and sent me the Acourate config files. I'm now up and running and a VERY happy camper with the beauty of tone of AcourateConvolver with both JRiver and with Line in.

It's 64-bit communication between JRiver and AcourateConvolver and 24-bit dithered in Convolver so it's as good as it's gonna get and that sounds very good, too. I have some tiny sporadic pops at 176.4 kHz that I have not been able to clear up, so I downsample those in JRiver until I can figure that one out (yes, I've tried every permutation of JRiver buffer size, ASIO buffer size and other options in JRiver/AcourateConvolver/ASIO driver to no avail. My PC is minimalistically configured, Windows doesn't know about any of the soundcards (disabled in properties) and still no go at 176.4 kHz.

Now I have to learn Acourate so I can tweak the targets a bit if I want and make changes and get a Surround config, but I expect a long learning curve  :-(.

I'll report more when I get there.

Best wishes,


Bob


Bob,

would you mind posting here, or over at the acourate yahoo forum, your experiences and results with acourate.

I would be interested in what parameters gave you your preferred results

Thanks

Brad
Logged

Rockefoten

  • Recent member
  • *
  • Posts: 8
Re: Native JRiver 64bit fp convolution engine for Room Correction (FIR filters)?
« Reply #460 on: February 13, 2013, 02:00:36 pm »

Hi. New to the forum, hello everyone..

Have a dsd question

Will the convolver handle dsd bitrates? Or is 192k the highest it can do?

Will dsd over dop be convolved with only filters up to 192k via some kind of upsampling?

And of so will my 2.6 core duo Mac mini handle it? If not is a file with less taps the way to go?
Logged

HiFiTubes

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

Hi. New to the forum, hello everyone..

Have a dsd question

Will the convolver handle dsd bitrates? Or is 192k the highest it can do?

Will dsd over dop be convolved with only filters up to 192k via some kind of upsampling?

And of so will my 2.6 core duo Mac mini handle it? If not is a file with less taps the way to go?

Following this one for a while, and this weekend I'm finishing up my room treatments, but did already purchase an Audiolense license.

I seem to have the problem Mr. Katz did upthread where the .cfg file I make doesn't work for multiple-samnple rates. I created one named test.cfg as well, and no go.

Also, I only see 96kHz max? From reading it seems like the cap is 192kHz  ?

I am using the MPR1 kit and really need to re-shoot the room once complete, but trying to wrap my head around Targets and the like. Would love to see DSD someday for Audiolense as well (read the signalyst has it working on i5 with CPU at 30%).

cheers
Logged

MartinG

  • Junior Woodchuck
  • **
  • Posts: 58

Hi everybody.
After some time of PC abstinence I am back to an newly configured Win8 HTPC with JRiver 18 installed. :)
I now encountered that using the automatic switching capability for FIR filters has a different (worse) quality to a manually selected WAV Filter. Has anybody made the same experience and if YES, how did he solve the "problem". I really would like JRiver to do the automatic filter selection as it is much more comfortable with my mixed music database of different sample rates.
I already tried to switch off the the checkbox for "normalising"  to see if this influences... without getting the wanted positive result.
Thanks

Martin
Logged

LeChacal619

  • Member
  • *
  • Posts: 1

Well I don't know if someone already explained about FIR filtering and convolution but I have some things to point out :

1- FIR filtering implies latency. You can't get 0 latency, whatever people says, because filtering is causal and 0 latency would mean able to predict the future (I'm not sure you can predict the future but if you can do it please tell me !). For those that thinks it's okay to use huge filters length (65k for exemple) and using partitioning to reduce latency (which effectively works but reduce your effective filter length) just try this : make a low pass filter of let's 50hz with high slope (48dB/octave for exemple), 2048 coefficients, then apply a simple blackmann-nuttall windowing for exemple. Then make another low pass filter of same fc and same slope but with 8x more coefficients : 8x2048. Then measure the resulting impulse of a loopback measurement applying the 2048taps low pass filter, and compare with the 8x2048=16384taps low pass filter. Now make another measurement with the 16384taps with a convolution by partitioning 8x (which equals in fact to a 2048 taps filter) and compare the response of the resulting impulse. Your 16384 taps partitioned 8x have same/lower behavior then your 2048taps filter without partitioning. You can conclude what you want from that.

2- Now you know it's useless to use huge filters with huge partitioning trick instead of using low length filters unpartitioned, you can reduce a lot your processing needs ;)

3- FFT convolution is equals to time convolution, yes but only for convolution. I mean, if you have two signals a and b in time domain, and denote A and B they corresponding response in frequency domain, then theoritically convolution(a, b) is equal to A*B BUT some conditions :

- convolution(a,b) results in a signal of size R where R = size of a + size of b - 1 (it's convolution definition !), A and B are of size of a and b respectively, so you can't do A*B, then apply an inverse transform to get the signal back.... You have to scale the size of the FFT vectors so that A and B are of size of R before applying ifft(A,B).

The inverse convolution in FFT is much more difficult to handle : in time domain inverse convolution can't be done in a general case (at least for me it's not possible because when you do : a convolve b = c, you makes multiplication with 0 or some really low values, and the only way to get the original signal a from c by doing inverse convolution b is to find how X * 0 = 0 : you can't find the original value of X, because 0 / 0 is undefined....

In frequency domain you can calculate the original signal by doing A/B, but it's difficult because in FFT domain the signal is supposed to be periodic (which is not sometimes), so the resulting solution needs to be trunc and have some time shifts (to do a good inverse I have used this GNU Octave simple code but you have to specify the resulting length you wants and the time alignment is done tracking peak absolute values in time domain of the 2 input signals : https://www.dropbox.com/s/rnpwplkps763gn1/fftdiv.m?dl=0 with this file also for tracking peak signal value : https://www.dropbox.com/s/53l16vbdo5fy7hj/max_absolute_peak.m?dl=0).

I have tried to correct my system by doing some simple things, and I obtain a theoritically perfect correction on the paper (tested by time convolution with system impulse measure and correction fitler generated, and with real measurement applying correction filter on my system). The resulting impulse is NOT ok in reality, because the holes in frequency domain are hugely compensated, which results in an endless oscillation in the correction filter at theses frequencies, and in the real measurement the frequency response amplitude AND phase IS ok but not the waterfall/spectrogram, which shows huge resonance at some frequencies, and these effects are clearly audible (it's TOTALLY wrong) : this is because the system is not completely linear, at least is what I concluded (because the holes in frequency amplitudes have corresponding high THD and so when you try to compensate this you increase in fact the distorsion of the system !).

The only way I found to avoid theses problems is to trunc the correction filter in time domain by applying windowing to remove these resonances but doing so the resulting frequency response is not good...
Using DRC always give me audible artefacts in transient responses too.
Correction seems to works better in near field but it's still so wrong.

Last point, when someone asks why their filter needs so much attenuation, the simple explanation is that generally a correction filter implies gains and losses in frequency domain. If your input signal is 0dBFS all the way from 0hz to you FS, then if you want's your resulting signal after convolution avoid clipping you have to limit the level of your filter to 0dBFS for the max peak in frequency domain (increase the length of your filter by applying 0 to increase FFT resolution, for exemple if you have a 2048 taps filter, adds 0 so your resulting filter is let's say 262144 (adding then 260096 zeros to the end or to the beginning, because frequency is cyclic that doesn't matter except for absolute phase values...), then do an FFT of your filter. If your signal have a peak to +15dBFS in frequency domain at 1055hz for exemple, then you have to attenuate your filter when you do some convolution by 15dB to avoid clipping at this frequency... because inputting a 1055hz signal at 0dBFS to your system convolved with your filter would result to an output of +15dBFS and so you would have some clipping !

Thus the more you correct your system, the more you limit your dynamic range.
Logged
Pages: 1 ... 6 7 8 9 [10]   Go Up