Strudelify

Op rode rozen vallen tranen

Frans Bauer

KeyE majorTempo107 bpm
0:00/0:00
// Op rode rozen vallen tranen — Frans Bauer
// 107 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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 · piano · "A.Piano"
const piano = note(`<
  ~@3 A B C D E F ~@15 G H I@2 A B J K L M N@2 O P Q@2 R S L T U V ~@15 G H I@2 A B J K L M N@2 O P Q@2 W X ~ Y ~ Z ~@2
  AA AB AC@2 AD AE AF AG AH AI AJ@2 AK AL AM@2 AN AO AH AP ~@3
>`.pickRestart({
  A: "~@10 f#5 ~ [c#6,d#6] f#6@2 ~ [d#6,f#6]@2 ~@2 c#6 ~ b5 ~", B: "[c#6,d#6] f#6@2 ~@21",
  C: "~@10 b4 ~ [b4,b5]@3 ~ [b4,f#5,b5]@2 ~@2 [f#4,c#5,f#5]@2 ~@2, ~@12 f#5 ~@11", D: "c#5 d#5@2 ~@9, [f#4,f#5] ~@3",
  E: "g#4@2 b4@2 g#4@2 b4 ~ b4@2 e5 ~ f#5 ~ g#5@2 b5@2 e6@2 f#6@2 g#6 ~", F: "[d#6,f#6,b6] ~@23",
  G: "~@6 [e5,g#5,b5]@2 b4@2 [e5,g#5,b5] ~ [e5,a5,c#6]@2 c#5 ~ [e5,a5,c#6] ~ [f5,a#5,d6]@2 d5@2 [f5,a#5,d6] ~", // E A A#
  H: "[d#5,f#5,b5,d#6] ~@11", // B
  I: "[~@12 b4 ~ [g#5,b5]@2 b4 ~ [b4,f#5,b5]@4 [b4,e5]@4 [b4,c#5,e5]@8 ~@14, ~@14 b4 ~@33]/2", // G#m B5 E5 C#m7
  J: "~@10 b4 ~ [g#5,b5]@3 ~ [g#5,b5]@2 ~@2 [g#5,b5]@2 [g5,a#5]@2", K: "[f#5,a5]@5 ~@19",
  L: "~@2 [e5,g#5] [g#5,b5]@2 [a5,c#6] [g#5,b5] ~ [g#5,b5] ~ b5 [g5,a#5], ~@20 g#5 ~@3", M: "[f#5,a5] ~@11",
  N: "[~@4 b4 ~ [g#5,b5]@2 b4 ~ [b4,f#5,b5]@2 b4 ~ [f#5,b5]@2 ~@2 [b4,f#5,b5]@2 e5@2 d#5@2 d5@4 ~@20, ~@6 b4 ~@7 b4 ~@7 b5@5 ~@21]/2", // G#m B5
  O: "~@10 e5 ~ [b5,c#6] e6@2 ~ [c#6,e6]@2 ~@2 b5 ~ a5 ~", P: "[b5,c#6] e6@2 ~@21",
  Q: "[~@4 b4@2 [g#5,b5]@3 ~ b4@2 [b4,f#5,b5]@2 ~@2 [b4,f#5,b5]@2 ~@2 f#5@2 e5@2 d#5@4 ~@20, ~@5 [b4,b5]@2 ~@5]/2", // G#m B5 B
  R: "~@4 b4@2 [e5,g#5]@2 b4 ~ g#5@2 [f#5,a5]@2 b4 ~ a5@2 [g#5,b5]@2 b4 ~ b5@2, ~@10 e5 ~@5 f#5 ~@5 g#5 ~", // E F#m G#m
  S: "[a5,c#6] ~@11", T: "[f#5,a5] ~@5", U: "~@12 e5@2 f#5@2 g#5@2 b5 ~ e6@2 g#6 ~", V: "[d#6,f#6,b6]@5 ~@19",
  W: "~@4 e5 ~ [e5,c#6] ~ e5 ~ [e5,b5,e6]@3 ~ [f#5,b5]@2 e5 ~ [f#5,b5]@2 ~@2 [f#5,b5]@2, ~@3 e6 ~@8", // C#m E5 B5
  X: "g#5 ~@5 [e5,g#5]@2 b4 ~ g#5 ~ f#5@2 b4 ~ a5 ~ b5@2 b4 ~ b5 ~, ~@12 a5 ~@5 g#5 ~@5", // E
  Y: "~@2 c#5@2 e5@2 a5@2 b5@2 a5 ~ [e5,c#6,e6]@3 ~ [e5,c#6,e6]@2 ~@6, ~@12 b5 ~@11", // C#m
  Z: "~@4 e5 ~ [b5,c#6] c#6 b5@2 g#5 ~ [b4,f#5,b5]@3 ~ [b4,f#5,b5]@2 ~@2 [e5,f#5] f#5 e5 ~, ~@6 [e5,e6]@3 ~@3 e5 ~@7 [b4,b5]@4", // Bsus2 B5 Esus2 E B
  AA: "~@2 d#5@2 f#5@2 d#5@2 f#5@2 b5 ~ [f#5,f#6]@3 ~ [f#5,d#6,f#6]@3 ~ [f#5,c#6,f#6]@2 b5 ~, ~@12 [c#6,d#6] ~@11", // F# D#m F#5 C#sus2
  AB: "~@2 [g4,e5] ~ [g4,g5] ~ [g4,e5] ~@17", // C G C
  AC: "[~@12 c5 ~ [a5,c6]@2 c5 ~ [c5,g5,c6]@4 [c5,f5]@4 [c5,d5,f5]@8 ~@14, ~@14 c5 ~@33]/2", // Am C5 F5 Dm7
  AD: "~@10 g5 ~ [d6,e6] g6@2 ~ [e6,g6]@2 ~@2 d6 ~ c6 ~", AE: "[d6,e6] g6@2 ~@21",
  AF: "~@10 c5 ~ [a5,c6]@3 ~ [a5,c6]@2 ~@2 [a5,c6]@2 [g#5,b5]@2", AG: "[g5,a#5]@5 ~@19",
  AH: "~@2 [f5,a5] [a5,c6]@2 [a#5,d6] [a5,c6] ~ [a5,c6] ~ c6 [g#5,b5], ~@20 a5 ~@3", AI: "[g5,a#5] ~@11",
  AJ: "[~@4 c5 ~ [a5,c6]@2 c5 ~ [c5,g5,c6]@2 c5 ~ [g5,c6]@2 ~@2 [c5,g5,c6]@2 f5@2 e5@2 d#5@4 ~@20, ~@6 c5 ~@7 c5 ~@7 c6@5 ~@21]/2", // Am C5
  AK: "~@10 f5 ~ [c6,d6] f6@2 ~ [d6,f6]@2 ~@2 c6 ~ a#5 ~", AL: "[c6,d6] f6@2 ~@21",
  AM: "[~@4 c5@2 [a5,c6]@3 ~ c5@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 g5@2 f5@2 e5@4 ~@20, ~@5 [c5,c6]@2 ~@5]/2", // Am C5 C
  AN: "~@4 c5@2 [f5,a5]@2 c5 ~ a5@2 [g5,a#5]@2 c5 ~ a#5@2 [a5,c6]@2 c5 ~ c6@2, ~@10 f5 ~@5 g5 ~@5 a5 ~", // F Gm Am
  AO: "[a#5,d6] ~@11", AP: "[g5,a#5] ~@5",
})).s("gm_piano").gain(0.35)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  ~ A B C D@2 E F G H I J K H I L M N O P Q H R S T U A B C D@2 V W X A Y Z AA AB AC AD Z AE AF AG AH H I J K H I L M N
  O P Q H R S T U A B C D@2 V W X A Y Z AA AB AC AI AJ AK AL@2 AM AN AO AP AQ AR AS AT AU@2 AV AW AX AR AY AZ BA BB BC
  BD AZ BE BF BG BH@2
