Strudelify

Song of the Night

Hasselhoff David

KeyA majorTempo128 bpm
0:00/0:00
// Song of the Night — Hasselhoff David
// 128 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "SYNTHBRASS" synth brass 1 (copy of ch 6 "BRASS" brass section)
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E B F G@2 H I G I J@2 G@3 I G I J@2 G K L M G@4 N@4 J@4 G@7 O N@3 P G Q J R G O N S G I G I J@2 G@3 I G I J@2
  G L@2 T G@4 N@3 U J V J V G@7 Q N@4 G Q J@2 G W N@2 G@2 J@2 G@2 X ~
>`.pickRestart({
  A: "~@6 e1 ~ e1 ~@2 e1 ~@2 e1 ~", B: "e1@2 ~@4 e1!2 e1@3 ~@3 e1!2", C: "e1@4 ~@2 e1 ~ e1@2 ~ e1@2 ~ e1 ~",
  D: "~ a1@2 ~@3 a1!2 a1@3 ~@3 a1!2", E: "a1@4 ~@2 a1 ~ a1 ~@2 a1 ~@2 a1 ~", F: "e1@3 ~@3 e1 ~ e1 ~@2 e1 ~@2 e1 ~",
  G: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ e1 ~ f#1 ~", H: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1@2 e1 ~ f#1 ~",
  I: "d2 ~ d2 ~ a1 ~ b1 ~ a1 ~ a1 ~ e1 ~ f#1 ~", J: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ b1 ~ c#2 ~", K: "a1 ~@7",
  L: "a1@3 ~@11 e1@2", M: "a1 ~@5 e2@2", N: "d2 ~ d2 ~ a1 ~ b1 ~ d2 ~ d2 ~ a1 ~ b1 ~",
  O: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ f#1 ~ a1 ~", P: "d2 ~ d2 ~ a1 ~ b1 ~ d2 ~ d2 ~ b1 ~ d2 ~",
  Q: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ e1 ~ a1 ~", R: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ b1 ~ e2 ~",
  S: "e2 ~ b1@2 c#2 ~ e1@6 ~@4", T: "a1@3 ~@9 e2@4", U: "d2 ~ d2 ~ b1 ~ a1 ~ d2 ~ d2 ~ a1 ~ b1 ~",
  V: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ c#2 ~ b1 ~", W: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ a1 ~ a1 ~", X: "a1",
})).s("gm_synth_bass_2").gain(0.54)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E F G@2 ~@7 H ~@7 I J@2 K@2 ~@2 L ~@3 M ~@5 N@2 O@2 ~@2 L ~@3 P ~ Q ~ R ~ S T ~@15 I@3 G@2 ~@2 U ~@3 Q ~@3
  K@2 ~@6 L ~@3 V ~ Q ~ W@2 X@2 Y@2 Z@2 AA@2 ~@2
>`.pickRestart({
  A: "~@6 [g#4,b4,e5]!2 [g#4,b4,e5]@5 ~ [g#4,b4,e5] [g#4,b4]", B: "[g#4,b4]@13 ~@3, e5 ~@15",
  C: "~@6 [e4,a4,c#5]!2 [e4,a4,c#5]@5 ~ [e4,a4,c#5]!2", D: "[e4,a4,c#5]@15 ~",
  E: "~@6 [g#4,b4,e5]!2 [g#4,b4,e5]@5 ~ [g#4,b4,e5]!2", F: "[g#4,b4,e5]@3 ~", G: "[[e4,a4,c#5]@19 ~@13]/2",
  H: "c#5 d5 c#5 a4 e4@4", I: "[e4,a4,c#5]@5 ~@11", J: "[e4,a4,c#5] ~@3", K: "[[e4,a4,c#5]@21 ~@11]/2",
  L: "[f#4,a4,d5]", M: "[g#4,b4,e5]@7 ~", N: "[e4,a4,c#5]@3 ~@5", O: "[[a4,c#5]@19 ~@13, e4@17 ~@15]/2",
  P: "[e4,a4,c#5]@13 ~@3", Q: "[g#4,b4,e5]", R: "[e4,a4,c#5]", S: "[f#4,a4,d5]@3 ~", T: "[g#4,b4,e5]@9 ~@7",
  U: "[f#4,a4,d5]@13 ~@3", V: "[e4,a4,c#5]@5 ~@3", W: "[[e4,a4,c#5]@5 ~@3]/2", X: "[[f#4,a4,d5]@9 ~@7]/2",
  Y: "[[e4,a4,c#5]@9 ~@7]/2", Z: "[[g#4,b4,e5]@3 ~]/2", AA: "[e4,a4,c#5]/2",
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.3)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  A B C D E B F G@2 H I G J K L G M H N G O P@2 Q R@3 G H G@2 S T U S V@2 W X Y Z AA AB AC AD@2 AE S@4 G H AF@2 G@2 S AG
  G N AH AI P AF G@3 AI AJ AI P@2 Q R@3 AE G@3 AK AL T AM L V AN AO AP AQ AR AS G@2 AT AE S T@2 S H AU AF AV H G T S H
  AW AF AN AX AY R ~
>`.pickRestart({
  A: "~@8 e5@2 ~ [d5,b5] ~@2 [c#5,a5] ~, ~@8 c#6 ~@7", B: "[g#5,e6] ~@15",
  C: "~@6 e5 ~ d6@2 ~ [e5,c#6] ~@2 [d5,b5] ~, ~@8 f#5 ~@7", D: "[c#5,a5] ~@15",
  E: "~@6 e5 ~ c#6@2 ~ b5@2 ~ [c#5,a5] ~, ~@8 e5 ~@2 d5 ~@4", F: "~@6 e5 ~ c#6@2 ~ [f#5,d6] ~@2 [g#5,e6] ~, ~@8 e5 ~@7",
  G: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  H: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  I: "~@2 [f#4,a4,d5] ~@7 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // D A
  J: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@5 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // D A
  K: "~@2 [e4,g#4,d5] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // E7 E
  L: "~@2 [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // E
  M: "c#5@2 d5 ~ c#5 ~ a4 ~ e4 ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  N: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // D A
  O: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@5 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // D A
  P: "~@2 [e4,g#4,b4] ~ [e4,g#4,b4] ~@3 [e4,g#4,b4] ~ [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // E
  Q: "~@2 [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", R: "[e4,a4,c#5] ~@15",
  S: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~", // D
  T: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  U: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~", // D D5 D
  V: "~@2 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~", // E
  W: "~@2 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [b4,e5] ~", // E E5
  X: "~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~", // E
  Y: "~@2 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  Z: "~@2 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [a4,c#5] ~@3 [e4,a4,c#5] ~@3 [a4,c#5] ~", // A
  AA: "~@2 [a4,c#5] ~@3 [e4,a4] ~ [a4,c#5] ~ [a4,c#5] ~@3 [a4,c#5] ~", // A A5 A
  AB: "~@2 [e4,a4,c#5] ~@3 [a4,c#5] ~@3 e4 ~@3 [e4,a4] ~", // A A5
  AC: "~@2 [a4,c#5] ~@3 [e4,a4] ~ [a4,c#5] ~ [a4,c#5] ~@3 [e4,a4] ~", // A A5 A A5
  AD: "[a4,c#5] ~ [a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4] ~", // A A5
  AE: "[e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  AF: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E
  AG: "~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~@9", // E
  AH: "~@2 [e4,a4,c#5] ~ c#5 ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  AI: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // D A
  AJ: "~@4 [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 a4 ~@3 [e4,a4,c#5] ~", // A
  AK: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  AL: "~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  AM: "[f#4,a4,d5] ~ [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  AN: "~@2 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~", // E
  AO: "~@2 [g#4,b4,e5] ~ b4 ~ [g#4,b4,e5] ~@3 [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~", // E
  AP: "~@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  AQ: "~@2 [a4,c#5,e5] ~@3 [e4,a4,c#5] ~@3 [a4,c#5,e5] ~@3 [e4,a4,c#5] ~", // A
  AR: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [a4,c#5,e5] ~@3 [e4,a4,c#5] ~", // A
  AS: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4] ~@3 [e4,a4,c#5] ~", // A A5 A
  AT: "[e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~ c#5 ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  AU: "~@2 [e4,a4,c#5] ~ [a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  AV: "~@2 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~", // E
  AW: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~@3 [e4,a4,c#5] ~", // A
  AX: "~@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~", // A
  AY: "~@2 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~@3 [e4,a4,c#5] ~ [e4,a4,c#5] ~@3", // A
})).s("gm_pizzicato_strings").gain(0.3).pan(0.7)

// chords · vibraphone
const vibraphone = note(`<
  A B C D A E F G ~@8 H ~@7 I J K L ~ M N O ~ P Q R S T@2 U V W X Y ~ Z AA AB AC AD AE AF AG AH@2 AI ~ AJ AK ~@15 AL AM
  AN AO ~ AP AQ AR ~ AS AT R S AU AV AW AL AM AN AO ~ AX AY O ~ AZ AE AF AG BA BB BC ~ AZ BD AF AG BE BF D BG ~@2
>`.pickRestart({
  A: "~@6 e4 ~ [e4,c#5]@2 ~ b4@2 ~ [c#4,a4] ~, ~@11 d4 ~@4", B: "[g#4,e5]@9 ~@7",
  C: "~@6 e4 ~ [f#4,d5] ~@2 [e4,c#5] ~@2 [d4,b4] ~", D: "[c#4,a4]@5 ~@3", E: "[g#4,e5]@3 ~@13",
  F: "~@6 e4 ~ [e4,c#5] ~@2 [f#4,d5] ~@2 [g#4,e5] ~", G: "[a4,c#5]@13 ~@3", H: "c#5 d5 c#5 a4 e4@4",
  I: "~@8 e4@2 ~ [e4,c#5] ~@2 b4 ~, ~@8 c#5 ~@7", J: "[e4,c#5]@3 ~@3 b4 ~ [e4,c#5] ~@2 [e4,c#5]@2 ~ b4 ~",
  K: "[e4,c#5]@3 ~ b4 ~@3 [f#4,d5]@5 ~ [e4,c#5] ~", L: "[c#4,e4]@7 ~",
  M: "[e4,c#5] ~@2 [e4,c#5]@2 ~ b4 ~ [e4,c#5]@5 ~ b4 ~", N: "[e4,c#5]@2 ~ [e4,c#5]@2 ~ b4 ~ [f#4,d5]@4 ~@2 [e4,c#5] ~",
  O: "[d4,f#4]@15 ~", P: "[f#4,d5] ~@2 d5@2 ~ c#5 ~ [f#4,d5]@3 ~ c#5@2 ~@2, ~@3 f#4 ~@12",
  Q: "[f#4,d5]@5 ~ c#5 ~ [g#4,e5]@5 ~ [f#4,d5] ~", R: "[e4,g#4]@13 ~@3", S: "~@14 f#4 ~",
  T: "[e4 ~ f#4@2 ~@2 [e4,g#4]@2 ~@2 f#4@2 ~@2 [g#4,b4]@5 ~ [g#4,b4] ~@3 [b4,d5]@3 ~@3 [e4,a4,c#5] ~, ~@10 a4 ~@21]/2", // E G#m Bm A
  U: "[a4,c#5]@15 ~, e4 ~@7", V: "~@8 [e4,c#5] ~@2 c#5@2 ~ b4 ~, ~@11 e4 ~@4",
  W: "[e4,c#5]@2 ~@4 b4 ~ [e4,c#5] ~@2 c#5@2 ~ b4 ~, ~@11 e4 ~@4", X: "[e4,c#5]@2 ~@2 b4 ~@3 [f#4,d5]@4 ~@2 [e4,c#5] ~",
  Y: "[c#4,e4]@13 ~@3", Z: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [e4,c#5]@5 ~ b4 ~",
  AA: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@4 ~@2 c#5 ~", AB: "[d4,f#4]", AC: "~@7 c#5",
  AD: "[f#4,d5] ~ [f#4,d5] ~@3 c#5 ~ [f#4,d5] ~ d5@2 ~@2 c#5 ~, ~@10 f#4 ~@5", // D
  AE: "[g#4,e5] ~@3 [f#4,d5] ~@3 [e4,c#5] ~@3 [d4,b4] ~@3", AF: "[e4,c#5] ~ [e4,c#5] ~@5 [e4,c#5] ~ [e4,c#5] ~@3 b4 ~",
  AG: "[f#4,d5] ~@3 [e4,c#5] ~@3 [d4,b4] ~@3 [c#4,a4] ~@3", // D C#m G F#m
  AH: "[[e4,c#5] ~@3 [d4,b4] ~ [d4,b4]@12 ~@2 [c#4,a4] ~@3 [e4,c#5]@5 ~ [d4,b4] ~]/2", AI: "[c#4,a4]@11 ~@5",
  AJ: "f#5 ~ e5 ~ d5 ~ a4 ~@9", AK: "g#5 ~ f#5 ~ e5 ~ b4 ~@9", AL: "~@8 [e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~",
  AM: "[e4,c#5] ~@5 b4 ~ [e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~", AN: "[e4,c#5] ~@3 b4 ~@3 [f#4,d5]@4 ~@2 [e4,c#5] ~",
  AO: "[c#4,e4]@15 ~", AP: "[e4,c#5] ~@2 [e4,c#5]@2 ~ b4 ~ [e4,c#5]@4 ~@2 b4@2",
  AQ: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@5 ~ [e4,c#5] ~", AR: "[d4,f#4]@13 ~@3",
  AS: "[f#4,d5] ~@2 [f#4,d5] ~@2 c#5 ~ [f#4,d5]@3 ~ c#5@2 ~@2", AT: "[f#4,d5]@3 ~ c#5 ~@3 [g#4,e5]@3 ~@3 [f#4,d5] ~",
  AU: "e4 ~ f#4 ~@3 [e4,g#4] ~@3 [f#4,a4] ~@3 [g#4,b4] ~", AV: "~@4 [g#4,b4] ~@3 [b4,d5] ~@5 [e4,c#5] ~",
  AW: "[e4,c#5]@7 ~", AX: "[e4,c#5] ~@2 e4@2 ~ b4 ~ [e4,c#5] ~@5 b4 ~, ~@3 c#5 ~@12",
  AY: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@4 ~@2 [e4,c#5] ~", // C#m D C#m
  AZ: "[f#4,d5] ~ [f#4,d5] ~@3 c#5 ~ [f#4,d5] ~ [f#4,d5] ~@3 c#5 ~", BA: "[e4,c#5] ~@3 [d4,b4] ~ [d4,b4]@4 ~@6",
  BB: "~@4 [c#4,a4] ~@3 [e4,c#5]@2 ~@4 [d4,b4] ~", BC: "[c#4,a4] ~@3",
  BD: "[g#4,e5] ~@3 [f#4,d5] ~@3 [e4,c#5]@2 ~@2 [d4,b4] ~@3", BE: "[e4,c#5] ~@3 [d4,b4] ~ [d4,b4] ~@9",
  BF: "~@4 [c#4,a4] ~@3 [e4,c#5] ~@5 [d4,b4] ~", BG: "~@6 c#4 ~ e4 ~ a4 ~@3 a4 ~",
})).s("gm_vibraphone").gain(0.3).pan(0.4)

// chords · brass section · "BRASS"
const brass_section = note(`<
  A B C D E F G H ~@8 I ~@11 J ~@3 K ~@2 L M ~@7 N ~@3 O ~@8 P Q ~@19 R ~@3 S ~@2 L T ~@7 R ~@3 U ~@7 V ~@7 W X ~
>`.pickRestart({
  A: "~@6 e4 ~ [e4,c#5]@2 ~ [d4,b4]@2 ~ [c#4,a4] ~", B: "[g#4,e5] ~@7",
  C: "~@6 e4 ~ [f#4,d5]@2 ~ [e4,c#5]@2 ~ [d4,b4] ~", D: "[c#4,a4]@3 ~@13",
  E: "~@6 e4 ~ [e4,c#5]@2 ~ [d4,b4]@3 [c#4,a4] ~", F: "[g#4,e5]@3 ~@13",
  G: "~@6 e4 ~ [e4,c#5]@2 ~ [f#4,d5]@2 ~ e5@2, ~@14 g#4 ~", H: "[a4,c#5]@7 ~@9", I: "c#4 d4 c#4 a3 e3@4",
  J: "[e4,c#5] ~ [e4,c#5]@2 ~@2 [d4,b4] ~ [c#4,a4]@5 ~@3", K: "[d4,f#4]@2 [e4,g#4]@3 ~ [f#4,a4]@2 ~@2 [f#4,d5]@3 ~@3",
  L: "~@10 [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~", M: "[f#4,d5]@3 ~ [e4,c#5] ~ [d4,b4]@7 ~@3",
  N: "[e4,c#5] ~ [e4,c#5]@2 ~@2 b4@2 [c#4,a4]@6 ~@2, ~@6 d4 ~@9", // C#m F#m
  O: "[d4,f#4]@2 [e4,g#4]@3 ~ [f#4,a4]@2 ~@2 [f#4,d5]@5 ~", P: "f#4@2 e4@2 d4@2 a3@7 ~@3",
  Q: "g#4@2 f#4@2 e4@2 b3@5 ~@5", R: "[e4,c#5] ~ [e4,c#5]@3 ~ [d4,b4] ~ [c#4,a4]@7 ~",
  S: "f#4@2 [e4,g#4]@3 ~ [f#4,a4]@3 ~ [f#4,d5]@6, d4 ~@15", T: "[f#4,d5]@3 ~ [e4,c#5] ~ [d4,b4]@6 ~@4",
  U: "[d4,f#4]@2 [e4,g#4]@3 ~ [f#4,a4]@2 ~@2 [f#4,d5]@6", V: "[e4,c#5]@2 ~@2 a4@2 [c#4,e4]@9 ~, ~@4 c#4 ~@11",
  W: "~@10 [e4,c#5] ~ c#5@2 [d4,b4] ~, ~@12 e4 ~@3", X: "[c#4,a4]@9 ~@7",
})).s("gm_brass_section").gain(0.48).pan(0.6)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B C D A E C D ~@16 C F G H ~@13 I G H ~@31 J K H ~@13 J K H ~@19 C L H ~
>`.pickRestart({
  A: "~@7 b3", B: "e4@3 ~@13", C: "~@7 e4", D: "a3 ~@3", E: "e4 ~@3", F: "a3 ~@6 e4", G: "a3@3 ~@11 e4!2",
  H: "a3@3 ~@13", I: "a3@3 ~@11 e4@2", J: "a3@2 ~@5 e4", K: "a3@4 ~@10 e4!2", L: "a3@2 ~@12 e4!2",
})).s("gm_string_ensemble_1").gain(0.35)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  ~ A@6 B@3 C@8 D@2 E@5 F@2 G@4 H@4 I@4 J@8 K@4 L@4 M@2 N@2 O P@2 Q@6 R@2 S@3 T@2 U V G@4 K@4 W@4 J@8 K@4 X@6 Y@5 Z@4 ~
>`.pickRestart({
  A: "[b3@16 c#4@16 [g#3,b3]@15 ~, e4@31 ~, g#3@15 ~ a3@15 ~@17]/6", B: "[[e3,a3,c#4]@47 ~]/3",
  C: "[[f#3,d4]@7 [e3,c#4]@24 ~ [f#3,d4]@7 c#4@9 [g#3,b3]@31 ~ [e3,a3]@47 ~, a3@47 ~@32 c#4@47 ~@2, ~@39 e3@39 ~@50]/8", // D C#m D G#m A5
  D: "[[f#3,a3,d4]@7 ~ [e3,a3]@23 ~, ~@7 c#4@24 ~]/2", // D A5
  E: "[[f#3,d4]@7 c#4@8 b3@33 [a3,c#4]@20 ~@12, a3@14 ~ g#3@31 ~@34, ~@7 e3@61 ~@12]/5", // D A
  F: "[[e3,a3,c#4]@3 ~@12 [e3,a3,c#4]@3 ~@14]/2", G: "[[e3,a3,c#4]@63 ~]/4", H: "[[f#3,d4]@31 ~, a3@15 ~]/4",
  I: "[[g#3,b3,e4]@61 ~@3]/4", J: "[[e3,a3,c#4]@127 ~]/8", K: "[[f#3,a3,d4]@31 ~]/4",
  L: "[[e3,a3,c#4]@31 ~ [e3,b3]@31 ~, ~@31 g#3@30 ~@3]/4", M: "[[e3,a3,c#4]@31 ~]/2",
  N: "[[f#3,a3,d4]@13 ~@3 [g#3,b3]@12 ~@4, ~@15 e4@11 ~@6]/2", O: "[e3,a3,c#4]@15 ~",
  P: "[[f#3,d4]@3 [e3,c#4]@12 ~, a3@15 ~]/2", // D C#m
  Q: "[[f#3,a3,d4]@6 [a3,c#4]@9 b3@32 ~ [a3,c#4]@47 ~, ~@3 e3@44 ~, ~@5 g#3@10 ~@17]/6", // D A
  R: "[[f#3,a3,d4]@6 [e3,a3,c#4]@25 ~]/2", S: "[[f#3,d4]@6 c#4@9 ~ b3@31 ~, a3@14 ~@2 g#3@29 ~@3, ~@3 e3@20 ~]/3",
  T: "[[e3,a3,c#4]@5 ~@3]/2", U: "[e3,a3,c#4]@3 ~@13", V: "[e3,a3,c#4] ~@3", W: "[[g#3,b3,e4]@31 ~]/4",
  X: "[[e3,a3,c#4]@31 [e3,b3]@32 [e3,a3,c#4]@31 ~@2, ~@31 g#3@30 ~@35]/6", // A E5 A
  Y: "[[f#3,a3,d4]@30 ~ [e3,a3,c#4]@31 ~@2 e3@16, ~@63 [g#3,b3]@17]/5", Z: "[~@15 [e3,a3,c#4]@47 ~@2]/4",
})).s("gm_synth_strings_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ A B A B A B C@17 B@3 C@31 D C@15 B@3 C@38 B ~>".pickRestart({
  A: "x!2", B: "x", C: "x!4", D: "x ~ x!2 ~@4",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A C@16 D E@2 F C@13 D C@15 D C G C@14 D E@2 F C@15 D C@13 H C@7 H ~@2
>`.pickRestart({
  A: "~@6 x ~ x ~@2 x ~@2 x ~", B: "~@6 x!2 ~@6 x!2", C: "~ x ~ x", D: "~@4 x ~@7 x ~ x!2", E: "~@7 x",
  F: "~@10 x ~ x ~ x!2", G: "~ x ~@2", H: "~@4 x ~@5 x ~ x ~ x!2",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<[~@7 x] ~ [~@7 x] ~ [~@7 x] ~ [~@7 x] ~@110>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ A@2 ~@4 B@17 A@2 C B@31 D B@15 A@2 C B@38 A ~>".pickRestart({
  A: "x", B: "x!8", C: "x ~@6 x", D: "x!4 ~@4",
})).gain(0.4)

// drums · mid tom
// … 24 more lines

More by Hasselhoff David