Strudelify
Breakdown cover art

1997 · Butterfly

Breakdown

Mariah Carey

KeyE majorTempo68 bpm
0:00/0:00
// Breakdown — Mariah Carey
// 68 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 80 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 22 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(68/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "untitled"
const bass = note(`<
  A@2 B C B C B C B C B C B C B C B C B C B C B C ~ B C B C B C B C B C B C B C B C ~ B C B C B C B C B C B C B C B C B
  C B C B C B C B C B C B C B C B C B C B ~
>`.pickRestart({
  A: "[f#1@16 g#1@15 a1@30 ~@3]/2", B: "f#1 g#1", C: "a1@15 ~",
})).s("gm_electric_bass_finger").gain(0.26)

// chords · piano
const piano = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D ~ A B C D A B C D A B C D A B C D ~ A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A ~
>`.pickRestart({
  A: "[f#2,c#4]@16 [f#3,b3,d#4]@13 ~@3, [a3,e4]@13 ~@3 g#2@16", B: "[a2,g#3,c#4,e4]@29 ~@3",
  C: "[a3,c#4,e4]@4 ~@2 [a3,c#4]@6 [c#4,e4] ~@3 [g#2,f#3,d#4]@14 ~@2, f#2@7 ~@9, ~@6 f#4@3 ~@7 b3@11 ~@5", // A C#m G#7
  D: "[g#3,c#4]@5 ~ [g#3,c#4,d#4]@3 ~@3 [e3,g#3,c#4]@15 ~@5, a2@7 ~, e4@3 ~@29", // C#5 G#sus4 C#m
})).s("gm_piano").gain(0.2)

// other · flute
const flute = note(`<
  ~@8 A B C D E F G H@3 I J K L M N@2 O P Q@2 R S T U@2 V W@2 X@2 Y Z@2 AA@2 AB AC ~@8 AD@2 I AE K L M AF AG AH AI AJ K
  L M AK@2 AL AM AN AO AP AQ AR@2 AS