>`.pickRestart({
  A: "e1@5 g#1 b1@3 g#1@2 b1", B: "e1@5 g#1 a1@3 c#2@3", C: "b1@9 ~ d#2@2 f#2@6 d#2@4 f#2@2",
  D: "b1@5 d#2 f#2@3 d#2@2 f#2", E: "b1@5 d#2 f#2@2 ~ d#2@3", F: "e1@4 ~ g#1 b1@3 g#1@2 c#2",
  G: "b1@6 a1@6 f#1@6 f1@5 ~", H: "e1@7 ~@3 e1 ~ e1@7 ~@3 c2 ~", I: "b1@7 ~@3 b1 ~ b1@8 ~@2 f#2 ~",
  J: "b1@7 ~@3 b1 ~ b1@7 ~@3 f#2 ~", K: "e2@8 ~@2 e2 ~ e2@8 ~@2 b1@2", L: "b1@7 ~@3 b1 ~ b1@7 ~ f#2 ~ b1 ~",
  M: "e2@8 ~@2 e2 ~ e2@5 ~ b1@4 ~@2", N: "e1@6 ~@4 e1 ~ e1@7 ~@3 b1 ~", O: "a1@7 ~@3 a1 ~ a1@5 ~ a1@2 b1 ~ c#2 ~",
  P: "d2@6 ~@4 d2 ~ d2@5 ~@3 a2@2 d2 ~", Q: "g2@7 ~ a2 ~ a#2 ~ b2@6 c#2@4 ~@2", R: "b1@7 ~@3 b1 ~ b1@8 ~@2 f#1 ~",
  S: "b1@7 ~@3 b1 ~ b1@7 ~@3 b1 ~", T: "e1@8 ~@2 e1@2 a1@3 ~ a1@2 a#1@3 ~ a#1@2", U: "b1 ~@7",
  V: "b1@5 d#2 f#2@3 d#2@3", W: "e1@5 g#1 b1@3 c#2@2 g#1", X: "b1 ~ b1 a1 ~ a1 g#1 ~ g#1 f#1 ~ f#1",
  Y: "e1@5 g#1 b1@3 e1 f#1 g#1", Z: "a1@5 c#2 e2@3 c#2@2 e2", AA: "a1@5 c#2 e2@3 c#2@3",
  AB: "e1@10 g#1@2 b1@6 c#2@3 ~ g#1@2", AC: "b1@10 d#2@2 f#2@5 ~ d#2@6",
  AD: "e1@5 ~ e1@2 ~@2 e1@2 f#1@2 ~@2 f#1@2 g#1@2 ~@2 g#1@2", AE: "e1@5 g#1 b1@3 g#1@2 c#2",
  AF: "b1@9 ~ d#2@2 f#2@6 d#2@6", AG: "e1@9 ~ g#1@2 b1@5 ~ g#1@4 c#2@2", AH: "b1 ~ b1 a1 ~ a1 g1 ~ g1 f#1 ~ f#1",
  AI: "e1@4 ~ g#1 b1@3 g#1@2 b1", AJ: "e1@5 ~ e1@6 f#1@6 g#1@5 ~", AK: "a1@6 ~@4 c#2@2 e2@5 ~ c#2@4 e2@2",
  AL: "a1@3 ~@2 c#2 e2@3 c#2@2 e2", AM: "e1@3 ~@2 g#1 b1@3 g#1@2 b1", AN: "f#1@6 ~@4 a#1@2 c#2@6 a#1@5 ~",
  AO: "f#1@3 ~@2 a#1 c#2@3 a#1@2 ~", AP: "b1@3 ~@2 d#2 f#2@3 d#2@3", AQ: "c2@3 a#1@3 a1@3 g1@2 ~",
  AR: "f1@5 a1 c2@3 a1@2 c2", AS: "f1@5 a1 a#1@3 d2@3", AT: "c2@9 ~ e2@2 g2@6 e2@4 g2@2", AU: "c2@5 e2 g2@3 e2@2 g2",
  AV: "c2@5 e2 g2@3 e2@3", AW: "f1@5 a1 c2@3 d2@2 a1", AX: "c2 ~ c2 a#1 ~ a#1 a1 ~ a1 g1 ~ g1",
  AY: "f1@5 a1 c2@3 f1 g1 a1", AZ: "a#1@5 d2 f2@3 d2@2 f2", BA: "a#1@5 d2 f2@3 d2@3", BB: "f1@10 a1@2 c2@6 d2@3 ~ a1@2",
  BC: "c2@10 e2@2 g2@5 ~ e2@6", BD: "f1@5 ~ f1@2 ~@2 f1@2 g1@2 ~@2 g1@2 a1@2 ~@2 a1@2", BE: "f1@5 a1 c2@3 a1@2 d2",
  BF: "c2@9 ~ e2@2 g2@6 e2@6", BG: "f1@5 d2 c2@3 a1@3", BH: "[f1@5 ~ c2@6 f1@24 ~@12]/2",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A@2 B@4 C D E F G H I F G J K L M N I F G O P A@2 B@4 Q R S T U@2 V@2 C W S X S Y E F G H I F G J K L M N I F G O P
  A@2 B@4 Q R S T U@2 V@2 Z@2 AA@3 C AB@2 AC AD AE@2 AF@4 AG AD AH AI AJ@2 AK@2 AL AM AH AN AO@2 ~
>`.pickRestart({
  A: "[[b3,e4,g#4,b4]@3 [c#4,e4,a4,c#5]]/2", B: "[d#4,f#4,b4,d#5]/4", C: "[e4,g#4,b4,e5]",
  D: "[d#4,f#4,b4,d#5,f#5]@12 [d#4,g4,b4,d#5,g5]@6 b4@2 b4 c5 [c#5,d5] d#5, ~@3 [d#4,f#4,d#5,f#5]", // B D#aug Dmaj7 D#m
  E: "[e4,e5] [g3,g4]@5", F: "[f#3,f#4]@9 [c4,c5]@3 [b3,b4]@4 [f#3,f#4]@4 [g3,g4]@4", G: "[a3,a4]",
  H: "~@9 [c4,c5]@3 [b3,b4]@4 [e3,e4]@4 [f#3,f#4]@4", I: "[g3,g4]", J: "~@3 [g3,g4]@3 [a3,a4]@3 [b3,b4]@2 ~",
  K: "[e4,e5]@3 [d4,d5]", L: "[c4,c5]", M: "[d4,d5]@3 [c4,c5]", N: "[b3,b4] [a3,a4]",
  O: "~@6 [b3,b4]@6 ~ c#4@5 [d4,d5]@6, ~@2 c#5 ~", P: "[d#4,d#5]@5 ~@19", Q: "[b3,e4,g#4,b4]", R: "[b3,d#4,f#4,b4]",
  S: "[g#4,b4,e5,g#5]", T: "[g#4,b4,d5,g#5]", U: "[a4,c#5,e5,a5]/2", V: "[[g#4,b4,e5,g#5]@23 [f#4,b4,d#5,f#5]@25]/2",
  W: "[a4,c#5,e5,a5]", X: "[f#4,b4,d#5,f#5]", Y: "[f#4,b4,d#5,f#5]@2 [g4,b4,d#5,g5] [f#4,b4,d#5,f#5]",
  Z: "[e5@5 e5 f#5 g#5, [e4,g#4,b4]]/2", AA: "[e4,a4,c#5,e5]/3", AB: "[f#5 e5, [f#4,a#4,c#5]@47 ~]/2",
  AC: "[d#4,f#4,b4,d#5]", AD: "[c4,e4,g4,c5]", AE: "[[c4,f4,a4,c5]@3 [d4,f4,a#4,d5]]/2", AF: "[e4,g4,c5,e5]/4",
  AG: "[c4,f4,a4,c5]", AH: "[a4,c5,f5,a5]", AI: "[a4,c5,d#5,a5]", AJ: "[a#4,d5,f5,a#5]/2",
  AK: "[[a4,c5,f5,a5]@23 [g4,c5,e5,g5]@25]/2", AL: "[f4,a4,c5,f5]", AM: "[a#4,d5,f5,a#5]", AN: "[g4,c5,e5,g5]",
  AO: "[~@10 a6 ~ a6@4 g#6@2 a6@4 a#6@2 a6@12 f6@10 ~@2, [a4,c5,f5,a5]@47 ~]/2", // F
})).s("gm_string_ensemble_1").gain(0.13)

