# Thunderstruck - Angus Young and Malcolm Young (AC/DC, The Razors Edge, 1990) - https://lab.glossema.dev/play/thunderstruck/code # It plays the notes of https://lab.glossema.dev/play/thunderstruck, tone for tone. # The guitar riff that opens the record, one octave above the recording, at 112 ms a sixteenth. # One guitar, one note at a time: a fretted line on the B string, and the open B string # between every two of its notes, so that one line is heard as two voices. # The two opening figures play twice, two bars each; then the descent, one phrase of two bars, six times. # The last B is held as the arrangement's ending, where the record's riff runs on. { # Hz for each pitch: the riff one octave above the record, and the low B of the ending :local pitch {"B3"=247; "B4"=494; "D#5"=622; "E5"=659; "F#5"=740; "G5"=784; "G#5"=831; "A5"=880; "B5"=988} # The riff: each fretted note fills its sixteenth, and the open B answers it, cut short. # A bar holds eight fretted notes; a figure repeats until its bars are full. :local riff do={ :for pass from=1 to=((8 * $bars) / [:len $notes]) do={ :foreach note in=$notes do={ :beep frequency=($pitch->$note) length=107ms :delay 112ms :beep frequency=($pitch->"B4") length=85ms :delay 112ms } } } # The fretted notes of each part: G natural in the E and G figure, G sharp in the descent :local openDF {"D#5";"F#5"} :local openEG {"E5";"G5"} :local descent {"B5";"A5";"G#5";"A5";"G#5";"F#5";"G#5";"E5";"F#5";"D#5";"E5";"D#5";"E5";"D#5";"E5";"D#5"} :put "Intro" # The pickup: the open B alone :beep frequency=($pitch->"B4") length=85ms :delay 112ms # D sharp and F sharp for two bars, E and G for two, all four bars twice :for pass from=1 to=2 do={ $riff notes=$openDF bars=2 pitch=$pitch $riff notes=$openEG bars=2 pitch=$pitch } :put "The descent" # One phrase of two bars, from the top B down to D sharp, six times :for pass from=1 to=6 do={ $riff notes=$descent bars=2 pitch=$pitch } # The arrival: a bass B, then the top B that would open a seventh descent, held :beep frequency=($pitch->"B3") length=30ms :delay 35ms :beep frequency=($pitch->"B5") length=1500ms :delay 1500ms }