Kyma Forum
  Kyma Sound Exchange
  6-Band Stereo Mastering Sound

Post New Topic  Post A Reply
profile | register | preferences | faq | search

next newest topic | next oldest topic
Author Topic:   6-Band Stereo Mastering Sound
David McClain
Member
posted 05 November 2002 00:17         Edit/Delete Message   Reply w/Quote

6_band_stereo_mastering.kym

 
Hi,

Here is a corrected repeat of a Sound I might have provided before, not sure... This one is a 6-band stereo mastering processor.

The sound is introduced through either of channels 1&2 or 3&4 and sent into a ganged pair of 8-band parametric EQ's. The lowest and highest bands are shelving filters, while the middle 6 are my 2-pole parametric peaking/notching filters. You will need my DSP code for these, submitted earlier.

After equalization the channels are sent into spectral separation filters based on the Kyma FIR filterbank. These separate spectral bands are sent into noise gates and compressors for spectrally independent dynamics processing.

After dynamics processing, the six spectral bands are send into stereo field wideners and phase panners. The field wideners simply subtract a controlled amount of the M channel from each of the left and right channels in each subband. This is controlled by the six "Spread" controls. At a setting of zero these leave the stereo fields unchanged. A setting of 1 removes the M channel entirely, leaving only the anticorrelated S channel. A setting of -1 doubles up the M channel, increasing channel correlation.

After this stereo field widening, the six spectral bands are sent into phase panners that provide a controlled amount of cross-channel feed along with appropriate delay. The cross fed amplitudes are modeled after a very simply HRTF, given as:

In channel amplitude = 1 - (0.5 * !Pan normCos)
Cross channel amplitude = 1 + (0.5 * !Pan normCos)

These model a simple cardiod pattern. You can increase its depth by changing the 0.5 factor to something larger (but less than 1).

The delays of cross channel feeds are based on a nominal (but exagerated) 800 usec inter-ear delay. These delays are given as:

In channel delay scale = 0.5 * (1 + !Pan normCos)
Cross channel delay scale = 0.5 * (1 - !Pan normCos).

[Dang! I can't ever get pairs correct -- it's my dyslexia. Given a choice of any two things I always get it wrong! The signs in the above have been edited for correctness.]

In both of these sets of equations, the !Pan parameter ranges from 0 to 1. At 1 the panning is the nominal panning present in the stereo signal. At zero it is completely reversed. At a panning of 0.5 the sound is moved to the front direction, and the delay used by both channels is the same 400 usec.

[In-channel is defined as Right feeding right, and left feeding left, while cross-channel is defined as Right feeding left, and left feeding right.]

In parallel with these spectral field wideners and phase panners, the 1 KHz, 2 KHz, and 4 KHz bands are sent through a stereo harmonics generator with control over the amount of even and odd harmonics produced.

