The Millennium Plugin Suite.
__________________________________________

The Millennium Plugin Suite, is a suite of plugins, specially designed for the professional user.
It is open source, under the GPL licence.
It is currently available in LADSPA format. 

Uwaysi Bin Kareem is the initializer of this project. (http://www.paradoxuncreated.com)

This programming service was provided by:
Richard W.E. Furse, original programmer of "LADSPA_SDK" which became the basis for initial rapid development.
Olli Niemitalo, original programmer of "Lowpass filter for parameter edge filtering", which I extended to 9th order gaussian, and optimized to 5 buffers (UBK).
Various online people for for help with transition to pointer variables, instead of normal variables, used in the windows version.
Uwaysi Bin Kareem, developer of these plugins, first versions to current version.

Praised be God.

These plugins are designed for the 44.1khz samplerate, but works at other rates. Be aware, that using certain plugins at higher rates, may impact the performance of the plugin, such as the limiter. Take care to properly treat the signal with a brickwallfilter, at 20khz, if you are using the limiter at higher rates, to avoid the limiter uneccesarily ducking the audio volume, for frequencies that are out of the audible range. Ripple from brickwallfiltering may also impact performance. Dither to CD, must also occur at the target samplerate, 44.1khz.

Installation: Unpack, CD directory, sudo make. PS: Makefile is currently set to 32bit compilation, which needs gcc multilib. Edit the Makefile to set it to 64bit.



Plugins currently included:


1.The Millennium Limiter 

What is a limiter?

A limiter, within the audio context, is a device that limits the amplitude of
the signal, to a desired threshold.
Because limiting cannot be done instantly, without artifacts, most limiters
employ a technique called «lookahead» limiting. That means buffering the signal,
for a desired time, usually about 1-2ms, and ramping the voulme of the signal
down, before the peak occurs, to avoid distortion.
Look-ahead is done by what is also known, as a «maxfilter» which outputs the
highest amplitude in the buffered signal.
The technique is employed in various ways, and smoothed to reduce artifacts.
Limiters usually also contain a release-stage, which is the time, from
attenuation to release, or recovery of volume ramping, usually set much slower.
In modern limiters, it is also common, to include saturation techniques, to
improve the psychoacoustics of the sound.


Uses

The limiter is normally used for reducing the peaks of signals. This is often
done, to quite an extent, on many instruments, voices, drums, radiobroadcasts,
cd-mastering, and so forth. It is used by the experienced engineer, to improve
the sound. It is also often used more agressively to maximize bassfrequencies on
a submix or in a multiband-technique, and it can also be used experimentally.

The limiter is widely known for making mixes, reach -9dB RMS volume, without
distortion.


The Millennium Limiter

The Millennium Limiter, is an open source version, of a limiter, so that people do not
have to do this code, again and again, and with varying success. Instead build
upon the work already done, and let society progress.

Initial release, v1.0 is already fully developed, and cutting edge. The project
started somewhere around the millenium-shift, and has now come to be a fully
developed general limiter.

The design philosophy is simple, as general as possible, with as low noise and
distortion as possible. The code is also very serial, and optimized, for maximum
effiecency. Gaussian filters are also used, for maximum fidelity.

Controls:

Threshold: Sets the threshold level, where limiting occurs.
Buffer: Sets the amount of lookahead buffering.
Release: Sets the amount of release.


2.The Millennium Filter

The Millennium Filter, is a variant of a diode-ladder filter, or inspired by.
It also includes saturaton controls, to approximate saturation characteristics in vintage circuits.

Controls:

Cutoff: Set the frequency where filtering is done.
Resonance: Set the amount of feedback, for resonance.
Sat Thr: Set the saturation threshold.
Sat Kn: Set the saturation knee.
RSat Thr: Set the resonance/feedback saturation threshold.
RSat Kn: Set the resonance/feedback saturation knee.


3.The Millennium Saturator

The Millennium Saturator, is a saturation plugin, designed particulary to work well with both minimal and deep kneefactors.

Controls:

Threshold: Set the saturation threshold.
Knee: Set the saturation knee.


4.The Millennium Quantization and Dither.

The Millennium Saturator, is a quantization with dither-plugin.
This is useful, for optimal conversion, from for instance, double precision floating point, to signed 16bit integer, as used in a CD-player.

Controls:

Mode: 0, off, 1 active, 2 rounded.
Target Resolution: Target resolution, 16 for CD.
Attenuate: Subtracts integerwise, from the volume, in accordance to the target resolution. Can also be used to compensate the audio, so that headroom is available for the feedback. (recommended) Subtract alteast two, if going to CD, one to avoid clipping one side, one to avoid digital clip detectors.
Zoom: Zooom in dBwise, and inspect the dither.
Order1-6: feedback amount.

Correct usage of dither, is to use it as the last signal processing device, before conversion happens. No volume or other DSP, must be used after this, simply output to file or other, with the target resolution.


Quantization and dither, can also be used in a digital-to-analog converter, to approximate higher resolutions. I hereby include and propose the following digital-to-analog converter, specification released under the GPL licence as everything, in this archive, The Millennium Plugin Suite.


Bitstreams24 is a digital-to-analog converter.

The digital signal, will be upsampled, to an acceptable rate, and this rate will be the output time resolution.
This signal will be filtered, by 4, or more, one-poles, to achieve gaussian filtering.

The number of bits may be reduced before upsampling, and the rate made higher, and careful quantization and dither used, with the right headroom, to approximate higher resolution.

Bistreams24, is based on summing these digital bitstreams, analogically with the right amplitudes, to avoid nonlinearities in the transistor. It can also be done balanced, to avoid noise. This should be the optimal way, and also avoids gibbs phenomena, because further antialiasing filtering is not needed, due to the high rate. Avoiding gibbs phenomena, also increases the dynamic range, and reclaims the ~10dBs currently claimed by onebit converters.


Peace Be With You,
Uwaysi Bin Kareem, 24.feb 2010


VERSION HISTORY.
Initial port from earlier project, and various releases and fixes, from 0.9 to 0.997.
0.997: Included filter, and saturator, in addition to the limiter.
0.998: Included quantization and dither plugin. Added oversampling to pxu_filter. Now compiles without LADSPA_SDK. You may need to mkdir /usr/lib/ladspa.
0.999: 19.march 2010. Fixed a bug in oversampling and increased to a factor of 3, in Filter. Set the minbuffer to 16 samples @ 44.1khz to avoid nonfunctional low buffer settings, in limiter.Implemented rounding in dither.
0.999b: Small updates to this textfile, and makefile. Also, included the binary .so's 
0.999c: 6.april 2010. Renamed the project to The Millennium Plugin Suite. Also added a 32bit compilation option, to the makefile. This needs gcc multilib on x86-64.
0.999d: 28.june 2010. Limiter: Fixed a denormal bug. Changed buffer range, from 0-200, to 20-200. Implemented PDC by outputport named latency, as done and suggested by other LADSPA developers.
0.999e: 6.july 2010. Limiter: Added 3x oversampling in the filter. The linux version is getting a bit hard to maintain, because of the pointer variables, hopefully the 3x oversampling is correct. I will have to look into fixing that in a future version. 
0.999f: 22.july 2010. Included multiband-limiter port for debugging. 

