Strudelify

Outside

Mariah Carey

KeyD majorTempo56 bpm
0:00/0:00
// Outside — Mariah Carey
// 56 bpm, 12/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 6/8 at bar 17, 12/8 at bar 17, 6/8 at bar 21, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 45 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(56/6)

// 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("<~ A B C B C B C B C D E F G H I J K J K L M N O P Q R S T U V W X Y Z AA@2 P AB ~@6>".pickRestart({
  A: "~@28 d1@3 ~", B: "d1 f#1", C: "c2@16 b1@8 g1@3 f#1@2 e1@3", D: "d1@2 c#2 f#1",
  E: "b1@14 ~ b1 a1@3 b1@2 c2@3 b1@2 e1@3 f#1@3", F: "g1@16 f#1@13 g1@3", G: "b1@14 ~ b1 a#1@16", H: "a1!2",
  I: "g1@7 ~ g1@3 f#1@2 e1@3 d1@16", J: "f#1 c2", K: "b1@8 g1@3 f#1@2 e1@3 d1@16",
  L: "c#2@6 ~ c#2 f#1@5 a1@3 b1@14 ~ b1", M: "a1@2 ~ b1@2 c2@2 ~ b1 ~@2 e1@2 f#1@2 ~ g1@15 b1",
  N: "f#1@7 f#1 f#1@5 a1@3 b1@14 ~ b1, b1 ~@31", O: "a#1 a1", P: "a1@16 g1@7 ~ g1@3 f#1@2 e1@3",
  Q: "d1@5 d2@2 ~ d2@2 ~ d2@2 d2@2 ~ d2@2 ~ d2@2 d2@2 ~ d2@2 ~ d2@2 ~ d2@2",
  R: "b1@6 a1 b1 e2@3 d2@2 b1@3 e2@8 e2@7 d2", S: "c#2@6 ~ c#2 c#2@2 ~ c#2@4 ~ d1@2 ~ d1@2 d1@2 ~ d1@2 ~ d1@2 d1@2 a1",
  T: "b1@6 a1 b1 e2 d2 b1 e2 [b1,d2] e2 d2 b1 e2@7 d2 c#2@5 b1@2 c#2", // Bm
  U: "a#1@2 ~ a#1@2 a#1@2 ~ a#1@2 ~ a#1@2 a#1@2 ~ a#1@2 ~ a#1@2 a#1@2 a1 d1@2 ~ d1@2 d1@2 ~",
  V: "d2@5 d2 ~@2 d2@4 b1 d2@2 a1 c#2@4 b1 d2 c#2@2 f#1@3 f#1@2 a1@2 ~",
  W: "b1@7 b1 b1@2 ~ b1@2 a#1@3 a1@6 a1 b1 d2 ~ d1@4 ~ d1",
  X: "g1@7 g1 g1@2 ~ g1@2 a1@2 b1 c#2@4 a1 d2@2 a1 c#2@2 ~ b1@2 a1@2 ~",
  Y: "f#1@6 a1 ~ b1@2 ~ b1@2 a#1@2 a1!2 ~ a1@4 ~ d1!2 d1@5 d1 ~, ~@18 b1 ~@13",
  Z: "g1@8 ~ d2 ~@2 c#2 b1 ~ a1 f#1@6 ~ f#1 f#1@2 ~ f#1@2 a1@2 ~, ~@8 g1@3 d2@2 ~@19",
  AA: "[b1@6 ~ b1 b1@2 ~ b1@5 a#1@29 ~@3 a1@16]/2", AB: "d1 ~",
})).s("gm_fretless_bass").gain(0.37)

