Scrubby

Scrubby remembers the last few seconds of your audio signal and plays it back by zipping around to random points within it. That memory of sound is called a delay buffer. You define a range of time through which Scrubby can look back and a rate at which Scrubby will seek new target destinations. Then, at the beginning of each seeking cycle, a new target is chosen somewhere within the seek range of the delay buffer. Then Scrubby travels to that target position, speeding up or slowing down playback as necessary, moving backwards or forwards.

The crux of Scrubby's behaviour lies in answering three questions:
• How often should Scrubby look for new targets?
• Within what range of time can Scrubby look for the new targets?
• How quickly should it reach those targets?
You answer these questions by adjusting the seek rate, seek range, and seek duration parameters...


seek rate:

The seek rate controls how often Scrubby heads towards a new target in its delay buffer. This can be controlled in terms of Hz (cycles per second) or you can turn on tempo sync and then control the rate in terms of how many times per beat you want a new seek to occur (the tempo sync button is at the middle top of the window and, for your convenience, also located immediately to the right of the seek rate slider). Higher seek rates generally mean that Scrubby's playback speeds will be faster because there will be less time to reach the target (since the next seek is coming up soon), so Scrubby needs to hurry up if the target is not nearby.

If your host software supports sending tempo information to effect plugins, then you can enable sync to host tempo to follow the host's tempo and beat position. Otherwise, the tempo parameter dictates the tempo to be used.

Both seek rate and seek duration are range parameters. This means that you can define a range of values between which an effective value will be randomly chosen. New random values are calculated at each seek cycle. If there is no range defined (i.e. the upper and lower handles of the slider are touching), then exactly that value is used, with no randomization. See the parameter adjustment tricks section below for some handy range slider tips.


seek range:

The seek range is a period of time from now into the recent past. This is the range within which Scrubby can look for a new target destination to travel to. Larger seek ranges generally mean wilder fluctuations in playback speeds and increased mega-disorientation.

Greater seek ranges also typically mean that you will have a longer period of silence when you first start up Scrubby. This is because it will take a little while before the delay buffer starts filling up with audio and Scrubby finally travels into some portion of the buffer that contains sound. Also, Scrubby will tend to trail behind the current point in time in the audio input, moreso when the seek range is larger. You can compensate for this delay by adjusting the predelay parameter. The actual "delay" that Scrubby produces is not constant or predictable, so that's why delay compensation cannot be achieved very scientifically. The delay will always be at most equal to the seek range, so the predelay parameter is interpretted as a portion of the seek range. A predelay of 100% equals the seek range, and anything less than that will be a shorter predelay. Predelay is essentially a request made by the plugin of the host, but not all host software can provide this time compensation of audio for effect plugins. Also, you might have to stop and restart audio playback, or with some software bypass the effect and then turn it back on, in order for the predelay setting to go into effect.


seek duration:

The seek duration is a portion of the seek cycle length. If seek duration is 100%, then the target destination is reached at the end of each cycle. If it is less than 100%, then the target is reached early and the remaining portion of each cycle is silent. This means that you will hear gaps in the sound.

Seek duration, like seek rate, is a range parameter, which is described more above in the seek rate section.


pitch constraint:

While zipping around from one target destination to the next, Scrubby needs to speed up and slow down audio playback. You can control these different playback speeds so that they are forced to be perfect semitone transposition intervals from the original playback speed.

First, however, you need to understand that Scrubby has two speed modes: robot mode and DJ mode. In robot mode, the playback speed for each target seek remains constant during that seek cycle, so each speed change is abrupt and occurs immediately each time a new target is chosen. In DJ mode, the playback speed gradually slows down or speeds up in order to reach each target within in the seek time period. This gives you smooth acceleration and deceleration rather than sudden speed changes.

Since DJ mode is kind of like constant portamento (the playback transposition is constantly sliding all over the place), the pitch constraint options only work in robot mode.

The first thing to do if you want to impose pitch constraint is push the pitch constraint button in the upper right corner so that it's set to "notes" instead of "free." Now the changes in playback speed will be forced to be perfect semitone shifts up or down from the original playback speed.

You can further control Scrubby by allowing only certain semitone transposition intervals within each octave. You choose which intervals you want to allow by pressing keys on the pitch control keyboard picture or by playing notes on a MIDI instrument. The first key (what is represented by C) corresponds to the original speed, or octave transposition speeds, and the rest go up from there. The slide buttons to the right will shift your note selections up or down one semitone at a time. There are also a few preset buttons to the right. If you don't have any notes selected, you get silence.

Choosing the notes by playing them on a MIDI instrument is basically the same as choosing them by using Scrubby's graphical keyboard. When you play a note, that note is activated, and when you stop playing the note, that note becomes deactivated. The root MIDI note is C. One thing that is different, however, is that your MIDI instrument probably covers more than one octave of notes. Scrubby doesn't care which octave you play in, and nothing changes if you play the same note on different octaves at the same time, but the note won't deactivate until you stop playing it on all octaves. Also, clicking notes on the graphical keyboard will override any notes that you are playing via MIDI.

You can also constrain the range of speed transposition possibilities by using the octaves slider. You can set a minimum number of octaves transposition down and set a maximimum number of octaves up that you want to allow. Note that, unlike the other pitch constraint parameters, the octaves limiters are functional in all contexts (regardless of whether or not pitch constraint is enabled, and also regardless of the speed mode).


other stuff:

freeze:   If you enable freeze mode, the incoming audio stops being recorded into the delay buffer. Basically this means that you are stuck with whatever sound you have already captured in the buffer. It's like you are working with a discrete "sample," zipping around within it, until you unfreeze.

channels mode:   Channels split mode means that separate random target locations are calculated for each audio channel. Also, the seek rates and seek durations can be different in each channel if randomized parameter ranges are being used. In channels link mode, each channel always moves towards the same target in the same manner.
note: The channels mode parameter is only functional when Scrubby is processing more than one channel of audio. When Scrubby is processing mono, the parameter is ineffectual.

dry level:   the mix level of the unprocessed input audio

wet level:   the mix level of the processed audio



parameter adjustment tricks:   You can make fine adjustments by holding the shift key while adjusting a parameter with your mouse. You can also reset a parameter to its default value by holding the command ⌘ key (control on Windows) when clicking on it. You can move both points of a range slider together by holding the control key. You can move both points of a range slider, preserving their relationship, by holding the option key (alt on Windows), or clicking and dragging from a point between the two handles. You can make the two points of a range slider converge or diverge by holding the option (alt) and control keys while dragging up or down.