Balls VST
=========
2003 Duncan Parsons

<History>
In conversation with a friend, I was told about Oscar Peterson, and what a practical joker he was.
For instance, he would detune the Bass player's Double Bass whilst he was off stage. Then when said Bass player came back on, keep him talking until it was time to play - at which point there would be a realisation by the jokee that he was playing totally the wrong notes and have to compensate on the fly...

After many tricks, the band decided to get even. One such pay back was to put ball bearings on the strings of Oscar's Steinway Grand, so with every note played, there would be a bizarre delayed timbre.

This trick rather caught my imagination, and I wondered how I could emulate it.
</History>

<Balls>
This plug allows 4 'Ball Bearings' to bounce on in the incoming audio. There are a variety of parameters which control the resultant sound:

Size of ball: length of sample taken
Weight of ball: 'Loudness' of sample playback
Squidgyness of ball: Oh yes! Virtual Ball Bearings can morph into soggy wet paper bags... A Low value will give more bounces, a High value fewer (have you ever tried playing tennis with a soggy wet paper bag?)
Height ball dropped from: determines the time between 'Bounces'
Pan: ..you can work that one out...
Boing: determines whether the sample 'boings' (actually LP/HP filter)
Rez: ..again, I won't patronise you!
Spatial: just listen..
Bouncing: now here I draw the line - if you can't get this one...

Once a bounce has run it's course, it automatically bounces again.

Each ball is fully automatable via VST automation.
I was going to make it all random, but then the good take/ bad take thing could really irritate people.
Like the Titanic, this plug is virtually unsyncable. With some art, you could get it in shape, but it doesn't care about tempo - it drops balls.
</Balls>

<Theory>
There is NO physical modelling here.
I ignored Newton too.

The deterioration of the bounce is driven by the squidginess
When the current loudness falls below a predetermined level, or the gap between bounces is negligable, the bounce is restarted.

If anything this uses a Kerplunk/Phong algorithm - you get nicely shaded marbles on your audio.
</Theory>

<Thanks>
Steinberg, for VST.
Freddy Vanmol, for the VST SDK Translation into Delphi
Tobybear, for the VST Template
</Thanks>

<BTW>
This plug is hardwired to take 44100 samples for each ball. So, depending on your sample rate, you will different results.
If there is sufficient interest, I'll do it the hard way, and make it sensitive to samplerate.
<Update>
06/10/2K3: Actually, now sensitive to samplerate
</Update>
</BTW>

<Me>
I'm Duncan Parsons (Hello).
midi@dsparsons.co.uk
</Me>

<Changelog>
13/10/2K3: v1.03 : Close gate at end of 'bounce', other bug fixes/ inconsistencies
06/10/2K3: v1.02 : Allowance for non-44.1k samplerate; other subtle fixes
02/10/2K3: v1.01 : Added Linear Gate on first 88 samples to help prevent clicks on sampling
02/10/2K3: v1.00 : First release
</Changelog>