// chords · piano
const piano = note("<~@15 A B C D E F G H@2 I J K L M N O P Q R S T@2 U V ~@6>".pickRestart({
  A: "~@16 [d3,f#3]@7 ~@6 d3@2 ~, ~@16 d4@15 ~, ~@16 a3@11 a3@5, ~@23 d3@6 ~@3, ~@24 f#3@7 ~", // D
  B: "[f#3,a3]@5 f#3@2 ~@4 a3@2 [a3,c#4]@2 ~ c3@4 ~@9 c4@2 ~, c#4@13 ~@11 e4@7 ~, f#2@7 f#2@9 ~@4 c3@6 ~ c3@5, ~@5 a3@5 ~@18 g3@3 ~, ~@8 f#3@8 [g3,c4,e4]@8 [g3,c4]@5 ~@3", // F#m A C C5
  C: "[f#3,b3,d4]@7 ~@6 g2@2 ~ [f#3,d4]@8 ~@5 d3@2 ~, b2@15 ~ d3@6 ~@2 f#3@7 ~, ~@7 [f#3,b3,d4]@8 ~ a3@11 [a3,d4]@4 ~, ~@11 a2@4 ~@17", // Bm D Bm D5
  D: "~@8 f#4@3 ~@2 c#5@2 ~@9 e5@8, [f#2,f#3,a3,c#4] [c3,g3,c4,e4], ~@8 [a4,c#5]@4 a4@3 ~@17, ~@11 f#4@5 ~@7 [g4,c5]@8 ~", // F#m C A C5
  E: "[f#3,b3,d4]@8 ~@4 a2 g2@2 ~ [f#3,a3,d4]@5 [f#3,a3]@2 ~@4 [a3,d4]@4 ~, b2@11 b2@5 d3@7 d3@8 ~, ~@8 [f#3,b3,d4]@8 ~@5 d4@5 ~@6, ~@24 f#3@7 ~", // Bm D F#m D5 Bm
  F: "g#3@3 ~@2 e4@2 ~ [f#3,a#3]@3 ~@2 [f#3,a#3,c#4]@2 ~ f#3@3 f#3@2 f#3@3 ~@5 d4@2 ~, c#3@7 ~ f#2@7 ~ b2@8 b2@8, [b3,e4]@4 b3@3 ~@9 [b3,d4]@5 b3@7 ~@4, ~@3 g#3@4 ~@14 d4@5 ~ f#3@5", // F# E5 Bm
  G: "[a3,c4,e4] ~@2 a4@2 [a4,c5,e5]@2 ~ [f#4,a4]@3 [a4,d5]@2 [a4,d5,f#5]@2 ~@9 d4@5 [g3,b3,d4]@2 ~, a2@7 ~@9 g2@16, ~@3 [c4,e4]@5 d4@8 ~@7 b3@6 ~@3", // Am F#m D5 D G C
  H: "[~ c#4@4 [f#3,a#3,c#4]@2 ~ a#3@2 ~@22 [a#2,g3]@8 ~@3 a#3@5 [d3,f#3,a3,d4]@8 [f#3,d4]@4 ~ f#3@2 ~, [f#3,a#3]@5 ~@2 f#2@9 b3@16 a#3@8 g3@8 ~@8 a3@8, ~ d4 d4 ~, ~@23 b2@25 ~@12 d3@3 ~, ~@3 f#3@3 ~@2]/2", // F# D# D F#
  I: "[a3,c#4,e4]@8 [a3,c#4,e4]@4 ~ [a3,c#4,e4]@2 ~ [g2,g3,b3,d4]@8 ~@5 e2@2 ~, a2@12 a2@3 ~@9 [g2,g3,b3,d4]@8, ~@27 f#2@5", // A G
  J: "[d3,a3,d4]@3 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 ~ [d3,f#3,a3,d4]@3 [d3,a3,d4]@2 [d3,f#3,a3,d4]@2 a2 [d3,f#3,a3,c4]@3 [d3,f#3,a3,c4]@2 [d3,f#3,a3,c4]@2 ~ [d3,f#3,a3,c4]@3 [d3,f#3,a3,c4]@2 [d3,f#3,a3,c4]@2 ~, ~@7 a2@8 ~@8 a2@8 ~", // D5 D D5 D D7
  K: "[f#3,a3,b3,d#4]@6 b4!2 b4@3 b4@2 [b4,d5]@2 ~ [b4,e5]@8 e5@5 ~ e5@2, ~@6 d5@7 ~@3 [g3,b3,e4]@16, ~@7 e5@4 e5@5 ~@8 b4@8, ~@8 f#5@7 ~@14 d5@2 ~", // B7 Bm E5 Em
  L: "[g3,a#3,c#4,e4,c#5]@8 ~@3 c#5@2 c#5@2 ~ [f#3,a3,d4]@3 [f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 a2 [f#3,a3,d4]@3 [f#3,a3,d4]@2 [f#3,a3,d4]@2 ~, ~@8 [g3,a#3,c#4,e4]@8 d3@5 ~@3 d3@7 ~", // Gdim D Gdim
  M: "~@6 b4!6 [b4,e5] [b4,e5]@2 ~ [b4,e5]@5 [b4,e5]@2 d5 [a#4,c#5]@5 [a#4,c#5]@2 ~, [f#3,a3,b3,d#4]@15 ~ [g3,b3,e4]@8 [g3,a#3,c#4,e4]@8, ~@6 d5@4 d5@2 d5@3 ~@17, ~@7 e5@2 e5@3 ~@20, ~@8 f#5@3 f#5@5 ~@16", // E5 A#m B7 Em Gdim
  N: "[a#2,g3,a#3,c#4,e4]@2 ~ [a#2,a#3,e4]@2 ~ [g3,e4]@2 [a#2,g3,a#3,c#4,e4]@2 ~ [a#2,g3,a#3,c#4,e4]@2 [a#2,g3,a#3,c#4,e4]@2 ~ [g3,a#3,c#4,e4]@7 ~ [g3,a#3,c#4,e4]@6 ~@2, ~@5 [a#2,a#3]@2 ~@25", // A#dim C A#dim Gdim A#
  O: "[d3,f#3,a3,d4]@8 ~@13 b3@2 ~ f#2@5 f#2@3, ~@8 [d3,f#3,a3,d4]@15 ~@9, ~@16 c#3@7 ~@9, ~@19 g#3@5 [f#3,a#3,c#4]@8", // D F#
  P: "b2@8 b2@3 ~@2 a#2@2 ~ [a2,a3,c4,e4]@9 ~ [d3,a3,d4,f#4]@6, [f#3,b3,d4] ~, ~@11 b2@5 ~@16", // Am D Bm
  Q: "g2@8 ~@5 b3@2 ~ [c#3,g#3,b3,e4]@7 ~@6 c#3@2 ~, d4@15 ~@17, b3@13 ~@11 [g#3,b3,e4]@7 ~, g3@11 g3@5 ~@7 c#3@6 ~@3, ~@8 g2@7 ~@17", // C#m7 E
  R: "[f#2,f#3,a#3,c#4]@8 [b2,f#3,b3,d4]@8 ~@2 [a2,a3,c4,e4]@7 [d3,a3,d4,f#4]@6 ~", // F# Bm Am D
  S: "[g2,g3,b3,d4]@7 ~ [g3,b3,d4]@4 ~ [g3,b3,d4]@2 ~ [f#2,f#3]@7 ~ f#3@3 [f#3,a#3,c#4]@5, ~@7 g2@5 g2@3 ~ [a#3,c#4]@11 ~@5, ~@23 f#2@9", // G F# A#m
  T: "[[b2,f#3]@7 ~@6 d4@2 ~ [g3,a#3,d4]@7 ~ d5@7 ~ g5@12 ~@4 [d3,f#3,a3,d4]@15 ~, d4@13 ~@10 a#4@8 d6@13 ~@20, b3@11 b3@5 ~@48, ~@7 b2@9 a#2@28 ~@20, ~ f#3 ~@6]/2", // B5 Gm D
  U: "a2@14 ~@2 [g3,b3,d4]@7 ~ [a#3,d4]@7 ~, ~@16 g2@15 ~", V: "[a3,d4] ~",
})).s("gm_piano").gain(0.16).pan(0.7)

