Strudelify
Spending My Time cover art

1991 · Joyride

Spending My Time

Roxette

KeyB majorTempo87 bpm
0:00/0:00
// Spending My Time — Roxette
// 87 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(87/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 · synth strings 1 · "fläche"
const synth_strings_1 = note(`<
  ~ A@2 B@2 C D@3 E@2 F@2 G@4 H@4 I@3 J K@2 L@2 C M N@4 O@4 P@3 Q R@4 S@4 T@2 ~@6 U V W@4 X@3 Y Z@4 AA@4 ~@6
>`.pickRestart({
  A: "[c#4@7 ~ d4@7 ~ [e4,g#4]@16, [f#4,a4] ~, ~@8 b3@23 ~]/2", // E F#m
  B: "[c#4@7 ~ d4@7 ~@7 g#4@10, a4@11 ~@5, f#4 [b3,e4]]/2", C: "c#4@7 ~ d4@7 ~, [f#4,a4]",
  D: "[[e4,g#4]@16 d#4@16 d4@15 ~, b3@47 ~, ~@16 f#4@31 ~]/3", // E
  E: "[c#4@7 ~ d4@7 ~@5 g#4@12, a4@5 ~@3, f#4 e4, ~@8 b3@23 ~]/2",
  F: "[c#4@7 ~ d4@7 ~@5 g#4@4 f#4@4 g#4@4, a4@5 ~@3, f#4 [b3,e4]]/2", // E5
  G: "[c#4@7 ~ d4@6 ~@6 g#4@12 ~@16 d4@16, a4@5 ~@3 d#4@4 ~@4, f#4 b3@3, ~@16 e4@15 ~ f#4@32, ~@5 b5@3]/4",
  H: "[g#4@6 f#4@6 g#4@19 ~ [d#4,f#4]@31 ~, b3@31 ~, e4 ~]/4", // D#m
  I: "[g#4@6 f#4@6 g#4@3 ~ e4@16 f#4@8 e4@7 ~, c#4@47 ~, e4@15 ~ a4@32]/3", J: "[d#4,f#4,b4]",
  K: "[[c#4,e4,g#4]@31 ~]/2", L: "[c#4@7 ~ d4@6 ~@6 g#4@11 ~, a4@5 ~@3, f#4@16 e4@15 ~, ~@8 b3@23 ~]/2",
  M: "a4 g#4 f#4 g#4, [b3,e4]", // E5
  N: "[c#4@7 ~ d4@6 ~@6 g#4@12 ~@16 d4@15 ~, a4@5 ~@3 d#4@4 ~@4, f#4@16 b3@47 ~, ~@16 e4@15 ~ f#4@31 ~, ~@5 b5@3]/4",
  O: "[g#4@3 f#4@3 g#4@10 [d#4,f#4]@16, b3@63 ~, e4 ~]/4", // D#m
  P: "[g#4@6 f#4@6 g#4@4 ~@16 f#4@8 e4@7 ~, c#4@47 ~, e4@5 ~@3, ~@16 a4@31 ~]/3", Q: "[b3,d#4,f#4,b4]@15 ~",
  R: "[g#4@6 f#4@6 g#4@4 a4@6 g#4@10 [d#4,f#4]@31 ~, b3@63 ~, e4@31 ~@33]/4", // D#m
  S: "[g#4@6 f#4@6 g#4@3 ~@33 [d#4,b4]@8 ~@8, c#4@47 ~@17, e4@15 ~ f#4@12 ~@4, ~ a4@2 ~]/4", // G#m
  T: "[~@8 b3@7 ~, [c#4,e4,g#4]@15 ~]/2", U: "[a3,d4,f#4]", V: "[g#3,c#4,f4]@7 ~",
  W: "[a#4@3 g#4@3 a#4@2 b4@3 a#4@5 [f4,g#4]@16, c#4@63 ~, f#4@31 ~@33]/4", // Fm
  X: "[a#4@3 g#4@3 a#4@2 ~@8 g#4@4 f#4@3 ~, d#4@47 ~, f#4@2 ~, ~ b4@2]/3", Y: "[c#4,f4,g#4]@15 ~",
  Z: "[a#4@3 g#4@3 a#4@2 b4@3 a#4@5 f4@12 f#4@2 f4@2, c#4@63 ~, f#4 g#4]/4",
  AA: "[f#4@3 g#4@3 ~@18 [f4,c#5]@8, d#4@23 ~@9, a#4 b4@2 ~, ~@3 f#4@5 g#4@8]/4", // C#
})).s("gm_synth_strings_1").gain(0.28).pan(0.4)

