Strudelify
Man From Milwaukee (Garage mix) cover art

Middle Of Nowhere

Man From Milwaukee (Garage mix)

Hanson

KeyA majorTempo108 bpm
0:00/0:00
// Man From Milwaukee (Garage mix) — Hanson
// 108 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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.

// chords · overdriven guitar · "guitar*merged"
const overdriven_guitar = note(`<
  ~ A B C D A B C D E F G@2 E F G@2 H I J K L M N O P Q R S T U V W X Y E F G@2 E F G@2 H I J K L M N O P Q R Z T U V AA
  AB AC AD@2 AE AF AG@2 A B C D E F G@2 E F G@2 H I J K AH Q R Z T U V AA AI AA AJ AK AL
>`.pickRestart({
  A: "b2@7 ~ b2@5 ~@2 e2@2 ~ d#3 f#2@4 f#2@4 f#2@5, e2@14 b2@2 ~ c#3@5 ~ c#3@9",
  B: "[a2,e3]@7 ~ [a2,e3]@5 ~ a2@2 ~@3 b2@4 ~ b2@4 b2@3 ~, ~@13 e3@3 b2@2 ~@14, ~@17 f#3@6 ~ f#3@8", // A5
  C: "[e2,b2]@7 ~ [e2,b2]@6 ~@5 c#3@5 f#2@8, ~@7 b2 f#2@3 ~@5, ~@15 c#3@4 ~@13", // E5
  D: "[a2,e3]@7 ~ e3@5 ~ e3@2 a2@2 ~@2 a2@3 ~ [a2,e3]@8, ~@18 e3@5 ~@9", // A5
  E: "[e2,b2]@7 ~ [e2,b2]@4 ~ a2@8 ~@3 a2@7 ~, ~@13 e3@7 ~ e3@11", // E5
  F: "[e2,b2]@7 ~ [e2,b2]@4 ~ e3@7 ~@4 a2@7 ~, ~@12 a2@9 e3@11", // E5
  G: "[[d3,a3]@7 ~@16 d3@7 ~@2 a3@7 [d3,a3]@4 ~ b2@8 ~@4 e2@7 ~, ~@7 a3@4 ~ a3@7 ~ a3@11 ~@21 b2@11 ~, ~@8 d3@7 ~ d3@7 ~@8 d3@6 ~@7 e2@12 ~@8]/2", // D5
  H: "f#2@8 ~@16 f#2@7 ~, c#3@12 c#3@7 ~ c#3@11 ~, ~@9 f#2@7 f#2@7 ~@9",
  I: "[a2,e3]@7 ~@17 a2@8, ~@8 a2@15 ~@9, ~@12 e3@19 ~", // A5
  J: "[d3,a3]@7 ~ d3@4 a3@7 ~@9 a3@3 ~, ~@7 a3@5 ~@8 a3@7 ~@5, ~@3 d3", // D5
  K: "[d3,a3]@3 ~@3 a3@2 d3@2 ~@2 d3@3 ~, ~@6 a3@5 ~@9 a3@12, ~@8 d3@7 ~@17", // D5
  L: "f#2@8 ~@12 c#3@4 f#2@2 ~ f#2@5, c#3@11 ~ c#3@7 ~@7 c#3@6, ~@8 f#2@7 ~ f#2@7 ~@9",
  M: "[a2,e3]@7 ~@5 e3@7 ~@9 e3@4, ~@7 e3@3 ~@10 e3@7 ~@5, ~@8 a2@15 ~ a2@8", // A5
  N: "[d3,a3]@7 ~@13 a3@8 a3@3 ~, ~@7 a3@4 ~ a3@7 ~@13, ~@9 d3@7 d3@15 ~", // D5
  O: "d3@7 ~@5 a3@7 ~@5 d3@8, a3@5 ~@2 a3@4 ~@9 a3@12, ~@8 d3@15 ~@9",
  P: "e2@7 ~ e2@4 c#3@7 ~@5 f#2@8, b2@12 f#2@11 ~@9, ~@5 c#3@2 ~",
  Q: "a2@4 ~@8 b2@3 ~, e3@12 f#3@7 ~ f#3@12, ~@9 a2@6 ~ b2@8 ~@8", R: "[e2,b2]@2 [e2,b2] [f#2,c#3]@3 [f#2,c#3]@2",
  S: "[a2,e3]@7 ~ [a2,e3]@4 [b2,f#3]@8 ~ b2@2 ~ [b2,f#3]@8, ~@20 f#3@3 ~@9", // A5 B5
  T: "e2@7 e2@5 [f#2,c#3]@10 ~ [c#3,d3]@2 ~@3 c#3@4, b2@12 ~@11 f#2@9", // F#5 Dmaj7
  U: "~ e3@7 [a2,e3]@4 b2@8 ~@4 b2@6 ~@2, a2@7 ~@5 f#3@7 ~ f#3@11 ~", // A5
  V: "[e2,b2]@7 ~ e2@4 c#3@7 ~@5 f#2@7 ~, ~@12 f#2@11 ~@9, ~@5 c#3@3", // E5
  W: "e3@11 ~@5 a2@3 ~ [b2,f#3]@3 ~ [b2,f#3]@7 ~, a2@15 ~@17, ~@3 e3@2 ~@3", // B5
  X: "[e2,b2]@7 ~ b2@5 a2 ~ [a2,b2] ~ a2 ~ [g2,a2,b2] ~ [g2,a2] ~@3 [f#2,c#3]@7, ~@4 e2@5 ~ [f#2,c#3]@2 ~@4", // E5 Asus2 G Gsus2 F#5
  Y: "~ [a2,e3]@31", Z: "[a2,e3]@7 ~ [a2,e3]@4 [a2,e3]@8 ~ a2@2 ~ [a2,e3]@8, ~@20 e3@3 ~@9",
  AA: "e3@11 ~@5 a2@3 ~ [a2,e3]@3 ~ [a2,e3]@7 ~, a2@15 ~@17, ~@3 e3@2 ~@3", AB: "~ f#3@31, b2",
  AC: "~ [b2,f#3]@19 [d3,a3]@3 ~ [e3,b3]@7 ~", // B5 D5 E5
  AD: "[f#3@27 ~ f#3 ~ f#3 ~ b2@20 ~ d3@4 [e3,b3]@7, b2@31 f#3@20 ~ a3@3 ~@9]/2", AE: "f#3@27 ~ f#3 ~@2 f#3, b2@31 ~",
  AF: "[b2,f#3]@5 [d3,a3] [e3,b3]@2", AG: "[[b2,f#3]@14 f#3 [b2,f#3]@11 [d3,a3]@2 [e3,b3]@3 ~]/2",
  AH: "[e2,f#2]@8 e2@4 c#3@7 ~@5 f#2@8, b2@12 f#2@11 ~@9, ~@5 c#3@2 ~", // Esus2
  AI: "~@8 e2@4 c#3@7 ~@5 f#2@7 ~, ~@12 f#2@11 ~@9, ~@5 c#3@3", AJ: "e2@8 e2@3 ~ f#2@11 ~ f#2@7 ~, b2@12 c#3@19 ~",
  AK: "e3@6 ~@2 a2@3 ~ a2 ~ [d2,a2]@2, a2 ~, ~@12 e3@7 ~@13", AL: "~ [e2,b2]@7 ~@24, ~ a2 ~@30",
})).s("gm_overdriven_guitar").gain(0.61)