>`.pickRestart({
  A: "~@6 b3 ~ b3@2 c#4@2 e4@2 f#4@4 ~@2 f#4@12", B: "~@6 b3 ~ b3@2 ~@2 e4@2 f#4@4 g#4@2 ~@8 b4 ~ e4 ~",
  C: "f#4@2 g#4 ~ b4 ~ g#4@4 f#4@2 g#4@14 ~@2 b4 ~ e4 ~", D: "b3@2 c#4@2 e4 ~ f#4@4 g#4@2 f#4@15 ~@3 e4@2",
  E: "b4@2 a4@2 g#4@2 f#4@6 b4@2 e4@2 f#4@2 g#4@2 b4@2 g#4@5 ~ e4@2 f#4@2",
  F: "g#4@2 f#4@2 e4@2 c#4@4 ~@2 e4@2 f#4@2 g#4@2 a4 ~ b4@2 g#4@4 f#4@2 g#4@4",
  G: "~@4 c#5@2 b4@3 ~ e4@2 f#4@4 ~@4 c#5@2 b4@2 ~@2 e4@2 f#4@4",
  H: "[~@4 c#5@2 b4@2 ~@2 e4@2 ~@2 b4@4 g#4@2 f#4@2 b4@3 g#4@2 ~@3 c#5@4 b3!3 ~ b3 ~ b3 ~ e5@2 d#5@2 f#5@2 c#5@2 b4@2 [e4,g#4]@2 [f#4,a4]@2 g#4@2 a4@2 g#4@2 f#4 ~@3 b3!2 a4@2 b3 ~ f#4@2 b3 ~@3 c#4@2 ~@4 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4@2, ~@12 f#4@5 ~@11 f#4@4 ~@3 b4@7 b3 ~ f#4@6 ~@6 b4@12 b3 ~@3 b3 ~ e4@4 ~@2 b3@12 ~@4, ~@76 f#4@7 ~@13]/3", // E F#m
  I: "~@2 b4@4 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2",
  J: "b4 ~ b4!3 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4 ~ b4!3 ~ a4 ~ g#4 ~ a4 ~ b4@2 f#4@2",
  K: "~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@5 ~ b3!3 ~ b3 ~ b3 ~ e4 ~ b3@4",
  L: "~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@2 ~@4 b3 ~ b4 ~ a4 ~ g#4 ~ a4 ~ b4 ~ f#4@2",
  M: "~@2 e4@2 b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2",
  N: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b4@16 ~@8 b3@2 e4@2 d#4@2]/2",
  O: "b3@4 c#4@2 b3@5 ~@3 b3@2 e4@2 b3@2 f#4@2 ~ g#4@2 c#4@2 ~ b3@4, ~@11 b3 ~@4",
  P: "~@2 b3!3 ~ b3 ~ b3@2 c#4@2 b3@5 ~ b3!2 b3@2 b3 ~ e4@2 d#4@2 e4@2 f#4@2",
  Q: "[~@2 c#4@2 ~@6 e4@2 g#4@2 b4@3 e4@3 g#4@2 b4@3 e4@2 g#4@3 b4@4 e4@2 g#4@2 c#5@4 b4@9 ~@7 b3@2 f#4@2 g#4@2, ~@4 b3@9 ~@51]/2",
  R: "f#4@2 e4@2 b3@4 ~@2 b3@2 f#4@2 g#4@2 f#4@2 e4@2 b3@3 ~@3 b3@2 ~@4",
  S: "f#4@2 e4@2 b3@3 ~@4 f#4@2 g#4@2 f#4@2 e4 ~@2 b3@6 c#4@2 e4@2 ~@2, ~@5 b3 ~@10",
  T: "f#4@2 g#4@2 f#4@6 b3@2 c#4@2 f#4@4 g#4@2 f#4@11 ~",
  U: "[~@2 e5@2 d#5@2 b4@4 g#4@2 a4@2 b4@4 g#4@2 a4@2 b4@4 g#4@2 a4@2 c#5@4 b3!3 ~ b3 ~ e5@2 d#5@2 f#5@2 c#5@4 ~@2 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4 ~, ~@34 b4@6 b3 ~ b3 ~ f#4@6 b4@13 ~]/2",
  V: "~ b3!3 b4@2 a4@2 g#4@2 f#4@2 [e4,f#4]@2 ~@3 c#4@3 ~@2 f#4@2 g#4@2 a4@2 g#4@2 f#4@2, ~@4 b3 ~ b3 ~ b3 ~ b3 ~@3 f#4@5 ~ e4@2 ~@10, ~@21 b3@10 ~", // Esus2
  W: "[~@2 b4@4 a4@2 g#4@2 a4@2 b4 ~ c#5@2 b4@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~@3 b4 ~ b4!3 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4@2 b4!2 ~@2 a4 ~ g#4 ~ a4 ~ b4@2 f#4@2, ~@9 c#5@2 ~ c#5@3 c#5@9 ~@2 b4@4 ~@2]/2",
  X: "[~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@4 c#5@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@4 ~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@2 ~@4 b3 ~ b4 ~ a4 ~ g#4 ~ a4 ~ b4 ~ f#4@2, ~@18 e5@4 b4@25 ~@17]/2",
  Y: "b4@2 e4@2 b4@2 [a4,b4]@2 g#4@2 a4@2 b4 ~ c#5@2 b4@2 b4@2 ~@2 a4@2 g#4@2 a4@2 b4@2 c#5@2, ~ c#5@2 ~ c#5@3 ~@3 b4@4 ~@2", // Asus2
  Z: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2 f#5@2 e5@2 b4@2 a4@2 g#4@2 a4@2 b4@2 ~@2 f#4@2 ~ g#4@4 ~ g#4@8 ~@16, ~@18 b4 ~@5 b4@4 ~@2 c#5@4 b4@16 ~@14]/2",
  AA: "~@4 b3 ~ b3 ~ b3 ~ c#4 ~ e4 ~ b3@18", AB: "~@4 b3 ~ b3 ~@2 b3 c#4 ~ e4 ~ b3@16 ~@2",
  AC: "~@4 b3 ~ b3 ~ b3@2 c#4@2 e4 ~ b3@8 ~@10",
  AD: "~@2 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@6 ~@2 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4 ~",
  AE: "b4 ~@2 b4!2 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4 ~ b4!3 ~ a4 ~ g#4 ~ a4 ~ b4@2 f#4@2",
  AF: "~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2 b4@2 b4 ~ b4@2 a4@2 [g#4,b4]@2 ~@4 c#5@2, ~@19 g#4@3 ~@4 a4@2 b4@2 ~@2, ~@27 g#4@2 a4@2 ~", // G#m
  AG: "~@2 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@6 ~@2 e4@2 [f#4,d#5]@2 ~@2 a4@2 g#4@2 f#4 ~, c#5@4 ~@15 e5@3 ~@3 f#5@7, ~ b4 b4@7 ~@3 g#4 ~@3", // D#m
  AH: "~@2 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@7 ~ e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4@2, ~ c#5@4 b4@18 ~@9",
  AI: "~@2 b4@4 a4@2 g#4@2 a4@2 b4 ~@5 b4 ~ b4@2 [b3,a4]@2 ~@2 a4@2 b4 ~ [b3,c#5]@2, ~@7 c#5 c#4@3 ~ g#4 ~@3, ~@15 b3@2 ~@8 c#4@5 ~@2", // B7 Bsus2
  AJ: "c#4@3 b4!2 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4 ~ b4!3 ~ a4 ~ g#4 ~ a4 ~ b4@2 f#4@2, b4 ~@3 b3@19 ~@9",
  AK: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4@2 [b4,e5]@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@6 ~@2 [e4,e5]@2 ~@2 g#4@2 a4@2 g#4@2 f#4 ~, ~@22 f#5@23 ~@19, ~@34 b4@11 ~@9 [f#4,f#5]@8 ~@2]/2", // E5 E F#
  AL: "~@2 b3!2 g#5@2 b3 ~ b3 ~ b3 ~ [f#4,g#5]@3 f#5@5 e4@2 [f#4,a5]@2 [g#4,g#5]@2 a4@2 g#4@2 f#4@2, ~@4 b3 ~ f#5@7 ~@7 g#5 ~@5 f#5 ~@5", // F#sus2 F#m G#
  AM: "~@2 b4@4 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4@2 [b4,e5]@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2, ~@22 f#5@7 ~@3", // E5
  AN: "b4 ~@2 b4 g#5@2 b4 ~ b4@2 e4 ~ [b4,g#5]@2 ~@2 b4 ~ b4!2 g#5@2 a4 ~ g#4 ~ a4 ~ b4@2 f#4@2, ~@4 b4 ~ f#5@6 ~@2 f#5@6 b4 ~ f#5@7 ~@3", // E
  AO: "~@2 b3!2 e5@2 b3 ~ b3 ~ e4 ~ b3@4 ~@2 b3!2 g#5@2 b3 ~ b3 ~ e4 ~ b3@4, ~@4 b3 ~ f#5@8 ~@6 b3 ~ f#5@7 ~@3",
  AP: "~@2 b3!2 e5@2 b3 ~ b3 ~ e4 ~ [b3,g#5]@2 f#5@4 b3 ~ g#5@2 a4 ~ g#4 ~ a4 ~ b4 ~ f#4@2, ~@4 b3 ~ f#5@6 ~@8 b4 ~ f#5@7 ~@3", // E
  AQ: "~@2 e4@2 [b4,e5]@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ [b4,g#5]@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2, ~@6 f#5@8 ~@8 f#5@7 ~@3", // E5 E
  AR: "[~@2 b4@2 [b4,e5]@2 a4@2 g#4@2 a4@2 g#5@2 f#5@4 b4 ~ [b4,g#5]@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 ~@2 e5@2 ~@16 f#5@8 ~@2, ~@6 f#5@6 b4 ~ c#5@3 ~@17 b4@11 ~@19]/2", // E5 E
  AS: "~@6 g#5 f#5@3 ~@6",
})).s("gm_flute").gain(0.48)

// other · flute · soft notes
const flute_soft = note("<~@8 A B ~@7 C ~@11 D E ~@4 F ~ G ~@2 H I ~@27 J@2 K L M N O P Q R S>".pickRestart({
  A: "~@9 g#4 ~@6", B: "~@10 c#4@2 ~@8 f#4@7 ~@5", C: "~@6 g#4 ~@25", D: "~@14 f#4 g#4", E: "~@15 f#4",
  F: "~@23 b4@2 ~@7", G: "~@7 b4 ~@8", H: "~@22 c#5@3 ~@7", I: "~@7 f#4@2 ~@7 e4@15 ~",
  J: "[~@16 [b3,b4] ~ b3@2 e4@2 f#4@22 ~@4 [b3,b4] ~ [b3,b4]@2 ~@12]/2", // B
  K: "[b3,b4] ~ b4@2 g#4@2 f#4@6 g#4@3 f#4@5 g#4 ~ a4@2 ~@2 f#4 ~ [c#4,c#5]@2 [b3,b4]@2", // B C# B
  L: "~@16 [b3,b4] ~ b3@2 e4@2 f#4@7 ~@3", M: "b3 ~ [b3,b4] ~ g#4@2 f#4@6 g#4@2 f#4@6 g#4@2 f#4@7 ~@3",
  N: "[b3,b4] ~ b4@2 e4@2 f#4@8 ~@2 [b3,b4] ~ b4@2 g#4@2 f#4@7 ~@3", // B
  O: "[b3,b4] ~ b4@2 e4@2 f#4@6 g#4@2 f#4@6 g#4@2 f#4@7 ~@3", // B
  P: "[b3,b4] ~ [b3,b4]@2 e4@2 f#4@8 ~@2 [b3,b4] ~ b3 ~ g#4@2 f#4@7 ~@3", // B
  Q: "[b3,b4] ~ b3@2 e4@2 f#4@6 g#4@2 f#4@6 g#4@2 [f#4,f#5]@8 ~@2", // B F#
  R: "[b3,b4] ~ b3@2 e4@2 [f#4,f#5]@8 ~@4 [b3,b4] ~ [g#4,g#5]@2 f#4@8 ~@2", S: "~@6 g#4 f#4@3 ~@6",
})).s("gm_flute").gain(0.24)

// chords · glockenspiel
const glockenspiel = note("<~@7 A@2 ~@6 B@2 ~@7 C@2 ~@6 D@2 ~@7 E ~@7 F@2 ~@6 G@2 ~@6 H@2 ~@6 I@2 ~@5>".pickRestart({
  A: "[~@33 f5@2 ~@29, ~@16 e7@11 [g6,a6]@5 g5@3 ~@29, ~@17 d7@11 f6 [d6,e6]@7 ~@28, ~@18 c7@2 a6@2 [e6,f6]@2 b5 a5 b6@4 c6@6 ~@28, ~@19 b6@2 g6@2 [c6,d6]@2 c7@6 [a5,b5]@5 ~@28]/2", // Gsus2 Dsus2 Fmaj7 Csus2 Asus2
  B: "[~@38 d5@3 ~@23, ~@17 e7@15 e6 [c6,d6] [a5,b5] g5 f5 e5@4 ~@23, ~@19 d7@4 g6@3 c6@3 [c7,d7]@12 ~@23, ~@21 b6@3 [e6,f6]@3 [a5,b5]@2 d5@2 [f6,g6]@10 ~@23, ~@22 a6@3 d6@3 [e5,f5,g5]@2 [a6,b6]@11 ~@23]/2", // Csus2 Asus2 Csus2 Fmaj7 Asus2 Fsus2 Em Asus2
  C: "[~@33 e5@2 ~@29, ~@9 f7@18 e6 [c6,d6] b5 a5 g5 f5@3 ~@29, ~@11 d7@24 ~@29, ~@14 a6@4 [d6,e6]@2 [a5,b5]@2 f5@2 b6@11 ~@29, ~@15 g6@4 c6@2 g5@2 [e5,c7]@2 a6@10 ~@29]/2", // Csus2 Dsus2 Asus2 C
  D: "[~@52 g5 f5 [d5,e5] c5 ~@8, ~@31 f7@4 [a6,b6]@3 [d6,e6]@4 [e5,f7]@3 [b6,c7]@9 ~@10, ~@32 e7@4 g6@4 [a5,b5]@4 d7@2 a6 [f6,g6]@7 ~@10, ~@33 d7@4 f6@4 [f5,g5]@7 e6 [c6,d6] b5@3 ~@11, ~@34 c7@5 c6@4 d5@8 a5@2 ~@11]/2", // Dsus2 Asus2 Dsus2 Fmaj7 Cmaj7 Asus2 Fsus2 Csus2
  E: "~@12 a5@3 ~, ~@2 f7@29 ~, ~@3 e7@28 ~, ~@4 d7@2 a6@2 f6@2 d6@2 b5@3 d7@3 a6 g6 [e6,f6]@11 ~, ~@5 [b6,c7]@2 g6@2 e6@2 c6@2 a5@2 [f5,g5] c7@5 d6 c6 b5@7 ~@2", // Fmaj7 Cmaj7 Fsus2
  F: "[~@41 a5@4 ~@19, ~@18 e7@6 f6@4 [g5,a5]@4 c7 b6 [g6,a6]@12 ~@18, ~@19 d7@6 e6@4 [e5,f5,f7]@6 f6 e6@4 b5@6 ~@18, ~@22 a6@4 d6@4 e7@15 ~@19, ~@23 g6@4 [b5,c6]@4 d7@14 ~@19]/2", // Gsus2 Fmaj7 Cmaj7
  G: "[~@43 f5@4 ~@17, ~@21 e7@4 g6@4 b5@3 f7@3 a6 g6 [e6,f6]@11 ~@16, ~@22 [c7,d7]@4 f6@4 [g5,a5]@3 [d7,e7]@15 ~@16, ~@23 b6@4 e6@4 g7@7 d6 c6 b5 a5 g5@5 ~@17, ~@24 a6@4 [c6,d6]@3 f5@3 [b6,c7]@13 ~@17]/2", // Fmaj7 Csus2 Gsus2 Dsus2 Csus2 Cmaj7
  H: "[~@45 a5@3 ~@16, ~@18 g7@20 g6 f6 e6 d6 c6 b5@4 ~@17, ~@21 d7@4 g6@3 [c6,d6]@5 [e5,e7]@15 ~@16, ~@23 b6@3 f6@5 a5@3 d7 c7 b6 a6@11 ~@16, ~@24 a6@3 e6@5 [f5,g5,f7]@16 ~@16]/2", // Csus2 E Fsus2
  I: "[~@39 d6@14 ~@11, ~@18 e7@5 g6@4 b5@5 d7 c7 b6 a6 g6 f6 e6@15 ~@11, ~@19 d7@5 f6@4 [g5,a5]@25 ~@11, ~@21 b6@4 e6@4 [e5,f5]@24 ~@11, ~@22 a6@4 [c6,d6]@5 e7@22 ~@11]/2", // Gsus2 Fmaj7 Csus2
})).s("gm_glockenspiel").gain(0.09).pan(0.7)

// chords · glockenspiel · soft notes
const glockenspiel_soft = note("<~@7 A@2 ~@6 B@2 ~@7 C@2 ~@6 D@2 ~@7 E ~@7 F@2 ~@6 G ~@7 H@2 ~@6 I@2 ~@5>".pickRestart({
  A: "[~@15 [f7,g7]@21 ~@28]/2", B: "[~@20 c7@9 ~@35, ~@15 g7@25 ~@24, ~@16 f7@25 ~@23]/2",
  C: "[~@17 f6@8 ~ f6@9 ~@29, ~@7 g7@27 ~@30, ~@10 e7@25 ~@29, ~@12 c7@11 ~@41, ~@14 b6@10 ~ g6@10 ~@29]/2",
  D: "[~@43 e7@10 ~@11, ~@27 g7@26 ~@11]/2", E: "~@14 e5 ~, g7@15 ~, ~@17 b6@13 ~@2, ~@25 g5@5 ~@2, ~@27 f5@3 ~@2",
  F: "[~@21 b6@12 ~@9 g5@2 f5@2 ~@18, ~@16 g7@29 ~@19, ~@17 f7@12 ~@10 c6@7 ~@18, ~@20 c7@12 ~@5 d6@8 ~@19]/2",
  G: "~@5 f7@3, ~@19 g7@12 ~", H: "[~@30 b5@13 ~@3 g5 ~@17, ~@19 f7@13 ~@32, ~@20 e7@13 ~@31, ~@22 c7@13 ~@29]/2",
  I: "[~@42 b5@11 ~@11, ~@14 g7@15 g7@24 ~@11, ~@17 f7@13 f7@23 ~@11, ~@20 c7@13 ~@7 c6@13 ~@11]/2",
})).s("gm_glockenspiel").gain(0.05).pan(0.7)

// other · piccolo
const piccolo = note(`<
  ~@16 A B C D E F G H@2 I J K@2 ~@3 L@2 B C D E F G M@2 ~@12 A B C N E F G O@2 B C N E F G O@2 B C N E F G P@2 ~
