Strudelify

Rainbow (Interlude)

Mariah Carey

KeyB minorTempo124 bpm
0:00/0:00
// Rainbow (Interlude) — Mariah Carey
// 124 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 · fretless bass
const bass = note(`<
  ~@29 A@3 B ~@3 C ~@7 D E F G D E F G D E F G D E F G D E F G D E F G D E F G H I J@2 K ~@12
>`.pickRestart({
  A: "[~@21 g#2@23 ~ g2@27]/3", B: "e2@19 ~@5", C: "e2 ~@5 e2 ~", D: "e2 ~@3 e2 ~ b1@4 ~@2 e2 ~@3 e2@2 b1@3 e2 ~@2",
  E: "f#2 ~@3 f#2 ~ c#2@4 ~@2 f#2 ~@3 f#2@2 c#2@2 ~ f#2 ~@2",
  F: "g#2 ~@3 g#2 ~ d#2@4 ~@2 g#2 ~@3 g#2@2 d#2@2 ~ g#2 ~@2", G: "g2 ~@3 g2 ~ d2@4 ~@2 g2 ~@3 g2 ~ d2@3 g2 ~@2",
  H: "e2 ~@3 e2@2 b1@4 ~@2 e2 ~@4 e2@2 b1@3 e2 ~", I: "~ f#2 ~@4 f#2@2 c#2@5 ~@2 f#2 ~@4 f#2@2 c#2@2",
  J: "[~ f#2 ~@2 g#2 ~@5 g#2 d#2@4 ~@3 g#2 ~@4 g#2@2 d#2@2 ~ g#2 ~@3 g2 ~@4 g2@2 d2@4 ~@2 g2 ~@2]/2",
  K: "~@4 d2@3 ~ g2 ~@15, ~@3 g2@2 ~@19",
})).s("gm_fretless_bass").gain(0.49)

// bass · fretless bass · soft notes
const bass_soft = note("<~@28 A@2 ~@2 B@4 C D E F G D H I ~@45>".pickRestart({
  A: "[e2@7 f#2@8 ~]/2", B: "[~@21 f#2@7 ~@2 f#2@14 ~ g#2@23 ~ g2@27]/4", C: "~@2 e2 ~ e2 ~@3",
  D: "f#2@4 ~@2 f#2@4 ~@2 f#2@3 ~@3 f#2@3 ~@3", E: "g#2@3 ~@3 g#2@4 ~@2 g#2@3 ~@3 g#2@4 ~@2",
  F: "g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~", G: "e2@3 ~@3 e2@4 ~@2 e2@3 ~@3 e2@3 ~@3",
  H: "g#2@3 ~@3 g#2@4 ~@2 g#2@2 ~@4 g#2@3 ~@3", I: "g2@3 ~@3 g2@3 ~@3 g2@3 ~@3 g2@2 ~@4",
})).s("gm_fretless_bass").gain(0.27)

// chords · epiano2
const epiano2 = note("<A@72 B@2 C@7 D@8>".pickRestart({
  A: "[[e2,e3,f#3,g3,b3]@19 ~@2 [f#2,e3,g#3,a3,c#4]@22 ~@2 [g#2,g#3,a#3,b3,d#4,f#4]@23 ~ [g2,g3,a3,b3,d4,f#4]@25 ~@2, ~@21 [f3,a#3] ~@74]/4", // Em F#m7 G#m7 Gmaj7 A#5
  B: "[[e2,e3,f#3,g3,b3]@21 ~ [f#2,e3,g#3,a3,c#4]@25 ~, ~@22 [f3,a#3] ~@25]/2", // Em F#m7 A#5
  C: "[~ [g#2,g#3,a#3,b3,d#4,f#4]@26 ~ [g2,g3,a3,b3,d4,f#4]@29 ~@2 [e2,e3,f#3,g3,b3]@22 ~@2 [f#2,e3,g#3,a3,c#4]@25 ~@3 [g#2,g#3,a#3,b3,d#4,f#4]@27 ~ [g2,g3,a3,b3,d4,f#4]@29, ~@83 [f3,a#3] ~@84]/7", // G#m7 Gmaj7 Em F#m7 G#m7 Gmaj7 A#5
  D: "[~@5 [e2,e3,f#3,g3,b3]@25 ~ [f#2,e3,g#3,a3,c#4]@28 ~@3 [g#2,g#3,a#3,b3,d#4,f#4]@29 ~ [g2,g3,a3,b3,d4,f#4]@33 ~@2 [e2,e3,f#3,g3,b3]@25 ~@2 [e3,g#3,a3,c#4]@22 ~@16, ~@31 [f3,a#3] ~@122 f#2@29 ~@9, ~@77 a#3 ~@18, ~@154 f3 ~@37]/8", // Em F#m7 G#m7 Gmaj7 Em Amaj7 A#5
})).s("gm_epiano2").gain(0.22)