// chords · piano · soft notes
const piano_soft = note("<~@17 A ~ B C D E F ~ G H I J K ~@5 L M N O ~@3 P@2 ~>".pickRestart({
  A: "~@24 d4@3 ~@5, ~@22 d3@7 ~@3", B: "~@13 a2@2 ~@17", C: "~@11 [f#3,a#3]@2 ~@15 b3@3 ~, ~@9 c#4@4 ~@14 d4@2 ~@3",
  D: "~@11 f#4@5 ~@7 g3@6 ~@3", E: "f#2@7 ~@6 f#3@3 [b2,f#3]@8 ~@8, ~ c#4 ~@2, ~@8 f#3@5 ~@3 c3 ~@15, ~@5 a#3@3 ~@8",
  F: "~@7 a#2@9 ~@7 d3@5 ~ d4@2 ~", G: "f#3@3 ~@8 f#3@2 ~@19", H: "~@31 f#5", I: "~@7 c#5@4 ~@21", J: "~@23 b4 ~@8",
  K: "~@3 [g3,c#4]@2 ~ c#4@2 ~@24", L: "~@23 g4@8 ~", M: "a#5@3 ~@5", N: "[a3,c#4,e4]@14 ~@10 g3@7 ~", O: "[d3,f#3] ~",
  P: "[~@13 [d3,d4,a4,d5]@19]/2", // D5
})).s("gm_piano").gain(0.09).pan(0.7)

