SSCSSS Version 2.0 - Tutorial - 03

Tutorial 3 - High Level (all following examples are high level)

Example 3

Though the low level type specification allows great detail, it can be too much detail. So, the high level type specification will probably be the most useful. The wave and sample naming convention is the same. In fact, the low level specification is generated by the program from the high level specification.

# Example  3 starts on the next line --

file ex03

voice ex03 Wv 8 28 103

set
filter lowpass 0 -6
formant cos 2000 6 1
split 4
condition > 0

# Example  3 ends on the previous line --

The line "set" and following lines replace the wave/sample/harmonic lines in a high level versus low level specification.

The line "set" tells the program that a high level specification follows. The word "set" is used because a set of one to four waves intended for one voice follows. (Or such was my idea writing the program. You can, of course, do whatever you want with the waves.)

The waves in the set are defined in three parts -- a description of the "sound" via harmonic ampltudes, a description of the samples to be generated, and a description of what harmonics to include in the samples for each wave. That is, how the sound is to be "split" into (possibly) multiple waves.

The "voice" line for a "voice" containing a "set" must have some additional arguments beyond thoses required for a voice with a "wave" specification. In the example above, the first number is the upward pitch bend in half notes or semi tones. This number will be used in deciding how many harmonics to generate for a sample. In this case 8. This should be the sum of the maximum upward change in the pitch by the pitch bend wheel and what ever else may be changing the pitch. (Pitch envelope, LFO etc.) More details below.

The next two numbers are the low and high MIDI note numbers for the range of notes for this voice. The use of these numbers is also described below.

Back to the set definition part 1 -- The "filter" and "formant" lines specify the amplitudes for harmonics -- that is the "sound" of the set. There are several kinds of "filters" and "formants" as well as an "offset" line that affect just one harmonic at a time. They will be described in more detail below.

The split line (set definition part 2) describes what samples are to be generated. The number (in this example 4) is the number of notes or keys on the keyboard that will be played with each sample. So, in this case, there will be a sample generated for every four notes starting with the low note from the voice line, up to the high note on the voice line. (The highest sample may cover fewer notes if the range is not evenly divisible by the number of notes per sample.) The center frequency for each sample will be the low note of the range for that sample. (Another method of specifying the samples will be described later.) All non-aliasing harmonics for each sample may be generated. (The "condition" lines below may further restrict which harmonics are actually generated.)

Digression -- What is aliasing?

Since the EX AWM2 voices, like all samplers I think, transposes a sample to get different pitches from that one sample, the upper limit on harmonics is determined taking this into account. To avoid aliasing the program must not try to generate harmonics whose frequency is greater than half the samplingr rate, that is not greater than 22,050 Hertz for the EX. The note range of the split and the bend parameter from the voice line are taken into account for this check. If the frequency for a harmonic transposed up by the number of notes per sample minus one plus the bend (in this example transposed up by (4 - 1) + 8 = 11 notes) is greater than 22,050 hertz, the harmonic is not generated.

The condition line (set definition part 3) -- describes what harmonics to include in the samples for this wave. In this case all harmonics with harmonics number greater than zero, that is all harmonics. (More complex conditions described later.)