// chords · piano
const piano = note(`<
  ~@20 A@2 B@4 C D E@2 F@2 G@4 H@2 I@2 H@2 J@2 K@4 L@4 M N@3 O@4 P Q R S T U V W X Y Z AA AB@3 AC@3 AD@2 AE AF@8
>`.pickRestart({
  A: "[[g3,b3,e4]@16 ~@5 f#2@24 ~@3, e2@9 ~ [f#3,a3]@9 ~@5, ~@7 c#4@7 ~@2]/2", // Em F#m
  B: "[g#3@12 ~@3 b3@5 ~ g3@13 ~@26 [e2,g3,b3,e4]@10 ~@14 [f#3,a3,c#4]@10 ~@2, [g#2,d#4]@20 ~ g2@24 d5@25 ~@26, b3@15 ~@6 [b3,d4]@14 b3@8 g4@27 ~@26, ~@6 g#3@4 ~@7 g3@5 b4@13 ~@13, ~@36 d4@34 f#2@25 ~]/4", // Em F#m G#5 Bm
  C: "g#3@12 ~@4 b3@7 ~, [g#2,d#4]@23 ~, b3@2 ~, ~@12 g#3@11 ~", // G#5
  D: "~@10 f#5 ~, [g3,b3,d4]@23 ~, ~@12 a5@11 ~, ~@16 g5@7 ~", E: "[g3,b3,e4,f#5]/2",
  F: "[~@2 [g#6,b6,d#7]@3 b6@2 g6@4 ~ [g6,d7]@4, ~@5 [g#6,d#7]@11, ~@21 [b6,d7]@13 b6@13 ~, ~@11 g6 ~@4]/2", // G#m G5 G#5 Bm
  G: "[[e3,g3,b3,e4]@20 ~@19 [f#5,a5,c#6]@4 ~@2 b5@11 ~@18 [g3,g4,b4,d5]@6 ~ [g3,d4,g4,b4]@5 ~ [g3,b3,d4,g4]@3 ~@6, ~@21 f#3@37 [d6,e6]@2 [a6,b6,c#7] [d7,e7,f#7] g7@18 ~@16, ~@21 [f#4,a4,c#5]@22 ~@2 [g#5,d#6]@35 ~@16, ~@56 a5@3 [f#6,g6]@21 ~@16, ~@57 [b5,c#6]@23 ~@16]/4", // Em F#m G Dsus2 A D F#m G#5 …
  H: "[~@3 [e4,b4,e5]@3 [e4,b4,e5]@3 ~@3 [e4,b4,e5]@3 ~ [e4,b4,e5]@4 ~@7 [f#4,c#5,f#5]@3 ~@6 [f#4,c#5,f#5]@3 f#4 [f#4,c#5,f#5]@4 ~ g#3@3, e3@9 e3@12 f#3@11 ~ f#3@10 ~@5, ~@15 a4@6 ~@9 [f#4,c#5,f#5]@6 ~@3 b4@5 ~@4]/2", // E5 F#5
  I: "[~@3 [g#4,d#5,g#5]@3 [g#4,d#5,g#5]@3 ~@3 g#4@3 ~@2 [g#4,d#5]@4 ~@12 [b5,d6]@6 [b5,d6,g6]@7 ~@2, g#3@9 g#3@12 [g3,g4,b4,d5]@25 ~@2, ~@12 [d#5,g#5]@4 g#5@4 ~@13 g5@13 ~@2, ~@5 c#5@2 ~@9, ~@15 g#4@2 ~@31]/2", // G#5 Bm G G#5
  J: "[~@3 [g#4,d#5,g#5]@3 [g#4,d#5,g#5]@3 ~@3 g#4@3 ~@2 [g#4,d#5]@4 g3@5 ~@17 d6@4 ~, g#3@9 g#3@12 ~@5 g3@8 g5@3 a5@3 b5@7 ~, ~@12 [d#5,g#5]@4 g#5@4 ~ b4@8 ~ b4@17 ~, ~@15 c#5@6 d5@10 d5@16 ~, ~@15 g#4@2 ~@4 g4@26 ~]/2", // G#5
  K: "[~@15 b4@3 e5 ~@19 a4@3 c#5 ~@20 d#5@3 d#5@2 ~@23 d6@5 ~, [e2,g3,b3,e4]@19 ~@3 [f#2,f#3,a3,c#4]@21 ~@3 [g#2,g#3,b3,d#4]@22 ~ [g2,g3,b3]@15 d5@5 [g5,b5]@6 ~, ~@12 g4@7 ~@17 f#4@7 ~@17 g#4@8 ~@2 d4@25 ~, ~@62 b4@5 ~@15 g4@13 ~, ~@83 b4@12 ~]/4", // Em F#m G#m G
  L: "[~ c#4 ~@13 [g3,b3,e4] ~@17 [f#4,a4,c#5]@6 [f#4,a4,c#5]@3 [f#4,a4,c#5]@3 ~@18 [g#4,a#4,b4,d#5]@5 ~@19 [g5,b5,d6]@8 ~, e2@19 ~@2 [f#2,f#3,a3,c#4]@25 g#2@22 ~@2 g2@25 ~, [g3,b3,e4]@14 ~@40 [g#3,b3,d#4]@14 ~@7 [g3,b3,d4]@20 ~, ~@81 [g4,b4,d5]@14 ~]/4", // Em F#m G#m G F#m Em G#m G
  M: "~@3 [e4,b4,e5]@3 [e4,b4,e5]@2 ~@4 [e4,b4,e5]@2 ~@2 [e4,b4,e5]@4 ~@4, e3@8 ~ e3@6 e3@2 ~@7", // E5
  N: "[~@3 [f#4,c#5,f#5] ~@2 [f#4,c#5,f#5]@3 f#3@3 [f#4,c#5,f#5]@2 ~@2 [f#4,c#5,f#5]@3 ~@8 [g#4,d#5,g#5] ~@2 [g#4,d#5,g#5]@3 ~@3 [g#4,d#5,g#5]@2 g#3 ~ [g#4,d#5,g#5]@4 ~@7 [g4,b4,d5]@3 ~@3 [g5,b5,d6]@2 ~@4 [g6,b6,d7]@5 ~@4, ~ f#3@5 ~@8 f#3@5 ~@2 g#3@12 g#3@5 ~@7 g3@20 ~@7, ~@30 f#5 ~@41]/3", // F#5 G#5 G
  O: "[~@3 [e4,b4,e5] ~@2 [e4,b4,e5]@3 ~@3 [e4,b4,e5]@3 ~ [e4,b4,e5]@5 ~@5 [f#4,c#5,f#5] ~@3 [f#4,c#5,f#5]@3 ~@3 [f#4,c#5,f#5]@3 ~ [f#4,c#5,f#5]@4 ~@7 [g#4,d#5,g#5] ~@2 [g#4,d#5,g#5]@3 g#3@3 [g#4,d#5,g#5]@3 g#3 [g#4,d#5,g#5]@4 ~@22 d6@4 ~@2, e3@9 e3@5 ~ e3@6 f#3@9 ~@3 f#3@6 f#3@5 ~ g#3@9 ~@15 g3@12 g5@6 a5@7 ~@2, ~@36 g4@11 ~, ~@75 b4@19 ~@2, ~@39 d5@8 ~]/4", // E5 F#5 G#5
  P: "~@3 [g4,b4,e5]@3 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@3 ~@2 [g4,b4,e5]@6 ~, e3@9 e3@6 e3@7 ~@2", // Em
  Q: "~@3 [f#4,a4,c#5]@3 [f#4,a4,c#5]@3 ~@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@6 ~, f#3@8 ~ f#3@14 ~", // F#m
  R: "~@3 [g#4,b4,d#5]@3 [g#4,b4,d#5]@3 ~@3 [g#4,b4,d#5]@3 ~ [g#4,b4,d#5]@6 ~@2, g#3@9 g#3@6 g#3@7 ~@2", // G#m
  S: "~@3 [g4,b4,d5]@3 ~@12 [g6,b6,d7]@5 ~, g3@23 ~, ~@6 [g4,b4,d5]@17 ~, ~@12 [g5,b5,d6]@11 ~", // G
  T: "~@3 [g4,b4,e5]@3 [g4,b4,e5]@2 ~@4 [g4,b4,e5]@3 ~ [g4,b4,e5]@5 ~@3, e3@8 ~ e3@6 e3@7 ~@2", // Em
  U: "~@3 [f#4,a4,c#5]@3 ~@6 [f#4,a4,c#5]@3 ~ [f#4,a4,c#5]@5 ~@3, f#3@9 f#3@6 f#3@7 ~@2, ~@6 [f#4,a4,c#5]@5 ~@13", // F#m
  V: "~@3 [g#4,b4,d#5]@3 [g#4,b4,d#5]@3 ~@3 [g#4,b4,d#5]@3 ~ [g#4,b4,d#5]@6 ~@2, g#3@8 ~ g#3@6 g#3@8 ~", // G#m
  W: "~@3 [g4,b4,d5]@3 ~@12 d6@4 ~@2, g3@11 ~, ~@2 [g4,b4,d5]@5 ~, ~@4 g5@3 ~, ~@15 b5@7 ~@2", // G
  X: "~@3 [e3,g3,b3,e4]@3 [e3,g3,b3,e4]@2 ~@9 [e3,g3,b3,e4]@3 ~@4", // Em
  Y: "~@3 [f#3,c#4] f#2 ~@2 f#2@9 ~ [f#2,f#3,a3,c#4]@7, ~@3 a3@2 ~ [f#3,a3,c#4]@9 ~@9", // F#5 F#m
  Z: "~@3 [g#2,g#3,b3,d#4] ~@2 [g#2,g#3,b3,d#4]@4 ~@7 [g#2,g#3,b3,d#4]@7", // G#m
  AA: "~ [g2,g3,b3,d4] ~@5 d5, ~ [g2,g3,b3,d4]@3, ~@15 g4@8 ~, ~@18 b4@5 ~", // G
  AB: "[~@3 [e3,g3,b3,e4]@3 [e3,g3,b3,e4]@2 ~@10 [e3,g3,b3,e4]@9 ~@2 f#2@3 [f#2,f#3,a3,a#3,c#4]@5 ~@8 [f#2,f#3,a3,c#4]@11 [g#2,g#3,b3,d#4]@4 [g#2,g#3,b3,d#4]@11 ~, ~@7 [f#3,a3,c#4] ~@10]/3", // Em F# F#m G#m F#m
  AC: "[[g#2,g#3,b3,d#4]@10 ~ [g2,g3,b3,d4]@3 ~@15 [g5,a5]@6 ~ e3@3 [e3,g3,b3,e4]@3 ~@4 [e3,g3,b3,e4]@14 ~@3 [f#2,f#3,a3,c#4]@3 [f#2,f#3,a3,c#4]@6, ~@7 g2@10 ~@19, ~@15 [g3,b3,d4]@20 [g3,b3,e4]@3 ~@34, ~@27 e6@7 ~@38, ~@28 [b5,c#6,d6]@7 ~@37]/3", // G#m G Gsus2 Em F#m G Em Bm
  AD: "[~ [f#2,f#3,a3,c#4]@15 ~@2 [g#2,g#3,b3,d#4]@4 [g#2,g#3,b3,d#4]@7 [g#2,g#3,b3,d#4]@16 ~@2 [g2,g3,b3,d4]]/2", // F#m G#m G
  AE: "~@7 d5@5, ~ [g2,g3,b3,d4]@7, ~ g4, ~@13 b4@11", // G
  AF: "[~@9 [b6,d7]@4 b6@3 g6@4 [e6,g6]@13 ~@7 a6@3 f#6@4 e6@3 [c#6,e6]@10 ~@10 b6@3 ~@4 f#6@4 [d#6,f#6]@10 ~@28 d7@6 ~@2 [g3,e4]@15 ~@4 b3@7 ~ [f#2,f#3,a3,c#4]@36 ~@2, ~@5 [g3,b3,e4]@28 ~@2 [f#3,a3,c#4]@25 ~@2 [g#3,b3,d#4]@30 [g3,b3,d4]@25 g6 b6@6 ~@68, ~@13 d7@20 ~@14 f#6@14 ~@47 g5@16 ~@3 e3@27 ~@38, ~@16 b6@17 ~@6 f#6@4 a6@17 ~@9 g#6@4 [g#6,b6]@18 ~@18 b5@15 ~@3 b3@19 ~@46, ~@110 d6@14 ~@18 [g3,e4]@11 ~@39]/8", // Bm Em C#m D#m C F#m Em F#m …
})).s("gm_piano").gain(0.32)