// chords · overdriven guitar · "guitar*merged" · soft notes
const overdriven_guitar_soft = note(`<
  ~@3 A B ~@2 A B C ~@2 D C ~@2 D ~ E F ~@4 G H I J ~ K ~ L ~ M ~ C ~@2 D C ~@2 D ~ E F ~@4 G H I J ~ K ~ L ~@2 N ~@4 O
  P ~@2 A B C ~@2 D C ~@2 D ~ E F ~ H I J ~ K ~ L ~ L ~@2 Q ~
>`.pickRestart({
  A: "~ c3 ~@4 c#3 ~@5 c#3 ~@14 c#3@4 ~", B: "~@8 a2@7 ~@17", C: "~@13 d#3 ~@18", D: "~@8 g#2 ~@23", E: "~@2 e3 ~@5",
  F: "~@6 d3@5 ~@5", G: "~@6 a3 ~@25", H: "~@7 c#3", I: "~@12 e3 ~@16 e2@2 ~", J: "~@4 d#3 ~@27", K: "c3 ~@31",
  L: "~@7 b2@5 ~@20", M: "~@13 g2 ~@3 g2 ~@14", N: "~@25 a3 ~@6", O: "~@27 c#4 ~@4", P: "~@25 d3 ~@6",
  Q: "~@10 e3@3 ~@3",
})).s("gm_overdriven_guitar").gain(0.2)