// chords · overdriven guitar · "O.guitar"
const overdriven_guitar = note(`<
  ~@35 A ~ B@2 C D E F G@2 B@2 C D H F I@2 J K L M@3 N C O@2 P@2 Q F R C O@2 S@2 Q F T U@7
>`.pickRestart({
  A: "[e2,b2]", B: "[b2,f#3]/2", C: "[c#3,g#3]", D: "[a2,e3]", E: "[f#2,c#3] [a2,e3]", F: "[b2,f#3]", G: "[e2,b2]/2",
  H: "[f#2,c#3]", I: "[~@6 c#4@2 e4@2 f#4@2 [f#4,g#4] ~ f#4@4 c#5@12 ~@2]/2", J: "[f#2,c#3]@5 ~ [a2,e3]@10",
  K: "[e3,b3]@5 ~ [d3,a3]@9 ~", L: "[f#2,c#3]@5 ~ [a2,e3]@9 ~",
  M: "[[e2,e3]@16 [f#2,c#3]@6 [a2,e3]@9 ~ b3@6 [b2,f#3]@10, b2@19 ~@5, ~@8 e3 ~@3]/3", N: "[d3,a3]@15 ~",
  O: "[f#2,c#3]/2", P: "[c#3,g#3]/2", Q: "[d#3,a#3]", R: "[d#3,g#3] [b2,f#3]", S: "[[c#3,g#3]@31 ~]/2", T: "[g#2,d#3]",
  U: "[c#3@51 ~@5, g#3@25 ~@3]/7",
})).s("gm_overdriven_guitar").gain(0.5).pan(0.6)