// chords · lead 7 fifths
const lead_7_fifths = note("<~@4 A@68 B@2 C D@2 ~@12>".pickRestart({
  A: "[[e4,b4]@17 ~@4 [f#4,c#5]@20 ~@4 [g#4,d#5]@19 ~@5 [g4,d5]@23 ~@4]/4", B: "[[e4,b4]@17 ~@5 [f#4,c#5]@23 ~@3]/2",
  C: "~ [g#4,d#5]@22 ~", D: "[~@2 [g4,d5]@13 ~@9]/2",
})).s("gm_lead_7_fifths").gain(0.06).pan(0.7)

// other · brass section
const brass_section = note("<~@60 A B C D A B C D ~@21>".pickRestart({
  A: "~@3 e4 ~@3 e4 ~@4 e4 ~@3 e4 ~@7", B: "~@3 f#4 ~@3 f#4 ~@4 f#4 ~@3 f#4 ~@7",
  C: "~@3 g#4 ~@3 g#4 ~@4 g#4 ~@3 g#4 ~@7", D: "~@3 g4 ~@5 g4 ~@2 g4 ~@3 g4 ~@7",
})).s("gm_brass_section").gain(0.28).pan(0.4)

// drums · rim
const rim = s("rim").struct("<~@68 A@4 B C D E F G H I J K L M N O E P ~>".pickRestart({
  A: "~ x ~@2 x ~", B: "~@4 x ~@12 x ~@6", C: "~@3 x ~@6 x ~", D: "~@10 x ~@12 x", E: "~@13 x ~@10",
  F: "~@3 x ~@12 x ~@7", G: "~@6 x ~@12 x ~@4", H: "~@11 x ~@11 x", I: "~@7 x ~@4", J: "~@5 x ~@13 x ~@4",
  K: "~@5 x ~@6", L: "~@2 x ~@14 x ~@6", M: "~@8 x ~@14 x", N: "~@2 x", O: "~@2 x ~@4 x", P: "~ x ~@4",
})).gain(0.26)

