Strudelify

Gypsies, Tramps & Thieves

Cher

KeyF♯ minorTempo85 bpm
0:00/0:00
// Gypsies, Tramps & Thieves — Cher
// 85 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · glockenspiel
const glockenspiel = note(`<
  A@2 ~@4 B C ~ D E ~@3 F ~@4 G H ~ I J ~@3 K L ~@10 G H ~ I J ~@3 K L ~@4 F ~@5
>`.pickRestart({
  A: "[~@13 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 ~@5]/2", B: "~@8 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4",
  C: "g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 ~@8", D: "~@4 c#5 b4 a4 g#4 a4 b4 c#5 d5 e5 f5 f#5 g5", E: "g#5 a5 a#5 b5 ~@12",
  F: "~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4", G: "~@12 g#4 ~ g#4 ~",
  H: "f#4 c#4 f#4 c#4 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 ~@4", I: "~@8 c#5 b4 a4 g#4 a4 b4 c#5 d5",
  J: "e5 f5 f#5 g5 g#5 a5 a#5 b5 ~@8", K: "~@5 f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4", L: "~ f#4 ~ f#4 ~@12",
})).s("gm_glockenspiel").gain(0.3).pan(1)

// other · vibraphone
const vibraphone = note(`<
  A B C D ~@2 E F ~ G H I J K L M@2 ~@2 N D ~ O P Q R S T U V@4 W X Y X ~@2 N D ~ O P Q R S T Z AA I J K L M@3 AB@2
>`.pickRestart({
  A: "~@12 f#5!2 e5 f#5", B: "d5 f#5 c#5 f#5 b4 f#5 a4 f#5 g#4 f#5 c#5 f#5 g#4 ~ g#4 ~",
  C: "f#4 c#4 f#4 c#4 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 g#4 ~ g#4 ~", D: "f#4 c#4 f#4 c#4 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 ~@4",
  E: "~@8 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4", F: "g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 ~@8",
  G: "~@4 c#6 b5 a5 g#5 a5 b5 c#6 d6 e6 f6 f#6 g6", H: "g#6 a6 a#6 b6 f#4@3 ~ g#4@3 ~ a4 ~ g#4 ~",
  I: "f#4@2 ~ e4 f#4 ~ f#4 g#4 f#4 e4 c#4 b3 c#4 ~ c#4 ~", J: "e4 ~ f#4 ~ f#4@2 ~@2 g#4@2 ~@2 a4 ~ g#4 ~", K: "f#4 ~@7",
  L: "f#4!2 e4 f#4 d4 f#4 c#4 f#4 b3 f#4 a3 f#4 g#3 f#4 b3 f#4",
  M: "g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4", N: "~@12 g#4 ~ g#4 ~",
  O: "~@8 c#6 b5 a5 g#5 a5 b5 c#6 d6", P: "e6 f6 f#6 g6 g#6 a6 a#6 b6 f#4@3 ~ g#4@3 ~",
  Q: "a4 ~ g#4 ~ f#4@2 ~ e4 f#4 ~ f#4 g#4 f#4 e4 c#4 b3", R: "c#4 ~ c#4 ~ e4 ~ f#4 ~ f#4@2 ~@2 g#4@2 ~@2",
  S: "a4 ~ g#4 ~ f#4@2 ~@10", T: "~@4 f#4!2 e4 f#4 d4 f#4 c#4 f#4 b3 f#4 a3 f#4",
  U: "g#3 f#4 b3 f#4 b4 ~ b4 ~ a4 f#4 a4 f#4 b4 ~ b4 ~", V: "a4 f#4 a4 f#4 b4 ~ b4 ~ a4 f#4 a4 f#4 b4 ~ b4 ~",
  W: "c#5 ~ d5 ~ c#5 ~ b4 ~ a4 ~ g4 ~ f#4 ~ [e3,e4] ~", X: "f#5 ~ e5 ~ d5 ~ c#5 ~ b4 ~ a4 ~ g#4 ~ a4 ~",
  Y: "c#5 ~ d5 ~ c#5 ~ b4 ~ a4 ~ g4 ~ f#4 ~ e4 ~", Z: "g#3 f#4 b3 f#4 g#4 ~ g#4 ~ f#4 c#4 f#4 c#4 g#4 ~ g#4 ~",
  AA: "f#4 c#4 f#4 c#4 f#4@3 ~ g#4@3 ~ a4 ~ g#4 ~", AB: "[f#4@9 ~@7]/2",
})).s("gm_vibraphone").gain(0.3).pan(0)

