# Bumer (2003) - the phone's melody, Sergey Shnurov # https://lab.glossema.dev/play/bumer # --- Instrument: one beeper, equal temperament, fifth octave --- :global notes {"E5"=659; "G5"=784; "A5"=880; "B5"=988}; # --- Clock: 150 bpm, 4/4; e = eighth, qd = dotted quarter, h = half --- :global durs {"e"=200ms; "qd"=600ms; "h"=800ms}; :global gap 40ms; # --- One voice: "NOTE:dur" sounds, "-:dur" rests --- :global play do={ :global notes; :global durs; :global gap; :local cut [:find $1 ":"]; :local note [:pick $1 0 $cut]; :local slot ($durs->[:pick $1 ($cut + 1) [:len $1]]); :if ($note = "-") do={ :delay $slot; } else={ :local hold ($slot - $gap); :beep frequency=($notes->$note) length=$hold; :delay ($hold + $gap); } }; # --- The phrase: Em | C | Am | C --- :local phrase { "E5:e"; "G5:qd"; "-:h"; "G5:e"; "E5:qd"; "-:h"; "A5:e"; "G5:e"; "A5:e"; "G5:e"; "A5:e"; "G5:e"; "A5:e"; "G5:e"; "A5:e"; "B5:qd"; "-:h" }; # --- Ring --- :put "Ring"; :foreach n in=$phrase do={ $play $n; }; # --- Ring again --- :put "Ring again"; :foreach n in=$phrase do={ $play $n; }; # --- Unanswered: a second of silence, then once more --- :delay 1000ms; :put "Unanswered"; :foreach n in=$phrase do={ $play $n; };