Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

Impulse Response

DSP related issues, mathematics, processing and techniques

Re: Impulse Response

Postby martinvicanek » Thu Jan 28, 2016 11:53 pm

Heya, here is my next update, featuring:
1. IR is now passed as a stream instead of memin. Rock solid. No more crashes or blue screens. Yeah! 8-)
2. Loading a new IR can be done on the fly. No need to interrupt audio.
3. Partition now uses 16k max FFT size. It turned out that 32k was too heavy on my computer, resulting in occassional clicks.
4. Dry/wet controls
5. Lo/hi shelving filters
6. Optional extra delay
7. Choice of inputs: L, R, Mono, Stereo
8. Pan and spread controls
9. Processing adapts to IR size
I haven't added stretch/shrink because it was last on tulamide's list, and also because I haven't found a good way to fit it in. Maximum IR size is still 3 seconds @44.1 kHz, I don't think 30 seconds is feasible. KG, please prove me wrong!
Would appreciate some feedback please :)
Attachments
ConvoRev6c.fsm
fixed bug reported below by Spogg
(1.88 MiB) Downloaded 1575 times
Last edited by martinvicanek on Sat Jan 30, 2016 4:02 am, edited 1 time in total.
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: Impulse Response

Postby KG_is_back » Fri Jan 29, 2016 12:54 am

very nice work martin. The CPU peaks at about 16% on my computer with about 3second IRs. Extrapolating from that, 10second seems doable. From what I understand form the schematic, anything beyond 8k samples is just processed by sequence of 16k FFTs (so CPU cost raises linearly after 8k samples). I see however, that increase in impulse size also requires added memory, which may decrease cache efficiency.
Perhaps optional "ultra-long mode" might be possible, which would replace the in-place 15x FDL - 16k with higher (perhaps 50x...), using selector.

I haven't tested the IR loader in a DAW yet, so I can't directly testify about its CPU performance, but as far as I can tell, it is only about 2-3x slower than stock Flowstone Convolver, which is pretty good I guess...

There is a way to sacrifice precision vs. performance. In longer impulses, later parts of the impulse rarely contain high frequencies (understand >11kHz). It is possible to downsample signal for these parts of IR (effectively halving the CPU cost) without mayor sacrifice in the end result. It might be a point to consider, especially for cases when the user uses >44kHz sample rates.
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: Impulse Response

Postby tulamide » Fri Jan 29, 2016 3:37 am

Hey Martin,

I'm using this free library a lot. Just to make sure, there's no misunderstanding, I quote an important sentence:

This library is completely FREE, to comply with the request from Bricasti that it is allowed to create impulse responses with the M7, as long as these IRs are not included in any commercial product.