// drums · kick
const kick = s("bd").struct("<~@36 [x!4]!36 ~@17>").gain(0.39)

// drums · snare
const snare = s("sd").struct("<~@52 [~@3 x ~@5 x ~ x]!15 [~ x ~ x] [~@3 x ~@5 x ~ x]!4 ~@17>").gain(0.39)

// drums · clap
const clap = s("cp").struct("<~@28 [~ x ~ x]!44 ~@17>").gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@36 [x!4]!36 ~@17>").gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~@67 A B C B C D E F G H I J K ~ L ~ M ~ N O P ~>".pickRestart({
  A: "~@7 x", B: "~@13 x ~@3 x ~@6", C: "~@4 x ~ x ~@2 x ~@14", D: "~@20 x ~@2 x", E: "~@20 x!3 ~", F: "~@5 x",
  G: "x ~@12 x ~ x ~@2 x ~@5", H: "~@4 x!2", I: "~ x ~ x ~@4 x ~@15", J: "~@10 x ~@2 x ~@3 x ~ x ~@4", K: "~@23 x",
  L: "~@5 x ~@18", M: "~ x ~@2 x ~ x ~@2 x ~@2", N: "~ x ~@22", O: "~@13 x ~@3 x ~@5 x", P: "~@5 x ~@4 x ~@13",
})).gain(0.31)

