Jump to content
Please note: You can easily log in to MPN using your Facebook account!

Accelerated convolution reverb


Theo Verelst

Recommended Posts

I'm not a huge fan of pure convolution reverbs because the conv. theory is not sufficient for "real" reverb simulation, but I found this effort, git project here to run Cuda (on NVidia graphics cards) accelerated FFT based convolutions for stereo or more reverbs.

 

The project includes about 150 impulse responses of different spaces and is to my knowledge the only audio processing for parallel computing of a serious kind available. There is a recent windows program you can use from VST IIRC but as far as I know that does only some basic effects, and doesn't do heavy computations.

 

This open source effort uses Jack (Pipewire), compiles on my Fedora 37 with the latest Cuda tools, and it run's multiple instances, up to at least 14 stereo (different) cnvolutions, which makes the computer at least run hot. I like to use that for my special processinf signal graph to feed the middle frequencies of the 30 band processing through their own convolution reverb and subsequent gate to put some puffing into to  my (Linux) software synthesis instruments.

 

So, an interestig new find, to my knowledge without competition, except for some server AI tools Nvidia offers (without sources).

 

T.

Link to comment
Share on other sites

They were working on some filters as I know it, I don't know what amount of acceleration they're looking for, probably not heavy parallel processing like I try to do.

 

Here's a demo of the first attempt where everything I made thus far starts up and the machine (a fairly heavy one) handles the workload with only every know and then an X-run (audio doesn't compute on time):

 

http://www.theover.org/Keybdmg/jr_yoshph6muconv.flac

 

It's a direct form output jack_capture recording in lossless 32bit float 96kHz stereo and it's in no way perfect, three parts of the signal graph haven't been implemented yet, and the tuning was course and without much measurement.

 

The sound is a bit loud and like I said, this isn't in a perfection at all yet, but a part of the intended sound is there, and Yoshimi by itself doesn't sound nearly as full.

 

Screenshotfrom2023-03-1721-04-38.thumb.png.517f3090cce5474c2c493c2a3f79b99c.png

 

The algorithms will require a few pages on my server to describe, but the big thing is the majority of the 30 frequency bands received their own stereo convolution reverb, 16in parallel , each with their own (different) input signal and a gate added to each of the 16 stereo outputs, whike the rest of this signal processing graph runs in the form of jack-rack/Ladspa and Calf (Linux) plugins on the I7 processor. It gets hot but not too hot to try, which should be improved on by sorting out the "cuda" (nvidia parallel programming language) GPU program in terms of it's need for excessive CPU support.

 

Theo V

Link to comment
Share on other sites

23 minutes ago, Theo Verelst said:

the majority of the 30 frequency bands received their own stereo convolution reverb, 16in parallel , each with their own (different) input signal and a gate added to each of the 16 stereo outputs

Why? How does this improve the sound compared to a single reverb over the whole frequency spectrum? After all natural reverb (with none of those nasty digital artefacts) works that way.

 

I'm not meaning to snark, but I'm shaking my head in a little disbelief!

 

Cheers, Mike.

Link to comment
Share on other sites

No no, this is a corrective element to make certain built in sound elements come to life more properly, as in a digital trick, it's not an attempt to create a natural reverberation effect.

 

In the case of a natural reverberation, it could still be an interesting trick to divide the 20-20kHz frequency range in bands, and apply compression and gating around each one, because that makes the effect more lively, but that would only be a sound effect, like a fuzz on an echo or something.

 

In this case, the signal graph at hand is among other things a 30 band limiter effect with the most awful settings for distortion and all kinds of dynamic elements, to correct studio recordings back to a nice signal as the last link in a chain of 6 pahses, which means the effect of this chain in reverse must have been the first effects applied to mess up the tracks. I happen to have tried this on Linux sound synthesis programs and while that should sound horrible, there was a strange correlation, and after some changes (and inversions) the result (as I've demonstrated a while ago) can sound better than anything else I know of.

 

However, this convolution effect per frequency band (a part of them) and individual gating makes that sound more full, like a needed correction, too which is clear from the demo, even though the (complicated) signal graph needs a few more processing racks to do the whole multi-"puff" the way I think it should be.

 

So again: this is not a reverb processing example as such, it's Linux digital instrument tuning / correction or anti-spoiling as an application, for which I happen to need a lot of reverbs, nothing else.

 

T

  • Like 1
Link to comment
Share on other sites

For those who might enjoy the progress and  bit of playing around (only a few nimutes, but in 32bit/96kHz lossless flac), I've got the middle 16 bands (of 30 band from 20 Hz to 20 kHz) convolution reverbs running on the RTX3060 of my 12 gen I7 Fedora 37 (Linux) system, communicating with the pipewire annex jack running on the CPU doing all the effects I use for this strange adaptation of the synthesis being used.

 

I added 8 Dexed DX7 simulations to act as the sound source, with fairly random instruments from a provided sound bank and some detuning, and it sounded like this:

 

http://www.theover.org/Keybdmg/texed8_tst1.flac

 

There may be errors, and surely more accurate settings, but this is the setup I tried to achieve, with pretty much all I wanted in there, as I hoped/thought would work.

The GPU is loaded to 40 percent and just 30% memory, but keeping those parallel Cuda processed in check the CPU gets hot (with the standard Intel cooler, about 76 degrees C, while not spinning to max speed), and reports ~35% resources use. I'll have to study NVidia Visual Profiler, pcm (Intel timing analysis package) and maybe the normal C(++) profiler to improve the cuda or host code for the reverbs.

 

O.k. if you got to here, your nerd's been fed.

 

T

Link to comment
Share on other sites

I want a Mesh Tracing algorithmic reverb! Just throw together a room in AutoCAD or Cinema4D with surface properties, and load it into the effect. I did a small stint doing audio for VR screens back in the early 00s and the field was just getting started. No idea where things are at now, but I always figured it would become a big thing someday, particularly for games. Maybe it already is? But I sure as heck haven't heard anything in the studio or live music industry yet.

Puck Funk! :)

 

Equipment: Laptop running lots of nerdy software, some keyboards, noise makersâ¦yada yada yadaâ¦maybe a cat?

Link to comment
Share on other sites

The point of using RTX ray tracing for instance to compute wave patterns in a virtual 3D space is not the greatest, though interesting. You'd get a realistic reverb of an actual space, but that usually isn't the enhancement to your mix you want (how many will set up a physical echo chamber because it sounds so great ?).

 

Virtual acoustics could be used like part of Lexicon efforts have been: t create improved signals _for_ real spaces, so your performance mix is prepared for the space it sounds in.

 

T

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...