// chords · flute
const flute = note(`<
  ~ A@2 B@4 A B ~@17 A@2 B@4 A B A@2 C@2 A D E C E B E F ~@17 A@2 B@4 A B A@2 C@2 A D G H I@3 J K@2 L M N@2 O@4 N O N@2
  P@2 N Q R P R O S ~@2
>`.pickRestart({
  A: "~@2 [e4,b4] ~ [g#4,e5] ~ [b4,g#5] ~@17", B: "~@2 [d#4,d#5] ~ [f#4,f#5] ~ [d#4,b5] ~@17",
  C: "~@2 [e4,e5] ~ [a4,a5] ~ [e4,c#6] ~@17", D: "~@2 [e4,b4] ~ [f#4,d#5] ~ [a4,f#5] ~@17",
  E: "~@2 [e4,e5] ~ [g#4,g#5] ~ [e4,b5] ~@17", F: "~@2 [d#5,f#5] ~ [b4,d#5] ~ [d#5,f#5] ~@17",
  G: "~@18 b4 ~ c#5 ~ b4 ~", H: "~@2 [b3,b4] ~ [e4,c#5] ~ [g#4,b4] ~@17", I: "~@2 [e4,c#5] ~ [a4,e5] ~ [e4,c#5] ~@17",
  J: "~@2 [b3,e5] ~ [e4,g#5] ~ [b3,e5] ~@17", K: "~@2 [f#4,c#5] ~ [a#4,f#5] ~ [c#5,a#5] ~@17",
  L: "~@2 [b4,d#5] ~ [d#5,f#5] ~ [b4,d#5] ~@17", M: "~@2 [c5,e5] ~ [e5,g5] ~ [c5,e5] ~@17",
  N: "~@2 [f4,c5] ~ [a4,f5] ~ [c5,a5] ~@17", O: "~@2 [e4,e5] ~ [g4,g5] ~ [e4,c6] ~@17",
  P: "~@2 [f4,f5] ~ [a#4,a#5] ~ [f4,d6] ~@17", Q: "~@2 [f4,c5] ~ [g4,e5] ~ [a#4,g5] ~@17",
  R: "~@2 [f4,f5] ~ [a4,a5] ~ [f4,c6] ~@17", S: "~@2 [f4,f5] ~ [a4,a5] ~ [f4,f5] ~@17",
})).s("gm_flute").gain(0.42)