(I set the important part in bold letters. It means we can't use it for our engine.)

After the download (there are several different formats, choose whatever you want to test with, e.g. 32bit/48kHz), you will notice that at least 50% of the IRs are considerably longer than 3 seconds. There are quite a few that exceed 10 seconds.

Apart from this library I have a lot of other ones that exceed 3 seconds - the longest has a duration of 36 seconds (Taj Mahal, but admitted it is not used often)

http://www.samplicity.com/bricasti-m7-impulse-responses/
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: Impulse Response

Postby martinvicanek » Fri Jan 29, 2016 7:39 am

Thanks, KG and tulamide. When do you guys ever sleep? :mrgreen:
Yes, I think with the current stream part scaling it would be possible to do more than 3s. I have yet to find a way to handle such big IRs in the green section, will try KG's earlier suggestion to use an ASM FFT hooked to an analyzer instead of cascaded green FFTs.
KG, I have actually experimented with undersampling the late parts of the convolution, but no matter what there was alsays an audible transition, so I decided not to go this route.
:idea: I am planning to include a feedback option to generate really looooooooooooooooooooong tails, much longer than the mere IR size. Just need to figure out how to prevent exponential runaway.
You mention an FS stock convolver :shock: :shock: Have I missed something?
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: Impulse Response

Postby Spogg » Fri Jan 29, 2016 3:53 pm

Hi Martin

First I must say I like the ease of use of the new module; I didn't have to mess around adding what I wanted to test it and what you have provided is ideal. Also the overall sound seems better defined and more realistic. FS CPU meter on mine showed about the same as version 5, about 6%

However, and I really don't like to tell you this, but I found that I have problems with the V6 and these weren't present on the V5.

I auditioned with headphones and used a microphone so I could properly hear the subtleties and the issues weren't initially noticable on speakers, until I'd heard them on headphones.

(1) When I produce a sustained hummed input note, at any volume, I can hear clicks on left and right side but not happening in sync. Also, in the background, I hear a sound like a snare drum being hit randomly. It's very quiet but once I heard it I could focus on it. When I make a single percussive noise like a pop the tail seems clean; it's sustained audio input that seems to cause the trouble, rather than transients.

(2) Right at the start of an input I briefly hear separate versions of the tail-start in the left and right channels, irrespective of IR pulse being used. Sounds like maybe 50mS of "wide" stereo. To reproduce this start with the tail completed so there is initially silence then input a short word or Laa (not a transient).

I tried longer ASIO buffer times but, if anything, the artefacts seemed more pronounced above 20mS.

----------------------------------------------------------------------------------------------------------

I had a look at Waves' IR-L and it seems the sweet spot for IR lengths is 6 seconds. Their product will take longer ones but ignores anything after 6 seconds. 6 seconds is a very long reverb tail and most of it would get lost if used in a mix so I'd be very happy with 6 seconds. I tested yours with a 10 second IR and by the time 3 seconds was up the tail amplitude was minimal anyway. The cut-off at the end was hardly noticeable.

If CPU use is an issue for longer tails it might be advantageous to provide a quality switch or even have 2 completely separate engines for the user to choose.

I do hope this feedback is useful.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Impulse Response

Postby Spogg » Fri Jan 29, 2016 4:17 pm

Quilcom IRA 2

https://www.dropbox.com/s/yejct0aa8rlel ... 0.zip?dl=0

This is version 2 of my Impulse Response Author. I auditioned lots of real and synthetic IRs to try and learn better what was required for a greater range and better realism. My first IRA was best suited to creating only diffused tails and the results were therefore limited.

Version 2 has retained everything that my first one had but in addition I've provide a third channel. This can be used for early reflections, especially effective when setting a small delay on the left and right envelope graphs. This 3rd channel can also be panned between left and right channels. You could thereby have an early reflection to one side of centre.
Also there are now 3 LFOs. Each one has a 2 outputs out of phase by 180 degrees. For each channel you can choose any of the 6 outputs to provide amplitude modulation. This is useful for creating segmented repeats in the resulting reverb sound.

I've created some presets which demonstrate the new features and included in the zip are IR files created by these presets, for you to test without even using the IRA 2.

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Impulse Response

Postby KG_is_back » Fri Jan 29, 2016 4:45 pm

martinvicanek wrote:You mention an FS stock convolver Have I missed something?

oops... I meant FL studio stock convolver :oops:

martinvicanek wrote:I am planning to include a feedback option to generate really looooooooooooooooooooong tails, much longer than the mere IR size. Just need to figure out how to prevent exponential runaway.


Good idea, it is called self-convolution and I've seen it quite often. exponential runaway can be prevented by limiting the gain to 0-1 range. FIR is still simply a filter. If gain of any frequency is higher than 1 in a feedback loop, it will explode. We could theoretically analyse the impulse using FFT and detect the maximum gain, and adjust the range of the gain-knob accordingly, so that feedback-gain x max-frequency-gain < 1.

martinvicanek wrote: I have yet to find a way to handle such big IRs in the green section,


Perhaps, instead of converting the wave into full green array as a whole, you can move the converter to individual FFT modules and extract the desired part via analyser prim (like you do in the IR to Array module) instead of extracting the part via "float array section" prim.
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: Impulse Response

Postby Spogg » Fri Jan 29, 2016 6:15 pm

Spogg wrote:
(1) When I produce a sustained hummed input note, at any volume, I can hear clicks on left and right side but not happening in sync. Also, in the background, I hear a sound like a snare drum being hit randomly. It's very quiet but once I heard it I could focus on it. When I make a single percussive noise like a pop the tail seems clean; it's sustained audio input that seems to cause the trouble, rather than transients.

(2) Right at the start of an input I briefly hear separate versions of the tail-start in the left and right channels, irrespective of IR pulse being used. Sounds like maybe 50mS of "wide" stereo. To reproduce this start with the tail completed so there is initially silence then input a short word or Laa (not a transient).



I messed about and found all the shitty noises are coming from the 3xFDL-4K module. Unplug it and the sound is great. Unplug any other combinations and it's still sounding crap.
I suspect and hope this will be an easy fix but I don't know the right spell. Or any spell.

Also a question: After I pressed Clear I still hear an effect. Does it have a default inside? You know, to keep the magic flowing?

Cheers

Spogg
User avatar
Spogg
 
Posts: 3358
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England

Re: Impulse Response

Postby KG_is_back » Fri Jan 29, 2016 10:14 pm

Here is a slight modification to the loading algorithm. Instead of converting the IR into float array, I extract required part using analyser inside each DFT module.
I also execute the loading in second thread. I don't know if it helps, but it might prevent freezes and crashes during loading.
Attachments
ConvoRev6c_KG.fsm
(1.15 MiB) Downloaded 1556 times
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: Impulse Response

Postby martinvicanek » Sat Jan 30, 2016 4:06 am

Thanks, Spogg, you were spot on: I made a mistake right before uploading, which I now fixed in the original post. There was also another bug with the source selector whic is also fixed.
I will check out your IR generator later. I find it fascinating to be able to create arbitrary spaces this way, and I am thinkitg that we could integrate the IR generator with the convolution engine so you could use it right away without saving it to disk and loading it in another app. How does that sound?
KG, thanks for your thoughts and modification. I was actually planning to take it yet one step further and replace the green FFTs by stream versions hooked to analyzers.
tulamide, you have probably realized that we will at some point need to replace that ugly controls pannel by a proper GUI? ;)
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

PreviousNext

Return to DSP

Who is online

Users browsing this forum: No registered users and 13 guests