Strudelify
Song of the Night cover art

1989 · Looking For Freedom

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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 2 · "SYNTH BASS"
const bass = note(`<
  A B C D E B C F@3 G F G H@2 F@3 G F G H@2 F I J K F@4 L@4 H@4 F@7 M L@3 N F O H P F M L Q F G F G H@2 F@3 G F G H@2 F
  J@2 K F@4 L@3 R H S H S F@7 O L@4 F O H@2 F T L@2 F@2 H@2 F@2 U ~
>`.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: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ e1 ~ f#1 ~", G: "d2 ~ d2 ~ a1 ~ b1 ~ a1 ~ a1 ~ e1 ~ f#1 ~",
  H: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ b1 ~ c#2 ~", I: "a1 ~@7", J: "a1@3 ~@11 e1@2", K: "a1 ~@5 e2@2",
  L: "d2 ~ d2 ~ a1 ~ b1 ~ d2 ~ d2 ~ a1 ~ b1 ~", M: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ f#1 ~ a1 ~",
  N: "d2 ~ d2 ~ a1 ~ b1 ~ d2 ~ d2 ~ b1 ~ d2 ~", O: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ e1 ~ a1 ~",
  P: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ b1 ~ e2 ~", Q: "e2 ~ b1@2 c#2 ~ e1@6 ~@4",
  R: "d2 ~ d2 ~ b1 ~ a1 ~ d2 ~ d2 ~ a1 ~ b1 ~", S: "e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~ e2 ~ c#2 ~ b1 ~",
  T: "a1 ~ a1 ~ e1 ~ f#1 ~ a1 ~ a1 ~ a1 ~ a1 ~", U: "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 I K@2 ~@2 L ~@3 M ~@5 I@2 N@2 ~@2 L ~@3 O ~ P ~ Q ~ R S ~@15 I@3 G@2 ~@2 R ~@3 P ~@3
  K@2 ~@6 L ~@3 T ~ P ~ U@2 L ~ N@2 V@2 W@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: "[[a4,c#5]@19 ~@13, e4@17 ~@15]/2", O: "[e4,a4,c#5]@13 ~@3",
  P: "[g#4,b4,e5]", Q: "[e4,a4,c#5]", R: "[f#4,a4,d5]@3 ~", S: "[g#4,b4,e5]@9 ~@7", T: "[e4,a4,c#5]@5 ~@3",
  U: "[[e4,a4,c#5]@5 ~@3]/2", V: "[[g#4,b4,e5]@3 ~]/2", W: "[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 I J K L ~ V W X Y Z AA AB AC AD@2 D ~ AE AF ~@15 I AG AH L ~
  AI AJ AK ~ P AL R S AM AN AO I AG AH L ~ AP AQ O ~ AR AA AB AC AS AT AU ~ AR AV AB AC AW AX D AY ~@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,c#5] ~@2 [e4,c#5] ~@2 b4 ~", 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: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [e4,c#5]@5 ~ b4 ~",
  W: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@4 ~@2 c#5 ~", X: "[d4,f#4]", Y: "~@7 c#5",
  Z: "[f#4,d5] ~ [f#4,d5] ~@3 c#5 ~ [f#4,d5] ~ d5@2 ~@2 c#5 ~, ~@10 f#4 ~@5", // D
  AA: "[g#4,e5] ~@3 [f#4,d5] ~@3 [e4,c#5] ~@3 [d4,b4] ~@3", AB: "[e4,c#5] ~ [e4,c#5] ~@5 [e4,c#5] ~ [e4,c#5] ~@3 b4 ~",
  AC: "[f#4,d5] ~@3 [e4,c#5] ~@3 [d4,b4] ~@3 [c#4,a4] ~@3", // D C#m G F#m
  AD: "[[e4,c#5] ~@3 [d4,b4] ~ [d4,b4]@12 ~@2 [c#4,a4] ~@3 [e4,c#5]@5 ~ [d4,b4] ~]/2", AE: "f#5 ~ e5 ~ d5 ~ a4 ~@9",
  AF: "g#5 ~ f#5 ~ e5 ~ b4 ~@9", AG: "[e4,c#5] ~@5 b4 ~ [e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~",
  AH: "[e4,c#5] ~@3 b4 ~@3 [f#4,d5]@4 ~@2 [e4,c#5] ~", AI: "[e4,c#5] ~@2 [e4,c#5]@2 ~ b4 ~ [e4,c#5]@4 ~@2 b4@2",
  AJ: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@5 ~ [e4,c#5] ~", AK: "[d4,f#4]@13 ~@3",
  AL: "[f#4,d5]@3 ~ c#5 ~@3 [g#4,e5]@3 ~@3 [f#4,d5] ~", AM: "e4 ~ f#4 ~@3 [e4,g#4] ~@3 [f#4,a4] ~@3 [g#4,b4] ~",
  AN: "~@4 [g#4,b4] ~@3 [b4,d5] ~@5 [e4,c#5] ~", AO: "[e4,c#5]@7 ~",
  AP: "[e4,c#5] ~@2 e4@2 ~ b4 ~ [e4,c#5] ~@5 b4 ~, ~@3 c#5 ~@12", // C#m
  AQ: "[e4,c#5] ~@2 [e4,c#5] ~@2 b4 ~ [f#4,d5]@4 ~@2 [e4,c#5] ~", // C#m D C#m
  AR: "[f#4,d5] ~ [f#4,d5] ~@3 c#5 ~ [f#4,d5] ~ [f#4,d5] ~@3 c#5 ~", AS: "[e4,c#5] ~@3 [d4,b4] ~ [d4,b4]@4 ~@6",
  AT: "~@4 [c#4,a4] ~@3 [e4,c#5]@2 ~@4 [d4,b4] ~", AU: "[c#4,a4] ~@3",
  AV: "[g#4,e5] ~@3 [f#4,d5] ~@3 [e4,c#5]@2 ~@2 [d4,b4] ~@3", AW: "[e4,c#5] ~@3 [d4,b4] ~ [d4,b4] ~@9",
  AX: "~@4 [c#4,a4] ~@3 [e4,c#5] ~@5 [d4,b4] ~", AY: "~@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 A B E F ~@8 G ~@11 H ~@3 I ~@2 J K ~@7 L ~@3 M ~@8 N O ~@19 P ~@3 M ~@2 J K ~@7 P ~@3 M ~@7 Q ~@7 R S ~
>`.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 ~ [f#4,d5]@2 ~ e5@2, ~@14 g#4 ~", F: "[a4,c#5]@7 ~@9", G: "c#4 d4 c#4 a3 e3@4",
  H: "[e4,c#5] ~ [e4,c#5]@2 ~@2 [d4,b4] ~ [c#4,a4]@5 ~@3", I: "[d4,f#4]@2 [e4,g#4]@3 ~ [f#4,a4]@2 ~@2 [f#4,d5]@3 ~@3",
  J: "~@10 [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~", K: "[f#4,d5]@3 ~ [e4,c#5] ~ [d4,b4]@7 ~@3",
  L: "[e4,c#5] ~ [e4,c#5]@2 ~@2 b4@2 [c#4,a4]@6 ~@2, ~@6 d4 ~@9", // C#m F#m
  M: "[d4,f#4]@2 [e4,g#4]@3 ~ [f#4,a4]@2 ~@2 [f#4,d5]@5 ~", N: "f#4@2 e4@2 d4@2 a3@7 ~@3",
  O: "g#4@2 f#4@2 e4@2 b3@5 ~@5", P: "[e4,c#5] ~ [e4,c#5]@3 ~ [d4,b4] ~ [c#4,a4]@7 ~",
  Q: "[e4,c#5]@2 ~@2 a4@2 [c#4,e4]@9 ~, ~@4 c#4 ~@11", R: "~@10 [e4,c#5] ~ c#5@2 [d4,b4] ~, ~@12 e4 ~@3",
  S: "[c#4,a4]@9 ~@7", // F#m
})).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 B C E ~@16 C F G E ~@13 H G E ~@31 I G E ~@13 I G E ~@19 C J E ~
>`.pickRestart({
  A: "~@7 b3", B: "e4@3 ~@13", C: "~@7 e4", D: "a3 ~@3", E: "a3@3 ~@13", F: "a3 ~@6 e4", G: "a3@3 ~@11 e4!2",
  H: "a3@3 ~@11 e4@2", I: "a3@2 ~@5 e4", J: "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 I@4 J@8 K@4 W@6 X@5 Y@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]@30 ~@2 [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 ~ [g#3,b3]@30 ~@2, a3@7 ~@17, ~@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: "[[e3,a3,c#4]@31 [e3,b3]@32 [e3,a3,c#4]@31 ~@2, ~@31 g#3@30 ~@35]/6", // A E5 A
  X: "[[f#3,a3,d4]@30 ~ [e3,a3,c#4]@31 ~@2 e3@16, ~@63 [g#3,b3]@17]/5", Y: "[~@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
const mid_tom = s("mt").struct("<[~@11 x ~@4] ~ [~@11 x ~@4] ~ [~@11 x ~@4] ~ [~@11 x ~@4] ~@110>").gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<[~@3 x!2 ~@3] ~ [~@3 x!2 ~@3] ~ [~@3 x!2 ~@3] ~ [~@6 x!3 ~@7] ~@110>").gain(0.48)

// drums · crash
// … 18 more lines

More by Hasselhoff David