A Studio Sound Path Experiment

The main ideas included in the following signal path graph are:
  1. CD-mastering compensating equalization, possibly including loudness compensation filtering
  2. mid frequency range averaging filtering
  3. working with low-mid FFT transformed frequency bands to change their dynamics
  4. comparing these bands between a loudness curve pre-filtered FFT signal and non-FFT processed band-filters
  5. enhancing the sum of the sub-bands with tube-related distortion
  6. finding some of the original signal transients back in many pro-mixes by using accurately timed limiters and subtractions
  7. adding a high frequency averaged component with an attempt to improve most mastering troubles with CDs and such
  8. smoothing mostly the mid-range by applying slight band compression after the FFT filter
  9. using the 1024 band FFT based equalizer to allow for harmonization (in the sense of the "feel" of chords) of the signal (can be used to create mutitrack tracks, or slightly to compensate for the feel of recorded materials)



The whole set of standard LADSPA-effect requiring jack-rack files, jamin file and automated startup and connecting .tcl files are available in this zip file:

   subbanddif1.zip

Here are screendumps of the various plugin racks and their settings, and of the "jamin" mastering effect (based on a FFT based 1024 band equalizer):




(Click on the following screendumps and they'll open in a new window with the original captured size):



In the jack based signal graph (courtesy of "patchage" program) the main path is: cdplay to equalize the CD signal, which splits out in the following main components: a pre-filter feeding "jamin", a bunch of band filters (df*), feeding another band filter bank (d*) which in turn get also a feed from the "jamin" output, and all those get mixed into (jack-rack_)par where there is a tube and speaker effect. There are two delays in the main path, del2 and del3 which mix with the mid-range expanded signal from of2bmid and the par signal and there are filtered stereo width adjustments possible with the small(2) blocks. there's a seperate around 17kHz path with hipass and to jamin there's hicom, they form a unmatched compression/expansion pair for high frequencies around jamin, which gets a peak with slope up or down in the highest frequency range (remember, at 192 kHz this actually works, and mixes appear to be prepared for having a lot of master filter messes alleviated this way).

The dfsubtr block mixes the non-fft 2/3 octave low mid bands, and gates the result to the form a comparison with the fft-filtered sub bands.

Of course this could all be seen as sort of random, but both with straight signals (microphone, Chesky CDs, etc.) and clearly produced and mixed and mastered signals like CDs and blurays (and even good mp3s) there is much interest to be found in the selective signal comparisons done at the low-mid subband level, and, after adjustments, I can pretty much enhance over 4500 CD songs (I tried more than a fair share in the course of time) and a variety of other sources to sound distinctly better or at least more interesting (in some cases "FM-radio"-like when I work on it) on my neutral monitoring systems, and headphones. Also my Lexicon effect, always weary of CDs and blurays, HD-DVDs, TV audio and web mp3s, with few exceptions, often appears to dig the signal variations possible with this signal processing path!

The last part of the signal path (which goes from left to right, mainly) is only a digital signal balancing and delay for mixing in a Lexicon signal idea, and unimportant for people wanting to try this for themselves.

Adapted jack-rack application

To make it easer to screen dump, and allow future automated multi-screen applications to work, I've adapted the Open Source jack-rack application to allow loading of so called "non-real time" plugins without warning once they've been stored in a file (I apply a small mout of signal path input noise to prevent much processor usage with these type of plugins), and I've added -x,y,w,l startup parameters to allow putting the window it creates anywhere on the screen.

If there's interest I can make the changes available.


Other requires applications

Jack (in my case using alsa), mplayer with resample filter (for playing 44.1 kHz CD wav files at 192kHz) and jack output enabled. I've experimented with a filter-length adapted jamin, but that isn't necessary for the experiment to work.

Unfortunately a working 192 Kilo Herz sampling frequency "JAMin" program is needed. I use a very long (2 or 3 periods of 8192 (!) long sample buffers) jack signal buffering scheme to make all these plugins run on a supercoputing mode I7-950 machine, and even on such fast machine (with decent 3-fold 1333 memory banks) this effect run at that speed wil require processor power, so i make sure that before I start the whole above signal processing graph up, all the cores are at maximum processing speed of a little over 3GHz. The result can run for hours (and longer) without trouble and a couple of xruns reported by qjackctl per half hour or so, depending. The processor gets to be about 60 degrees with 1900 RPM fans speed, so that's ok.

Meterbridge is needed for the various peak digital bar meters I use to look t the various signal stages. The jellyfish meter included with that package is great to check the "life" of the sub-bands or the major two signal additions (the midrange addition at with del2 and the subband addition af`ter del3). Only good sources and well adjusted signal changes make these absolutely great and a mesmerizing joy to look at.

Of course for my main version you need a 192kHz sample frequency capable soundcard, preferably with 24 bit resolution. A 96 version I've used works too, and of course requires less processor power, too. owever it isn't easy to get the 96 settings from the 192 version I presented here, and I find the 192 absolutely superior in sound.

Netjack in my case can run 2 192kHz/32bit channels back and forth over a switch with gigabit ethernet to another i7 machine, which can be used to split the graph over machines, or add more "live" processing (like multi compression).