Strudelify

Looking In

Mariah Carey

KeyG majorTempo65 bpm
0:00/0:00
// Looking In — Mariah Carey
// 65 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Bass" named as a bass, played on electric bass finger (its contrabass patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 52 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · electric bass finger · "Bass"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V U K W X@2 Y@3 Z AA AB AC AD R AE AF U V AG V AG AH AI AJ W AK AL ~
>`.pickRestart({
  A: "e2@16 ~@2 e2@4 ~@2 f#2@18 f#2@3 ~@3", B: "g2@6 b1 ~ a1@6 f2 ~", C: "b1@17 ~ b1@4 ~@2 b1@16 ~@2 b1@4 ~@2",
  D: "b1@16 ~@2 b1@4 ~@2 b1@18 b1@3 ~@3", E: "e2@15 ~@3 e2@4 ~@2 f#2@16 ~@2 f#2@4 ~@2",
  F: "g2@17 ~ b1@4 ~@2 b1@17 ~ f#1@4 ~@2", G: "e2@15 ~@3 e2@4 ~@2 f#2@12 d2@12", H: "g2@15 ~@3 g2@4 ~@2 g2@18 g2@3 ~@3",
  I: "a1@17 ~ e1@4 ~@2 b1@12 b1@12", J: "e2@15 ~@3 e2@4 ~@2 d2@12 c#2@12", K: "c2@15 ~@3 c2@4 ~@2 b1@12 b1@12",
  L: "e2@16 ~@2 e2@4 ~@2 f#2@15 ~@3 f#2@4 ~@2", M: "g2@17 ~ b1@4 ~@2 a1@18 a1@3 ~@3",
  N: "b1@16 ~@2 b1@4 ~@2 b1@17 ~ c#2@4 ~@2", O: "b1@18 b1@3 ~@3 b1@16 ~@2 b1@4 ~@2", P: "e2@6 e2 ~ e2@4 e2@4",
  Q: "e2@17 ~ b1@4 ~@2 a1@12 b1@12", R: "e2@8 ~ e2@2 ~ f#2@6 d2@6", S: "g2@8 ~ g2@2 ~ g2@8 ~ g2@2 ~",
  T: "a1@15 ~@3 a1@4 ~@2 b1@12 b1@12", U: "e2@6 d2@6 c#2@8 ~ c#2@2 ~", V: "c2@8 ~ c2@2 ~ b1@6 b1@6",
  W: "e2@14 ~@4 e2@2 ~@4 e2@17 ~ e2 ~@2 e2 ~@2", X: "[~@23 a2@24 g2@12 f#2@12 e2@25]/2",
  Y: "[a#2@24 a2@23 g2@13 f#2@12 e2@23 a#2@24 ~ a2@24]/3", Z: "g2 f#2 e2@2", AA: "f#2@31 f#2@9 g2@8", AB: "f#2@5 ~",
  AC: "e2@8 ~ e2@2 ~ e2@6 e2@6, e3@43 ~@5", AD: "e2@6 e2 ~ a1@4 b1@4", AE: "g2@15 ~@3 g2@4 ~@2 g2@16 ~@2 g2@4 ~@2",
  AF: "a1@8 ~ a1@2 ~ b1@6 b1@6", AG: "e2@12 d2@12 c#2@15 ~@3 c#2@4 ~@2", AH: "c2@8 ~ c2@2 ~ b1@8 ~ b1@2 ~",
  AI: "e2@17 ~ b1@4 ~@2 f#2@16 ~@2 f#2@4 ~@2", AJ: "g2@16 ~@2 g2@4 ~@2 a1@15 ~@3 a1@4 ~@2",
  AK: "e2@14 ~@4 e2@2 ~@4 e2@17 ~ g2@5 ~", AL: "e2@14 ~@4 e2@2 ~@4 e2@18 b1@3 ~@3",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · piano
const piano = note(`<
  ~@2 A B C D@4 E F G H@2 I J K@3 L M N@5 O P Q R@2 S T@2 U V@4 W X Y@2 Z@3 AA@2 AB@2 AC ~
