Using the default event prototype, pitch and rhythm can be specified in Pbind at different levels depending on the musical requirement. The default event prototype includes logic to convert higher-level abstractions into the physical parameters that are useful for synthesis.
The descriptions below start with the ending value that will actually be used, following up with the other values that are used in the calculations: e.g., \delta is based on \dur and \stretch. The calculations may be bypassed by providing another value for the calculated item. If your pattern specifies
\stretch are ignored.
Note also that there is no obligation to use these constructs. The default event prototype is not meant to enforce one model of pitch or rhythm over any other; it simply provides these options, which you may use if they suit the task, or ignore or override if your task calls for something else entirely.
Rhythm is based on
\sustain event keys. Both of these can be calculated from higher-level abstractions:
delta = dur * stretch.
\sustainbeats, a release message will be sent to the synth node setting its
0. Your SynthDef should use
gatein an EnvGen based on a sustaining envelope (see Env), and the EnvGen should have a
doneAction( Done ) that releases the synth at the end. You can give the sustain pattern directly, or the default event prototype can calculate it for you based on:
1.0means this synth will release exactly at the onset of the next;
0.5means the last half of the duration will be a rest. Values greater than
1.0produce overlapping notes.
sustain = dur * legato * stretch.
Pitch handling in the default event is rich, with a large number of options. To use events, it is not necessary to understand all of those options. As the examples have shown, a note-playing pattern produces sensible results even specifying only
\degree. The other parameters allow you to control how the event gets from
\degree to the frequency that is finally passed to the new synth. The default event prototype includes reasonable defaults for all of these.
To go from the highest level of abstraction down:
0.1to an integer scale degree raises the corresponding chromatic note number by a semitone, and subtracting
0.1lowers the chromatic note number.
0.2raises or lowers by two semitones, and so on.
\degreebased on a
\scaleand modal transposition (
\mtranspose, scale degrees to raise or lower the note).
\noteis in equal-tempered units of any number of steps to the octave (
\note, transposed into the right
\octaveand applying gamut transposition (
\gtranspose, given in stepsPerOctave units). If
\stepsPerOctaveis anything other than
12, the non-12ET units are scaled into 12
\midinoteunits per octave.
midicps. A chromatic transposition in 12ET units (
\ctranspose) is added.
Most note-playing SynthDefs use
freq as an argument. If desired, they may use
note or even
To simplify into rules of thumb:
\notein your Pbind, with the filter pattern Pavaroh.
\stepsPerOctavefor equal temperament other than 12 notes).
\midinotewill also work.
Following is a complete description of all elements of the pitch system. Feel free to use the ones that are of interest, and ignore the rest.
\note = 0. The default is
5, mapping note
0onto MIDI note
\noteunits map onto the octave. Supports non-12ET temperaments.
\noteunits. Added to note.
0is the scale root. Calculated based on:
[0, 2, 4, 5, 7, 9, 11].
See also the Scale class for a repository of scale configurations, and the possibility of non-ET tuning.
( // approximate a major scale with a 19TET chromatic scale p = Pbind( \scale, #[0, 3, 6, 8, 11, 14, 17], \stepsPerOctave, 19, \degree, Pwhite(0, 7, inf), \dur, 0.125, \legato, Pexprand(0.2, 6.0, inf) ).play; ) p.stop;
Finally, you can specify amplitude as
\amp. If it's given as
\db, the amplitude will be calculated automatically using
Previous: Pattern Guide 06g: Data Sharing