// drums · open hat
const open_hat = s("oh").struct("<~@36 [~ x ~ x ~ x ~ x]!36 ~@17>").gain(0.26)

// drums · tambourine
const tambourine = s("tb").struct("<~@36 A@2 B A@6 B A@7 B A@7 B A@10 C D E F G H I J K L M N O P Q R ~>".pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", B: "x!2 ~ x!2 ~ x ~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  C: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x!2 ~ x ~ x!2 ~ x ~", D: "x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x!2",
  E: "~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x!2 ~ x ~ x ~ x!2", F: "~ x ~ x!2 ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x!2 ~ x",
  G: "~ x ~ x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x", H: "~ x!2 ~ x ~ x ~ x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x ~@2",
  I: "~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2 ~ x ~ x ~ x!2", J: "~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x",
  K: "~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x", L: "~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~",
  M: "x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", N: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x",
  O: "~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~", P: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x",
  Q: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~", R: "x!7 ~@5",
})).gain(0.31)

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

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

// drums · congas
const congas = s("conga:13").struct("<~@68 A@4 B C D E F G H I J K L M I N O P ~>".pickRestart({
  A: "~@4 x ~@2 x ~@8 x ~@2 x ~@4", B: "~@4 x ~@3 x ~@8 x ~@2 x ~@3", C: "~@6 x ~@3 x ~@9 x ~@2 x",
  D: "~@10 x ~@2 x ~@9 x", E: "~@3 x ~@9 x ~@2 x ~@7", F: "~@3 x ~@2 x ~@9 x ~@3 x ~@3", G: "~@6 x ~@2 x ~@9 x ~@3 x",
  H: "~@9 x ~@3 x ~@9 x", I: "~@3 x ~@10 x ~@3 x ~@5", J: "~@5 x ~@2 x ~@10 x ~@3 x", K: "~@6 x!2 ~@4",
  L: "~@2 x ~@2 x ~@11 x ~@3 x ~@2", M: "~@8 x ~@3 x ~@10 x", N: "~@6 x ~@3 x ~@10 x ~@2", O: "~ x ~@11 x ~@3 x ~@6",
  P: "~ x!2 ~@3",
})).gain(0.98)

