* seq2.ny: Audio Selection Sequencer 2

Much improved over the sequencer I released in December 2004.

Load or create a brief piece of audio into Audacity [such as a
guitar pluck or bell sound, cat meow, someone saying "hello",
etc.]; select this audio, open Audio Selection Sequencer 2 in the
effects menu, set different values such as tempo, beats per
sequence, and semitone values of sequence, and seq2.ny will turn
your audio selection into a [repeated] sequence of notes based on
what you programmed.

Comes with an 8-note default pre-programmed sequence.

Features:

- you can set the volume for each generated note;

- you can set the pan position for each generated note if the
original audio selection is stereo;

- you can generate a series of transposed sequences;

- you can have the sequencer randomize the order of the notes you
programmed;

- you can have the sequencer randomize the timing of generated
notes;

- up to 96 sequential notes [which includes rests] for a single
sequence;

- you can set when the sequence should start [starting offset];

- and more.

Copy seq2.ny into your Audacity plug-ins folder, and start a new
session of Audacity. Load or create your short piece of audio. Open
effects menu and click on Audio Selection Sequencer 2. There is
already a short sequence and transposition values programmed into
seq2.ny.

Edit fields and explanations:


0. There are 6 input fields to enter semitone, volume and panning
values. The way seq2.ny works is best explained using a simple
example:

If you generate a brief tone at pitch middle C [the default pitch
of the Pluck generator, under the generate menu], and your first
programmed semitone value is 0, your first sequenced note will be
transposed 0 semitones [not at all].

A semitone value of 2 will transpose your audio up by two
semitones, or up to D using our example.

A semitone value of negative 5 [ -5 ] will transpose your tone down
by five semitones, to the G below middle C using our example.

Volume values are linear, as opposed to using decibel values. Which
means that if your volume value is 1, the generated note will be
full volume; 0.5 will be half volume, and 0 will generate a rest
[silence] in your sequence.

If you leave out volume and pan information for any note, the
default volume is 1.0.

Because the generated sequence is normalized to prevent clipping,
you can use any volume values - the resulting sequence will have
'relative' volumes for each note, depending on the relative volumes
you programmed.

Pan values are between 0 [left channel] and 1 [right channel]. Pan
values are ignored if panning is turned off [0, explained below],
or if your selected audio is mono.

If you leave out volume and pan values for any note, the default
pan value for that note is 0.5 [center].

In each of the 6 semitone/volume/pan [svp] input lines, you can
enter semitone values by themselves; semitone with volume values;
or semitone, volume and pan values, in this way:

0 4 7 12
[your note transposed 0, 4, 7, then 12 semitones from its original
pitch].

(0 .9)  (4 .5) (7 .2) (12 1)
[the same semitone values, with volume values 0.9 0.5 0.2 1.0
added]

(0 .9 0) (4 .5 .5) (7 .2 1) (12 1 .2)
[the same semitone and volume values, panned left, center, right,
then between the left channel and center]

To enter a rest, you can use a volume value of 0 if you wish, but
it's simpler to use one of the following:

Upper- or lower-case r [for 'rest']
upper- or lower-case n [for 'nil']
[all other letters are ignored]

() [open parenthesis followed by close parenthesis, with nothing
between them]

or a blank svp input line.


The 6 svp input lines are below the following input fields:


1. Tempo [beats per minute], beats per sequence, sequence starting
offset [beats]

Default values are

210.0 8 0.0

These three values should have at least one space between them,
otherwise you'll get unexpected timing results.

the tempo value can be a whole number or one with a decimal, for
precise tempo value.

The beats per sequence value is automatically converted into a
whole number, in case you accidentally add a decimal value [8.1
instead of 8 for instance].

the beats starting offset is the number of beats for the sequence
to start - this may be an integer [such as 16], or decimal number
[such as 6.5].


2. Pan stereo selection [0=no 1=yes]

If you've set this value to 1 (the default value) and your audio
selection is stereo, the sequencer will pan each generated note
according to how you've programmed the pan value for the note.

If panning is on, seq2.ny makes your stereo selection _sound_ mono
with each note, just panned to different stereo locations with each
note, depending on the pan values you set.

[Panning your sequenced notes means you will lose stereo
information, such as if your selection was quickly panned left-to-
right, or some other stereo effect.]

Pan values can be anywhere between 0 (left channel) and 1 (right
channel).