// chords · epiano2
const epiano2 = note(`<
  A B C D E F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM@4 ~
>`.pickRestart({
  A: "[f#3,a3,d4]@14 ~@2 [a2,e3,a3,c#4]@15 ~, a2 ~", // D A
  B: "[g2,d3,g3,b3]@7 ~ [g2,d3,g3]@7 ~ [d2,d3,f#3,a3]@16, ~@8 a#3@5 ~@19", // G G5 D
  C: "[d3,f#3,a3,d4]@7 ~ [f#3,a3,c#4]@7 ~, ~ f#2", D: "[g3,c4,e4]@14 ~@2 [b2,f#3,b3]@15 ~, c3@16 d4@13 ~@3",
  E: "[d3,f#3]@15 ~ [f#2,f#3,a3,c#4]@13 ~@3, [a3,d4]@13 ~@19", // D F#m D5
  F: "[g3,e4]@7 ~ d4@2 ~@3 f#4 ~@2 [b2,f#3,d4]@13 ~@3, c3 ~, c4@5 ~@6 e4@4 ~ b3@11 ~@5", // C Bm
  G: "[d3,f#3,a3]@15 ~ [f#3,a3,c#4]@6 ~@2 f#5@3 c#5@2 [a4,c#5]@2 ~, d4@13 ~@3 f#2@15 ~, ~@24 a5@7 ~, ~@27 f#5@5", // D F#m A
  H: "[c4,e4,g4]@6 ~@2 [g3,c4,e4]@5 ~@3 [b3,d4]@7 ~ d4@3 e4@2 f#4 ~@2, c3@15 ~ b2@15 ~, ~@16 f#3@5 ~@11", // C Bm
  I: "~@10 c3@4 ~@2 [f#2,f#3,a3,c#4]@15 ~, [d3,f#3,a3,d4]@15 ~@17", // F#m D
  J: "[[g3,c4,e4]@7 ~@4 e4@2 f#4 ~@2 [b3,d4,f#4]@7 ~ b4@2 ~ d5@2 [d5,f#5]@2 ~ f#3@11 ~@2 a3@2 ~ [c#3,g#3,b3,c#4,e4]@7 ~ f#3@5 f#3@2 ~, c3@7 ~ b2@16 ~@8, ~@8 d4@6 ~@10 f#4@7 ~ [d2,d4]@16 ~@8 [f#2,a#3,c#4]@8, ~@27 b4@5 a3@13 ~@19, ~@43 f#3@5 ~@16]/2", // C Bm D C#m7 D F#
  K: "[f#3,b3,d4]@7 ~@4 d4@2 [d4,f#4]@2 ~ [a3,c4,e4]@3 [c4,e4]@2 [c4,e4,a4]@2 ~ [f#4,a4]@3 [a4,d5]@2 [a4,d5,f#5]@2 ~, b2@16 a2@8 [d3,d4]@7 ~, ~@8 b3@8 ~@3 a3@5 ~@3 f#4@5", // Bm D Am C Am F#m D5 D
  L: "~@9 [d5,g5]@7 ~@3 a#3@2 a#3@3 [f#3,a#3,c#4]@7 ~, [g2,g3,b3,d4]@2 [f#3,c#4] ~, ~@8 b5@8 ~@3 f#2@12 ~", // G5 F# G F#5
  M: "b3@8 b3@7 ~ [a#2,g3,a#3,d4]@15 ~, [b2,f#3,d4]@15 ~@17", // Gm Bm
  N: "f#3@8 f#3@7 ~ a3@8 ~@5 e4@2 ~, [d3,a3,d4]@15 ~ a2@16, ~@16 e4@13 ~@3, ~@16 c#4@11 c#4@5, ~@3 a3", // D5
  O: "[g3,b3,d4]@8 [g3,b3,d4]@7 ~ [d3,f#3]@15 ~, g2@15 ~ [a3,d4]@13 ~@3", // G D D5
  P: "[f#2,f#3,a3,c#4]@13 ~@3 [g3,e4]@7 ~ d4@2 ~@3 f#4 ~@2, ~ c3, ~@16 c4@5 ~@6 e4@4 ~", // F#m C
  Q: "[b2,f#3,d4]@13 ~@13 c3@4 ~@2, b3@11 ~@5 [d3,f#3,a3,d4]@15 ~", // Bm D
  R: "[f#2,f#3,a3,c#4]@15 ~ [g3,c4,e4]@7 ~@4 e4@2 f#4 ~@2, ~@8 c3@7 ~, ~@12 d4@3 ~", // F#m C
  S: "[b3,d4,f#4]@7 ~ b4@2 ~ d5@2 [d5,f#5]@2 ~ f#3@11 ~@2 a3@2 ~, b2, ~@8 f#4@7 ~ [d2,d4]@16, ~@11 b4@5 a3@13 ~@3, ~@27 f#3@5", // Bm D
  T: "[c#3,g#3,b3,c#4,e4]@7 ~ f#3@5 f#3@2 ~ [f#3,b3,d4]@7 ~@4 d4@2 [d4,f#4]@2 ~, ~ [f#2,a#3,c#4] b2@2, ~@3 b3", // C#m7 Bm D F#
  U: "[a3,c4,e4]@3 [c4,e4]@2 [c4,e4,a4]@2 ~ [f#4,a4]@3 [a4,d5]@2 [a4,d5,f#5]@2 ~@10 [d5,g5]@7, a2@8 [d3,d4]@7 ~ [g2,g3,b3,d4]@16, ~@3 a3@5 ~@3 f#4@5 ~@8 b5@8", // Am C Am F#m D5 D G5 D …
  V: "~@3 a#3@2 a#3@3 [f#3,a#3,c#4]@7 ~@9 a#3@7 ~, [f#3,c#4] ~@3, ~@3 f#2@12 ~ [b2,f#3,b3,d4]@15 ~", // F# F#5 Bm
  W: "[a#2,g3,a#3,d4]@15 ~ f#3@8 f#3@7 ~, ~@16 [d3,a3,d4]@15 ~", // Gm D5
  X: "a3@8 ~@5 e4@2 ~ [g3,b3,d4]@8 [g3,b3,d4]@7 ~, a2@16 g2@15 ~, e4@13 ~@19, c#4@11 c#4@5 ~@16, ~ a3 ~@2", // G
  Y: "[d3,f#3,a3,d4]@7 d4 [d3,f#3,a3,c4,d4]@6 ~@2", Z: "[b2,f#3,a3,b3,d#4]@15 ~ [e3,g3,b3,e4]@14 ~@2",
  AA: "[c#3,g3,a#3,c#4,e4]@7 ~ [d3,f#3,a3,d4]@8", // C#dim D
  AB: "f#3 [f#3,a3,b3]@15 [e2,g3,b3,e4]@7 ~ [c#3,g3,a#3,c#4,e4]@7 ~, [b2,d3,d#4] ~", // B7 Em C#dim B
  AC: "[a#2,g3,a#3,c#4,e4]@7 ~ [a#2,g3,a#3,c#4,e4]@7 ~ [g3,a#3,c#4,e4]@7 ~ [g3,a#3,c#4,e4]@6 ~@2", // A#dim Gdim
  AD: "[d3,f#3]@6 ~@2 [f#3,d4]@7 ~@6 [g#3,b3,c#4,e4] ~@2 [f#2,f#3,a#3,c#4]@8, d4 ~@7, a3@2 ~@6 [d3,a3]@5 ~@19", // D C#m7 F# D5
  AE: "[b2,f#3,b3,d4]@15 ~ [a2,a3,c4,e4]@6 ~@4 [d3,a3,d4,f#4]@5 ~", AF: "[g2,g3,b3,d4]@15 ~ [c#3,g3,b3,c#4,e4]@15 ~",
  AG: "[f#3,a#3,c#4]@9 ~@9 [a2,a3,c4,e4]@4 ~@3 [d3,a3,d4,f#4]@6 ~, f#2@7 ~@9", // F# Am D
  AH: "[g2,g3,b3,d4]@15 ~ [f#2,f#3,a#3,c#4]@15 ~", // G F#
  AI: "[f#3@8 f#3@8 [g3,a#3,d4]@7 ~ [g4,a#4]@7 ~ g5@11 ~@5 f#3@8 ~@5 d4@3, [b2,b3,d4]@16 a#2@29 ~@3 d3@16, ~@23 d5@8 [a#5,d6]@13 ~@4 d4@13 ~@3, ~@48 a3@11 a3@5, ~@7 f#3]/2", // Gm Bm A#
  AJ: "[a2,a3,c#4,e4]@16 [g2,g3,b3,d4]@8 [g2,g3,a#3,d4]@7 ~", // A G Gm
  AK: "d4@8 ~@8 f#3@3 ~@10 a3@3, [d3,f#3,a3]@16 d3@10 f#3@5 ~, ~@8 d4@8 [a3,d4]@3 f#3@2 a3@3 d4@8, ~@11 e4@21, ~@13 f#4@19", // D D5
  AL: "a3@3 ~@10 [c#4,e4]@2 ~ g3@3 ~@2 b3@2 ~ g3@3 ~@2 a#3@2 ~, a2@15 ~ [g2,d4]@7 ~ [g2,d4]@8, e4@8 e4@5 ~@19, c#4@5 c#4@8 ~@3 b3@5 ~@3 a#3@5 ~@3, ~@3 a3@8 a3@5 ~@3 g3@5 ~@3 g3@5", // C#m G5
  AM: "[f#3@3 ~@14 f#4@3 f#4@2 e4@3 d4 ~@2 f#5@2 a5@2 ~ b5@2 ~@3 a4@3 c#5@3 ~@2 c#5@2 ~ a4@3 g4@2 e4@3 g4@2 ~ e5@2 f#5@2 ~ g5@3 a5@2 g5@3 f#5@3 [g4,b4,e5]@4 d5@3 ~ a4@5 ~@7 f#4@8 ~ [a4,d5]@7 [f#5,a5,d6]@16, [d3,a3]@19 ~ d3@14 ~@18 c3@14 ~@2 [g3,d5]@7 ~ g3@9 ~@4 a3@15 f#4@8 ~@16, d4@10 d4@9 ~@9 [d4,a4]@7 ~ a5@8 a5@8 ~@76, ~@4 f#3@16 [f#3,a3]@6 ~@26 e4 ~@7 [g4,c5]@4 ~@4 f3 ~@20 d2@39, ~@13 e4@6 ~@17 f#4@16 c5@7 ~@9 b4@5 ~@17 [d4,e4]@15 ~@23]/4", // Em D5 D D5 G5 D5 F#m C5 …
})).s("gm_epiano2").gain(0.23).pan(0.3)