// other · electric guitar muted · "Muted Gtr"
const electric_guitar_muted = note(`<
  ~ A@7 B ~@17 A@10 C@2 D E A C D E A F ~@17 A@10 C@2 D E D@2 C@3 D G@2 H I J@10 K@2 L M J K L M J N ~
>`.pickRestart({
  A: "~@2 b3 ~ b3 ~ b3 ~ c#4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ c#4 ~ b3 ~",
  B: "~@2 b3 ~ b3 ~ b3 ~ c#4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ c4 ~ b3 ~",
  C: "~@2 c#4 ~ c#4 ~ c#4 ~ e4 ~ c#4 ~@3 c#4 ~ c#4 ~ c#4 ~ e4 ~ c#4 ~",
  D: "~@2 b3 ~ b3 ~ b3 ~ e4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ e4 ~ b3 ~",
  E: "~@2 b3 ~ b3 ~ b3 ~ d#4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ d#4 ~ b3 ~",
  F: "~@2 b3 ~ b3 ~ b3 ~ d#4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ c#4 ~ b3 ~",
  G: "~@2 c#4 ~ c#4 ~ c#4 ~ f#4 ~ c#4 ~@3 c#4 ~ c#4 ~ c#4 ~ f#4 ~ c#4 ~",
  H: "~@2 b3 ~ b3 ~ b3 ~ f#4 ~ b3 ~@3 b3 ~ b3 ~ b3 ~ f#4 ~ b3 ~",
  I: "~@2 c4 ~ c4 ~ c4 ~ g4 ~ c4 ~@3 c4 ~ c4 ~ c4 ~ g4 ~ c4 ~",
  J: "~@2 c4 ~ c4 ~ c4 ~ d4 ~ c4 ~@3 c4 ~ c4 ~ c4 ~ d4 ~ c4 ~",
  K: "~@2 d4 ~ d4 ~ d4 ~ f4 ~ d4 ~@3 d4 ~ d4 ~ d4 ~ f4 ~ d4 ~",
  L: "~@2 c4 ~ c4 ~ c4 ~ f4 ~ c4 ~@3 c4 ~ c4 ~ c4 ~ f4 ~ c4 ~",
  M: "~@2 c4 ~ c4 ~ c4 ~ e4 ~ c4 ~@3 c4 ~ c4 ~ c4 ~ e4 ~ c4 ~", N: "~@2 c4 ~ c4 ~ c4 ~ e4 ~ c4 ~@13",
})).s("gm_electric_guitar_muted").gain(0.48)