// bass · acoustic bass
const bass = note(`<
  A B C D E F G H I@2 J C@2 K@2 L@2 M N O P Q@2 R L@2 S@3 T@4 U V U V M N O P Q@2 R L@2 W@3 X C@2 K@2 L@3 Y ~
>`.pickRestart({
  A: "~@6 f#2 e2", B: "d2 c#2 b1 a1 g#1 c#2 f#2@2", C: "c#2 f#2 c#2 f#2", D: "c#2@4 f#2@4 c#2@4 f#2 ~ f#2 ~",
  E: "f#2@3 g#2 a2 ~ a2 ~ a2@3 ~ b2 ~ b2 ~", F: "b2@3 c#3 d3 ~ d3 ~ d3@3 ~ a2@4", G: "a2@2 c#3 e3 f#2@2 c#2@2",
  H: "f#2@2 c#2@2 b2@2 b2 f#2", I: "[b2@2 b2@2 b2@2 b2@2 e3@12 a2@6 a2!2 a2@4]/2", J: "a2 ~@2 f#2",
  K: "[c#2@4 d2@7 c#2@4 f#2@17]/2", L: "f#2 c#2 f#2 c#2", M: "f#2 ~ f#2 ~ f#2@3 g#2 a2 ~ a2 ~ a2@3 ~",
  N: "b2 ~ b2 ~ b2@3 c#3 d3 ~ d3 ~ d3@3 ~", O: "a2@2 a2@2 c#3 e3 f#2@2", P: "c#2 f#2 c#2 b2",
  Q: "[b2@2 f#2@2 b2@2 b2@2 b2@2 b2@2 e3@12 a2@6 a2!2]/2", R: "a2!2 ~@2",
  S: "[f#2@4 c#2@4 d2@7 c#2@4 f#2@17 b2@4 a2@4 b2@4]/3", T: "a2 b2 a2 b2", U: "a2!2 e2 a2", V: "e2 d3 a2 d3",
  W: "[f#2@4 c#2@4 d2@7 c#2@4 f#2@17 f#2@4 c#2@4 f#2@4]/3", X: "c#2 ~@2 f#2", Y: "f#2",
})).s("gm_acoustic_bass").gain(0.41)

