The music of a short film, written for one speaker: a falling fourth, four notes, eight movements.
1# Glossema: a score for one speaker2# https://lab.glossema.dev/play/glossema-intro3# D Dorian, 138 bpm. The seed: G falls to D. The theme: G D A F.45:localbeat 434ms;67:globalnotes{8"D3"=147;"E3"=165;"F3"=175;"G3"=196;"A3"=220;"B3"=247;"C4"=262;9"D4"=294;"Eb4"=311;"E4"=330;"F4"=349;"F#4"=370;"G4"=392;"A4"=440;10"B4"=494;"C5"=523;"D5"=587;"E5"=65911};1213:globaldurs{14"w"=($beat* 4);15"h"=($beat* 2);16"q"=$beat;17"e"=($beat/ 2)18};1920# $play "NOTE:dur" sounds one note; "-" is a rest21:globalplaydo={22:globalnotes;23:globaldurs;24:localcut[:find$1":"];25:localnote[:pick$1 0 $cut];26:localkey[:pick$1($cut+ 1)[:len$1]];27:locallen($durs->$key);28:if($note!="-")do={29:beepfrequency=($notes->$note)length=$len;30 }31:delay($len+ 20ms);32}3334# 1. Open: near silence; the seed, once, alone35:put"Open";36:localopen{"-:h";"G4:q";"-:e";"D4:h";"-:h"};37:foreachnin=$opendo={$play$n;}3839# 2. Voices: the theme, its answer a fifth up, its shadow an octave down, then woven40:put"Voices";41:localvoices{42"G4:q";"D4:e";"A4:e";"F4:h";"-:q";43"D5:q";"A4:e";"E5:e";"C5:h";"-:q";44"G3:q";"D3:e";"A3:e";"F3:h";"-:q";45"G4:e";"G3:e";"D4:e";"D3:e";"A4:e";"A3:e";"F4:e";"F3:e";46"G4:e";"D5:e";"D4:e";"A4:e";"A4:e";"E5:e";"F4:e";"C5:e";47"G3:e";"G4:e";"D5:e";"D3:e";"D4:e";"A4:e";48"A3:e";"A4:e";"E5:e";"F3:e";"F4:e";"C5:e";"-:q"49};50:foreachnin=$voicesdo={$play$n;}5152# 3. Reveal: F becomes F sharp; a rising line climbs through the theme53:put"Reveal";54:localreveal{55"G4:q";"D4:e";"A4:e";"F#4:h";56"D4:e";"E4:e";"F#4:e";"G4:e";"A4:e";"B4:e";"C5:e";"D5:e";57"G4:e";"A4:e";"D4:e";"B4:e";"A4:e";"C5:e";"F#4:e";"D5:e";58"G4:q";"D4:e";"A4:e";"F#4:q";"A4:q";"D5:h"59};60:foreachnin=$revealdo={$play$n;}6162# 4. Form: the rhythm alone on one pitch, then the pitches come back one by one63:put"Form";64:localform{65"D4:q";"D4:e";"D4:e";"D4:h";"-:q";66"D4:q";"D4:e";"D4:e";"D4:h";"-:q";67"D4:q";"D4:e";"D4:e";"F4:h";"-:q";68"G4:q";"D4:e";"D4:e";"F4:h";"-:q";69"G4:q";"D4:e";"A4:e";"F4:h";"-:q"70};71:foreachnin=$formdo={$play$n;}7273# 5. Doubt: E becomes E flat; the theme slows to bells, breathes, and a line falls, unresolved74:put"Doubt";75:localdoubt{76"G4:h";"D4:h";"A4:h";"F4:h";"-:e";77"Eb4:h";"D4:h";"-:q";78"D5:h";"C5:q";"B4:q";"A4:h";"-:e";79"G4:q";"F4:q";"Eb4:q";"D4:q";"Eb4:w"80};81:foreachnin=$doubtdo={$play$n;}8283# 6. Ink: octaves only, D in three registers, sparse84:put"Ink";85:localink{86"D4:q";"-:q";"D5:q";"-:q";"D3:q";"-:h";87"D4:q";"D5:e";"D3:e";"D4:h";"-:q";88"D3:q";"D4:e";"D5:e";"D3:h";"-:h"89};90:foreachnin=$inkdo={$play$n;}9192# 7. Read: the theme rebuilt note by note, then one unbroken run rising to a cadence93:put"Read";94:localread{95"G4:h";"-:h";96"G4:q";"D4:q";"-:h";97"G4:q";"D4:e";"A4:e";"-:h";98"G4:q";"D4:e";"A4:e";"F4:h";99"G4:e";"D4:e";"A4:e";"F4:e";100"A4:e";"E4:e";"B4:e";"G4:e";101"D5:e";"A4:e";"E5:e";"C5:e";102"A4:q";"G4:q";"F4:q";"E4:q";"D4:h"103};104:foreachnin=$readdo={$play$n;}105106# 8. Coda: the seed once more; G falls to D and stays107:put"Coda";108:localcoda{"-:q";"G4:h";"-:e";"D4:w";"D4:w"};109:foreachnin=$codado={$play$n;}
/
NoteFreqLine
On the router: paste the script into a terminal, or upload the file and run it.