// chords · electric guitar clean · "Analog"
const electric_guitar_clean = note(`<
  ~ A B C D C B E F A G H I J G E K L B E@2 M N O P Q R A S T I C G E F U B E@2 V N O E W@2 E@2 X Y Z AA Q AB AC AD AC
  AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AK AL AR AS AN AT AU@2 ~@5
>`.pickRestart({
  A: "[f#4,a4]@2 c#4@2 [f#4,a4]@2 c#4 ~ [d4,f#4,a4]@2 b3@2 [d4,f#4,a4]@2 b3@2", // F#m D
  B: "[e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3", C: "[f#4,a4] c#4 [f#4,a4] c#4 [f#4,a4] d4 [f#4,a4] d4",
  D: "[e4,a4]@2 b3@2 [e4,a4] ~ [e4,g#4]@4 b3@2 [e4,g#4]@2 b3@2, ~@6 b3@3 ~@7", // A5 E
  E: "[d#4,f#4] b3 [d#4,f#4] b3 [d#4,f#4] b3 [d#4,f#4] b3", F: "[d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3 [d4,f#4] b3",
  G: "[e4,a4] b3 [e4,g#4] b3 [e4,g#4] b3 [e4,g#4] b3", // A5 E
  H: "[f#4,a4]@2 c#4@2 [f#4,a4]@2 c#4@2 [f#4,a4]@2 d4@2 [f#4,a4]@2 d4 ~", // F#m
  I: "[e4,a4] b3 [e4,g#4] b3 [e4,f#4] b3 [e4,g#4] b3", // A5 E Esus2 E
  J: "[f#4,a4]@2 c#4@2 [f#4,a4]@2 c#4 ~ [d4,f#4,a4]@2 d4@2 [f#4,a4]@2 d4@2", // F#m D F#m
  K: "[d4,f#4]@2 b3@2 [d4,f#4]@2 b3@2 [d4,f#4]@2 b3@2 [d4,f#4]@2 b3 ~", // D
  L: "[e4,g#4,g#5]@2 b3@2 [e4,g#4] ~ [b3,e4,f#4]@3 ~ [b3,e4,f#4,f#5] ~ [e4,g#4,g#5]@2 [b3,e5]@2, ~@6 f#5 ~@9", // E Bsus4 E E5
  M: "[e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5] ~ [c#4,e4,f#4]@3 ~ [c#4,e4,f#4,d#5,f#5]@2 [e4,g#4,e5,g#5]@2 [c#4,c#5,e5]@2, ~@6 [d#5,f#5] ~@9", // E C# E F#7 D#m7 E C#m D#m
  N: "[e4,a4] c#4 [e4,a4] c#4 [e4,a4] c#4 [e4,a4] c#4", O: "[f#4,a4] c#4 [f#4,a4] c#4 [e4,a4] c#4 [e4,a4] c#4",
  P: "[d#4,f#4]@2 b3@2 [d#4,f#4]@2 b3@2 [d#4,f#4]@2 b3@2 [d#4,f#4]@2 b3 ~", // D#m
  Q: "[e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] [c#4,c#5]", // E C# E C# E C# E C#
  R: "[e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] [c#4,c#5] [e4,g#4,e5,g#5] c#4", // E C# E C# E C# E
  S: "[e4,a4] [b3,b4] [e4,g#4,e5] [b3,a5] [e4,g#4,g#5] [b3,e5] [e4,g#4,b4] [b3,c#5]", // A5 B E B7 E E5 E Bsus2
  T: "[f#4,a4]@2 c#4@2 [f#4,a4]@2 c#4 ~ [f#4,a4]@2 d4@2 [f#4,a4]@2 d4 ~", // F#m
  U: "[e4,g#4,g#5]@2 b3@2 [e4,g#4,e5] ~ [b3,e4,f#4,f#5]@3 ~ [b3,e4,f#4,f#5] ~ [e4,f#4,g#4,g#5]@2 [b3,e5]@2, ~@2 b4 ~@13", // E Bsus4 E E5
  V: "[e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5] ~ [c#4,e4,f#4,d#5,f#5]@2 ~@2 [c#4,e4,f#4,d#5,f#5] ~ [c#4,e4,g#4,e5,g#5] ~ [c#4,c#5,e5]@2", // E C# E D#m7 C#m
  W: "[[e4,g#4,g#5]@2 [b3,b4]@2 [e4,g#4,e5] ~ [b3,e4,f#4,f#5]@3 ~ [b3,e4,f#4,f#5] ~ [e4,g#4,g#5]@2 b3@2 [e4,a4]@2 b3@2 [e4,a4] ~ [e4,g#4]@4 b3@2 [e4,g#4]@2 b3@2, ~@7 e5@2 ~@7]/2", // E B E Bsus4 E A5 E
  X: "[e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5] ~ [c#4,e4,f#4]@3 ~ [c#4,e4,f#4,d#5,f#5] ~ [c#4,e4,g#4,e5,g#5]@2 [c#4,c#5,e5]@2, ~@6 [d#5,f#5] ~@9", // E C# E F#7 D#m7 C#m D#m
  Y: "[e4,a4] c#4 [e4,a4] c#4 [e4,a4] c#4 [e4,a4,f#5] [c#4,g#5]", // A5 F#m7 C#5
  Z: "[f#4,a4] c#4 [f#4,a4] c#4 [f#4,a4] c#4 [f#4,a4] c#4, c#5@13 ~@3", AA: "~@2 b3@11 ~@3, [d#4,f#4]@3 ~",
  AB: "[e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5]@2 [c#4,c#5]@2 [e4,g#4,e5,g#5]@2 c#4 ~", // E C# E C# E C# E
  AC: "[f#3,c#4]@5 ~ [a3,e4]@9 ~", AD: "[e3,b3]@5 ~ [d3,a3,d4]@9 ~", AE: "[b3,e4]@15 ~", AF: "[f#3,c#4]@6 [a3,e4]@9 ~",
  AG: "[b3,e4]@5 ~ [b3,d#4]@9 ~", AH: "[f#3,d4], a3@7 ~", AI: "~ c#5 c#6 ~, [g#3,c#4]@7 ~",
  AJ: "[f#4,a#4,a#5]@2 [c#4,c#5]@2 [f#4,a#4,f#5] ~ [c#4,f#4,g#4,g#5]@3 ~ [c#4,f#4,g#4,g#5]@2 [f#4,a#4,a#5]@2 [c#4,f#5]@2", // F# C# F# C#sus4 F# F#5
  AK: "[f#4,b4]@2 c#4@2 [f#4,b4] ~ [f#4,a#4]@4 c#4@2 [f#4,a#4]@2 c#4@2", // B5 F#
  AL: "[f4,g#4] c#4 [f4,g#4] c#4 [f4,g#4] c#4 [f4,g#4] c#4", // Fm
  AM: "[f#4,a#4,f#5,a#5]@2 [d#4,d#5]@2 [f#4,a#4,f#5,a#5] ~ [f#4,g#4]@3 ~ [f#4,g#4,f5,g#5] ~ [f#4,a#4,f#5,a#5]@2 [d#4,d#5,f#5]@2, ~@6 [f5,g#5] ~@9", // F# D# F# F#sus2 C# F# D#m Fm
  AN: "[f#4,b4] d#4 [f#4,b4] d#4 [f#4,b4] d#4 [f#4,b4] d#4", AO: "[g#4,b4] d#4 [g#4,b4] d#4 [f#4,b4] d#4 [f#4,b4] d#4",
  AP: "[g#4,c#5]@2 f4@2 [g#4,c#5]@2 f4@3 ~ f4@2 [g#4,c#5]@2 f4 ~", // C#5
  AQ: "[f#4,a#4,a#5]@2 [c#4,c#5]@2 [f#4,a#4,f#5] ~ [c#4,f#4,g#4,g#5]@3 ~ [c#4,g#4,g#5]@2 [f#4,a#4,a#5]@2 [c#4,f#5]@2, ~@10 f#4 ~@5", // F# C# F# C#sus4 C#5 F# F#5
  AR: "[f4,g#4]@2 c#4@2 [f4,g#4] ~ [c#4,f#4,g#4]@3 ~ [c#4,f#4,g#4] ~ [c#4,f4,g#4]@2 c#4 ~", // Fm C#sus4 C#
  AS: "[f#4,a#4,f#5,a#5]@2 [d#4,d#5]@2 [f#4,a#4,f#5,a#5] ~ [d#4,f#4,g#4]@3 ~ [d#4,f#4,g#4,f5,g#5] ~ [d#4,f#4,a#4,f#5,a#5]@2 [d#4,d#5,f#5]@2, ~@6 [f5,g#5] ~@9", // F# D# F# G#7 Fm7 D#m Fm
  AT: "[g#4,b4]@2 d#4@2 [g#4,b4]@2 d#4@2 [g#4,b4]@2 d#4@2 [g#4,b4]@2 d#4 ~", AU: "[[g#3,c#4,f4]@25 ~@7]/2",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.4)

// chords · rock organ · "organ"
const rock_organ = note(`<
  ~@17 A@4 B@3 C D@2 ~@8 A@4 E@3 F G@4 H I@2 F J@2 K L M N M O P Q R S T@2 U@3 V W@4 X@3 Y@2 ~@5
>`.pickRestart({
  A: "[g#5@3 f#5@3 g#5@10 [d#5,f#5]@16, b4@63 ~, e5@31 ~@33]/4", // D#m
  B: "[g#5@6 f#5@6 g#5@3 ~@17 f#5@8 e5@7 ~, c#5@47 ~, e5@31 ~@17, ~@16 a5@31 ~]/3", C: "[b4,d#5,f#5]",
  D: "[[c#5,e5,g#5]@31 ~]/2", E: "[g#5@6 f#5@6 g#5@4 ~@16 f#5@8 e5@7 ~, c#5@47 ~, e5@31 ~@17, ~@16 a5@31 ~]/3",
  F: "[b4,d#5,f#5]@15 ~", G: "[g#5@7 f#5@5 g#5@4 a5@6 g#5@9 ~ [d#5,f#5]@31 ~, b4@63 ~, e5@31 ~@33]/4",
  H: "[c#5,e5,g#5]@5 ~ [c#5,e5,f#5]@6 [c#5,e5,g#5]@3 ~", I: "[e5@15 ~ f#5@15 ~, [c#5,a5]@31 ~]/2",
  J: "[c#5@16 b4@15 ~, [e5,g#5]@31 ~]/2", K: "[f#4,a4,c#5,f#5]@5 ~ [a4,c#5,e5]@9 ~",
  L: "[e4,b4,e5]@5 ~ [f#4,a4,d5]@9 ~", M: "[f#4,a4,c#5]@3 [a4,c#5,e5]@5", N: "[e4,b4,e5]",
  O: "[e4,b4,e5]@6 [f#4,b4,d#5]@9 ~", P: "[f#4,a4,d5]", Q: "[g#4,c#5,f5]@15 ~",
  R: "[a#4,c#5,f#5,a#5]@6 [c#5,f#5] ~@5 a#5@4, ~@3 g#5@3 ~@2", S: "b5@3 a#5@5", T: "[[f5,g#5]@31 ~]/2",
  U: "[[d#5,f#5,a#5]@5 ~ [d#5,f#5,g#5]@6 a#5@4 ~@16 g#5@8 f#5@6 ~@2, ~@12 d#5@35 ~, ~@3 f#5@5 ~@4, ~ b5@2]/3", // D#m G#7
  V: "[c#5,f5,g#5]@15 ~", W: "[a#5@6 g#5@6 a#5@3 ~ b5@5 ~ a#5@10 f5@22 f#5@6 f5@4, c#5@63 ~, f#5 g#5]/4",
  X: "[[d#5,f#5,a#5] ~ a#5@4 g#5@6 a#5@4 ~@16 g#5@16, ~@2 d#5@45 ~, ~ f#5@15 ~@8, ~ b5@2]/3", // D#m
  Y: "[[g#4,c#5,f5]@25 ~@7]/2", // C#
})).s("gm_rock_organ").gain(0.28).pan(0.3)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@17 A B C D E F G H I J K L M L N B O J P@2 C@2 I Q G R B@2 C S T U V W E X Y Z AA AB Y AC AD AE AF AG T AH AI O AJ
  AK AL AM E@2 AN X AO AP@2 ~@5
>`.pickRestart({
  A: "e1@2 ~ e1@3 ~@2", B: "e1@5 ~ e1@9 ~", C: "b1@5 ~ b1@8 ~@2", D: "b1@5 ~ b1@3 ~ b1@5 ~", E: "c#2@5 ~ c#2@9 ~",
  F: "a1@4 ~@2 a1@9 ~", G: "f#1@7 ~ a1@7 ~", H: "b1@5 ~ b1@3 ~ b1@4 ~@2", I: "c#2@5 ~ c#2@8 ~@2",
  J: "b1@4 ~@2 b1@7 ~@3", K: "f#1@4 ~@2 b1@7 ~@3", L: "e1@2 ~ e1@4 ~", M: "f#1@5 ~ d1@9 ~", N: "f#1@4 ~@2 d1@9 ~",
  O: "b1@4 ~@2 b1@9 ~", P: "e1@5 ~ e1@7 ~@3", Q: "a1@2 ~ a1@4 ~", R: "b1@5 ~ b1@3 ~ b1@6", S: "b1@5 ~ b1@7 ~@3",
  T: "c#2@4 ~@2 c#2@9 ~", U: "a1@5 ~ a1@8 ~@2", V: "f#1@5 ~ f#1@7 ~ f#1@2", W: "b1@15 ~", X: "b1@5 ~ b1@9 ~",
  Y: "f#1@5 ~ a1@8 ~@2", Z: "e1@5 ~ d1@9 ~", AA: "f#1@5 ~ a1@9 ~", AB: "e1@15 ~", AC: "e1@5 ~ b1@9 ~",
  AD: "d2@5 ~ d2@6 d1@4", AE: "c#1 d#1 e1 f1 f#1 g#1 a#1 b1", AF: "f#1@4 ~@2 f#1@7 ~ c#1@2", AG: "f#1@5 ~ f#1@10",
  AH: "c#2@5 ~ c#2@3 ~ c#2@5 ~", AI: "d#1@2 ~ d#1@5", AJ: "g#1@8 b1@2 b1@3 ~ b1@2", AK: "c#2 ~ c#2@13 ~",
  AL: "f#1@4 ~@2 f#1@9 ~", AM: "f#1@2 ~ f#1@5", AN: "d#2@5 ~ d#2@10", AO: "g#1@5 ~ g#1@7 ~ g#1@2",
  AP: "[c#2@21 ~@11]/2",
})).s("gm_fretless_bass").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A@3 B A@2 C B A@5 B A@7 B A@2 C B A@7 D A@3 B A E A B@2 F A@3 B A@2 G H A@3 B A@3 D ~@6
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~ x ~@2", C: "x!2", D: "x", E: "x ~@8 x!2 ~@5", F: "x ~@2 x!2 ~@2 x",
  G: "x ~@3 x!2 ~@2", H: "x!2 ~ x ~ x ~@2",
})).gain(0.6)

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

// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@7 B ~@9 C ~@7 D ~@6 B ~@2 D ~@5 B ~ E ~@7 F ~@6 B ~@7>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@11 x ~@4", D: "~@15 x", E: "~@11 x ~@3 x", F: "x!2 ~ x ~ x ~@2",
})).gain(0.6)

// drums · hihat
const hihat = s("hh").struct("<A ~@15 B C@25 D C@7 E C@9 F C@15 E ~@6>".pickRestart({
  A: "x!3 ~", B: "~@3 x", C: "x!8", D: "x!4 ~ x!3", E: "x", F: "x!4 ~@4",
})).gain(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 A ~@7 B ~@9 C ~@7 D ~@7 E ~@14>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x!2 ~@2 x", C: "~@13 x!2 ~", D: "~@5 x ~ x", E: "x!2 ~ x ~ x ~@2",
})).gain(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@42 [~@5 x!2 ~] ~@9 [~@12 x!2 ~@2] ~@7 [~@9 x ~@3 x ~@2] ~@22>").gain(0.6)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@9 A@8 B@8 ~ B ~@8 B@15 ~ B@2 ~@8 B@15 ~@7>".pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.54)

// drums · shaker
const shaker = s("sh").struct("<~@17 A B@3 C B@5 D ~@7 A B@14 D ~@10 A B@14 ~@7>".pickRestart({
  A: "~@14 x!2", B: "x!3 ~@11 x!2", C: "x!3 ~ x ~@9 x!2", D: "x",
})).gain(0.48)

stack(
  synth_strings_1, overdriven_guitar, electric_guitar_clean, rock_organ, bass, kick, snare, low_tom, hihat, mid_tom,
  high_tom, crash, tambourine, shaker
)

More by Roxette