// other · flute
const flute = note(`<
  A B C D ~@2 E F ~ G H I J K L M@2 ~@2 N O ~ P Q R S T U V W@3 X ~@6 N O ~ P Q R S T U Y Z I J K L M@3 ~@2
>`.pickRestart({
  A: "~@12 f#5 ~ e5 ~", B: "d5 ~ c#5 ~ b4 ~ a4 ~ g#4 ~ c#5 ~ g#5@2 g#5@2",
  C: "f#5 c#5 f#5 c#5 g#5@2 g#5@2 f#5 c#5 f#5 c#5 g#5@2 g#5@2", D: "f#5 c#5 f#5 c#5 g#5@2 g#5@2 f#5 c#5 f#5 c#5 ~@4",
  E: "~@8 g#5 ~ g#5 ~ f#5 c#5 f#5 c#5", F: "g#5 ~ g#5 ~ f#5 c#5 f#5 c#5 ~@8",
  G: "~@4 c#4 b3 a3 g#3 a3 b3 c#4 d4 e4 f4 f#4 g4", H: "g#4 a4 a#4 b4 f#4@3 ~ g#4@3 ~ a4 ~ g#4 ~",
  I: "f#4@2 ~ e4 f#4 ~ f#4 g#4 f#4 e4 c#4 b3 c#4 ~ c#4 ~", J: "e4 ~ f#4 ~ f#4@3 ~ g#4@3 ~ a4 ~ g#4 ~", K: "f#4 ~@7",
  L: "f#4 ~ e4 ~ d4 ~ c#4 ~@2 b3 ~ a3 ~ g#3 ~ b3", M: "g#5@2 g#5@2 f#5 c#5 f#5 c#5 g#5@2 g#5@2 f#5 c#5 f#5 c#5",
  N: "~@12 g#5 ~ g#5 ~", O: "f#5 c#5 f#5 c#5 g#5 ~ g#5 ~ f#5 c#5 f#5 c#5 ~@4", P: "~@8 c#4 b3 a3 g#3 a3 b3 c#4 d4",
  Q: "e4 f4 f#4 g4 g#4 a4 a#4 b4 f#4@3 ~ g#4@3 ~", R: "a4 ~ g#4 ~ f#4@2 ~ e4 f#4 ~ f#4 g#4 f#4 e4 c#4 b3",
  S: "c#4 ~ c#4 ~ e4 ~ f#4 ~ f#4@3 ~ g#4@3 ~", T: "a4 ~ g#4 ~ f#4@2 ~@10", U: "~@4 f#4 ~ e4 ~ d4 ~ c#4 ~@2 b3 ~ a3",
  V: "~@4 b4 ~ b4 ~ a4 f#4 a4 f#4 b4 ~ b4 ~", W: "a4 f#4 a4 f#4 b4 ~ b4 ~ a4 f#4 a4 f#4 b4 ~ b4 ~",
  X: "a4 f#4 a4 f#4 b4 ~ b4 ~ a4 f#4 a4 f#4 ~@4", Y: "~ g#3 ~ b3 g#5@2 g#5@2 f#5 c#5 f#5 c#5 g#5@2 g#5@2",
  Z: "f#5 c#5 f#5 c#5 f#4@3 ~ g#4@3 ~ a4 ~ g#4 ~",
})).s("gm_flute").gain(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I J K@2 L@2 M N O P Q R S@2 T U@2 V@3 W X Y W Z AA AB AA O P Q R S@2 T U@2 AC@3 AD K@2 L@2 M@3 AE ~
>`.pickRestart({
  A: "~@6 [f#3,a3,c#4] ~", // F#m
  B: "[f#3,a3,c#4] ~ [f#3,a3,c#4]!3 ~ [f#3,a3,c#4]!3 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 [f#3,a3,c#4] ~", // F#m
  C: "[f#3,a3,c#4] ~ [f#3,a3,c#4]!2 [f#3,a3,c#4]@2 [f#3,a3,c#4]!3 ~ [f#3,a3,c#4]!2 [f#3,a3,c#4]@2 ~@2", // F#m
  D: "[f#3,a3,c#4] ~ [f#3,a3,c#4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4] ~ [f#3,b3,d#4]@2 [f#3,b3,d#4] ~", // F#m A B
  E: "[f#3,b3,d#4] ~ [f#3,b3,d#4]!2 [d3,f#3,a3]@2 [d3,f#3,a3]!3 ~ [d3,f#3,a3]!2 [a3,c#4,e4]@2 ~@2", // B D A
  F: "[a3,c#4,e4] ~ [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~", // A F#
  G: "[f#3,a#3,c#4]@2 [f#3,a#3,c#4]!3 ~ [f#3,a#3,c#4]!2 [f#3,b3,d#4]@4 [f#3,b3,d#4]@2 ~@2", // F# B
  H: "[f#3,c#4,d#4,c#5]!2 [f#3,b3,d#4,b4]@2 [d3,f#3,a3,a4]@4", // D#m7 B D
  I: "c#5 b4 ~@2 [a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // A
  J: "[a3,c#4,e4] ~ [a3,c#4,e4]!2 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2", // A F#m C#m F#m
  K: "[c#3,e3,g#3]!4 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2", // C#m F#m C#m F#m
  L: "[[c#3,e3,g#3]!4 [f#3,a3,c#4]@7 [e3,g#3,b3]@4 [d3,f#3,a3]@17]/2", // C#m F#m E D
  M: "[f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~ [f#3,a3,c#4]!3 ~ [f#3,a3,c#4]!3 ~ [f#3,a3,c#4] ~", // F#m
  N: "[f#3,a3,c#4]@2 [f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]!2 [f#3,a3,c#4]@2 [f#3,a3,c#4]!3 ~ [f#3,a3,c#4]!2", // F#m
  O: "[f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~ [f#3,a3,c#4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4] ~", // F#m A
  P: "[f#3,b3,d#4]@2 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4]!2 [d3,f#3,a3]@2 [d3,f#3,a3]!3 ~ [d3,f#3,a3]!2", // B D
  Q: "[a3,c#4,e4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4] ~", // A F#
  R: "[f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4]@2 [f#3,a#3,c#4]!3 ~ [f#3,a#3,c#4]!2 [f#3,b3,d#4]@4", // F# B
  S: "[[f#3,b3,d#4]@2 ~@2 [f#3,c#4,d#4,c#5]@2 [f#3,c#4,d#4,c#5]@2 [f#3,b3,d#4,b4]@4 [d3,f#3,a3,a4]@8 c#5 b4 ~@2 [a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2]/2", // B D#m7 B D A
  T: "[a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4", // A F#m C#m
  U: "[f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4", // F#m C#m F#m C#m
  V: "[[f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@7 [e3,g#3,b3]@4 [d3,f#3,a3]@17 [b3,d4,f#4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2]/3", // F#m C#m F#m E D Bm A Bm
  W: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [b3,d4,f#4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // A Bm A Bm
  X: "[a3,c#4,e4] ~ [a3,c#4,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2 [a3,c#4,e4] ~ [a3,c#4,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // A Bm A Bm
  Y: "[a3,c#4,e4] ~@2 [a3,c#4,e4] [b3,d4,f#4]@2 ~@2 [a3,c#4,e4] ~ [a3,c#4,e4]!2 [b3,d4,f#4]@2 [b3,d4,f#4]!2", // A Bm A Bm
  Z: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]!2 [a3,c#4,e4]@2 [a3,c#4,e4]!2", // A
  AA: "[d4,f#4,a4]@2 [d4,f#4,a4]!3 ~@3 [d4,f#4,a4]@2 [d4,f#4,a4]!3 ~ [d4,f#4,a4]!2", // D
  AB: "[a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]!3 ~ [a3,c#4,e4]!2", // A
  AC: "[[f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@7 [e3,g#3,b3]@4 [d3,f#3,a3]@17 [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~ [f#3,a3,c#4]!3 ~ [f#3,a3,c#4]!2]/3", // F#m C#m F#m E D F#m
  AD: "[f#3,a3,c#4] ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 [f#3,a3,c#4]!2 [c#3,e3,g#3]!4 [f#3,a3,c#4]@2 [f#3,a3,c#4]!2", // F#m C#m F#m
  AE: "[f#3,a3,c#4]", // F#m
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D E F G ~ H I ~@4 J K L M N O P Q R ~@4 S T U V T W X Y X L M N O P Q R ~@4 Z AA ~@4 J@3 ~@2
>`.pickRestart({
  A: "~@14 [f#3,a3,c#4]!2", B: "~ [f#3,a3,c#4] ~@3 [f#3,a3] ~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@3 [f#3,a3,c#4]",
  C: "~ [f#3,a3,c#4] ~@7 [f#3,a3,c#4] ~@4 [f#3,a3,c#4]!2", // F#m
  D: "~ [f#3,a3,c#4] ~@7 [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [f#3,b3,d#4]", // F#m A B
  E: "~ [f#3,b3,d#4] ~@7 [d3,f#3,a3] ~@4 [a3,c#4,e4]!2", // B D A
  F: "~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4]", // A F#
  G: "~@5 [f#3,a#3,c#4] ~@8 [f#3,b3,d#4]@2", H: "~@9 [a3,c#4,e4] ~@6", I: "~ [a3,c#4,e4] ~@14",
  J: "~@2 [f#3,a3,c#4]!2 ~ [f#3,a3,c#4] ~@3 [f#3,a3] ~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4]", // F#m
  K: "~@3 [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@7 [f#3,a3,c#4] ~@2", // F#m
  L: "~@2 [f#3,a3,c#4]!2 ~ [f#3,a3,c#4] ~@7 [a3,c#4,e4] ~ [a3,c#4,e4]", // F#m A
  M: "~@3 [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@7 [d3,f#3,a3] ~@2", // B D
  N: "~@2 [a3,c#4,e4]!2 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f#3,a#3,c#4]", // A F#
  O: "~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4] ~@5 [f#3,a#3,c#4] ~@6", P: "~ [f#3,b3,d#4] ~@6", Q: "~@13 [a3,c#4,e4] ~@2",
  R: "~@5 [a3,c#4,e4] ~@10", S: "~@6 [b3,d4,f#4]!2 ~ [a3,c#4,e4] ~@6",
  T: "~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@2 [b3,d4,f#4]!2 ~ [a3,c#4,e4] ~@6", U: "~ [a3,c#4,e4] ~@7 [a3,c#4,e4] ~@6",
  V: "~ [a3,c#4,e4]!2 ~@3 [b3,d4,f#4]!2 ~ [a3,c#4,e4] ~@6", // A Bm A
  W: "~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [a3,c#4,e4] ~ [a3,c#4,e4] ~@6", X: "~@5 [d4,f#4,a4]!3 ~@5 [d4,f#4,a4] ~@2",
  Y: "~@3 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@5 [a3,c#4,e4] ~@2", // A
  Z: "~@6 [f#3,a3,c#4]!2 ~ [f#3,a3,c#4] ~@3 [f#3,a3] ~@2", AA: "~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@12",
})).s("gm_acoustic_guitar_nylon").gain(0.12)

