Strudelify
The Big L. cover art

1991 · Joyride

The Big L.

Roxette

KeyE majorTempo143 bpm
0:00/0:00
// The Big L. — Roxette
// 143 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(143/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 · electric bass finger · "Fingered Bass"
const bass = note(`<
  ~@3 A B C B C D E F G H I J K D E F G H I J L M N O P Q R S T Q U V W X R S T Q U V W X Y Z AA@2 AB AC Q X D E F G H I
  J K D E F G H I J L M N O P Q R S T Q U V W X R S T Q U V W X Y Z AA@2 AD@2 AE AD AF AG Z AH AI AJ AI AJ AI AJ AI AK
  AL AM ~@6 AN R S T Q U V W X Y Z AA@2 AD@2 AE AD AB AC Q X AO@2 AP AO@3 AP AO@3 AP AO@3 AP AO AQ ~@8
>`.pickRestart({
  A: "~@14 a1 ~", B: "a1@4 ~@2 a1 ~ a1@2 a1@2 ~@2 a1 ~", C: "a1@2 a1@2 ~@2 a1 ~ a1@2 a1@2 ~@2 a1 ~",
  D: "a1@5 ~ a1 ~ a1@2 a1@2 ~@2 a1 ~", E: "a1@2 a1@2 ~@2 a1 ~ a1 ~ a1@2 d2@2 c#2@2",
  F: "a1 ~ a1@2 ~@2 a1 ~ a1 ~ a1@2 ~@2 a1 ~", G: "a1@2 a1@2 ~@2 a1 ~ a1 ~ a1 ~ a1@2 b1@2",
  H: "f#1 ~ f#1@3 ~ e1@2 f#1@2 f#1@2 ~@2 e1@2", I: "f#1 ~ f#1@2 ~@2 e1@2 f#1 ~ f#1@2 c#1@2 e1@2",
  J: "f#1 ~ f#1@3 ~ e1 ~ f#1@2 f#1@2 ~@2 e1@2", K: "f#1 ~ f#1@2 ~@2 f#1@2 e1@2 f#1@2 a1@2 f#1@2",
  L: "f#1 ~ f#1@2 ~@2 f#1@2 e1@2 f#1@2 f#1@2 e1@2", M: "d1!2 ~ d1 a1!2 ~ a1", N: "e1@2 e1@3 ~ e1 ~ e1@2 e1@2 ~@2 e1@2",
  O: "b1!2 ~ b1 a1!2 ~ a1", P: "e1@2 e1@3 ~ e1 ~ e1@2 e1@2 ~@2 e1 ~", Q: "e1@2 e1@2 ~@2 e1 ~ e1@2 e1@2 ~@2 e1@2",
  R: "b1@2 b1@3 ~ b1 ~ b1@2 b1@2 ~@2 b1 ~", S: "b1@2 b1@2 ~@2 b1 ~ b1@2 b1@3 ~ b1@2",
  T: "e1@2 e1@3 ~ e1 ~ e1@2 e1@3 ~ e1 ~", U: "c#2@2 c#2@2 ~@2 c#2 ~ c#2@2 c#2@3 ~ c#2 ~",
  V: "c#2@2 c#2@2 ~@2 c#2 ~ c#2@2 c#2@3 ~ c#2@2", W: "f#1@2 f#1@2 ~@2 f#1 ~ f#1@2 f#1@2 ~@2 f#1 ~",
  X: "f#1@2 f#1@2 ~@2 f#1 ~ f#1@2 f#1@2 ~@2 f#1@2", Y: "e1@5 ~ e1 ~ e1@6 ~@2", Z: "e1@6 e1 ~ e1@7 ~",
  AA: "e1@5 ~ e1 ~ e1@7 ~", AB: "b1@2 b1@2 ~@2 b1 ~ b1@2 b1@2 ~@2 b1@2",
  AC: "f#1@2 f#1@3 ~ f#1 ~ f#1@2 f#1@2 ~@2 f#1@2", AD: "b1@5 ~ b1 ~ b1@7 ~", AE: "b1@6 ~ b1 b1@7 ~",
  AF: "g1@6 g1 ~ g1@7 ~", AG: "g1@5 ~ g1@2 g1@8", AH: "e1@5 ~ e1 ~ e1@8", AI: "a1@6 e1 ~ e1@8", AJ: "b1",
  AK: "f#1@6 f#1 ~ f#1@6 f#1 ~", AL: "f#1@5 ~ f#1 ~ f#1@5 ~ f#1 ~", AM: "b1@3 ~@13", AN: "~@10 f#1 ~ f#1 ~ f#1@2",
  AO: "a1@5 ~ a1 ~ a1@7 ~", AP: "a1@6 ~ a1 a1@7 ~", AQ: "a1@5 ~ a1@7 ~@3",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  A B C D A B C D E@3 ~@18 F G@2 H@2 I@2 J F G@2 H@2 I@2 J K@2 L M N ~ O P ~@21 F G@2 H@2 I@2 J F G@2 H@2 I@2 J K@2 L Q
  R@2 S@2 T@2 U@2 V W X W V Y Z AA AB AC AD@8 AE@5 AF@8 S@2 N ~ O P AG@2 AH@2 AG@2 AH@2 AG@2 AH@2 AG@2 AH@2 AI ~@8
>`.pickRestart({
  A: "[a1,e2] ~ a1@2 [a2,e3]@2 a1@2 ~@2 a1@2 [a2,e3]@2 a1 ~", // A5
  B: "[a1,e2] ~ a1@2 [a2,e3]@2 [a1,e2]@2 ~@2 [a1,e2]@2 [a2,e3] ~@3", // A5
  C: "a1@2 a1@2 [a2,e3]@2 a1@2 ~@2 a1@2 [a2,e3]@2 a1 ~", D: "a1 ~ a1@2 [a2,e3]@2 [a1,e2]@2 ~@2 [a1,e2]@2 [a2,e3]@2 ~@2",
  E: "[a1,e2]/3", F: "~@4 b3@6 f#3@5 ~", G: "[b3@3 f#3@3 b3@4 a3@3 g#3@3]/2", H: "[f#3@3 g#3@7 c#4@3 g#3@3]/2",
  I: "[c#4@3 g#3@3 c#4@4 b3@3 a#3@3]/2", J: "g#3@3 f#3@5",
  K: "[d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2]@2", // D# E
  L: "[d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2] ~ [e1,e2]@2", // D# E
  M: "[d#1,d#2]@2 [e1,e2]@2 [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2] ~", N: "~@3 f#2 f#3 e3 d#3 c#3",
  O: "~@3 b2 f#3 e3 d#3 c#3", P: "~@4 d#3@2 c#3@3 ~@7",
  Q: "[d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2] ~", R: "[[f#2,b2]@29 ~@3]/2",
  S: "[[f#2,b2]@13 ~@3]/2", T: "[[b2,d3,g3]@27 ~ [b2,d3,g3]@3 ~]/2", U: "[[c#3,e3,a3]@7 ~]/2",
  V: "[e3,a3,c#4]@2 [e3,a3,c#4]@2 ~@2 [e3,g#3,b3] ~ [e3,g#3,b3]@7 ~", W: "[d#3,f#3,b3]@7 ~",
  X: "[e3,a3,c#4]@2 [e3,a3]@2 ~@2 [e3,g#3] ~ [e3,g#3,b3]@6 ~@2", Y: "[d#3,f#3,b3]@13 ~@3",
  Z: "[e3,a3,c#4]@2 [e3,a3,c#4]@2 ~@2 [e3,g#3,b3] ~ [e3,g#3]@7 ~", // A E
  AA: "[f1,f2]@2 [f#1,f#2] ~ [f#1,f#2]@2 f#1@2 [f1,f2]@2 [f#1,f#2]@2 [f#1,f#2]@2 [f#1,f#2]@2", // F F# F F#
  AB: "[f1,f2]@2 [f#1,f#2]@2 [f#1,f#2]@2 [f#1,f#2]@2 [f1,f2]@2 [f#1,f#2]@2 [f#1,f#2] ~ [f#1,f#2]@2", // F F# F F#
  AC: "[b1,f#2,b2]@4 b3 ~@5 f#3@6", // B5
  AD: "[~@6 f#3@6 ~@8 a3@6 g#3@6 f#3@6 g#3@14 c#4@6 g#3@6 c#4@6 g#3@6 c#4@8 ~@6 a#3@6 g#3@6 f#3@10 ~@10 f#3@5 ~, ~@3 b3@18 b3@8 b3@3]/8",
  AE: "[~@3 f#3@3 ~@4 a3@3 g#3@3 f#3@3 g#3@7 c#4@3 g#3@3 c#4@3 g#3@3 c#4@2, ~@3 b3@17]/5",
  AF: "[~@10 a#3@6 g#3@6 f#3@10 [d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2]@2 [d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2]@2 [d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2] ~ [e1,e2]@2 [d#1,d#2]@2 [e1,e2] ~ [e1,e2]@2 [e1,e2]@5 ~ [e1,e2]@2 [e1,e2] ~ [f#2,b2]@29 ~@3, ~ b3@31]/8", // D# E D# E D# E D# E …
  AG: "[[e2,a2]@29 ~@3]/2", AH: "[[e2,a2]@13 ~@3]/2", AI: "[e2,a2]@5 ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.28)

// chords · acoustic guitar steel · "Acoustic Guitar" · soft notes
const acoustic_guitar_steel_2 = note("<A B C D A B C D ~@96 E F ~@2 G H ~@54>".pickRestart({
  A: "~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~", B: "~ e2 ~@6", C: "e2@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~",
  D: "e2 ~ e2@2 ~@12", E: "a#3@2 c#4@2 ~@2 b3 ~@7 [e3,g#3,b3] ~", F: "a#3 ~@15", G: "~@8 b3 ~@7", H: "~@3 f#2 ~@4",
})).s("gm_acoustic_guitar_steel").gain(0.12)

// chords · overdriven guitar · "Driven Guitar"
const overdriven_guitar = note(`<
  ~@2 A@3 B@2 C@2 ~@7 D E F G ~@4 H I J K L M@2 N@2 O@2 P@2 M@2 N@2 O@2 P@2 Q R@2 S T U V U ~@5 W@3 X Y Z AA AB AC AD@2
  H I J K L M@2 N@2 O@2 P@2 M@2 N@2 O@2 P@2 Q R@2 S AE AF AG AH AI AJ AK AL AM AN AO AP AM AQ AM AR AS AT ~@7 M@2 N@2
  O@2 P@2 Q R@2 S AE AF AG AH T U V U AU AV AW AX AU AV AW AX AU AV AW AX AU AV AW AX AY ~@8
>`.pickRestart({
  A: "[~@16 a3 ~@11 c3@2 c3@2 a2 ~@5 a2 ~@7 a2 ~, a2@3 a2@4 a2@2 a2@4 a2@3 ~@8, ~ a3@3 ~@5 a3@3, ~@5 g3@3 ~@3 g3@10 g3@3]/3",
  B: "[a3 ~ a2 ~@7 a2 ~ c3@2 c3@2 a2 ~@5 a2 ~@7 a2 ~, ~@3 g3@10 g3@3, ~@5 a3@3]/2",
  C: "[a3 ~ a2 ~@7 a2 ~ c3@2 c3@2 a2 ~@15, ~@3 g3@10 ~@3]/2", D: "~@2 [e3,a3] ~ [e3,a3]@2 ~@2 [e3,a3]@3 ~@3 [e3,a3] ~",
  E: "~@2 [e3,a3] ~ [e3,a3]@2 ~@2 [e3,a3]@2 ~@6", F: "~@2 [e3,a3] ~ [e3,a3]@2 ~@2 [e3,a3]@2 ~@4 [e3,a3] ~",
  G: "~@2 e3 ~ [e3,a3]@2 ~@2 [e3,a3]@3 ~@5", H: "[d3,a3] [e3,a3]", I: "[e3,b3]", J: "[f#3,b3]@8 [f#3,c#4]@7 ~",
  K: "[e3,b3]@14 [e3,b3] ~", L: "[e3,b3]@15 ~", M: "[[b2,f#3]@7 [b2,f#3]]/2", N: "[[b2,e3]@7 [b2,e3]]/2",
  O: "[[c#3,g#3]@7 [c#3,g#3]]/2", P: "[f#3@7 [c#3,f#3]]/2", Q: "d#2@2 e2 ~ e2@2 e2@5 ~ e2 ~ e2@2",
  R: "d#2@2 e2 ~ e2 ~ e2@5 ~ e2 ~ e2 ~", S: "d#2@2 e2@2 e2 ~ e2@5 ~ e2 ~ e2@2", T: "[b2,f#3]", U: "[f#2,c#3]",
  V: "[e2,b2]", W: "[~@12 [c#4,f#4] ~ [c#4,f#4]@34]/3", X: "a2@4 a3@3 ~@3 e3@2 a3@3 ~",
  Y: "a2@4 a3@4 e3 ~ e3 ~ c3 ~ c3@2", Z: "a2@4 a3@2 ~@4 a2@2 a3@3 ~", AA: "a2@4 a3@2 e3 ~@3 e3@2 c3 ~ c3@2",
  AB: "a2@4 f#3@4 c#3 ~ c#3@2 f#3@2 ~@2", AC: "a2@3 ~ f#3@2 c#3@2 ~@2 c#3@2 f#3@3 ~",
  AD: "[[e3,a3]@19 ~ [e3,a3] ~ [e3,a3]@9 ~]/2", AE: "b2@2 b3@2 ~ a3@2 b2, ~@2 b2 ~", AF: "b3@2 b2 a3@2 b2 d3!2",
  AG: "b2@2 b3@2 b2 a3@2 b2", AH: "b3@4 b2@2 a3@4 b2@2 d3 ~ d3@2", AI: "b2@3 ~ b3@4 b2@2 a3@4 b2@2",
  AJ: "b3@4 b2@2 a3@4 b2@2 d3 ~ d3@2, g#3 ~@15", AK: "e2@2 e3@2 e2 f#3@2 e2",
  AL: "~ e2 f#3 a3 [a3,d4]@2 [a3,d4]@2, a3 ~@3", AM: "a2@2 a2@3 ~ e2 ~ e2@8",
  AN: "b2@2 b2 ~ b2 ~@3 b2 ~ b2 ~ b2 ~ b2 ~", AO: "a2 ~ a2@3 ~ e2 ~ e2@8",
  AP: "b2@2 b2 ~ b2@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", AQ: "b2@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  AR: "f2@2 f#2 ~ f#2@2 f#2 ~ f2@2 f#2@2 f#2@2 f#2 ~", AS: "f2@2 f#2 ~ f#2 ~ f#2@2 f2@2 f#2 ~ f#2 ~ f#2@2",
  AT: "[b2,f#3]@3 ~@13", AU: "a2@2 a3@2 ~ g3@2 a2, ~@2 a2 ~", AV: "a3@2 a2 g3@2 a2 c3!2", AW: "a2@2 a3@2 a2 g3@2 a2",
  AX: "a3@4 a2@2 g3@4 a2@2 c3 ~ c3@2", AY: "[e3,b3]@5 ~ [e3,a3]@9 ~",
})).s("gm_overdriven_guitar").gain(0.32)

// chords · overdriven guitar · "Driven Guitar" · soft notes
const overdriven_guitar_soft = note(`<
  ~@2 A B A B A B ~@11 C ~@15 D@2 ~@6 D@2 E F@3 ~@31 D@2 ~@6 D@2 E F@3 ~@9 G ~@21 D@2 E F@3 ~@33
>`.pickRestart({
  A: "~ e3 ~@2 e3 ~@3", B: "~@2 e3 ~@5", C: "~@2 a3 ~@13", D: "[c#3@7 ~]/2", E: "b2", F: "b2@15 ~", G: "~@6 b2 ~@9",
})).s("gm_overdriven_guitar").gain(0.16)

// chords · synth strings 1 · "Synstrings"
const synth_strings_1 = note("<~@12 A@4 ~@4 A@4 ~@33 A@4 ~@4 A@4 ~@42 B@2 C@2 D@2 E@2 ~@45>".pickRestart({
  A: "[a3,c#4,f#4]/4", B: "[d#4,f#4,b4]/2", C: "[e4,g#4,b4]/2", D: "[e4,g#4,c#5]/2", E: "[f#4,a#4,c#5]/2",
})).s("gm_synth_strings_1").gain(0.24)

// chords · rock organ · "Electric Organ"
const rock_organ = note(`<
  ~@24 A B C D@2 E@2 F@2 G@2 H@2 E@2 F@2 G@2 H@2 ~@8 I J K L M ~@11 A B C D@2 E@2 F@2 G@2 H@2 E@2 F@2 G@2 H@2 ~@29 E@2
  F@2 G@2 H@2 ~@37
>`.pickRestart({
  A: "[f#5,a5,d6] [a5,c#6,e6]", B: "[g#5,b5,e6]", C: "[f#5,b5,d6] [f#5,a5,c#6]", D: "[g#5,b5,e6]/2",
  E: "[d#4,f#4,b4]/2", F: "[e4,g#4,b4]/2", G: "[e4,g#4,c#5]/2", H: "[f#4,a#4,c#5]/2",
  I: "~@2 [e5,a5,c#6] ~ [e5,a5,c#6]@2 ~@2 [e5,a5,c#6] ~ [a5,c#6]@2 ~@4, ~@10 e5 ~@5", // A
  J: "[e5,a5,c#6] ~@3 c#6 ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,a5,c#6] ~ [f#5,a5,d6] ~ [f#5,a5,d6] ~", // A D
  K: "~@2 [e5,a5,c#6] ~ [e5,a5,c#6]@2 ~@2 [e5,a5,c#6] ~ [e5,a5] ~@3 [e5,a5,c#6] ~, ~@5 c#6 ~@2", // A A5 A
  L: "[e5,a5,c#6] ~ [e5,a5,c#6] ~@3 [e5,a5,c#6] ~ [e5,a5,c#6] ~ [e5,c#6] ~@2 [g6,g#6] [g5,a5,b5,c6,d6,d#6,f6] [b4,c5,d5,e5,f5], ~@12 [c#6,e6,a6]@3 ~", // A C#m G#maj7 G7 Bdim A
  M: "[b3,c4,d4,e4,f4,g4,a4] ~@15, f#3 ~@3", // Bm7b5
})).s("gm_rock_organ").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@4 B C A D E D E F B C A D E D E F G@2 E G H I@2 C D@2 I@2 C I@2 C D@2 I@2 C H@4 B@3 J K L K M E D E F B C A D E
  D E F G@2 E G H I@2 C D@2 I@2 C I@2 C D@2 I@2 C H@4 B@3 J B@3 J H L H L H L H@3 K L K L@2 K L@2 I@2 C D@2 I@2 C H@4
  B@3 J B@3 J B@3 J B@3 J B@3 J B@3 J N ~@8
>`.pickRestart({
  A: "x ~@2 x!3 ~@2", B: "x ~@3 x!2 ~@2", C: "x!2 ~@2 x!2 ~ x", D: "x!2 ~ x!3 ~@2", E: "x ~@3 x!2 ~ x",
  F: "x!2 ~ x!3 ~ x", G: "x ~@2 x!3 ~ x", H: "x ~@2 x!2 ~@3", I: "x!2 ~@2 x!2 ~@2", J: "x!2", K: "x ~@6 x", L: "x",
  M: "x ~@4 x!2 ~", N: "x ~@2 x ~@4",
})).gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@8 A B C@2 B C B ~ A B C@2 B C B ~@3 B ~@2 A@2 B C@2 A@2 B A@2 B C@2 A@2 B ~@4 B@3 D ~@4 B C B ~ A B C@2 B C B ~@3 B
  ~@2 A@2 B C@2 A@2 B A@2 B C@2 A@2 B ~@4 B@3 D B@3 D ~@17 A@2 B C@2 A@2 B ~@4 B@3 D B@3 D B@3 D B@3 D B@3 D B@3 D ~@9
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~@4", C: "~@7 x", D: "~@3 x ~@2 x ~",
})).gain(0.2)

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

