Csound Csound-dev Csound-tekno Search About

Re: maximizer opcode request

Date1998-09-18 19:14
FromMike Berry
SubjectRe: maximizer opcode request
There has been a lot of discussion about maximizers, so I thought I would add
my thoughts.

	A maximizer is also called a band-specific compressor.  An input signal is
run through a filter bank first.  Then each band is separately compressed. 
Certain extraneous bands (above or below a certain freq, for instance) may be
removed or highly suppressed.  Then the signal is recombined.  The output then
is much more even-sounding (i.e. louder) than it probably was before.

	The algorithms for doing this are generally proprietary.  One example (that
we don't need to implement) is the Optimod by Orban.  This is designed for the
final compression stage of a radio broadcast, where there should be less that
5% (!!!) of difference between the loud passages and the quiet ones, so that
listeners in cars don't ever loose the signal.

	Mastering houses often use a less extreme version for CD's, so that it sounds
as loud as possible.  For those of us who sometimes don't want it to be as
loud as possible, you need to specifically request this.

	So where does csound stand in this?  It seems unlikely that any of us is
going to come up with an algorithm that is as good at doing this as your pro
plug-in of choice, like the Ultramaximizer.  These companies exist for the
sole purpose of doing this.  So my suggestion is that instead the focus should
be on a good filter bank opcode.  This is something that would be useful in a
number of situations.  It could look like:

a1 (... an), arest		filtbank	kbands, kbase, kspacing

where:
	kbands = the number of bands
	kbase = the top frequency of the first band
	kspacing = the width in octaves of each band
	a1...an = the output of each band
	arest = the remaining signal, delayed to be in sync with the bands

	Then each band could be manipulated separately and then recombined at will. 
With this, it would be easy to experiment with your own maximizer orchestra. 
This is not a trivial opcode, since designed the necessary filters is rather
tricky.  But there must be some research somewhere on how to do this.

-- 
Mike Berry
mikeb@nmol.com
http://www.nmol.com/users/mikeb