>`.pickRestart({
  A: "~@2 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@6 ~@2 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4 ~",
  B: "~@2 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@7 ~ e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4@2",
  C: "~@2 b4@4 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2",
  D: "b4 ~ b4!3 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4 ~ b4!3 ~ a4 ~ g#4 ~ a4 ~ b4@2 f#4@2",
  E: "~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@5 ~ b3!3 ~ b3 ~ b3 ~ e4 ~ b3@4",
  F: "~@2 b3!3 ~ b3 ~ b3 ~ e4 ~ b3@2 ~@4 b3 ~ b4 ~ a4 ~ g#4 ~ a4 ~ b4 ~ f#4@2",
  G: "~@2 e4@2 b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@2",
  H: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b4@16 ~@8 b4@2 e5@2 d#5@2]/2",
  I: "b4@4 c#5@2 b4@5 ~@3 b4@2 e5@2 b4@2 f#5@2 ~ g#5@2 c#5@2 ~ b4@4, ~@11 b4 ~@4",
  J: "~@2 b4!3 ~ b4 ~ b4@2 c#5@2 b4@5 ~ b4!2 b4@2 b4 ~ e5@2 d#5@2 e5@2 f#5@2",
  K: "[~@2 c#5@2 ~@6 e5@2 g#5@2 b5@3 e5@3 g#5@2 b5@3 e5@2 g#5@3 b5@4 e5@2 g#5@2 c#6@4 b5@9 ~@13, ~@4 b4@9 ~@51]/2",
  L: "[~@2 e4@2 d#4@2 b3@4 g#3@2 a3@2 b3@4 g#3@2 a3@2 b3@4 g#3@2 a3@2 c#4@4 b3!2 b3@2 b3@2 e4@2 b3 ~@3 c#4@4 ~@2 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4 ~, ~@40 b3 ~@3 f#4@6 b3@13 ~]/2",
  M: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b4@16 ~@14]/2",
  N: "b4 ~@2 b4!2 ~ b4 ~ b4@2 e4 ~ b4@3 ~ b4 ~ b4!3 ~ a4 ~ g#4 ~ a4 ~ b4@2 f#4@2",
  O: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b3!3 ~ b3 ~ b3 ~ b3 ~ f#4@6 ~@2 e4@2 f#4@2 g#4@2 a4@2 g#4@2 f#4 ~, ~@34 b4@11 ~@19]/2",
  P: "[~@2 b4 ~ b4@2 a4@2 g#4@2 a4@2 b4 ~ c#5@3 ~ b4 ~ b4@2 a4@2 g#4@2 a4@2 b4@2 c#5@4 b4@11 ~@19]/2",
})).s("gm_piccolo").gain(0.3).pan(0.4)

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

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!24 [~@3 x] [~ x ~ x]!16 [~@3 x] [~ x ~ x]!28 ~@3 [~@3 x] [~ x ~ x]!6>")
  .gain(0.48)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B C A B A B A B A B A B A B A B A B C A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~ x!7", B: "x!5 ~ x!2", C: "x ~ x ~ x ~ x!2",
})).gain(0.29)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B A B A C A B A B A B A C A B A B A B A C@2 A B A B A B A C A B A B A B A C@2 A B A B A B A C A B A B A B A B A
  B A C A B A B A B A C A B A B A B A C A B
>`.pickRestart({
  A: "x", B: "~@5 x ~@2", C: "~@11 x ~@4",
})).gain(0.38)