// other · whistle
const whistle = note("<A B ~@30 C ~ D E ~ F G H I J K L ~>".pickRestart({
  A: "d5@3 e5@2 f#5@2 ~ f#5@8 c#5@3 d5@2 e5@2 ~ e5@8", B: "e5@4 a#4@3 e5 d5@8", C: "~@8 b4@2 ~ d5@2 e5@3 f#5@16",
  D: "~@8 b4@3 d5@2 e5@2 ~ f#5@8 e5@7 ~", E: "d5 ~", F: "~@15 b4", G: "a4@16 ~@8 d5@2 e5@3 f#5@3",
  H: "c#5@2 d5@2 ~ e5@2 ~ a5@2 g5 a5 ~ f#5@3 e5@8 d5@8, ~@6 g5 ~@9", I: "e5@10 d5@11 ~@11", J: "~@14 e5 f#5",
  K: "~ g5@2 a5@3 g5@3 f#5@3 e5@3 d5@4 a4@5 ~ e4@6 ~", L: "f#4@15 ~",
})).s("gm_whistle").gain(0.12)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@15 A B C D@2 E ~@24>".pickRestart({
  A: "~@24 d4@2 e4@5 ~", B: "e4@2 ~ e4@5 c#4@3 e4@5 ~@11 e4@4 ~", C: "e4@2 ~ e4@5 b3@3 e4@3 ~@2 d4@7 ~ d4@3 e4@2 f#4@3",
  D: "[e4@2 f#4 e4@11 ~ e4 a4@3 g4@2 f#4@3 e4@3 d4 [e4,f#4] e4@11 ~@24]/2", E: "~@15 f#4 c#5@2 ~ b4@2 a4@9 ~@2",
})).s("gm_electric_guitar_jazz").gain(0.15)