// bass · electric bass finger · "bass*merged"
const bass = note(`<
  ~@5 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB ~@2 E F G H E F G H M N O P Q R S T U V W X Y Z AA AC AD
  AE AF AG AH AI AJ@2 ~@4 E F G H I J K L M N O P U V W X Y Z AA AC AK AC AL AM AN
>`.pickRestart({
  A: "e1@7 ~@2 e1@9 f#1@5 ~@2 f#1@3 ~ f#1@3", B: "a1@7 ~ a1@8 ~ b1@7 ~ b1@3 ~ b1@3",
  C: "~ e1@7 e1@8 ~@2 f#1@5 ~ f#1@3 ~ f#1@3 ~", D: "a1@7 ~ a1@6 a1 ~ a1@8 a1@4 ~ a1@3",
  E: "e1@7 ~ e1@3 ~ a1@8 ~ a1@7 ~ a1@3", F: "~ e1@7 ~ e1@4 a1@7 ~ a1@7 b1@3 ~", G: "d2@9 ~@3 d2@12 d2@3 ~ d2@4",
  H: "~ d2@7 d2@3 ~ e1@7 ~ e1@2 ~@2 e1@8, ~ e2 ~@30", I: "e1@7 ~ e1@5 a1@12 a1@7", J: "~ e1@7 e1@4 a1@14 ~@2 a1@4",
  K: "d2@11 ~ d2@11 ~ d2@3 ~ d2@4", L: "d2@7 ~ d2@4 e1@11 ~ e1@7 ~, e2 ~@15", M: "f#1@12 f#1@12 f#1 ~@7",
  N: "a1@6 a1 ~ a1@10 ~@2 a1@8 a1 ~@3", O: "d2@11 ~ d2@7 ~ d2@3 ~ d2@3 ~ d2@3 ~", P: "d2@8 d2@3 ~ d2@7 ~ d2@2 ~@2 d2@8",
  Q: "f#1@7 ~ f#1@4 f#1 ~@7 f#1@3 ~ f#1@4 e1 ~ f#1@2", R: "a1@7 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@7 ~",
  S: "~@4 c2 ~@5 d2@2 d2 ~@7 d2@3 ~ d2@3 ~ d2@3 ~, d2@9 ~@23", T: "d2@7 ~ d2@3 ~ d2@6 ~@2 d2@4 [a1,d#2] ~ b1@2 d2@3 ~",
  U: "e1@10 ~@2 f#1@10 ~ f#1@5 f#1@4", V: "a1@7 ~ a1@7 b1@6 ~@4 b1@3 b1@4", W: "e1@7 ~ e1@3 ~ f#1@11 ~ f#1@8",
  X: "~ a1@7 a1@3 ~ b1@10 ~@2 b1@8", Y: "e1@8 ~ e1@3 f#1@11 ~ f#1@8",
  Z: "a1@9 ~ a1@2 ~ b1@6 ~ b1@3 ~ b1@2 a1@2 f#1@3 ~", AA: "e1@8 e1@4 f#1@11 ~ f#1@8",
  AB: "~ a1@11 a1@6 ~@2 b1@3 ~ b1@7 ~", AC: "~ a1@11 a1@6 ~@2 a1@3 ~ a1@7 ~", AD: "~ b1@11 b1 ~ b1@13 ~ b1@3 ~",
  AE: "~ b1@19 d1@4 ~ e1@7, ~@20 c1 ~@11", AF: "b1@26 ~@2 b1 ~ b1 ~", AG: "b1@11 ~ b1@9 d1@3 ~ e1@7",
  AH: "~ b1@10 ~ b1@3 ~@2 b1@14 ~", AI: "b1@11 ~ b1@8 d1@4 ~ e1@7", AJ: "[b1@11 ~ b1@18 ~ b1@12 ~ b1@9 d2@3 e2@8]/2",
  AK: "~@8 e1@4 f#1@11 ~ f#1@8", AL: "e1@9 e1@3 ~ f#1@10 ~ f#1@6 ~@2",
  AM: "a1@10 ~@2 a1@8 ~ a1@3 ~ a1@3 d1@3 ~, b1 ~@15", AN: "~ e1@6 ~@25",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · piano
const piano = note(`<
  ~@5 A B C D@2 E F G@2 H I@2 J K L@2 M N@3 O P Q R@2 S T U ~@2 V E F W X E F Y@2 K L@2 M N@3 O P Q R@2 S T Z AA AB AC@2
  AD AE AF AG ~@4 V E F G@2 H I@2 J K L@2 O P Q R@2 S T Z AH Z AI AJ AK
>`.pickRestart({
  A: "[e3,g#3,e4]@8 ~ [e3,e4]@5 ~@2 [c#4,f#4]@2 ~@6 f#3@4 c#3@3 ~, [e2,b3]@13 ~@3 f#2@13 ~@3, ~@9 g#3@2 ~@3 a3@4 ~@2 [a3,c#4,f#4]@11 ~", // E F#5 E5 F#m
  B: "[a2,a3,c#4,e4]@8 a2@6 a3@2 ~@2 [a3,c#4] ~ [b2,b3,d#4]@4 [b3,d#4]@4 b2@4, ~@8 e4@13 ~@11, ~@8 c#4@9 ~@3 f#4@9 ~@3, ~@8 a3@3 ~@5 a2@4 ~@4 b2@3 ~@5", // A B
  C: "[e3,g#3]@7 ~@2 e3@4 b2@2 ~@2 g#2 ~@3 a3@4 f#3@3 [c#3,a3]@3 ~, [e2,e4]@14 ~@3 [f#2,f#4]@15, d3 ~@8 g#3@3 ~@4 c#4@15 ~", // E F#m E F#
  D: "[~ [a3,c#4,e4]@7 ~ c#4@4 ~@8 c#4@3 ~ [b3,e4]@5 ~@2 [e3,g#3]@7 ~@2 e3@3 ~@9 a3@2 ~ [a3,c#4,e4,a4]@5 a2@3, a2@15 ~@2 a2@15 [f#2,e4]@2 ~@14 a2@11 ~@5, ~@8 a3@7 e3@17 e2@13 ~@19, ~@9 e4@13 ~@10 b3@8 ~@4 [c#4,e4]@11 ~@9, ~@9 g3 ~@4 c#4@5 ~@11 [a3,c#4]@4 ~@6 g#3@2 ~@2 a3@7 ~@13]/2", // A E5 E A F#7 C#m A
  E: "[g#3,b3]@9 e3@3 ~ c4@2 ~@5 a3@4 a2@4 a3@2 ~@2, e2@6 a3@3 ~ c#4@5 ~, e3@3 ~@3 e4@9 ~, ~@12 c#4@3 ~ a2@7 ~@9", // G#m
  F: "[d3,a3]@6 ~@11 d3@3 a3@4 d3@4 a2@4, d2@29 ~@3, [d4,f#4]@12 [a3,d4,f#4]@7 ~ f#4@11 ~, ~@9 d3@4 a4@18 ~, ~@10 d4@4 a3 ~", // D5 D
  G: "[[d3,a3,d4]@5 ~ a3@2 d3@3 ~ [b3,e4,g#4]@7 ~ g#4@4 ~@4 b2@4 g#3@3 ~@2 g#3@3 ~ f#2 ~@2 [a3,c#4,e4]@7 ~@5 a2@4 b2@3 ~, [d2,f#4,a4]@11 ~ e2@16 ~@4 [e2,e4]@11 ~ a2@8 ~@12, ~@12 b4@13 ~@39, ~@12 a4 ~@6 e4@5 e3@13 ~@3 e3@3 ~@21, ~@20 b3@11 ~ [b3,g#4]@8 ~@12 [a3,c#4,e4]@7 ~@5]/2", // D5 E A D E A
  H: "[e3,b3]@6 [g#3,g#4]@2 e3@3 ~ [a3,c#4,e4]@7 ~ a3@4 ~@4 a3@2 ~@2, e2@12 a2@8 ~@4 a2@7 ~, [g#3,g#4]@5 ~@15 [c#4,e4]@11 ~, c4 ~@11 a4@18 ~@2", // E5 G# A G# C#m
  I: "[[d3,a3,d4,f#4]@7 ~@9 d3@4 a3@4 ~@4 [a2,a3]@3 ~ [a3,d4]@5 ~ a3@2 ~ d3@3 ~ [e3,g#4]@7 [b3,g#4]@4 ~@4 [b3,g#4]@4, d2@29 ~@3 [d2,f#4,a4]@10 ~@2 [e2,e4]@20, a4@9 d3@5 ~@6 d4@8 ~@17 b3@6 ~@13, ~@7 d4@5 [a3,d4,f#4,a4]@8 [f#4,a4]@11 ~@14 f4@2 ~@17, ~@24 d3@14 ~@7 d3 ~@10 e3@8]/2", // D A D5 E D E D F#m
  J: "~ [a3,c#4]@8 ~@3 [a3,c#4,f#4]@5 f#3@3 [a3,c#4,f#4]@4 ~@4 g#2@4, f#3@7 ~@2 f#3@5 ~@10 f#3@4 ~@4, ~ f#2@28 ~@3, ~@13 [a3,c#4,f#4,a4]@3", // A F#m
  K: "[c#4,a4]@7 ~@17 a3@4 c#3@3 ~, a2@15 ~ a2@13 ~@3, e4@11 ~@9 a4@11 ~, ~@7 c#4@4 ~ [c#4,e4,a4]@7 ~ [c#4,e4]@8 ~@4, ~@8 a3@13 ~@11", // F#m A C#m
  L: "[[a3,d4,f#4]@6 ~@10 d3@4 ~@8 a3@3 ~ [a3,d4]@3 ~@5 d3@4 ~@4 d3@4 [d4,a4]@5 ~ d4@2 a2@4, [d3,a4]@14 ~@10 d3@14 ~@19 d3@2 ~@5, ~@6 [a3,d4]@5 ~ [a3,d4,f#4,a4]@7 ~ [a3,d4]@7 ~ a2@4 f#4@5 d4@5 ~@2 [d4,e4,a4]@8 ~@6 a4@6, ~@7 f#4@4 ~@9 [f#4,a4]@11 ~ a4@10 ~@10 f#4@11 ~, ~@8 d2@21 ~@3 d2@31 ~]/2", // D D5 D D5 Dsus2 F#m
  M: "[a3,c#4]@3 ~ f#3@2 ~@2 f#3@2 [a3,c#4,f#4]@2 ~ a3 g#2@2, f#2@29 ~@3, a4@3 ~, f#4@11 ~@15 [c#4,f#4,a4]@6, g3@2 ~@5 c#4@4 ~ [a3,c#4,f#4]@7 ~@5 f#3@7 ~", // A F#m
  N: "[~ c#4@5 ~@2 a3@4 ~@4 a3@4 ~@4 a3@4 c#3@3 ~ [d4,f#4]@6 ~@14 [a3,d4,f#4]@4 ~@9 d4@5 ~@2 d3@4 ~@4 d3@4 a3@5 ~@3 a2@4, ~ a2@29 ~@2 d3@13 ~@3 d3@10 [a3,d4,f#4]@5 ~@2 [a3,f#4]@11 ~ a3@5 ~@7 d3@7, ~ [e4,a4]@11 a4@77 ~@7, ~@7 c#4@4 ~ [c#4,e4]@7 ~ [c#4,e4]@11 ~ a3@4 ~@2 [a3,d4]@2 d2@21 d3@4 b3 ~@5 d4@5 [d4,f#4]@13 ~ [a3,d4,f#4,a4]@6, ~@39 f#4@4 ~ [a3,d4,f#4]@7 ~@5 a2@6 ~@2 d2@32]/3", // D A5 C#m D5 D
  O: "~ [b3,e4]@5 g#3@2 e3@4 ~@8 a3@4 f#3@4 [c#3,a3]@3 ~, e2@12 ~@4 f#2@13 ~@3, e3@5 ~@27, g#3@3 ~@9 [a3,c#4,f#4]@7 ~ [c#4,f#4]@9 ~@3", // E5 F#m F#5
  P: "[c#4,e4]@6 ~@2 e4@3 ~@13 b3@4 d#3@3 ~, a2@7 ~ b2@7 ~, a3@2 ~@5 c#4@3 ~@2 [b3,d#4,f#4]@7 ~ [d#4,f#4]@8 ~@4", // C#m B D#m
  Q: "[b3,e4]@6 g#3@2 e2@4 ~@5 f#3@4 [a3,c#4,f#4]@4 ~ a3@2 g#2@3 ~, e3@13 ~@3 f#2@13 ~@3, g#3@4 ~@8 [a3,c#4,f#4]@8 ~@5 f#3@6 ~, ~@13 [c#4,f#4,a4]@3", // E5 F#m
  R: "[~ [a#2,f#4] ~@4 c#4@2 a3@4 ~@4 b2@4 [d#4,f#4]@4 b2@5 e4@2 ~ [e3,b3]@6 g#3@2 e3@4 ~@8 a3@5 f#3@3 [c#3,a3]@3 ~, a2@12 ~@4 c3@2 ~@14 e2@13 ~@3 f#2@14 ~@2, a4@9 ~@3 b4@13 ~@39, c#4@4 ~@8 [b3,d#4,f#4]@7 ~ b3@11 ~ g#3@4 ~@8 [a3,c#4,f#4]@7 ~@13, ~ e4@5 ~@25 e4@9 ~@12 [c#4,f#4]@9 ~@3]/2", // D#m E5 F#m B F#m F#5
  S: "[c#4,e4]@5 ~ c#4@2 a3@4 ~@4 b2@4 [f#4,b4]@4 ~@4 f#4 ~@3, a2@13 ~@11 b2@7 ~, a3 ~@11 [b3,d#4,f#4]@7 ~ [b3,d#4]@9 ~@3", // C#m B5 B
  T: "[e3,g#3,e4]@3 e4 e3@2 ~@4 a3@2 f#3@2 [c#3,a3] ~, e2@12 [a3,c#4,f#4]@7 ~ [c#4,f#4]@9 ~@3, ~@16 f#2@13 ~@3", // E F#m F#5
  U: "[c#4,e4]@4 ~@2 c#4@2 a3@2 ~@6 a2@3 ~ [b2,b3,d#4,f#4]@3 ~ [b2,b3,d#4,f#4]@5 ~@3, a2@7 ~@9, a4@11 ~@21, a3 ~@11 [a3,c#4,e4,a4]@8 ~@12", // C#m B A
  V: "[e3,g#3]@7 ~@2 e3@3 ~@9 a3@2 ~ [a3,c#4,e4,a4]@5 a2@3, [e2,e4]@13 ~@3 a2@11 ~@5, b3@8 g#3@2 ~@2 [c#4,e4]@11 ~@9, f#2 ~@11 a3@7 ~@13", // E A E C#m
  W: "[d3,a3,d4]@5 ~ a3@2 d3@3 ~ [b3,e4,g#4]@7 ~ g#4@4 ~@4 b2@4, [d2,f#4,a4]@11 ~ e2@16 ~@4, ~@12 b4@13 ~@7, ~@12 a4 ~@6 e4@5 e3@8, ~@20 b3@11 ~", // D5 E D
  X: "[e3,b3,g#4]@8 ~ e3@3 ~@9 a3@2 ~ [a3,c#4,e4,a4]@5 a2@3, [e2,e4]@11 ~@5 a2@11 ~@5, g#3@3 ~@5 g#3@2 ~@2 [c#4,e4]@11 ~@9, f#2 ~@11 a3@7 ~@13", // E A E C#m
  Y: "[[d3,a3,d4]@5 ~ a3@2 d3@3 ~ [b3,e4,g#4]@7 ~ g#4@4 ~@4 b2@4 ~ [a3,c#4]@8 ~@3 [a3,c#4,f#4]@5 f#3@3 [a3,c#4,f#4]@4 ~@4 g#2@4, [d2,f#4,a4]@11 ~ e2@16 ~@4 [e2,e4]@11 ~@21, ~@12 b4@13 ~@7 g#3 f#2@28 ~@3, ~@12 a4 ~@6 e4@5 e3@13 ~@21 [a3,c#4,f#4,a4]@6, ~@20 b3@11 ~ [f#3,b3,g#4]@8 ~ f#3@5 ~@10 f#3@4 ~@4]/2", // D5 E A F#m D E F#m G#m7
  Z: "[c#4,e4]@4 ~@2 c#4@2 a3@2 ~@6 a2@3 ~ [a2,a3,c#4,e4]@3 ~ [a2,a3,c#4,e4]@5 ~@3, a2@7 ~@9, a4@11 ~@21, a3 ~@11 [a3,c#4,e4,a4]@8 ~@12", // C#m A
  AA: "~ [b3,d#4,f#4]@8 [d#4,f#4]@2 ~@9 [d#4,f#4,b4]@4 b3 ~@2 c4 f#3@4, ~ b2@14 ~ b2@13 ~@3, ~ b4@11 [d#4,f#4,b4]@7 ~@7 [d#4,f#4,b4]@5 ~, ~@9 b3@9 ~@14", // B D#m B
  AB: "[d#4,f#4,b4]@8 b3@4 ~@4 b2@4 ~ [d2,d3,d4,f#4,a4]@4 [e2,e3,b3,e4,g#4,b4]@6 ~, b2@7 ~@9, b3@6 ~@6 [b3,d#4,f#4,b4]@7 ~@2 a3@2 ~@9", // B D E B
  AC: "[[b3,d#4,f#4]@7 ~ b3@4 [d#4,f#4,b4]@5 ~@23 b3@3 ~ b4@4 b2@3 ~@2 d2@3 ~ [e2,e3,b3,e4,g#4,b4]@7, b2@28 f#3@13 ~@12 e2 ~@10, b4@10 ~@11 [d#4,f#4,b4]@5 [d#4,f#4]@5 ~ b2@14 ~@6 [d3,a3,d4,f#4,a4]@4 ~@8, ~@7 [d#4,f#4]@4 ~@6 f#3@7 b3@11 ~@9 [b3,d#4,f#4]@7 ~@13, ~@32 [d#4,f#4,b4]@11 ~@21]/2", // B E B D#m D D#m B
  AD: "[b3,d#4,f#4]@5 ~@3 b3@4 [d#4,f#4]@5 b3@3 ~ c4 ~@2 b3@2 ~ [f#3,b3,d#4,f#4]@5, b2@15 ~, b4@7 f#4@2 ~@3 b4@10 ~@10, ~@5 d#4@4 ~@11 [d#4,f#4]@5 ~@7", // B D#m B D#m
  AE: "~ b3@6 ~@2 b3@3 ~@4 b2@4 [d3,d4]@4 ~ [b3,e4,g#4]@7, b2@14 ~@10 e3@7 ~, [d#4,f#4]@9 ~@3 [b3,d#4,f#4]@7 ~ [a3,f#4]@2 ~@10", // D E D#m B D
  AF: "[d#4,f#4]@3 ~ b3@2 ~@2 b3@2 [d#4,f#4,b4]@2 ~@2 f#3@2, b2@29 ~@3, b3@2 ~@5 [d#4,f#4]@3 ~@2 [d#4,f#4,b4]@7 ~@5 b3@4 ~@4, ~@26 [d#4,f#4,b4]@5 ~", // D#m B D#m B
  AG: "[d#4,f#4]@5 ~@3 b3@4 [d#4,f#4,b4]@7 ~ [d3,d4,f#4,a4]@4 ~ [b3,e4,g#4,b4]@6 ~, b2@10 ~@2 e3@3 ~, b4@8 a3 ~@16 [c4,f4] ~@6, ~@3 [d#4,f#4]@2 ~@7 c5 ~@3", // D#m B D E F5 D#m
  AH: "[e3,g#3]@3 e4 e3@2 ~@4 a3@2 f#3@2 [c#3,a3] ~, ~@12 [a3,c#4,f#4]@7 ~ [c#4,f#4]@9 ~@3, ~@16 f#2@13 ~@3", // E F#m F#5
  AI: "[b3,e4]@6 g#3@2 e3@4 ~@8 [a3,c#4]@5 ~@3 c#3@2 ~@2, e2@12 ~@4 f#2@13 ~@3, g#3@4 ~@8 [a3,c#4,f#4]@7 ~ f#4@10 ~@2, ~@25 f#3@4 ~@3, ~@26 [a3,c#4,a4]@5 ~", // E5 A F#m A
  AJ: "[a3,f4] ~@7 a3@3 ~ [a3,c#4,e4]@4 a2@4 ~ [a3,c#4]@3 a2@3 ~ [d2,d3,f#3,a3,d4]@3 ~, [a2,a4]@7 ~@9, e4@11 ~ a4@11 ~@9, c#4@4 ~@2 c#4@4 ~@10 e4@3 ~@9", // Dm A D A
  AK: "[e2,e3,g#3,b3,e4] ~@7", // E
})).s("gm_piano").gain(0.46)

// chords · piano · soft notes
const piano_soft = note(`<
  A ~@4 B C D E F G H I J@2 K L M N O P Q ~ R@2 S T U@2 V W@2 X ~@2 F G H I F G H I M N O P Q ~ R@2 S T U@2 V W@2 X ~ Y
  Z ~ AA AB AC ~@5 F G H I J@2 K L M N O P S T U@2 V W@2 X AD X AE AF AG
>`.pickRestart({
  A: "~@2 g#4 ~@5", B: "~@6 b2 ~@9, ~@12 g#3 ~@19", C: "~@19 f#4 ~@11 d#4",
  D: "~@9 b2 d#4 ~@2 [f#2,g#2] f#4 ~@17, b3@12 ~ a3@6 ~@13", E: "~ f#4 ~@11 f#4 ~ c#3 ~@16", F: "~@15 e4",
  G: "e4@11 ~@21", H: "~ a4 ~@7 a4 ~@22, ~@6 a3@5 ~@21", I: "~@7 d4@2 ~@3 e3 d3 ~@15 e4@2 ~",
  J: "[~@6 g#4@3 a3@2 ~@17 c#4 c4 d#4 ~ f2 ~@7 a3@2 g#2 ~ f4 ~@19, ~@27 a3@3 ~ e4@10 ~@23]/2",
  K: "~@7 f#4@4 ~@18 d4@2 ~, ~@3 a3@2 ~@11", L: "~@7 d4@2 ~@4 [f#4,a4] ~@18", M: "~ g#2 ~@6 f#4@2 ~@22",
  N: "~@7 a4@4 ~@18 b3 ~@2", O: "~@12 g#4 ~@15 d4@3 ~", P: "~ g#4 ~@5 f#4@5 ~@8 d#4 ~@7 d3@3 ~, ~@5 a3@4 ~@23",
  Q: "~@7 a3@4 ~@19 a3@2", R: "[~@31 a2@28 ~@5]/2", S: "~@9 a3 ~@22", T: "~@5 a3@8 ~@17 c#4 ~",
  U: "[~@9 a3@2 ~@2 a4 ~@16 a3@8 e4@2 ~@24]/2", V: "~@3 d#4@2 ~@2 d#4 a3@2 ~@20 f#4 ~, ~@8 g3 ~@23",
  W: "[~@4 a3@3 e4@4 ~@25 d#4 ~@2 d#4 ~ a3 ~@22, ~@31 b3@7 g#3@2 ~@24]/2", X: "g4 ~@3 a3 ~ e4@3 ~@23",
  Y: "c#3 ~@18 a2 ~@12", Z: "~@13 b4@2 ~", AA: "~@13 a4 ~@7 g#4 ~@3 f#3 ~@6", AB: "~@13 g#4 ~@10 d#4 ~@7",
  AC: "~@5 b3@3 ~@24", AD: "~@4 d#4 ~@2 d#4 ~ a3 ~@22, ~@3 g#3 ~@12", AE: "~@9 [a3,c#4] ~@20 d3 ~",
  AF: "~@13 b2 ~@14 e2 ~@3", AG: "d4 ~@31",
})).s("gm_piano").gain(0.15)

// chords · rock organ · "organ"
const rock_organ = note("<~@17 A@8 B@6 C@2 ~@10 A@8 B@6 D@2 E@2 F@2 G@2 H@2 ~@16 B@6 I@4 J@2 K>".pickRestart({
  A: "[f#6@16 e6@16 d6@31 ~@17 e6@16 [d6,f#6]@32, a5@255 ~, c#6@2 f#6@3 ~@3, ~ a6@3 c#6@2 ~@2]/8", // D
  B: "[[e5,g#5,b5]@12 [f#5,a5]@20 ~@4 d6 ~@8 f#6@19 [e5,g#5]@12 f#5@20 e6@11 ~@2 [d#6,f#6]@19 ~ g#5@11 [a5,c#6]@31 ~ [b5,d#6,f#6]@20, ~@12 c#6@32 b5@31 ~ [a5,c#6]@32 ~ b5@30 ~ f#5@20 ~@32, ~@32 [a5,e6]@11 ~ d#6@20 ~@64 e6@44 ~@20]/6", // E F#m E D#m A B A A5
  C: "[[e5,g#5,b5]@12 f#5@20 e6@20 [b5,d#6,f#6]@3 ~ [b5,d#6,f#6]@7 ~, ~@12 [a5,c#6]@39 ~@13]/2", // E B A
  D: "[[e5,g#5,b5]@12 f#5@20 e6@20 [a5,c#6,e6]@3 ~@5 c2 [d2,e2,f2,g2,a2,b2,c3] [d3,e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4], ~@12 [a5,c#6]@39 ~@5 [a5,c#6,e6]@7 ~]/2", // E A Dm7 Dm Cmaj7 A
  E: "[[a4,b4,c5,d5,e5] [f5,g5,a5] [b5,b6]@49 ~ [a5,d6,f#6,a6]@5 [b5,e6,g#6,b6]@7, ~ [d#6,f#6]@50 ~@13, ~@2 a6 ~@61]/2", // Am F B D E D#m
  F: "[[b5,d#6]@52 ~ [a5,d6,a6]@2 ~@2 [g#6,b6]@7, f#6@53 ~@4 [c6,f6] ~@6, a5@2 ~@54 [b5,e6]@7 ~]/2", // B D5 G#m F5 E5
  G: "[~@8 b5@43 ~ [a5,d6,f#6,a6]@4 ~ [b5,e6,g#6,b6]@7, ~ [d#6,f#6]@51 ~@12]/2", H: "[~ b6, [b5,d#6,f#6]]/2",
  I: "[[e5,g#5,b5]@12 f#5@20 e6@20 [a5,c#6,e6]@3 ~ [a5,c#6,e6]@7 ~, ~@12 [a5,c#6]@39 ~@13]/2", // E A
  J: "[[g#5,b5,e6]@12 ~@21 a6@27 [d5,f#5]@2 f#6@2, ~@12 a5@46 ~@2 a5 ~@3, ~@12 f#6@20 e6@29 ~@3, ~@13 c#6@51]/2", // E D
  K: "[e5,b5,e6,g#6] ~@7, f#6 ~@31", // E
})).s("gm_rock_organ").gain(0.19)

// drums · kick
const kick = s("bd").struct("<~@5 A@28 ~@2 A@32 ~@4 A@22 B C D>".pickRestart({
  A: "x ~@2 x ~ x ~@2", B: "x ~ x!2 ~ x ~@2", C: "x ~@2 x ~ x ~ x", D: "x",
})).gain(0.59)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@11 C D E D F G F H I D E D F G F H I ~ J B@8 D E D F G F H I B@7 K B@7 K ~@4 B@7 C D E D F B@12 L
>`.pickRestart({
  A: "~@13 x ~ x!2 ~ x ~ x ~@3 x ~ x ~ x ~@3", B: "~ x ~ x", C: "~@4 x ~@5 x ~ x!3 ~", D: "x ~@3 x ~@3 x!3 ~ x ~@3",
  E: "x ~@3 x ~@2 x!3 ~ x!2 ~@3", F: "x ~ x ~ x!2 ~@2 x ~ x ~ x!2 ~@2", G: "x ~@3 x ~@3 x!2 ~@2 x ~@2 x",
  H: "~@4 x ~@3 x ~ x ~ x!2 ~@2", I: "x ~@3 x ~ x ~@3 x ~ x!4", J: "~@11 x!4 ~", K: "~@8 x ~@12 x ~@10", L: "x",
})).gain(0.59)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@17 A B C D E F@2 ~ A B C D E F@2 ~@2 G ~@8 A B C D E F@2 ~@29 A B C D ~@13
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@3 x", C: "~@2 x ~@3 x!2 ~@6 x!2", D: "~@7 x ~@7 x", E: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~",
  F: "~@7 x ~@8", G: "~@5 x ~@2",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~@9 A B A B A B A B ~@54 A B A B A B A B ~@17>".pickRestart({
  A: "x!16", B: "x!6 ~ x!4 ~ x ~@2 x",
})).gain(0.39)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@10 A ~ A ~ A ~ A ~@55 A ~ A ~ A ~ A ~@17>".pickRestart({
  A: "~@6 x ~@4 x ~ x!2 ~",
})).gain(0.26)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@58 [~@12 x!3 ~] ~@7 [~@12 x!3 ~] ~@29>").gain(0.66)

// drums · high tom
const high_tom = s("ht").struct("<~@58 [~@25 x ~@6] ~@7 [~@25 x ~@6] ~@29>").gain(0.59)

// drums · crash
// … 19 more lines

More by Hanson