If you leave out pan information for any note, it will be panned to
center [0.5] by default.


3. Timing randomization [plus or minus percent]

Default 0 percent.

If this value is above zero, each generated note will be created in
a randomized timing manner.

For example, if you have set the tempo at 60bpm (1 beat per
second), and the random time value at 10 percent, each generated
note will be within one-tenth of a second of it's unrandomized time
'slot'.

Value can be up to 100 percent.

This is useful if for example you want a slightly 'humanized'
timing for sequenced drum sounds. The larger the timing
randomization value, the less precise the sequence will sound.

The randomization values are maintained for each 'small' sequence
repeated in the larger sequence.


4. Number of repeated randomized sequences

If this value is above zero, the sequencer will take the notes you
programmed, and randomly choose from these notes to generate your
sequence.  And then it will repeat this random sequence, depending
on how you've set up seq2.ny.

If you set this value to 2, the sequencer will 'throw' two copies
of your notes into the "digital pot" and randomly choose from these
notes to create your [repeated] sequence.

So, if you have set the beats-per-sequence value to 8 and you have
set random number of measures to 2, your resulting sequence will
contain 16 randomly-chosen notes.

The volume and pan values associated with each note are maintained
during randomization.

When first testing this feature, I liked one of the randomly-
generated sequences much better than the notes I had originally
programmed, so used these notes for the default note values now
programmed.


5. Overall transpose value, then for successive measures

The default values are 0 0 0 5 5 0 0 -5 -5 .

We'll ignore the first value for the moment.

All numbers which come after the first one set how many semitones
to transpose your sequence.

With the default settings in seq2.ny, you will hear an 8-beat
sequence twice, then repeated twice [transposed up by 5 semitones
from the original - a perfect fifth), then the first two measures
repeated, and then those two measures transposed down 5 semitones.

Now to the first value, the overall transposition value, default 0.

If you like your generated sequence but want to put it in a
different key (transposing the entire sequence a specific number of
semitones), set the first value to a different number: 1 will
transpose your entire sequence up one semitone, negative 2 [ -2 ]
will transpose your entire sequence down two semitones.

In similar fashion to creating a rest for a single note, you can
use 'r' or 'n' in place of a semitone transposition value.

this will create an extended rest for the duration of one 'small'
sequence.


6. Sequences to generate

In this sequencer, one full sequence is the number of notes you
programmed, multiplied by the number of random sequences [if
greater than 0], multiplied by the number of semitone transposition
values after the overall transpose value.

This is what gets repeated the "number of sequences" times.


Handy features:


1. The tempo value can be set by a number (such as the default
value 210.0 beats per minute), and also as a LISP math expression.

For example, if you want your tempo to be 3 times faster than the
default 210.0 bpm, you can use the following:

(* 210 3)

or 630bpm.

Similarly, if you want a reduced tempo [such as one-eighth of
210bpm], you can enter:

(/ 210 8)

or 26.25 bpm.


2. Semitone and transposition values can also be numbers with
decimal values.

a. For instance, a semitone value of 0.5 will transpose your
selection up by half a semitone.

b. If you generate one sequence, open a new track, load identical
audio as the original audio, set the overall transpose value 0.1
semitone above or below your previous overall transpose value,
generate your sequence, then listen to both tracks simultaneously,
you will hear a 'chorus' effect, produced by the two tracks being
one-tenth of a semitone out of pitch from each other. [Pitches of
the two audio selections which were sequenced need to be the same
to create this effect.]


Notes:


1. The sequencer transposes your audio selection by 'stretching' or
'shrinking' it - like playing a cassette or vinyl record at
different speeds.

So a semitone value of 12 will transpose your selection up one
octave [doubling its perceived frequency], at the same time cutting
its duration in half.


2. If the number of notes you programmed multiplied by the number
of random sequences is about 120 or greater, you will probably get
an error message and no generated sequence.


3. If your audio selection is silence, you will get silence for
your result! [I left out checking for a silent selection in case
someone wanted to be able to generate a specified beat duration of
silence.]

If you want to do this, make all semitone values 0, so your
generated silence is an exact beat duration.


Written by David R. Sky, August 2007
http://www.shellworld.net/~davidsky/
Released under terms of the GNU General Public License version 2
http://www.gnu.org/copyleft/gpl.html