// other · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@16 [~@2 f#4 ~@13 f#4@8 c4@2 ~@6] [~@2 f#4 ~@10 f#4@3 ~@16] ~@27>")
  .s("gm_electric_guitar_jazz").gain(0.06)

// chords · rock organ
const rock_organ = note("<~@25 A B@2 C D E F G H I@3 J@2 ~@3 K@3>".pickRestart({
  A: "a4@8 c5@7 ~, [f#4,d5]@31 ~", // D
  B: "[[b4,d#5]@16 [g4,b4]@16 [g4,a#4,c#5]@14 ~@2 [a4,d5,f#5]@15 ~, ~@16 e5@29 ~@19]/2", // B G Gdim D
  C: "[f#4,b4,d#5]@15 ~ g4@8 [g4,a#4,c#5]@6 ~@2, ~@8 e5@7 ~, ~@8 b4@3 ~@5", D: "[g4,a#4,c#5,e5]@15 ~",
  E: "[f#4,a4,d5]@7 ~ [g4,b4,c#5,e5]@3 ~ [f#4,a#4,c#5]@4", // D C#m7b5 F#
  F: "[f#4,b4,d5]@14 ~@2 [c5,e5]@7 ~ [d5,f#5]@7 ~, ~@16 a4@15 ~", G: "[g4,b4,d5]@14 ~@2 [g#4,b4,c#5,e5]@15 ~",
  H: "[a#4,c#5]@7 ~ b4@6 ~@4 [c5,e5]@5 ~ [d5,f#5]@7 ~, f#4@13 ~@5 a4@14", // A#m C D
  I: "[[g4,b4,d5]@15 ~ a#4@13 ~@3 d5@15 ~ [g4,a#4]@15 ~@9 a#4@6 ~@2 a4@14 ~@2, ~@16 f#4@31 ~@49, ~@32 b4@13 ~@3 d5@46 ~@2]/3", // G Gm
  J: "[[a4,e5] d5@2 ~]/2", K: "[~@26 a4@47 ~@23]/3",
})).s("gm_rock_organ").gain(0.19).pan(0.2)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@26 A ~@6 B C ~ D E F ~@3 G@3>".pickRestart({
  A: "f#4@15 ~@17", B: "~@9 d5@5 ~@18", C: "~@17 c#5@13 ~@2", D: "~@8 f#4@7 ~", E: "c#5@16 [g4,b4]@15 ~",
  F: "[f#4,a4] ~", G: "[~@25 [f#4,d5]@47 ~@24]/3",
})).s("gm_rock_organ").gain(0.08).pan(0.2)

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