// drums · congas
const congas_2 = s("conga:18").struct("<~@68 A@4 B C D E F G H I J K F L M N O P ~>".pickRestart({
  A: "~ x ~@11 x ~@10", B: "~ x ~@12 x ~@9", C: "~@3 x ~@13 x ~@6", D: "~@3 x ~@6 x ~", E: "~@9 x ~@13 x",
  F: "~@13 x ~@10", G: "~ x ~@6 x ~@3", H: "~@2 x ~@2 x", I: "~@5 x ~@6", J: "~ x ~@14 x ~@7", K: "~@7 x ~@14 x ~",
  L: "~@4 x ~@14 x ~@4", M: "~@11 x ~@12", N: "~@2 x ~@14 x ~@6", O: "~@3 x ~@4", P: "~ x ~@10",
})).gain(0.98)

// drums · congas
const congas_3 = s("conga:33").struct("<~@68 A@4 B C D E F G H I J K L M N O P Q ~>".pickRestart({
  A: "x ~@4 x!2 ~@4 x", B: "x ~@10 x!2 ~@11", C: "x!2 ~@11 x ~ x ~@8", D: "~@3 x!2 ~@11 x ~ x ~@5",
  E: "~@6 x ~ x ~@11 x!2 ~@2", F: "~@9 x ~ x ~@11 x", G: "~ x ~@11 x!2 ~@9", H: "~ x!2 ~@5 x!2 ~@2",
  I: "~@7 x!2 ~@12 x ~ x", J: "~@6 x!2 ~@4", K: "~@3 x ~ x ~@12 x ~ x ~@3", L: "~@9 x ~ x ~@12", M: "x!2 ~@6 x!2 ~@2",
  N: "~@7 x ~ x ~@12 x ~", O: "x ~@13 x!2 ~@8", P: "~@5 x ~ x ~@12 x ~ x ~", Q: "~ x",
})).gain(0.98)

// drums · ht
const ht = s("ht").struct("<~@68 A B A B C D E F G H I J ~ K L M N ~ O ~@2>".pickRestart({
  A: "~@10 x ~ x ~@6 x ~@2 x ~", B: "~ x ~@5 x ~@4", C: "~@17 x!2 ~@5", D: "~@13 x!3 ~@8", E: "~@8 x!2 ~@2",
  F: "~@3 x ~@2 x ~@3 x ~@13", G: "x ~@10 x ~ x ~@9 x", H: "~ x ~@2", I: "~@4 x ~ x ~@8 x ~@8",
  J: "~@9 x ~ x ~@2 x ~@3 x!2 ~@4", K: "~ x ~ x ~@20", L: "~@3 x!2 ~@3", M: "x ~ x", N: "~@17 x ~ x!2 ~@3",
  O: "x ~@6 x ~@16",
})).gain(0.31)

stack(
  bass, bass_soft, epiano2, piano, lead_7_fifths, brass_section, rim, kick, snare, clap, hihat, mid_tom, open_hat,
  tambourine, cowbell, crash, congas, congas_2, congas_3, ht
)

More by Mariah Carey