// drums · shaker
const shaker = s("sh").struct(`<
  A B C D E F G H A B C D E F G H A B C D E F G H I A B C D E F G H A B C D E F G H A B C D E F G H A B C D E A B C D E
  F G H A B C D E F G H A B C D E F G H A J
>`.pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~ x ~ x!3 ~ x ~@3 x ~@3 x ~@3", B: "x ~@3 x ~ x ~ x!3 ~ x ~ x ~@5 x ~@3 x ~ x ~ x ~ x ~",
  C: "~@2 x ~ x ~ x ~ x!4 ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3",
  D: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x!4 ~@2 x ~ x ~ x ~ x ~ x ~",
  E: "x ~@3 x ~ x ~ x!3 ~ x ~ x ~@2 x ~@2 x ~@3 x ~@3 x ~ x ~",
  F: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~",
  G: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~",
  H: "x ~ x ~ x ~ x ~ x!3 ~@3 x ~@3 x ~ x ~ x ~ x!3 ~ x ~ x ~", I: "~@16 x!3 ~ x ~@3 x ~@3 x ~@3",
  J: "x ~@3 x ~ x ~ x!3 ~ x ~ x ~@5 x ~@3 x ~ x ~@5",
})).gain(0.33)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  A B ~@2 C ~@3 A B ~@2 C ~@3 A B ~@2 C ~@3 D A B ~@2 C ~@3 A B ~@2 C ~@3 A B ~@2 C ~@3 A B ~@2 C A B ~@2 C ~@3 A B ~@2
  C ~@3 A B ~@2 C ~@3 A B
>`.pickRestart({
  A: "~@3 x ~@7 x ~@4", B: "~@8 x!2 ~ x ~@4", C: "~ x ~@9 x ~ x ~@2", D: "~@11 x ~@4",
})).gain(0.19)

// drums · triangle
const triangle = s("triangles:35").struct(`<
  A B A B A B A@2 B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C
  A B A B A B A C A C A B A B D C A C A B A
>`.pickRestart({
  A: "x!2", B: "x", C: "~ x ~@30", D: "~ x ~@14 x ~@15",
})).gain(2.07)

stack(
  bass, piano, flute, flute_soft, glockenspiel, glockenspiel_soft, piccolo, kick, rim, hihat, open_hat, shaker,
  shaker_soft, triangle
// … 1 more lines

More by Mariah Carey