// drums · rim
const rim = s("rim").struct("<~@2 A@8 ~@4 A@5 ~@4 B A ~@11 B A C ~@6>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.41)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ [~@21 x!2 ~@9] ~@27 [x!10 ~@22] ~@15>").gain(0.18)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@9 B ~ C ~ D ~@3 E ~@11>".pickRestart({
  A: "~@13 x ~@18", B: "~@31 x", C: "~@30 x!2", D: "~@8 x!14 ~ x ~@3 x!5", E: "~ x",
})).gain(0.37)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@29 [x!8 ~@24] ~@15>").gain(0.18)

// drums · hihat
const hihat = s("hh").struct("<~@2 A B C B D B A E A F A G H I C F@2 J K I L M L ~@11 N K O ~@6>".pickRestart({
  A: "~ x!3", B: "x ~@7 x ~@7 x ~@7 x ~@2 x ~@4", C: "x!4", D: "~@8 x ~@7 x ~@7 x ~@6 x", E: "x!3 ~",
  F: "x ~@7 x ~@4 x ~@2 x ~@7 x ~@7", G: "x ~@7 x ~@4 x ~ x ~@16", H: "~@8 x ~@7 x ~@7 x ~@4 x ~@2", I: "x!2 ~ x",
  J: "x ~@6 x ~@16 x ~@7", K: "x ~@7 x ~@7 x ~@7 x ~@4 x ~@2", L: "x ~@7 x ~@7 x ~@7 x ~@6 x", M: "~@3 x",
  N: "~@3 x ~ x ~@10 x ~@7 x ~@7", O: "x ~@4 x ~@26",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@4 A ~@6 B C ~@3 D ~@3 A ~ E ~@13 F ~@8>".pickRestart({
  A: "~@31 x", B: "~@15 x ~@16", C: "~@21 x ~ x ~@8", D: "~@29 x ~ x", E: "~@5 x ~ x ~@24", F: "x",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~@7 B ~@3 C ~ D ~@3 E ~@3 D ~ F ~ G ~ H ~ A ~ I ~ J K ~@8>".pickRestart({
  A: "~@5 x ~@2", B: "~@29 x ~@2", C: "~@3 x", D: "~@11 x ~@20", E: "~@11 x ~ x ~@18", F: "~@11 x ~ x ~@14 x!2 ~@2",
  G: "~@28 x!2 ~@2", H: "~@24 x!8", I: "~@12 x ~@2 x ~@5 x!2 ~@6 x ~@2", J: "~@13 x!2 ~@17", K: "~@13 x ~@18",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~ A ~ A ~ B A ~ A C D ~@2 E@2 F G ~ G H ~ I ~@10 J K L ~@6>".pickRestart({
// … 41 more lines

More by Mariah Carey