// other · string ensemble 1
const string_ensemble_1 = note("<~@9 A B C D E@2 ~@7 F G H I J@3 ~@13 F G K I J@3 L C D E@2 ~@5>".pickRestart({
  A: "~@4 c#5 b4 a4 g#4 a4 b4 c#5 d5 e5 f5 f#5 g5", B: "g#5 a5 a#5 b5 f#5@3 ~ g#5@3 ~ a5 ~ g#5 ~",
  C: "f#5@2 ~ e5 f#5!3 g#5 f#5 e5 c#5 b4 c#5 ~ c#5 ~", D: "e5 ~ f#5 ~ f#5@3 ~ g#5@2 ~@2 a5 ~ g#5 ~",
  E: "[f#5@2 ~@2 f#4@7 e4@4 d4@17]/2", F: "~@8 c#5 b4 a4 g#4 a4 b4 c#5 d5",
  G: "e5 f5 f#5 g5 g#5 a5 a#5 b5 f#5@3 ~ g#5@3 ~", H: "a5 ~ g#5 ~ f#5@2 ~ e5 f#5 ~ f#5 g#5 f#5 e5 c#5 b4",
  I: "c#5 ~ c#5 ~ e5 ~ f#5 ~ f#5@3 ~ g#5@2 ~@2", J: "[a5 ~ g#5 ~ f#5@2 ~@2 f#4@7 e4@4 d4@17 ~@12]/3",
  K: "a5 ~ g#5 ~ f#5 ~ e5!2 f#5!3 g#5 f#5 e5 c#5 b4", L: "~@4 f#5@3 ~ g#5@3 ~ a5 ~ g#5 ~",
})).s("gm_string_ensemble_1").gain(0.68)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@32 [~@14 x!2]!4 ~@23>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 [~@3 x!2 ~@11] ~@12 [~@7 x!2 ~@7] ~@15 [~@12 x!2 ~@2]!4 ~@23>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@12 A B ~@11 C D E ~@5 F@4 ~@8 C D E ~@3 A B ~@4 F ~>".pickRestart({
  A: "~ x ~@2", B: "~@4 x ~@6 x ~@3 x", C: "~ x", D: "~@8 x ~@6 x", E: "~@3 x ~@12", F: "x",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@32 [~@14 x!2] [~@11 x ~@4] ~ [~@11 x ~@4] ~@23>").gain(0.8)

// drums · ride
const ride = s("rd").struct("<~ A B C ~@11 B@2 ~@31 D E ~@4 B@3 ~@2>".pickRestart({
  A: "~@12 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", C: "x!2 ~@2 x!2 ~@2 x!2 ~@6",
  D: "~@4 x!2 ~@2 x!2 ~@2 x!2 ~@2", E: "x!2 ~@14",
})).gain(0.64)

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

stack(
  glockenspiel, vibraphone, bass, flute, acoustic_guitar_nylon, acoustic_guitar_nylon_2, string_ensemble_1, kick, snare,
  low_tom, mid_tom, crash, high_tom, ride, tambourine
)

More by Cher