// drums · clap
const clap = s("cp").struct("<~@45 A@4 ~@4 B@4 ~@33 A@4 ~@33 A@4 ~@33>".pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~ x ~ x",
})).gain(0.4)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<[~@5 x ~ x]!8 ~@156>").gain(0.16)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B@3 C D B@4 E B@2 F G B@3 E B E H B@4 I J K B F L B E I J K B F L B@2 H F M N O B J B P@3 N Q E B@2 F G B@3 E B
  E H B@4 I J K B F L B E I J K B F L B@2 H F M N O B J B O B J B R S@2 T N U J H E ~@8 I J K B F L B@2 H F M N O B J B
  O B J B O B J B O B J B O B J B O B J B V ~@8
>`.pickRestart({
  A: "~@3 x", B: "x!8", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3", D: "~@2 x ~ x!4", E: "x!7 ~", F: "x!3 ~ x!4", G: "x!5 ~ x ~",
  H: "~@2 x!6", I: "~ x!2 ~ x!4", J: "x ~ x!6", K: "x!3 ~ x!2 ~ x", L: "~ x!4 ~ x!2", M: "x ~ x!3 ~ x!2",
  N: "x ~ x ~ x!4", O: "~@3 x!2 ~ x!2", P: "x!4", Q: "~ x!7", R: "~@2 x!5 ~", S: "x ~ x ~ x ~ x!2", T: "x ~@2 x ~@4",
  U: "x ~ x!3 ~ x ~", V: "~ x!2 ~@5",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A ~@4 B ~@7 B ~@12 B C D ~ B E F ~ B C D ~ B E F ~@2 B G H I ~ C ~ J@3 H ~@4 B ~@12 B C D ~ B E F ~ B C D ~ B E F
  ~@2 B G H I ~ C ~ I ~ C ~ K G L M H N C ~@10 B C D ~ B E F ~@2 B G H I ~ C ~ I ~ C ~ I ~ C ~ I ~ C ~ I ~ C ~ I ~ C
  ~@10
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~@4", C: "~ x ~@6", D: "~@3 x ~@2 x ~", E: "x ~@4 x ~@2", F: "x", G: "~ x ~@3 x ~@2",
  H: "~ x ~ x ~@4", I: "~@2 x ~@2 x ~@2", J: "~ x ~ x ~ x ~ x", K: "~@7 x", L: "~ x ~ x ~ x ~@2", M: "~ x!2 ~ x!2 ~@2",
  N: "~ x ~@3 x ~ x",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@5 x!3] ~@44 [~@5 x!3] ~@90>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A ~@5 A ~@3 B ~@3 A ~ A ~@12 A ~@21 A ~@3 B ~@3 A ~ A ~@12 A ~@23 C ~@4 A ~@53
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@3 x",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@15 A ~@4 A ~@7 A ~@7 A ~@3 A ~@7 A ~@11 A ~@4 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@6 A ~@9 A ~@7 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~@8
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4",
})).gain(0.36)

stack(
// … 3 more lines

More by Roxette