// chords · string ensemble 2 · "#Warm Str"
const string_ensemble_2 = note(`<
  ~@17 A B C D ~@3 E F ~@7 G H@2 I@2 J@2 K@2 J@2 L M ~@8 A B C D ~@3 E F ~@7 G H@2 I@2 J@2 N ~ O P Q R S T U V ~@7 W X@2
  Y@2 Z@2 AA@2 Z@2 AB AC ~
>`.pickRestart({
  A: "e4@3 b4, [e3,g#3,b3]", B: "a4@2 g#4 g4, [a3,c4,e4]", C: "f#4@3 a4, [f#3,a3,d4]",
  D: "[g3,b3,d4,g4] [f#3,b3,d#4,f#4]", E: "[b3,e4,g#4]@2 [c#4,e4,a4] [d4,f4,a#4]", F: "[d#4,f#4,b4] ~@7",
  G: "~@3 b4@2 e5 g#5@2 g5 g#5@2 a5", H: "[g#5@6 e5@9 b5@2 c#6 d6@3 c#6@2 b5]/2",
  I: "[a5@15 c#6@2 d#6 e6@3 d#6@2 c#6]/2", J: "[b5@6 g#5@9 f#5@2 g#5 a5@3 g#5@2 f#5]/2",
  K: "[e5@15 c#6@2 d#6 e6@3 d#6@2 c#6]/2", L: "[g#4,e5]", M: "[a4,f#5]@2 [b4,g5] [a4,f#5]", N: "e5@23 ~", O: "e5@3 d#5",
  P: "c#5", Q: "e5@2 d#5 c#5", R: "b4@23 ~", S: "f#4@3 g#4", T: "a#4@2 b4 c#5", U: "b4", V: "c5@23 ~",
  W: "~@3 c5@2 f5 a5@2 g#5 a5@2 a#5", X: "[a5@12 f5@18 c6@4 d6@2 d#6@6 ~ d6@3 c6@2]/2",
  Y: "[a#5@15 d6@2 e6 f6@3 e6@2 d6]/2", Z: "[c6@6 a5@9 g5@2 a5 a#5@3 a5@2 g5]/2", AA: "[f5@15 d6@2 e6 f6@3 e6@2 d6]/2",
  AB: "~@10 a5 ~ a5@3 ~ g#5@2 a5@4 a#5@2", AC: "a5@3 f5@2 ~",
})).s("gm_string_ensemble_2").gain(0.25)