[I forgot to mention that there is a sugaring reverb in the signal chain just ahead of the spectral processing and after the parametric EQ. This is a stereo reverb based on the Kyma Euverb. You don't generally need very much of this, and to help you adjust it I provide a bypass and solo button. ]


Finally, all this processing is summed at the output for the finished stereo product.

WARNING! This (lite) version of the Sound requires 18 DSP's when running at 44.1 KHz sample rate. I can't run it at 48 KHz, even with 20 DSP's. This thing is DSP hungry!

If I submitted this Sound before, please accept my apologies for having hosed up the phase panning and cross channel amplitudes. This one is correct, having been verified by a Mathematica model of the sound path.

Using this stereo mastering processor really adds dimension and space to recordings. There is a bypass button provided so you can A/B the results yourself. After using it for a while it is difficult to go back to listening to the "two-dimensional" CD recordings here in the studio.

Cheers,

- DM


[This message has been edited by David McClain (edited 05 November 2002).]

[This message has been edited by David McClain (edited 05 November 2002).]

IP: Logged

David McClain
Member
posted 08 November 2002 21:57         Edit/Delete Message   Reply w/Quote

mastering-3.kym

 
Here's a slight improvement and alteration on the stereo mastering processor...

I had some difficulty with the switching expressions of the form

((!A + !B) vmin: 1)

when used for various bypass, mute, and solo buttons. So I changed them all to use the form:

((!A + !B) asLogicValue)

Now there's no more bleedthru on muting the parametric EQ.

Secondly, I implemented a bank of Solo buttons just beneath the Mute buttons on the six spectral processing bands. Solo takes precedence over Mute. I find soloing channels often more convenient than muting all but the one I want.

Thirdly, I changed the exciter section to something along the lines of my Aural Exciter. Now it uses much stronger compression (200:1) into the distortion modules, and the distortion is patterned after a polynomial approximation to the Aphex units. Also, the high bands (1K, 2K, and 4K) are passed through this unit with harmonics added along the way. The result is much more impressive and the output gain needs to be cranked down quite a bit (e.g., -18 dB) before adding back to the processed signal chain.

So while this does generate harmonics, it also boosts those high bands a bit. To my (deaf) ears, the result is more noticeable.You may wish to elide the high signals from the distortion. In that case simply change the 0.7xx coefficent (second from the left) in the polynomial definition to 0.00. That will remove the linear component from the distortion units.

Enjoy!

- DM

[ I almost forgot... While the six spectral bands have both stereo field expansion and phase panning, I find the phase panning to be less useful. That is probably because of the phase cancellation between adjacent bands when you do this. The stereo field widening works magic, but the phase panning is probably a waste of time. Any audio pro's out there wish to express an opinion on this? ]

[This message has been edited by David McClain (edited 08 November 2002).]

IP: Logged

Bill Meadows
Member
posted 09 November 2002 20:04         Edit/Delete Message   Reply w/Quote
I'm sure your Mastering Sound is wonderful, your posts always are, unfortunately it's too big for my Capy.

This sound is a perfect example of my single biggest complaint about Kyma: lack of encapsulation. (I have used "New Class from Example", but this is tedious and if you ever want to edit that sound (and you *always* will) you must go through the whole process again.)

I long for the simplicity of MAX/MSP - where it is simple to create hierarchical structures. This results in software which is much easier to read, re-use and debug.

If your sound had an obvious hierarchical structure, I could easily trim it down to a size that would work on my hardware. Or I could try running just small portions of it to see how they work.

I'm sure it would be a major effort to restructure Kyma in this way - if it is even possible - so I'm not going to hold my breath. But it sure would be nice.

IP: Logged

David McClain
Member
posted 10 November 2002 04:05         Edit/Delete Message   Reply w/Quote

mastering_pieces.kym

 
...fair enough...

Attached is a Sound file containing the original (improved) version and one that has been constructed from Class objects. Also included are the prototypes and classes, as well as individual components that can be used standalone.

However,.... any time you modularize for the sake of generality you pay the cost of extra overhead in the inter-module interfaces. As a result, this classed version no longer even runs at 44.1 KHz in my 20 DSP Capy. I had to drop the sample rate down to 32 KHz to get it to run in real time.

As always, the fastest code is the most spaghetti-like, isn't it?

- DM

IP: Logged

SSC
Administrator
posted 10 November 2002 12:07         Edit/Delete Message   Reply w/Quote
"(I have used "New Class from Example", but this is tedious and if you ever want to edit that sound (and you *always* will) you must go through the whole process again.)"

Helpful Hint of the Day: Did you know that if you drag the icon of your original class into the parameter definition area, it sets all the parameter types and the locations of the fields automatically? And if you drag the icon into the bit editor area, it sets the icon to be the same. This little trick can save you a lot of time when editing a New Class From Example.

IP: Logged

Bill Meadows
Member
posted 11 November 2002 12:32         Edit/Delete Message   Reply w/Quote
Thanks David, I'll check them out.

I am surprised that code structure would affect performance - it seems like the compiled code should be the same, but I'm not really a software guy... thanks all the same.

SSC, I think I've had some problems with the trick you describe - but maybe it was just operator error...

IP: Logged

SSC
Administrator
posted 11 November 2002 14:37         Edit/Delete Message   Reply w/Quote
Hi David,
This is a really interesting Sound and I had a couple of ideas on how you could make an alternate version whose subparts could be playable by people who don't have as many DSPs.

If you could do away with the rightmost Script, this would make the beautifully hierarchical and modular structure of your design more apparent to others. (Having the Script at the end prevents you from playing subparts of the structure to see what they do by themselves). You could do this by pasting the hot expressions for the muting and bypassing directly into the parameter fields in place of the green variables. I tried this on the first two branches and found the results quite interesting.

Another small modification that would make your design apparent to those of us who are screen real estate-impaired: If you could make your VCS layout smaller, those of us who have only 15" monitors could see the hierarchical groupings of the faders that you have so considerately included in the design.

Each subpart of your Sound has a clear function (and could even be encapsulated as a new macro if you so desired), so by playing the subparts I was able to understand it better and to monitor how much DSP each functional element requires. This is how I noticed that you are using a GraphicEQ module as a bandpass filter on each branch. I know why you are using it--because it is an FIR filter that has no affect on the phase. Would it be possible to create an alternative version of your Sound in which you use a BandPass filter to achieve the same effect (minus the nice phase linearity that you are trying to achieve)? This would make your Sound playable on a lot more Capybaras.

Just some thoughts on ways to allow more of the Kyma-ites out there to be able to enjoy your handiwork. Thanks for your stimulating posts!

IP: Logged

David McClain
Member
posted 11 November 2002 20:25         Edit/Delete Message   Reply w/Quote
Hi SSC!

Yes, I'll take your suggestions to heart and try reworking the mastering processor. You certainly could use IIR filters instead of FIR filters for the spectral separations. They won't add up as nicely as with phase linear filters, but then I'm distorting the phase relationships anyway with the stereo spreaders. So a bunch of IIR filters would seem a reasonable way to go.

I'll rework this monster and resubmit as a possibly smaller version so more can enjoy it.

Cheers,

- DM

IP: Logged

All times are CT (US)

next newest topic | next oldest topic

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply

Contact Us | Symbolic Sound Home

This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.


Ultimate Bulletin Board 5.45c