Strudelify
Breakfast At Tiffany's cover art

1995 · Home

Breakfast At Tiffany's

Deep Blue Something

KeyD majorTempo109 bpm
0:00/0:00
// Breakfast At Tiffany's — Deep Blue Something
// 109 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): ACOUSTIC GUITAR 2.
setcpm(109/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 · acoustic guitar steel · "ACOUSTIC GUITAR 1"
const acoustic_guitar_steel = note(`<
  ~@2 A B A C A C A C D C D B A C A C A C A C E F E F E F E F E G E G H I H I H I H I H I H I H I H I E F E F E F E F A
  C A C D C D B A C A C A C A C E F E F E F E F E G E G E G E G E F E F E F E F E F E F E F E F E G E G E G E J K@6
>`.pickRestart({
  A: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,e4]@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ f#4 ~ [d3,a3], ~@6 [a3,d4,g4] [a3,d4]", // D Asus4 D D5 Dsus4 D5
  B: "[b2,d3,g3,d4]@3 [b2,d3,g3,d4]@2 [b2,d3,g3,d4] [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2 [d3,a3,d4]!2", // G A D5
  C: "[b2,d3,g3,d4]@3 [b2,d3,g3,d4]@2 [b2,d3,g3,d4] [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] ~ d4 [d3,a3,d4]!2, ~@6 [a2,e3,a3,c#4] ~", // G A D5 A
  D: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,e4]@3 [a2,d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ f#4 [d3,a3,d4] [d3,a3], ~@6 [a3,d4,g4] ~", // D Asus4 D D5 Dsus4
  E: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4]!5", // D
  F: "[a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [d3,f#3,b3,d4,f#4]@4 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]!4", // A Bm G
  G: "[b2,d3,g3,d4]@3 [b2,d3,g3,d4]@2 [b2,d3,g3,d4] [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3]@2 [a2,e3,a3]!2", // G A A5
  H: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!2", // D
  I: "[b2,d3,g3,d4]@3 [b2,d3,g3,d4]@2 [b2,d3,g3,d4] [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2 [e3,a3,c#4]!2", // G A
  J: "[b2,d3,g3,d4]@3 [b2,d3,g3,d4]@2 [b2,d3,g3,d4] ~ [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] [a2,e3,a3]@2 ~", // G A A5
  K: "[[a2,e3,a3]!2 [a2,d3,a3,d4,f#4]@83 ~@11]/6", // A5 D
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// chords · acoustic guitar steel · "ACOUSTIC GUITAR 2"
const acoustic_guitar_steel_2 = note("<~@14 A B A B A B A B ~@44 A B A B A B A B ~@46>".pickRestart({
  A: "~@4 [a2,d3,a3,d4,f#4] ~@11", B: "~@4 [b2,d3,g3,d4] ~@11",
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0.2)

// chords · overdriven guitar · "GUITAR 1"
const overdriven_guitar = note(`<
  ~@22 A B A B A B A B C ~@19 D E D B D B D B F@2 ~@14 A B A B A B A B F@2 ~@6 A G A B D E A B A G A B D E A B C H C ~ C
  H I@8
>`.pickRestart({
  A: "[d2,a2,d3,a3,d4]@3 [d2,a2,d3,a3,d4] [d2,a2,d3,a3,d4]@2 [d2,a2,d3,a3,d4]@3 [d2,a2,d3,a3,d4] [d2,a2,d3,a3,d4]@2 [d2,a2,d3,a3,d4]@4", // D5
  B: "[a2,e3,a3]!3 [b2,f#3,b3]@2 [g2,d3,g3]@3", C: "[d2,a2,d3,a3,d4]",
  D: "[d2,a2,d3,a3,d4]@3 [d2,a2,d3,a3,d4] [d2,a2,d3,a3,d4]@2 [d2,a2,d3,a3,d4]@3 [d2,a2,d3,a3,d4] [d2,a2,d3,a3,d4]@2 [d2,a2,d3,a3,d4]@2 [d2,a2,a3,d4] [d2,a2,d3,a3,d4]", // D5
  E: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [b2,f#3,b3]@4 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@3", // A5 B5 G5
  F: "[d2,a2,d3,a3,d4]/2", G: "[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [b2,f#3,b3]@3 [g2,d3,g3] [g2,d3,g3]@6",
  H: "[d3,g3]@3 [a2,e3,a3]@5", I: "[[d2,a2,d3,a3,d4]@34 [d2,a2,d3,a3,d4]@83 ~@11]/8",
})).s("gm_overdriven_guitar").gain(0.46)

// chords · electric guitar clean · "GUITAR 2"
const electric_guitar_clean = note(`<
  ~@30 A B C D E F G F G F H F E F G F G F H F ~@32 I J G J K J L J ~@16 L J L J L J L M@2 ~@5
>`.pickRestart({
  A: "[a2,d3,a3,d4,f#4]", B: "[b2,d3,g3,d4]@3 [a2,e3,a3,c#4]@5",
  C: "~@2 d4@2 f#4 ~ a3@2 ~@7 d4, a3@5 d4@3 f#4@2 f#4@2 f#4@2 a3@2, ~@9 g4@2 e4@2 d4@2 ~",
  D: "[b2,d3,g3,d4]@2 [b2,d3,g3,d4]@4 [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2 [a2,e3,a3]@4", // G A A5
  E: "~@6 d4@3 [a3,d4,f#4] [d4,f#4]@2 g4 f#4 d4 a3, f#4 a3 d4 ~@5, ~ d4@2 f#4@2 a3@4 ~ a3@5 ~", // D
  F: "[g3,b3,d4]@3 [g3,b3,d4]@2 [g3,b3,d4] [a2,e3,a3,c#4]@3 ~@6 a3, ~@9 a3@2 a3@2 a3@2 ~, ~@5 c#4@2 ~, ~@6 e3!2", // G A
  G: "[a3,d4]@3 a3 ~ a3 [a3,d4]@3 [a3,d4,f#4] [d4,f#4]@2 g4 f#4 d4 a3, ~@2 [d4,f#4] d3@5, ~@10 a3@5 ~", // D5 D
  H: "[a3,d4]@3 a3 ~ a3 [d3,a3,d4]@3 [d3,a3,d4,f#4] [d3,d4,f#4]@2 g4 f#4 d4 a3, d3@4 [d4,f#4]@2 ~@4 a3@5 ~, ~@3 d3", // D5 D
  I: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4] [a2,d3,a3,d4,f#4]@2 [a2,d3,a3,d4,f#4]@2 ~@7 d4, ~@4 f#4!3 a3, ~@9 g4@2 e4@2 d4@2 ~", // D
  J: "[b2,d3,g3,d4]@2 [b2,d3,g3,d4]@4 [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2 [e3,a3,c#4] [e3,a3,c#4]@3", // G A
  K: "d4@2 d4@2 f#4 ~ a3@2 ~@7 d4, [d3,a3]@5 d4@3 f#4@2 f#4@2 f#4@2 a3@2, ~@9 g4@2 e4@2 d4@2 ~", // D5
  L: "~@6 d4@2 ~@7 d4, f#4 a3 d4 ~ f#4!3 a3, ~ d4@2 f#4@2 a3@4 g4@2 e4@2 d4@2 ~",
  M: "[[b2,d3,g3,d4]@2 [b2,d3,g3,d4]@4 [a2,e3,a3,c#4]@3 ~ [a2,e3,a3,c#4] [a2,e3,a3,c#4]@2 [e3,a3,c#4] [e3,a3,c#4]@4 ~@14]/2", // G A
})).s("gm_electric_guitar_clean").gain(0.28).pan(0.2)

// other · electric guitar clean · "GUITAR 3"
const electric_guitar_clean_2 = note(`<
  ~@29 A B C D E ~@8 F G F G F G F G ~@31 A H I J K L M N O ~@15 P L M Q R L M Q S@2 ~@5
>`.pickRestart({
  A: "~@14 g3!2", B: "g3@2 f#3@2 e3 d3 d3@3 d3!6 ~", C: "b2!2 b2@2 b2 d3 c#3@3 c#3!5 c#3@2", D: "d3@2 d3 a2 d3@8 ~@4",
  E: "[b2,d3,g3] ~ [b2,d3,g3]@4 [e3,a3,c#4]@3 [e3,a3,c#4] [e3,a3,c#4]@2 [e3,a3,c#4] [e3,c#4,d4]@3", // G A C#m
  F: "[a2,d3,a3,d4,f#4]@3 [a2,d3,a3,d4,f#4]@5", G: "[b2,d3,g3,d4]@3 [a2,e3,a3,c#4]@5",
  H: "g3@2 f#3@2 e3 d3 d3@3 ~@5 b2!2", I: "b2@2 g2@2 b2 d3 c#3@3 c#3 c#3@2 e3@2 ~ a2", J: "d3@2 d3!3 a2 d3@4 ~@4 b2!2",
  K: "b2@2 g2@2 b2 d3 c#3@3 c#3!2 [d3,g#3] [a#3,b3,c4] [c#4,d4,d#4] [e4,g4] g4", L: "g4!2 f#4@2 e4 f#4 d4@3 d4!5 b3@2",
  M: "b3!2 d4@2 b3 d4 c#4@2 ~ c#4 c#4@2 e4@3 e4", N: "d4@2 ~@2 d4@6 ~@4 b3 ~, ~ a3@4 ~@3", O: "b3@2 b3 ~ b3 d4 c#4@10",
  P: "~@14 g4!2", Q: "d4@2 ~@2 d4@6 ~@4 b3!2, ~ a3@4 ~@3", R: "b3 g3 b3!3 d4 c#4@3 c#4 c#4@4 g4!2",
  S: "[b3 ~ b3@2 d4 b3 ~ c#4@6 e4@5 ~@14]/2",
})).s("gm_electric_guitar_clean").gain(0.8).pan(0.6)

// chords · pad warm · "SYNTH"
const pad_warm = note(`<
  ~@30 A B A B A B A B A B A B A B A B A B A B A C A C A C A C A B A B A B A B A B A B A B A B A C A C A C A C A B A B A
  B A B A C A C A C A C A C A C A C A C A B A B A B A D@7
>`.pickRestart({
  A: "[a3,d4]", B: "[b3,d4]@3 [a3,c#4]@5", C: "[a3,c#4]@3 [b3,d4]@2 [g3,b3]@3",
  D: "[[b3,d4]@6 [c#4,e4]@12 [a3,d4]@83 ~@11]/7", // Bm C#m D5
})).s("gm_pad_warm").gain(0.53)

// bass · electric bass pick · "BASS"
const bass = note(`<
  ~@14 A B A B A C A D E F E G E F E H I J K L M J E J N J E O P J P J E J E Q R S R T E U V W X Y A Y A Y A Z A B A B A
  C AA AB AC AD E AD E AD AE AD N O AF AG AH O E AI AC AD AJ AD AK AD AL AD AJ AD AK AD AK AD AM AD AN J AN J AN J AN AO
  AP@6
>`.pickRestart({
  A: "~@3 d3@5, d2", B: "b1@6 a1@4 g2 g#2 a2@2 a1@2", C: "b1@3 a1@2 g2 a2 a1", D: "b1@2 b1@4 a1@4 g2 g#2 a2@2 a1@2",
  E: "d2@3 d2 ~@2 d3@5 d2 d3@2 ~@2, ~@4 d2@7 ~@5", F: "a1@3 a1 a1@2 b1@4 g1@2 g1@2 d2@2", G: "a1@3 a1 a1@2 b1@4 g1@6",
  H: "a1@3 a1 a1@2 b1@6 g1@4", I: "d2@3 d2 ~@2 d3@3 d3 d3@6, ~ d2@3", J: "b1@3 b1 b1@2 a1@4 g2 g#2 a2@2 a1@2",
  K: "d2@3 d2 ~@2 d3@4 d3@6, ~ d2@3", L: "b1@3 b1 b1@2 a1@4 g2 g#2 a2 a1 a1@2",
  M: "d2@3 d2 ~@2 d3@4 ~@2 d2@4, ~@2 d2@3 a2 ~@2, ~@11 d3@5", N: "d2@3 d2 ~@2 d3@10, ~ d2@3",
  O: "b1@2 b1!4 a1@4 g2 g#2 a2@2 a1@2", P: "d2@3 d2 ~@2 d3@8 ~@2, ~@2 d2@5 ~", Q: "b1@2 b1!4 a1@4 g2 g#2 a2 a1 a1@2",
  R: "d2@3 d2 ~@2 d3@5 d2 d3@4, ~@4 d2@7 ~@5", S: "a1@3 a1 a1@2 b1@4 g1@2 g1!2 ~@2",
  T: "a1@3 a1 a1@2 b1@4 g1@2 g1@2 d2!2", U: "a1@2 a1!4 b1@3 g1 g1@2 g1!4",
  V: "d2@2 d2!3 ~ d3@5 d2 d3@2 ~@2, ~@5 d2@6 ~@5", W: "a1@2 a1@2 a1@2 b1@3 g1 g1@2 g1@2 d2!2", X: "d2", Y: "b1@3 a1@5",
  Z: "b1@6 ~@4 a2!2 a2@4, ~@3 a1@5", AA: "d2@6 d2@3 d2@2 d2 ~@2 a1@2, ~@3 d2",
  AB: "b1@2 b1@2 b1@2 a1@4 g2 g#2 a2@2 a1@2", AC: "d2@2 d2!3 ~@4 d2!2 ~ d3@4, ~@5 d2@4 ~@2 d2@5, ~@3 d3@3 ~@2",
  AD: "a1!3 b1@2 g1@2 ~", AE: "d2@2 d2!2 ~@2 d3@5 d2 d3@2 ~@2, ~@4 d2@7 ~@5", AF: "d2@2 d2!4 d3@5 d2 d3@2 d2@2",
  AG: "b1@2 b1!4 a1@4 g2 g#2 a2@2 a1!2", AH: "d2@2 d2!4 ~@4 d2@2 d3@2 d2@2, ~@3 d3@3 ~@2",
  AI: "b1@2 b1@2 b1@2 a1@4 g2 g#2 a2!2 a1@2", AJ: "d2@3 d2 ~@8 d3@4, ~@4 d2@6 d2@5 ~, ~@3 d3@3 ~@2",
  AK: "d2@3 d2 ~@2 d3@4 d2!2 d3@2 ~@2, ~@2 d2@3 ~@3", AL: "d2@3 d2 ~@2 d3@4 d2@2 d3@2 ~@2, ~@2 d2@3 ~@3",
  AM: "d2@3 d2 ~@2 d3@5 ~ d3@2 ~@2, ~@4 d2@7 d2@5", AN: "d2@3 d2 ~@2 d3@4 ~@4 d2@2, ~@2 d2@3 d2@2 ~, ~@3 d3",
  AO: "b1@3 b1 b1@2 a1@4 ~ g2 g#2 a2@2 ~", AP: "[a1@2 d2@83 ~@11]/6",
})).s("gm_electric_bass_pick").gain(0.59)

// bass · electric bass pick · "BASS" · soft notes
const bass_soft = note(`<
  ~@14 A B A B A B A B C B C B C B C B ~@6 C B ~@2 C B C B C B C B C B ~ D E ~ C B C B ~@2 A B A B A B A B A B A B ~@3 D
  F G F G F G E ~@5 C B C G F G F G F G F G F G F G F G E ~@13
>`.pickRestart({
  A: "~@14 [c3,c#3] [e2,a#2,b2]", B: "g#2 ~@15", C: "~@14 [c3,c#3] [f2,g2,b2]", D: "~@14 [g#1,a1] [a#1,b1,c2]",
  E: "c#2 ~@15", F: "c#2 ~@13 [c3,c#3] [f2,g2,b2]", G: "g#2 ~@13 [g#1,a1] [a#1,b1,c2]",
})).s("gm_electric_bass_pick").gain(0.35)

// other · melodic tom · "TOMS"
const melodic_tom = note("<~@21 A ~@7 B ~@3 C ~@7 B ~@7 D ~@7 E ~@15 A ~@7 F ~@23 F ~@14>".pickRestart({
  A: "~@13 e4 c4 ~", B: "~@14 c4 ~", C: "~@13 c4 ~@2", D: "~@13 e4 c4 g3", E: "~@9 e4 ~ c4!2 ~ g3 ~", F: "~@14 e4 c4",
})).s("gm_melodic_tom").gain(0.8)

// other · taiko drum · "TAIKO"
const taiko_drum = note("<~@73 [~@2 d5 ~@2 d5 ~@2 d5 ~@7] ~@46>").s("gm_taiko_drum").gain(0.61).pan(0.7)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@21 A ~@7 A ~@3 B ~@7 A ~@7 C ~@7 D ~@15 A ~@7 E ~@23 E ~@14>".pickRestart({
  A: "~@7 x", B: "~@13 x ~@2", C: "~@14 x!2", D: "~@11 x!2 ~ x ~", E: "~@15 x",
})).gain(0.08)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13 A ~ B ~@2 B ~@2 C D E@6 F G H G@8 I J K E@6 J L D@2 M N O N P ~@7 Q ~@7 C G@3 R G@11 S T E@2 U D E@2 V W E X V T
  E@2 F G I G I G I G Y Z ~@5
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~ x!5 ~@2", D: "~ x!7", E: "x!8", F: "x!7 ~", G: "~@5 x ~@2", H: "~@10 x ~@2 x!2 ~",
  I: "~@5 x ~ x", J: "x!6 ~@2", K: "~@2 x ~ x!4", L: "~ x!2 ~ x!4", M: "~ x!2 ~ x!2 ~@2", N: "~ x!2 ~ x!2 ~ x",
  O: "~ x!5 ~ x", P: "x!3 ~@5", Q: "~@3 x", R: "~@10 x ~@3 x!2", S: "~@3 x!5", T: "~@2 x ~ x ~ x ~ x!3 ~ x ~ x ~",
  U: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x!2", V: "x ~ x ~ x ~ x ~ x!3 ~ x ~@2 x", W: "~@2 x ~ x ~ x!2",
  X: "x ~ x ~ x ~ x ~ x!5 ~ x ~", Y: "x ~ x ~ x ~ x ~@2 x!3 ~ x ~@2", Z: "x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A ~@27 A ~@7 B ~@15 A ~@7 C ~@23 C ~@14>".pickRestart({
  A: "~@13 x ~@2", B: "~@9 x ~@6", C: "~@7 x",
})).gain(0.08)

// drums · crash
const crash = s("cr").struct(`<
  ~@22 A ~@7 A ~ A ~ A ~@7 A ~@7 B A@2 C D E D F A ~@15 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@2 G A ~@3 A ~ A ~ A ~ A ~ H
  ~@5
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "x ~@2 x ~@2 x!2", D: "x ~@2 x ~@2 x ~", E: "x ~@2 x", F: "~@3 x ~@4", G: "~@7 x",
  H: "~ x ~@6",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@22 A@12 ~@8 A@16 B ~@6 C ~@8 A@39 D A E ~@4>".pickRestart({
  A: "x!16", B: "x", C: "~@3 x", D: "x!8 ~ x!6 ~", E: "x!8 ~@8",
})).gain(0.64)
// … 5 more lines