>`.pickRestart({
  A: "[e2,e3,b3,e4,g4] [f#3,e4,f#4,a4,c#5]", // Em F#m7
  B: "b3@12 b3@4 ~@2 b3 [g3,b3,e4,g4]@4 [e4,a4] [e4,a4,c5]@11 [c4,e4,a4,c5]@13, g2@23 ~ a2@22 ~@2, [g3,e4,g4]@16 [f#3,a3,d4,f#4]@6 ~ [d4,d5]@21 ~@4", // Em A5 Am C D
  C: "[b1,b3,e4,g4,b4]@24 c#4@12 c#4@6 c#4@5 ~, ~@24 [b1,g3,a#3,f#4,g4,a#4]@23 ~", // Em Bmaj7
  D: "[[a3,c#4,f#4]@16 [f#3,a3,c#4]@3 [e3,f#3,a3,e4]@4 [d#4,f#4] [b2,d#4,f#4,a4,b4]@15 ~@3 [f#4,a4,b4]@5 ~ g4@5 ~@13 [b2,b3]@6 ~@18 [g3,g4]@5 ~@7 e4@9 ~@3 g4@5 ~ d#4@12 ~@6 [b2,b3,f#4]@5 ~ g4@6 ~@9 b3@3 [b2,b3,e4,g4]@6 [e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@6, [b2,g3,e4,g4,a4,c#5]@22 ~ [f#3,a3]@22 ~@2 [a3,a4]@6 [g3,g4]@17 ~@2 [f#3,d#4,f#4,a4,b4]@22 ~ [f#3,f#4]@2 ~ [f#3,f#4]@16 e4@28 ~@2 [b3,e4]@12 [e3,e4]@8 ~@16 [d3,d4,f#4,a4]@12, ~@16 f#4@7 ~@16 d#4@7 ~@2 b3@18 ~@30 [b3,g4]@15 b3@7 ~@2 [a4,b4]@22 ~@8 [g3,g4]@14 ~@4 f#3@18 ~@6, ~@41 [b2,b3]@7 e2@22 ~@26 [g2,g3]@23 ~ [b2,f#4]@12 d#4@10 ~@2 e2@23 ~@25, ~@48 e4@12 [e3,e4]@10 ~@26 e4@6 e3@40 ~ [a3,a4]@20 ~@29]/4", // F#m F#m7 D#m B7 B G B5 Em …
  E: "b3 b3@23 b3@17 b3@5 ~@2, [g2,d4,f#4,a4]@11 ~ [g2,d4,f4,g4]@11 ~, ~ b4@40 b4@3 ~@4", // D G7
  F: "[b3,b4,c5]@3 [c4,c5]@4 ~@17 [b2,e4,f#4,a4,c#5]@12 b4@5 [b3,b4]@7, [a2,e4,a4]@11 ~@7 [b2,d#4,f#4,a4]@6, ~@7 [c4,c5]@37 ~@4", // Cmaj7 C F#m7 B A5 B7 C
  G: "[a3,g4,a4]@7 [g3,g4]@6 ~@6 b3@5 e4@2 e4@10 [c#3,b3,c#4,e4,g4]@12, [e2,b3,e4]@19 b4@7 e3@22, ~@13 [g3,g4]@10 ~ [d2,b3,g4]@12 ~@12", // A7 G C#m7b5 E5 G
  H: "[g4@6 ~@12 [b2,b3,c4]@6 [b2,e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@5 ~ g4 ~@23 [b4,e5]@15 ~@3 [b4,e5]@5 ~, [c3,a4]@23 ~@13 [b2,d#4,f#4,a4,b4]@12 [e2,b3]@22 ~@26, c4@9 ~@15 e4@2 [e3,e4]@20 ~@2, [a3,e4]@12 [e3,a3,e4]@10 ~@27 [f#3,g3,f#4]@5 ~@18 f#3@23 ~, ~@6 [g3,g4]@16 ~@2 f#3@23 [f#3,f#4]@2 g4@22 ~ f#4@11 ~@4 f#4@7 ~@2]/2", // Cmaj7 F#m7 G E5 F B7 E5 E …
  I: "e4@12 b3 ~@5 b3@4 ~@2 [e4,g4]@12 ~@6 e4@5 ~, [g2,g4]@23 ~ [a2,a4]@23 ~, b3@9 ~@15 c4@9 ~@3 c4@10 ~@2", // Em G A
  J: "b3@6 b3@3 b3@2 ~ [b1,c#4,f#4,a#4]@11 ~, [b1,e4,g4]@23 ~@25", // F# Em
  K: "[e4@12 ~@6 f#4@5 ~ b2@17 [b2,b3]@6 ~ g4@5 ~@13 [b2,b3]@6 [e3,c4,e4,f#4,a4]@12 ~@6 [g3,g4]@5 ~ g4@5 g3@2 ~ e4@16 [a2,c4,g4,a4]@12 b2@6 [b2,b3]@6, [b2,a4,c#5]@23 ~@25 e2@22 ~@26 [e2,b3]@22 ~@26, f#4@18 ~@30 b3@18 ~@30 e4@8 e3@35 ~@5, ~@12 e4@10 ~@2 [d#4,f#4,a4,b4]@22 ~ [a3,a4]@6 [g3,g4]@17 ~@2 f#3@20 ~@3 [f#3,f#4]@6 g4@18 ~ e4@19 ~@5, ~@48 e4@12 [e3,e4]@10 ~@14 [e3,c4,d#4,f#4,a4]@12 ~@7 [f#3,f#4]@2 ~@27 [f#4,b4,d#5]@12]/3", // B F#m7b5 G Am7 B F#m E5 B7 …
  L: "[a3,g4,a4]@6 ~@5 e3@6 [b2,b3]@7 [e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@6, e2@11 ~@7 [d3,d4,f#4,a4]@6, b3@11 e4@11 ~@26, e4@6 g3@11 ~@7 f#3@18 ~@6, ~@3 g4@8 ~@13", // A7 B F#m7 G D
  M: "[g2,b3,d4,f#4,a4]@24 [b3,d4]@12 b3@6 [b3,d4,b4]@5 ~, b4@7 ~, ~@24 [g2,f4,g4]@23 ~", // Gmaj7 Bm G7
  N: "[c5@5 [c4,c5]@3 ~@16 [b2,e4,f#4,a4,c#5]@12 b4@4 [b3,b4]@7 ~ g4@5 [g3,g4]@6 g4 b3@4 [b3,b4]@8 e4@2 ~@16 c#4@5 ~ g4@5 g3@6 ~ b3@5 ~ c4@5 ~ [b2,e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@5 ~ g4@5 ~ [f#3,f#4]@2 [d#3,d#4] ~@3 [d2,b3,e4,g4]@12 [c#4,e4,g4]@15 ~@3 [c#4,e4,g4]@5 ~ g4@5 ~@6 e3@6 [b2,b3]@7 [b2,e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@6, [a2,e4,a4]@22 ~@14 [b2,d#4,f#4,a4]@12 [e2,b3,e4]@12 [d2,e4,g4]@12 b3@12 b3@10 ~ [a3,a4]@7 ~@5 [e3,e4]@6 [b2,b3]@7 ~@12 [b2,d#4,f#4,a4,b4]@12 [e2,b3]@12 ~@12 c#3@23 ~ [c3,c4]@22 ~@14 [b2,d#4,f#4,a4,b4]@12, [b3,b4]@8 [d4,d5]@10 ~@54 c#4@18 ~@6 [b3,c4,e4]@12 ~@12 f#3@20 ~@3 [f#3,f#4]@6 g3@3 e3@40 b3@17 ~@7 f#3@20 ~@4, ~@9 [c4,c5]@33 ~@5 [a3,a4]@7 ~@5 g3@6 ~@7 [c#3,g4]@23 ~ c3@23 ~@30 g4@7 ~@36 e4@5 g3@6 e4@11 ~@26, ~@74 [e3,e4]@22 ~@5 g4@17 ~@26 e4@8 e4@4 ~@12 b3@11 ~@4 b3@7 ~ [a3,a4]@6 g4@17 ~@26]/5", // C F#m7 B G B F#m7 G F# …
  O: "[f#3,e4,f#4,g4]@6 ~ [f#3,f#4]@2 e4@30 ~@3 e4@3 g4@2 ~, b4@7 ~, b3@36 ~@3 b3@7 ~@2, ~ g4@6 ~, ~@6 g3@3 e3@37 ~@2", // C F#
  P: "[f#4,a#4]@15 ~@3 [f#4,a#4]@5 ~ a4@12 ~@6 [f#3,f#4]@6, [a#1,f#3]@23 ~ [a2,b4]@23 ~, c#4@11 ~@4 c#4@7 ~@2 [f#3,f#4]@18 ~@6, ~@24 d#4@9 ~@3 d#4@10 ~@2", // F# D#m Asus2 F#
  Q: "[e3,g4]@6 ~@6 a3@5 ~@3 g4@4 e4@6 e4@9 ~@3 [e4,g4]@6, [g2,b3,e4]@17 [a3,a4]@7 g4@18 ~@6, ~@6 [f#3,f#4]@6 [f#2,c4,d#4,f#4]@12 e2@23 ~, ~@9 [g3,g4]@10 ~ g3@10 e3@18, ~@24 b3@11 ~@4 b3@7 ~@2", // Em A F# Cdim G
  R: "[c#4@9 ~@3 c#4 ~@5 c#4@4 ~@2 [f#3,f#4]@18 [f#3,f#4]@3 e4@3 ~@11 g3@6 [a3,a4]@6 b3 ~@4 g4@11 ~@3 [e4,g4]@6, [a#1,f#3,f#4,a#4]@23 ~ [a2,d#4,a4,b4]@21 e3@19 ~@8 e2@23 ~, ~@48 [g2,b3,e4]@22 ~ b2@5 g3@20, ~@48 g4@11 g4@11 ~@2 g4@2 [a3,a4]@13 b3@7 ~@2, ~@27 [f#3,f#4]@5 ~@4 [b3,e4]@9 ~@3]/2", // F# A Em D#m B7 Em A F# …
  S: "[f#4,a#4]@15 ~@3 [f#4,a#4]@5 ~ [f#3,f#4,a4,b4]@15 ~@3 [f#3,f#4,a4,b4]@6, [a#1,f#3]@23 ~ a2@23 ~, c#4@11 ~@4 c#4@7 ~@2 d#4@11 ~@4 d#4@7 ~@2", // F# B7 D#m
  T: "[~@5 [f#3,f#4]@6 ~ a3@5 a4@3 g4@4 e4@6 ~@18 f#4@12 [f#3,f#4]@11 ~ [f#3,f#4,a#4]@15 c#4@2 ~ [f#4,a#4]@5 ~, [g2,b3,e4,g4]@12 [f#2,c4,d#4,f#4]@12 [e2,b3,g4]@22 ~@2 [f#2,c#4,a#4]@22 ~@2 a#1@23 ~, e3@8 ~@3 [g3,g4]@6 a3@7 ~@6 [e3,e4]@30 ~@29 [c#3,c#4]@7, ~@20 g3@11 ~@41 c#4@11 ~@13]/2", // F# Em Cdim Em F# G E C#
  U: "[e3,f#4]@18 f#3@2 [e3,e4]@3 d#4 [b2,d#4,f#4,a4,b4]@22 ~@2, [b2,e4,a4,c#5]@22 ~ d#3@21 ~@4, ~@9 f#4@2 ~@13", // Esus2 E B7 A
  V: "[~@6 g3@6 b3 ~@4 b3 ~@6 [e3,c4,e4,f#4,a4]@12 ~@5 [g3,g4]@6 ~ g4@5 g3@2 [f#3,f#4]@2 e4@6 ~@3 [e4,g4]@6 [a2,c4,g4,a4]@12 b2@6 [b2,b3]@5 ~ g4@5 g3@6 [e3,e4]@4 b3@2 ~ [e4,g4]@5 ~ [e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@5 b3 [g2,b3,d4,f#4,a4]@24 b3@17 [b3,b4]@5 ~@2, e2@23 ~@25 e2@23 ~@25 e2@23 ~@49 [g2,d4,f4,g4]@22 ~@2, [b2,b3,e4]@12 [e3,e4]@6 b3@15 ~@15 [b3,e4]@11 ~@4 b3@7 ~@14 [f#4,b4,d#5]@12 ~@5 g4@12 ~@30 b4@42 ~@7, g4@6 g4@16 ~@2 f#3@20 ~@3 [f#3,f#4]@7 ~@3 e3@34 ~@4 [a3,a4]@6 ~@12 [b2,b3]@7 ~@12 [d3,d4,f#4,a4]@12 ~@48, ~ [a3,a4]@9 ~@7 b2@15 ~@4 [e3,c4,d#4,f#4,a4]@12 ~@5 g4@13 ~@6 e4@19 ~@5 [b3,e4]@11 ~@13 f#3@19 ~@53]/4", // F#m7b5 G F# Em Am7 B E Em …
  W: "c5@5 c4@2 ~@17 [b2,e4,f#4,a4,c#5]@12 b4@5 [b3,b4]@7, [a2,e4,a4]@11 ~@7 [b2,d#4,f#4,a4]@6, [b3,b4]@7 [d4,d5]@12 ~@29, ~@5 c5@5 [c4,c5]@33 ~@5", // F#m7 B A5 B7 B D C
  X: "[a3,g4,a4]@5 [g3,g4]@6 g4 b3@5 [b3,b4]@7 [e3,e4]@18 [e3,e4]@6, [e2,b3,e4]@11 g3@6 ~@7 [c#3,b3,c#4,g4]@22 ~@2, ~ [d2,e4,g4] ~@2", // A7 G B E E5 C#m7b5 Em7
  Y: "[[a3,g4,a4]@6 ~@5 e3@6 [b2,b3]@6 f#4 [b2,e4,f#4,a4,c#5]@12 ~@6 [g3,g4]@5 ~@2 [f#3,f#4]@4 e4@7 ~@3 [f#3,f#4]@3 [g3,g4]@6 [b3,b4]@18 [b3,b4]@6, [c3,c4]@11 ~@7 [b2,d#4,f#4,a4,b4]@6 [e2,b3,g4]@6 [d2,b3,e4]@6 ~@12, b3@11 e4@11 ~@26 [g3,e4]@7 ~@41, e4@6 g3@11 ~@6 f#3@19 ~@5 [f#3,f#4]@2 ~@4 e3@14 ~@5 [c#3,c#4,e4,g4]@22 ~@2, ~@6 g4@17 ~@37 g4@6 ~@30]/2", // A7 B F#m7 G F# G B C …
  Z: "[[a3,g4,a4]@6 ~@5 [e3,e4]@11 b2@2 f#4@2 f#4@10 ~@6 [g3,g4]@5 ~ g4@5 ~ [f#3,f#4]@2 e4@4 [d2,b3,e4,g4]@12 [c#3,b3,c#4,e4,g4]@23 a3 g4@5 ~@6 e3@6 [b2,b3]@6 f#4 [f#4,b4]@12 f#4@6 [g3,f#4,g4]@6, [c3,b3,c4]@22 ~@2 [b2,e4,a4,c#5]@12 [b2,d#4,f#4,a4,b4]@12 [e2,b3]@12 ~@41 g3@10 ~@8 f#3@19 ~@6, e4@11 ~@15 f#3@17 ~@4 [f#3,f#4]@6 g3@2 ~ e3@40 [c3,a3,c4]@22 ~@2 [b2,d#5]@23 ~, ~@6 g4@17 ~@25 e4@8 ~@40 e4@11 e4@11 ~@26, ~@6 g3@9 ~@7 b3@6 ~@25 g4@7 ~@35 a4@6 g4@17 ~@26]/3", // A7 E G F# Em7 C#m7b5 B B5 …
  AA: "[g4@6 g3@2 [f#3,f#4]@2 ~@2 b3 ~@5 b3@4 ~@2 [f#3,e4,f#4,a4,c#5]@24 [g2,b3,e4,g4]@24 [a2,e4,a4,c5]@22 ~@2, e2@23 ~@73, [f#3,b3,e4,f#4]@10 e3@63 ~@23, ~@3 g4@8 ~@37, ~@5 e4@7 ~@36]/2", // F# F#m7 Em Am Esus2
  AB: "~@13 b3!2 ~, [e2,e4,g4]@23 ~, b3@13 ~@3, ~@6 g3@9 ~", // Em
  AC: "~@6 b3@7 b3!2 e4, [e2,e4,g4]@47 ~, b3@3 ~@5, ~@12 g3@35 ~", // Em
})).s("gm_piano").gain(0.48)

// chords · synth strings 1 · "Strings 1"
const synth_strings_1 = note("<~@13 A@2 B@2 C D E@2 F G H I J K L@2 M@3 N O P Q R S T@2 U@2 V@4 W@6>".pickRestart({
  A: "[[e3,g3,b3,e4]@24 [f#3,a3,c#4,f#4]@23 [g3,b3,e4,g4]@17 [f#3,a3,d4,f#4]@3 [g3,b3,e4,g4]@4 [d4,e4,g4,d5]@12 [c4,e4,g4,c5]@13]/2", // Em F#m Em D Em Em7 C
  B: "[[b3,e4,g4,b4]@23 [g3,a#3,c#4,g4]@23 ~ [g3,a3,c#4,g4]@17 [f#3,a3,c#4,f#4]@3 [e3,f#3,a3,e4]@4 [f#3,a3,d#4,f#4]@24 ~]/2", // Em Gdim A7 F#m F#m7 D#dim
  C: "[e3,g3,b3,e4] [f#3,a3,c4,f#4]", D: "b3@23 ~ c4@11 ~ d#4@11 ~, [g3,g4]@47 ~, e4@35 ~@13",
  E: "[[e3,g3,b3,e4]@23 [f#3,a3,c#4,f#4]@13 [g3,a3,d4,g4]@11 f#4@24 ~ f4@22 ~@2, ~@47 [b3,d4,b4]@47 ~@2]/2", // Em F#m Gsus2 Bm
  F: "[b3,c4,e4,b4]@23 [c4,f#4,a4,c5]@13 [b3,d#4,f#4,b4]@12", // Cmaj7 F#dim B
  G: "[a3,b3,e4,a4]@12 [g3,b3,e4,g4]@5 [f#3,a3,d4,f#4]@7 [e3,g3,b3,e4]@23 ~", // Asus2 Em D Em
  H: "[e3,g3,b3,e4]@7 [e3,g3,b3,e4]@5 c#4@6 d#4@3 [g3,a3,d#4,g4]@3, ~@24 [f#3,a3,f#4]@19 ~@5", I: "[e3,g3,b3,e4]@23 ~",
  J: "[e3,g3,b3,e4]@24 [f#3,a3,c#4,f#4]@12 [g3,a3,d#4,g4]@11 ~", K: "[e3,g3,b3,e4]@5 ~@3",
  L: "[[a#2,c#3,f#3,a#3]@23 [f#3,a3]@24 [e3,g3]@12 [d#3,f#3]@12 [b2,e3]@25]/2", // F# F#m Em D#m E5
  M: "[[f#3,a#3]@24 [f#3,a3]@23 [e3,g3]@13 [b2,f#3]@12 [b2,e3]@23 [f#3,a#3]@24 ~ [f#3,a3]@24]/3", // F# F#m Em B5 E5 F# F#m
  N: "[e3,g3] [d#3,f#3] [b2,e3]@2", O: "[c#3,f#3]@31 [c#3,f#3]@9 [d3,g3]@8", P: "c#3@3 d#3@2 ~, f#3@5 ~",
  Q: "b3@4 [f#3,c4]@3 [f#3,a3,d#4,f#4], e4@43 ~@5", R: "b3@24 c4@11 ~ [f#3,d#4]@10 ~@2, [e3,e4]@23 ~, g3@3 ~",
  S: "[e3,g3,b3,e4]@23 [f#3,a3,c#4,f#4]@12 ~ [g3,a3,d4,g4]@12", // Em F#m Gsus2
  T: "[f#4@24 f4@22 ~ [b3,d4,g4,b4]@7 [c4,e4,a4,c5]@6 [b3,d4,g4,b4]@6 [a3,c4,e4,a4]@6 [g3,a3,c#4,g4]@12 [f#3,a3,d#4,f#4]@12, [b3,d4,b4]@23 ~@25]/2", // G Am G Am A7 D#dim Bm
  U: "[[e3,g3,b3,e4]@46 ~ [e3,g3,b3,e4]@17 b3@5 [g3,b3,e4,g4]@3 c#4 ~ [c#4,e4]@10 [b3,d#4]@4 [g3,a3,d#4,g4]@4 [f#3,a3,d#4,f#4]@4, ~@64 [f#3,d#4,f#4]@9 ~ [a3,a4]@16 ~@6]/2", // Em C#m B Am7b5 D#dim D#m A
  V: "[[e3,g3,b3,e4]@46 ~ [e3,g3,b3,e4]@16 [f#3,b3,d#4,f#4]@4 [g3,b3,e4,g4]@5 [c#4,e4]@12 [b3,d#4]@3 [g3,a3,d#4,g4]@4 [f#3,a3,d#4,f#4]@3 ~ [e3,g3,b3,e4]@47 ~ [e3,g3,b3,e4]@24 [f#3,b3,d#4,f#4]@13 [g3,b3,d#4,g4]@12, ~@72 [a3,a4]@17 ~@103]/4", // Em B Em C#m B Am7b5 D#dim Em …
  W: "[[e3,g3,b3,e4]@24 [f#3,a3,c#4,f#4]@23 [g3,b3,e4,g4]@16 [f#3,a3,d4,f#4]@4 [g3,b3,e4,g4]@4 [d4,e4,a4,d5]@12 [c4,e4,a4,c5]@12 [b3,e4,g4,b4]@24 [g3,b3,e4,g4]@66 [e3,g3,b3,e4]@6 [e3,g3,b3,e4]@62 ~@35]/6", // Em F#m Em D Em Dsus2 Am Em
})).s("gm_synth_strings_1").gain(0.36)

// chords · string ensemble 2 · "Strings 2"
const string_ensemble_2 = note("<~@27 A@2 B@3 C D E F ~@16>".pickRestart({
  A: "[~@23 [a3,d#4,f#4,a4]@24 [g3,b3,e4,g4]@12 [f#3,a3,d#4,f#4]@12 [e3,g3,b3,e4]@25]/2", // D#dim Em D#dim Em
  B: "[[a#3,c#4,f#4,a#4]@24 [a3,d#4,f#4,a4]@23 [g3,b3,e4,g4]@13 [f#3,g3,b3,f#4]@12 [e3,g3,b3,e4]@23 [a#3,c#4,f#4,a#4]@24 ~ [a3,d#4,f#4,a4]@24]/3", // F# D#dim Em Gmaj7 Em F# D#dim
  C: "[g3,b3,e4,g4] [f#3,a3,d#4,f#4] [e3,g3,b3,e4]@2", D: "[f#3,a#3,c#4,f#4]@31 [f#3,a#3,c#4,f#4]@9 [g3,a#3,d4,g4]@8",
  E: "c#4@3 d#4@2 ~, [f#3,a3,f#4]@5 ~", F: "[e4,e5]@43 ~@5, [g4,b4] ~",
})).s("gm_string_ensemble_2").gain(0.11)

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

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] ~@50>").gain(0.35)

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

// drums · clap
const clap = s("cp").struct("<~@2 [~ x ~ x]!49 ~>").gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@9 A ~@9 A ~@7 B ~@9 C ~@7>".pickRestart({
  A: "~@13 x!2 ~", B: "~@7 x!2 ~@5 x ~", C: "~@7 x ~@5 x!2 ~",
})).gain(0.35)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B A C ~ C D B A@3 E@2 B F A@2 G A D@2 E A@2 ~@9 A@5 C A B C H A D C B A ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~@3 x ~ x ~ x ~@4", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", E: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x", F: "~ x ~@3 x ~@4 x ~@5",
  G: "~ x ~ x ~ x ~ x ~ x ~ x ~@3 x", H: "~ x ~@3 x ~@3 x ~@6",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@6 A ~@9 B ~@9 A ~@7 C ~@9 D ~@5 E ~>".pickRestart({
  A: "~@11 x ~@4", B: "~@6 x ~@4 x!2 ~@3", C: "~@5 x ~@10", D: "~@3 x!2 ~@6 x ~@4", E: "~@13 x!2 ~",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A B C ~ C A C ~@2 B@3 C D ~@4 C@2 ~@17 C ~ C@2 ~@2 C@3 ~@3>".pickRestart({
  A: "~@14 x!2", B: "~@7 x", C: "~@15 x", D: "~@9 x ~@6",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@6 A ~@9 B ~@9 A ~@7 C ~@9 D ~@5 E ~>".pickRestart({
  A: "~ x", B: "~@3 x!2 ~@11", C: "~@3 x ~@12", D: "x", E: "~@4 x!2 ~@5 x ~@4",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@2 A ~@4 A ~@9 A ~@9 A ~@7 A ~@9 A ~@4 B ~>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct("<~@27 A B C B C D C ~@18>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!6", B: "x ~ x!5 ~ x ~ x ~ x!4", C: "x!16", D: "x ~ x!5 ~ x!3 ~ x!4",
})).gain(0.35)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@27
  [~ x ~@3 x ~@3 x ~@6]
  [~ x ~@5 x ~ x ~ x ~@4]
  ~
  [~ x ~@5 x ~ x ~ x ~@4]
  ~
  [~ x ~@5 x ~@3 x ~@4]
  ~@19
>`).gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 A@25 B A B A B A B A@17 ~>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.45)

// drums · congas
const congas = s("conga:13").struct("<~@2 A@25 B A@3 B A B A@17 ~>".pickRestart({
  A: "~@2 x!2 ~@12", B: "~@3 x ~@12",
})).gain(0.95)

// drums · congas
const congas_2 = s("conga:18").struct("<~@2 A@25 B C A D E A F A@17 ~>".pickRestart({
  A: "~@11 x ~ x!3", B: "x ~ x ~@3 x!2 ~@3 x ~ x!3", C: "x ~@7 x ~@2 x ~ x!3", D: "x ~@10 x ~ x!3",
  E: "x ~ x ~@8 x ~ x!3", F: "x ~ x ~@3 x ~@4 x ~ x!3",
})).gain(0.95)

// drums · shaker
const shaker = s("sh").struct("<~@27 [x!8]!7 ~@18>").gain(0.35)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@27 [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!7 ~@18>").gain(0.2)

stack(
  bass, piano, synth_strings_1, string_ensemble_2, kick, rim, snare, clap, low_tom, hihat, hihat_soft, mid_tom,
  open_hat, high_tom, crash, ride, ride_soft, tambourine, congas, congas_2, shaker, shaker_soft
)

More by Mariah Carey