Some basic details:
c5 1/8 c5 c5 c5 c5 c5 c5 c5
- sound voices; halt voices;
e.g. sound 12; halt all;When a voice meets sound 12; the voices 1 and 2 become active, and start reading the score and emitting sound; when a voice meets these halt all; all the voices stop, and the piece actually ends.
One voice may activate or stop others, or itself.
- goto label
- the current voice plays the text following label: – the colon marks labels.
- send voices to label
- the voices play the text following label: – one voice may send other voices to labels.
In the score below there are many examples like:These are needed for synchronization, as several voices may read the same text at arbitrary times.halt 4; send 04 end107; end107: . . send 1 sca1; sound 1; sca1:
- gosub label
- The current voice goes to label and interprets the text there; eventually it meets the instruction ret and returns to the text after the gosub instruction.
This is quite standard notation in programming, in musical scores? refrains...
- if cur = voice0 ( ... text ... )
- Several voices may read the same text at arbitrary times. If the current voice is voice0, then the text in brackets is played; otherwise it is skipped.
- vvol
- the instruction for crescendo/diminuendo (vary volume). In the etudes, all the volumes are random.
- tra_voices = transpo
- the voices get transposed by transpo semitones; transpo may be positive, negative or zero. Exactly like orchestral transposing instruments.
|
The file colophon.txt, various details about the piece |
gosub before |
The introduction; see score below. |
|
Establishing G# minor at etude's start. |
|
Measures with idents 0 to 8, all in C minor |
|
Measures with idents 9 to 13, in Eb major |
: : : | |
|
Measure with id 24, in D minor |
|
Measure with id 25, in Eb major |
|
Establishing G# minor at etude's end. |
gosub after halt all; |
Play coda (see score below) then stop. |
before: tra_all=-1 send 1 sca1; sound 1; sca1: vvol rand/8+31 2/1; if cur=0 ( a6 1/16 a6 a6 a6 g6 f6 e6 d6 c6 r a5 g5 f5 e5 d5 r b4 a4 g4 f4 e4 r c4 b3 a3 b3 c4 r e4 f#4 g#4 a4 b4 r d5 e5 f#5 g#5 a5 r r r r r r r r r ) if cur=1 ( r 1/16 r r r r r r r r r r r a4 b4 c5 r e5 f#5 r a5 b5 r d6 e6 r g#6 a6 r c7 d7 r f#7 g#7 r g6 f6 r d6 c6 r a5 g5 r e5 d5 r b4 a4 halt; ) a4,e5,c6,a6 1/1 r/2 ret |
The introduction consists of G# minor scales in both hands, and the chord G#,D#,B,G#. The scales go in opposite directions. |
after: tra_all=-1 send 1 sca2; sound 1; sca2: vvol rand/8+31 2/1; if cur=0 ( a4 1/16 a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 a4 b4 c5 d5 e5 r g#5 a5 b5 c6 r e6 f#6 g#6 a6 r c7 d7 e7 f#7 r a6 g6 f6 e6 r c6 b5 a5 g5 r e5 d5 c5 b4 r ) if cur=1 ( a6 1/16 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 a6 g6 f6 r d6 c6 r a5 g5 r e5 d5 r b4 a4 r f4 e4 r c4 b3 r b3 c4 r e4 f#4 r a4 b4 r d5 e5 r g#5 a5 halt; ) send 1 arp3; sound 1; arp3: vvol rand/8+31 2/1; if cur=0 ( a7 1/16 a7 a7 e7 c7 a6 r a1 e2 c2 a1 r a1 e2 c2 a1 r a1 e2 c2 a1 r a1 e2 c2 a1 a1 r r r r r ) if cur=1 ( r 1/16 r r r r r r a7 e7 c7 a6 a6 e6 c6 a5 a5 e5 c5 a4 a4 e4 c4 a3 a3 e3 c3 a2 a2 e2 c2 a1 a1 halt; ) a2,c3,e3,a3 /1 ret |
The coda consists of G# minor scales in both hands, arpeggios G#,D#,B,G# in both hands, and a final chord G#,B,D#,G#. |