// chords · string ensemble 2 · "#Warm Str" · soft notes
const string_ensemble_2_soft = note("<~@9 A B@2 A@2 B@2 A ~@4 A B@2 ~@22 A B@2 A@2 B@2 A ~@4 A B@2 ~@47>".pickRestart({
  A: "[e3,g3,b3]", B: "[d#3,f#3,b3]/2",
})).s("gm_string_ensemble_2").gain(0.14)

// chords · acoustic guitar steel · "#Nyl+Stee"
const acoustic_guitar_steel = note(`<
  ~@9 A B@2 A@2 B@2 A C D E F A B@2 G H ~@20 A B@2 A@2 B@2 A C D E F A B@2 G H ~@45
>`.pickRestart({
  A: "[b3,e4,g4,b4]@3 ~ [b3,e4,g4,b4] ~ [b3,e4,g4,b4] ~@3 [b3,e4,g4,b4] ~ [b3,e4,g4,b4]@3 ~ [b3,e4,g4,b4] ~ [b3,e4,g4,b4] ~@3 [b3,e4,g4,b4] ~", // Em
  B: "[b3,d#4,f#4,b4]@3 ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~@3 [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4]@3 ~ [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~@3 [b3,d#4,f#4,b4] ~", // B
  C: "[b3,e4,g#4,b4]@3 ~ [b3,e4,g#4,b4] ~ [b3,e4,g#4,b4] ~@3 [b3,e4,g#4,b4] ~ [b3,e4,g#4,b4]@3 ~ [b3,e4,g#4,b4] ~ [b3,e4,g#4,b4] ~@3 [b3,e4,g#4,b4] ~", // E
  D: "[a3,c4,e4,a4]@3 ~ [a3,c4,e4,a4] ~ [a3,c4,e4,a4] ~@3 [a3,c4,e4,a4] ~ [a3,c4,e4,a4]@3 ~ [a3,c4,e4,a4] ~ [a3,c4,e4,a4] ~@3 [a3,c4,e4,a4] ~", // Am
  E: "[a3,d4,f#4,a4]@3 ~ [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4] ~@3 [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4]@3 ~ [a3,d4,f#4,a4] ~ [a3,d4,f#4,a4] ~@3 [a3,d4,f#4,a4] ~", // D
  F: "[g3,b3,d4,g4]@3 ~ [g3,b3,d4,g4] ~ [g3,b3,d4,g4] ~@3 [g3,b3,d4,g4] ~ [f#3,b3,d#4,f#4]@3 ~ [f#3,b3,d#4,f#4] ~ [f#3,b3,d#4,f#4] ~@3 [f#3,b3,d#4,f#4] ~", // G B
  G: "[b3,e4,g#4,b4]@2 ~@2 [b3,e4,g#4,b4] ~ [b3,e4,g#4,b4] ~@3 [b3,e4,g#4,b4] ~ [c#4,e4,a4,c#5]@3 ~ [c#4,e4,a4,c#5] ~ [d4,f4,a#4,d5]@3 ~ [d4,f4,a#4,d5] ~", // E A A#
  H: "[d#4,f#4,b4,d#5] ~@11", // B
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ A B A@22 ~ A B A@4 B A@29 ~ A B A@4 B A@18 B A@4 B A@13 ~>".pickRestart({
  A: "x ~@4 x!2 ~@5", B: "x ~@4 x!2 ~@2 x ~@2",
})).gain(0.43)

// drums · rim
const rim = s("rim").struct("<~@18 [~ x ~@2]!3 ~@34 [~ x ~@2]!3 ~@50>").gain(0.57)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A@5 ~@18 A B A@5 ~ A@3 ~ A@7 ~@18 A B A@5 ~ A@3 ~ A@13 B A@5 ~ A@3 ~ A@7 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@7 B ~@7 C ~@3 D ~@3 C A ~@7 E ~@3 F ~@7 F ~@7 C ~@3 D ~@3 C A ~@7 E ~@3 F ~@3 G ~@7 A ~@7 E ~@3 F ~@7 H ~
>`.pickRestart({
  A: "~@18 x ~@2 x!2 ~", B: "~@6 x ~@2 x!3", C: "~@10 x!2", D: "~@9 x ~ x", E: "~@12 x ~@3 x ~ x ~@2 x!2 ~",
  F: "~@9 x!3", G: "~@6 x ~ x ~ x!2", H: "~@9 x!2 ~@13",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A@5 ~ C@16 D A B A@4 B E A@3 ~ A@7 E C@16 D A B A@4 B E A@3 ~ A@3 E A@7 F A B A@4 B E A@3 ~ A@7 G ~
>`.pickRestart({
  A: "x!10 ~@2", B: "x!6 ~@2 x ~@3", C: "x!4", D: "~ x ~@10", E: "x", F: "x!3 ~@9", G: "x!6 ~@6",
})).gain(0.29)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@9 [~@2 x ~@2 x ~@2 x ~@3]!16 ~@21 [~@2 x ~@2 x ~@2 x ~@3]!16 ~@46>").gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@7 B ~@7 C ~@7 D ~@8 E C ~@2 F ~@7 G ~@7 C ~@7 D ~@8 E C ~@2 F ~@3 H ~@7 I ~@7 E C ~@2 F ~@7 J ~
>`.pickRestart({
// … 41 more lines

More by Frans Bauer