Strudelify

Sing

Carpenters

KeyE♭ majorTempo136 bpm
0:00/0:00
// Sing — Carpenters
// 136 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · acoustic bass
const bass = note(`<
  ~@25 A@7 B C D E F G H I J I K L@7 M L@3 N O P L Q R S T U V@7 W C D X@3 Y@7 Z@3 ~@7 AA@8 AB@8 ~@5
>`.pickRestart({
  A: "eb3 bb2", B: "eb3@2 f2 g2", C: "ab2@5 ~ ab2 ~ eb2@7 ~", D: "d2@5 ~ g2@9 ~", E: "c3@7 ~ bb2@7 ~", F: "a2@15 ~",
  G: "bb2@15 ~", H: "bb1@15 ~", I: "eb3@7 ~ bb2@7 ~", J: "eb3@7 ~ eb2@2 ab2@2 bb2@4", K: "eb3@15 ~",
  L: "c3@4 ~@2 c3 ~ g2@5 ~@3", M: "c3@4 ~@2 c3 ~ g2@4 a2@2 ~@2", N: "c3@7 ~", O: "f2@2 ~@2 f2@7 ~ e2@4",
  P: "d2@7 ~ g2@7 ~", Q: "c3@3 ~ c3@2 b2@2", R: "a2@4 ~@2 a2 ~ g2@5 ~@3", S: "gb2@4 ~@2 a2 ~ d3@5 ~@3",
  T: "d2@4 ~@2 d2 ~ d2@4 c2@4", U: "bb1@4 ~@2 bb1 ~ bb1@4 bb2@4", V: "eb2@4 ~@2 eb2 ~ bb1@5 ~@3",
  W: "eb2@4 ~@2 eb2 ~ eb2@5 ~@3", X: "[c3@8 ~ bb2@9 ~@2 a2@24 ~@4]/3",
  Y: "[~@6 bb2@8 bb1@15 ~ eb3@26 ~@2 ab2@2 bb2@2 eb3@32 eb3@18]/7", Z: "[~@5 ab2 bb2 eb3@16 ~]/3",
  AA: "[~@14 eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@2]/8",
  AB: "[~@4 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@4 eb2@4 ~@4 bb1@4 ~@4 eb2@4 ~@4 bb1@4 ~@6]/8",
})).s("gm_acoustic_bass").gain(0.36)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@75 A@2 ~@2 B ~@3 B ~@22 C D E@6>".pickRestart({
  A: "[~@7 bb3@4 ~@5]/2", B: "~@4 eb2 ~@3", C: "~@12 bb1 ~@3", D: "~@4 eb2 ~@7 bb1 ~@3",
  E: "[~@4 eb2 ~@7 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@2 eb2 ~ bb1@4 ~@2 bb1 ~ eb2@4 ~@14]/6",
})).s("gm_acoustic_bass").gain(0.12)

// chords · piano
const piano = note(`<
  ~ A@8 B@8 C D E@4 F G H@8 I J K@2 L M N@4 O P Q R S@2 T@2 U@2 V@2 W X Y@2 Z@3 AA AB@2 AC@2 AD@2 AE@2 AF J AG@5 AH@8
  AI@8 AJ@8 AK@8 ~@4
>`.pickRestart({
  A: "[~@63 d5, eb4@6 eb5@6 bb4@6 g4@6 bb3@6 d5@6 ab4@6 f4@6 eb4@6 c5@6 ab4@6 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 bb3@7 ~, ~ g4@3 bb3@3 eb5@3 bb4@3 g4@3 eb4@3 c5@3 ab4@3 f4@3 bb3@3 c5@3 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 bb4@3 f4@3, ~@2 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 ab4@3 f4@3 eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 d5@3 bb4@2]/8",
  B: "[~@56 eb4@3 [db5,f5] [c5,eb5] [bb4,db5] [ab4,c5] [g4,bb4], eb4@6 eb5@6 bb4@6 g4@6 bb3@6 eb5@6 ab4@6 f4@6 eb4@6 c5@6 ab4@6 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 db5@6 ab4@7 ~@13, ~@2 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 bb3@6 c5@6 bb4@6 g4@6 eb4@6 eb5@6 bb4@6 f4@6 bb3@6 db5@7 ~@11, ~@4 bb4@6 g4@6 eb4@6 d5@6 bb4@6 f4@6 bb3@6 c5@6 ab4@6 f4@6 eb4@6 eb5@6 bb4@6 g4@6 bb3@6 eb5@6 ab4@6 f4@7 ~@15]/8", // Db Cm Bbm Ab Gm
  C: "~ [eb4,ab4,c5]@2 [g3,eb4,ab4,c5], ab3@3 ~", D: "~@3 [ab3,d4,g4], [eb4,ab4,c5]@3 ~, f3 bb2, ~ eb5@2 ~",
  E: "[~@7 [f4,c5], eb3@6 g4@6 g4@6 g4@6 [eb4,g5]@7 ~ c4@6 eb5@6 c5@6 g4@7 ~@7, ~ bb3@3 bb2@3 bb4@3 bb4@3 bb4@2 bb4@3 c5@3 g4@3 a3@8, ~@2 eb4@3 eb4@3 eb3@3 eb5@3 [d4,f5]@3 g4@3 bb3@3 eb5@3 c5@2 ~@4, ~@54 eb5@7 ~@3]/4", // F5 Eb Dm
  F: "~@7 c5, f3@3 c5@3 ab4@2, ~@2 eb4@6 f3@7 ~, ~@2 ab4@3 eb4@3",
  G: "[d4,bb4] [eb4,c5] [f4,d5] [eb4,c5] [d4,bb4] [c4,ab4] [bb3,g4] [ab3,f4]", // Gm Cm Dm Cm Gm Fm Eb Db
  H: "[~@63 f4, eb3@6 g4@6 eb4@6 bb3@6 bb2@6 g4@6 f4@6 c4@6 eb3@6 ab4@6 f4@6 bb3@6 bb2@6 g4@6 eb4@6 bb3@6 eb3@6 f4@6 db4@6 ab3@6 bb2@7 ~, ~ bb3@3 bb2@3 g4@3 eb4@3 bb3@3 eb3@3 ab4@3 f4@3 c4@3 bb2@3 ab4@3 eb4@3 bb3@3 eb3@3 g4@3 eb4@3 ab3@3 bb2@3 f4@3 db4@3 ab3@3, ~@2 eb4@3 bb3@3 eb3@3 g4@3 eb4@3 c4@3 bb2@3 ab4@3 f4@3 c4@3 eb3@3 g4@3 eb4@3 bb3@3 bb2@3 g4@3 db4@3 ab3@3 eb3@3 f4@3 db4@2]/8",
  I: "~ bb3 ~ bb3 ~ bb3 [eb4,g4] bb3, ab2@7 ~ eb2@7 ~, ~@4 [eb4,g4]@7 ~@5", J: "[d3,a3,c4,f4,g4]@2 f4 [g2,f3,b3,eb4]@5",
  K: "[~@7 g5, c3@6 g4@7 ~ g4@7 ~ g4@7 ~@3, ~@4 eb4@7 ~ eb4@7 ~ eb4@6 eb5@6, ~@8 bb2@7 ~ a2@15 ~, ~@24 c5@7 ~]/2",
  L: "~ g5@3 ~ bb4@3, bb2@15 ~, bb5@6 ~@2 eb5@7 ~", M: "[eb4,c5] [d4,bb4], [bb2,ab3]",
  N: "[~@31 ab3, eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 c5@3 c4@2, ~@2 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 ab4@7 ~, ~@2 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 f5@3 f4@3]/4",
  O: "~@7 c4, c3@7 ~ g2@7 ~, ~ c4@2 c4@2 c4@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@4", // Em
  P: "~@7 b3, c3@7 ~ g2@7 ~, ~ b3@2 b3@2 b3@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@4", // Em
  Q: "~@7 a3, c3@7 ~ g2@7 ~, ~ a3@2 a3@2 a3@2 ~, ~@4 [d4,f4]@7 ~ [d4,f4]@4", // Dm
  R: "~@7 b3, c3@7 ~ g2@7 ~, ~ b3@2 b3@2 b3@2 ~, ~@4 [d4,g4]@7 ~ [d4,g4]@4", // G5
  S: "[~@15 c4, c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@4]/2", // Em
  T: "[~@15 a3, c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~, ~ a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 ~, ~@4 [d4,f4]@7 ~ [d4,f4]@7 ~ [d4,f4]@7 ~ [d4,f4]@4]/2", // Dm
  U: "[~@15 b3, c3@7 ~ g2@7 ~ c3@7 ~ g2@7 ~, ~ b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 b3@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@4]/2", // Em
  V: "[~@9 [g3,g4] [a3,a4] [bb3,bb4] [c4,c5] [d4,d5] [f4,f5] [g4,g5], c3@7 ~ g2@7 ~ c3@7 ~@9, ~ bb3@2 bb3@2 bb3@2 bb3@2 ~@7, ~@4 [d4,f4]@7 ~ [d4,f4]@7 ~@13]/2", // G A Bb C D F G Dm
  W: "[f3,a4,a5] ~ [f3,c4,f4,a4]@4 [e3,c4,f4,a4]@2", X: "~@3 [f3,b3,e4], [c4,f4,a4]@3 ~, d3 g2, ~ c5@2 ~",
  Y: "[~@15 g4, c3@7 ~ g2@7 ~ c3@7 ~ e5@6 ~@2, ~ c4@2 c4@2 c4@2 c4@2 ~@2 c5@3 ~@2, ~@4 [e4,g4]@7 ~ g4@7 ~ g4@6 g4@4 ~@2, ~@12 e4@5 ~ e4@6 c4@4 [b3,d5]@4]/2", // Em Bm
  Z: "[~@23 a3, a3@7 ~ g3@7 ~ gb3@7 ~ d3@7 ~ d3@7 ~ d3@4 [c3,c4,f4]@4, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 a3@2 a3@2 a3@2 a3@2 a3@2 ~, ~@4 [e4,a4]@7 ~ [e4,a4]@7 ~ [e4,a4]@7 ~ [c4,gb4]@7 ~ [c4,f4]@7 ~@5]/3", // F5 A5 Cdim F5
  AA: "~@12 [d4,f4]@3 ~, bb2@7 ~ bb2@7 ~, ~ ab3@2 ab3@2 ab3@2 ~, ~@4 [eb4,f4]@7 ~@5", // Dm Ebsus2
  AB: "[~@15 bb3, ~ bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~, ~@4 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [eb4,g4]@7 ~ [eb4,g4]@4, ~@8 bb2@7 ~ eb3@7 ~ bb2@7 ~]/2", // Eb
  AC: "[~@15 c4, eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~, ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@4]/2", // Fm
  AD: "[~@15 bb3, eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~, ~ bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~, ~@4 [eb4,g4]@7 ~ [eb4,g4]@7 ~ eb4@7 ~ [eb4,g4]@4, ~@5 g4 ab4 ~]/2", // Eb
  AE: "[~@15 bb3, eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~, ~ ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 bb3@2 ~, ~@4 [db4,f4]@7 ~ [db4,f4]@7 ~ [db4,f4]@7 ~ [eb4,g4]@4]/2", // Db Eb
  AF: "~ bb3 ~ bb3 ~ bb3 [eb4,g4] bb3, ab2@7 ~ ab2@7 ~, ~@4 [eb4,g4]@7 ~@5", // Eb
  AG: "[~@18 eb5@5 ~@7 eb4 [eb4,c5]@4 [d4,bb4]@4 eb4, c3@7 g4@9 ~ g4@11 ~ g4@11 ~@8 g5@6 ~@4 g4@4 ~@18, ~@2 c4@7 bb2@9 ~@2 a2@24 ~@2 bb2@15 ~ [bb2,ab3]@16 ~@2, ~@4 eb4@8 c4@10 ~@28 eb5@4 eb5@7 ~@19, ~@14 eb4@10 ~@8 c5@11 ~@3 bb5@6 bb4@4 bb4@6 ~@18]/5", // Cm Gm Bb7
  AH: "[~@59 d5@4 eb4, g4@3 bb3@3 eb5@3 bb4@3 g4@3 eb4@3 c5@3 ab4@3 f4@3 bb3@3 d5@3 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 ab4@6 ~, ~ bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 ab4@3 f4@3 eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@8 ~, ~@2 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 d5@3 ab4@3 g4@3 bb3@3 eb5@3 bb4@3 g4@3 eb4@3 c5@3 ab4@3 f4@7 ~, ~@58 bb4@5 ~]/8",
  AI: "[~@62 ab3 eb3, g4@3 bb3@3 eb5@3 bb4@3 g4@3 eb4@3 c5@3 ab4@3 f4@3 bb3@3 c5@3 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 f5@3 f4@3 ~, ~ bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 ab4@3 f4@3 eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 c5@3 c4@2 ~, ~@4 eb5@6 bb4@6 g4@6 bb3@6 d5@6 ab4@6 f4@6 eb4@6 c5@6 ab4@6 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 ab4@7 ~@3]/8",
  AJ: "[~@14 bb3 ~@15 c4 ~@15 bb3 ~@15 bb3 eb3, bb3!4 bb3!3 ~ c4!4 c4!3 ~ bb3!4 bb3!3 ~ c4!4 bb3!3 ~, ~@2 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,g4]@7 ~ [d4,g4]@4 ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@4 ~@4 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,g4]@7 ~ [d4,g4]@4 ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~ [d4,f4]@7 ~ [d4,f4]@4 ~@2, ~@6 bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~@3]/8", // Eb G5 Fm Eb G5 Fm Dm
  AK: "[~@28 bb3@2 ~@30 c4@2 ~@30 bb3@2 ~@20 [d4,f4]@7 ~@7, bb3!4 bb3!3 ~ c4!4 c4!3 ~ bb3!4 bb3!3 ~ c4!4 ~@4, ~@2 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,g4]@7 ~ [d4,g4]@4 ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@7 ~ [f4,ab4]@4 ~@4 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,g4]@7 ~ [d4,g4]@4 ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~@15, ~@6 bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~@11]/8", // Dm Eb G5 Fm Eb G5 Fm
})).s("gm_piano").gain(0.3).pan(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@16 A ~@18 B C D ~@36 E@2 ~@33 F@5>".pickRestart({
  A: "~ [f5,ab5] [eb5,g5] ~@5", B: "~@2 c4@7 ~ c4@6", C: "~@2 c4@7 ~@5 c6@2", D: "~@3 bb4@2 ~@2 eb4, ~ eb5 ~ g4",
  E: "[~@10 eb4@11 ~@5 c6@4 ~@2, ~@7 c4@11 ~@5 g5@8 ~]/2",
  F: "[bb3@4 ~@8 bb3@2 ~@30 bb3@2 ~@20 [f4,ab4]@7 ~@7, ~ bb3!2 ~ bb3!4 bb3!3 ~ c4!4 c4 ~@3, ~@6 bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~ bb2@7 ~ eb3@7 ~@11, ~@10 [d4,f4]@4 ~@4 [eb4,g4]@7 ~ [eb4,g4]@7 ~ [d4,g4]@7 ~ [d4,g4]@4 ~@4 [f4,ab4]@7 ~ [f4,ab4]@7 ~@15]/5", // Fm Dm Eb G5 Fm
})).s("gm_piano").gain(0.12).pan(0.4)

// chords · epiano1
const epiano1 = note(`<
  ~ A@8 B@8 ~@16 C D E@2 F G H@4 I J K L M@2 N@2 O@2 P@2 Q R S@2 T@2 ~@10 C D U@3 V@2 ~@7 W X@8 Y Z AA AB Y Z AA AC Y Z
  AA AB Y Z AA AD ~@4
>`.pickRestart({
  A: "[~@3 eb5@3 ~ eb5@3 ~ d5@3 ~ d5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~ eb5@3 ~ eb5@3 ~ d5@3 ~ d5@3 ~ c5@3 ~ c5@3 ~ d5@3 ~ d5, ~@4 bb4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ ab4@7 ~ ab4@7 ~ ab4@7 ~ ab4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ ab4@7 ~ ab4@7 ~ bb4@7 ~ bb4@4]/8",
  B: "[~@6 eb5@6 ~@2 eb5@6 ~@2 d5@6 ~@2 eb5@6 ~@2 c5@6 ~@2 c5@6 ~@2 c5@6 ~@2 c5@6 ~@2 eb5@6 ~@2 eb5@6 ~@2 eb5@6 ~@2 eb5@6 ~@2 db5@6 ~@2 db5@7 ~@11, ~@4 bb4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ ab4@7 ~ ab4@7 ~ ab4@7 ~ ab4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ bb4@7 ~ ab4@7 ~ ab4@7 ~@13]/8",
  C: "~@2 bb3@2 ~@2 bb3@3 ~ bb3@2 [eb4,g4]@2 bb3@2, ~@4 [eb4,g4]@7 ~@5", D: "[a3,c4,f4,g4]@2 f4 [f3,b3,eb4]@5",
  E: "[~@22 g4@7 ~@3, ~@2 c4@7 ~ c4@7 ~ c4@7 ~@7, ~@4 eb4@7 ~ eb4@7 ~ eb4@7 ~@5, ~@6 g4@7 ~ g4@7 ~@11]/2",
  F: "[bb3,eb4,g4]@5 ~@2 eb4, ~@5 bb4@3, ~@3 g4", G: "[eb4,c5] [d4,bb4], ab3",
  H: "[~@31 ab3, eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 c5@3 c4@2, ~@2 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 ab4@7 ~, ~@2 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 f5@3 f4@3]/4",
  I: "~@3 c4@2 ~@2 c4, ~ c4@2 ~@2 c4@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@4", // Em
  J: "~@3 b3@2 ~@2 b3, ~ b3@2 ~@2 b3@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@4", // Em
  K: "~@3 a3@2 ~@2 a3, ~ a3@2 ~@2 a3@2 ~, ~@4 [d4,f4]@7 ~ [d4,f4]@4", // Dm
  L: "~@3 b3@2 ~@2 b3, ~ b3@2 ~@2 b3@2 ~, ~@4 [d4,g4]@7 ~ [d4,g4]@4", // G5
  M: "[~@3 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4, ~ c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@4]/2", // Em
  N: "[~@3 a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3, ~ a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3@2 ~, ~@4 [d4,f4]@7 ~ [d4,f4]@7 ~ [d4,f4]@7 ~ [d4,f4]@4]/2", // Dm
  O: "[~@3 b3@2 ~@2 b3@2 ~@2 b3@2 ~@2 b3, ~ b3@2 ~@2 b3@2 ~@2 b3@2 ~@2 b3@2 ~, ~@4 [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@7 ~ [e4,g4]@4]/2", // Em
  P: "[~@3 bb3@2 ~@2 bb3@2 ~@7, ~ bb3@2 ~@2 bb3@2 ~@9, ~@4 [d4,f4]@7 ~ [d4,f4]@7 ~@13]/2", // Dm
  Q: "~ [c4,f4,a4]@2 [c4,f4,a4]", R: "~ c5@2 [f3,b3,e4], [c4,f4,a4]@3 ~",
  S: "[~@3 c4@2 ~@2 c4@2 ~@6 g4, ~ c4@2 ~@2 c4@2 ~@4 c5@3 d5@2, ~@4 [e4,g4]@7 ~ g4@7 ~ g4@6 g4@4 ~@2, ~@12 e4@5 ~ e4@6 e5@6 ~@2]/2", // Em
  T: "[~@3 c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 a3, ~ c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 a3@2 ~, ~@4 [e4,a4]@7 ~ [e4,a4]@7 ~ [e4,a4]@7 ~ [c4,gb4]@4]/2", // A5 Cdim
  U: "[~@17 g4@3 [g3,c4,eb4]@24 ~@4, ~ c4@4 ~ c4@4 ~@14, ~@2 eb4@4 ~ eb4@3 ~@14, ~@7 g4@9 ~@32]/3", // Cm
  V: "[~@7 [eb4,c5]@4 [d4,bb4]@4 ~, ~@7 ab3@8 ~]/2", W: "~@7 eb4",
  X: "[~@62 ab3 ~, g4@3 bb3@3 eb5@3 bb4@3 g4@3 eb4@3 c5@3 ab4@3 f4@3 bb3@3 c5@3 bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 f5@3 f4@3 ~, ~ bb4@3 g4@3 eb4@3 d5@3 bb4@3 f4@3 bb3@3 c5@3 ab4@3 f4@3 eb4@3 eb5@3 bb4@3 g4@3 bb3@3 d5@3 ab4@3 f4@3 eb4@3 c5@3 c4@2 ~, ~@4 eb5@6 bb4@6 g4@6 bb3@6 d5@6 ab4@6 f4@6 eb4@6 c5@6 ab4@6 g4@6 bb3@6 eb5@6 bb4@6 g4@6 eb4@6 c5@6 ab4@6 f4@6 ab4@7 ~@3]/8",
  Y: "~ bb3 ~ bb3, bb3 ~ bb3 ~, ~@2 [eb4,g4]@7 ~ [eb4,g4]@6", // Eb
  Z: "~@2 bb3@2 ~@2 bb3 ~, bb3 ~ bb3 ~, ~@2 [d4,g4]@7 ~ [d4,g4]@4 ~@2", // G5
  AA: "~ c4 ~ c4, c4 ~ c4 ~, ~@2 [f4,ab4]@7 ~ [f4,ab4]@6", // Fm
  AB: "~@2 c4@2 ~@2 c4 ~, c4 ~ c4 ~, ~@2 [f4,ab4]@7 ~ [f4,ab4]@4 ~@2", // Fm
  AC: "~@2 bb3@2 ~@2 bb3 ~, bb3 ~ bb3 ~, ~@2 [d4,f4]@7 ~ [d4,f4]@4 ~@2", AD: "~@2 [d4,f4]@7 ~@7",
})).s("gm_epiano1").gain(0.3).pan(0.7)

// chords · epiano1 · soft notes
const epiano1_soft = note("<~ A@2 B@2 A@2 B@2 A@2 B@2 A@2 B ~@93 C D E F G>".pickRestart({
  A: "~@2 g4@7 ~ g4@6", B: "~@2 f4@7 ~ f4@6", C: "bb3@2 bb3@2 ~@2 bb3 ~, ~@2 bb3 ~, ~@5 [d4,f4]@2 ~",
  D: "~ bb3 ~ bb3, bb3 ~ bb3 ~, ~@2 [eb4,g4]@7 ~ [eb4,g4]@6", // Eb
  E: "~@2 bb3@2 ~@2 bb3 ~, bb3 ~ bb3 ~, ~@2 [d4,g4]@7 ~ [d4,g4]@4 ~@2", // G5
  F: "~ c4 ~ c4, c4 ~ c4 ~, ~@2 [f4,ab4]@7 ~ [f4,ab4]@6", G: "~@2 [f4,ab4]@7 ~@7, c4 ~@3",
})).s("gm_epiano1").gain(0.12).pan(0.7)

// other · orchestral harp
const orchestral_harp = note("<~@35 A B C D ~@35 E F G ~@37>".pickRestart({
  A: "~@2 c4 ~ eb4 ~ g4 ~@3 c4 ~ eb4 ~ g4 ~", B: "~@2 c4 ~ eb4 ~ g4 ~ c5 ~ eb5 ~ g5 ~ c6 ~",
  C: "bb5 ~ g5 ~ eb5 ~ bb4 ~ eb5 ~ bb4 ~ g4 ~ eb4 ~", D: "[ab3,eb4,c5] ~@7 [d4,bb4] ~@7",
  E: "~@7 c4@2 ~ eb4@2 ~ g4@2 ~", F: "c5@2 ~@2 eb5@2 ~ g5@2 ~ c6@2 ~@2 bb5 ~",
  G: "g5 ~ eb5 ~ bb4 ~ eb5 ~ bb4 ~ g4 ~ eb4 ~ bb3 ~",
})).s("gm_orchestral_harp").gain(0.12).pan(0.3)

// other · celesta
const celesta = note("<~@77 A@5 ~@32>".pickRestart({
  A: "[~@7 bb6@2 bb6 g6 bb6 c7@2 g6 bb6@2 bb6 g6 bb6 c7@2 g6 ab6@2 bb6@2 ab6 g6 f6 bb5@9 ~]/5",
})).s("gm_celesta").gain(0.24).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@5 A@2 B@2 ~@11 C D@2 ~@2 E@8 F ~@13 G@8 ~@3 H I J K@2 L@2 M@2 N@2 O@3 ~@4 P@2 ~@2 Q@2 ~@2 R@2 ~@3 S@5 ~@20
>`.pickRestart({
  A: "[eb5 d5, g4]/2", B: "[c5 d5, ab4]/2", C: "~ eb5 g5 f5, bb4", D: "[g4,c5,eb5]/2",
  E: "[[bb3,eb4,g4]@8 [c4,f4,ab4]@8 g4@6 ab4 g4 [ab3,f4]@6 ab4 g4, eb3, ~@2 [bb3,eb4] db4, ~@15 bb3]/8", F: "eb4",
  G: "[[g3,c4,e4] [a3,d4,f4] [b3,e4,g4] [bb3,d4,f4], c3]/8", H: "g4 c5 e5 d5", I: "a3 g3, [e4,g4,c5]",
  J: "[gb3,c4,gb4,a4]", K: "[[d3,a3,c4]@2 eb4 d4, f4, ~ ab3]/2", L: "[bb3,eb4,g4]/2", M: "[c4,f4,ab4]/2",
  N: "[g4@6 ab4 g4, [bb3,eb4]]/2", O: "[[ab3,f4]@6 ab4 ~ eb4@4, db4@2 ~, ~ bb3, ~@7 g4@5]/3",
  P: "[~ [g4,eb5]@2 bb4@2 g4@2 [ab4,c5]@4 [d4,f4,bb4]@4 ~, ~@3 eb4@8 ~@5, ~@5 bb3@10 ~]/2", // Cm Ab Bb
  Q: "[~@3 [ab3,c4]@4 [f3,bb3,d4]@8 ~, ~@3 eb3@12 ~]/2", R: "[~@6 [ab4,c5]@8 [f4,bb4,d5]@15 ~@3, ~@3 eb4@12 ~]/2",
  S: "[~@7 eb4@8 d4@8 [ab3,c4]@8 [f3,bb3,d4]@8 ~, ~@7 eb3@32 ~, ~@7 [g3,bb3]@16 ~@17]/5", // Ab Bb Gm
})).s("gm_string_ensemble_2").gain(0.11).pan(0.3)

// chords · recorder
const recorder = note("<~ A@2 B@2 ~@20 C@2 D@2 E ~@2 F G ~@3 H I ~@8 J@2 K@2 L ~@33 M N O P@2 ~@24>".pickRestart({
  A: "bb5@3 ~ bb5@2 g5 ~ bb5 ~ c6@3 ~ g5 ~", B: "[ab5@3 ~ bb5@3 ~ ab5@2 g5 ~ f5 ~ c5@17 ~]/2",
  C: "[~@3 [f5,ab5] [eb5,g5]@2 [bb4,f5] ~ [eb5,g5] ~ [f5,ab5]@3 ~ [g5,bb5]@16 ~@2]/2", // Fm Eb Bb5 Eb Fm Gm
  D: "[~@3 [g5,bb5] [f5,ab5]@2 [c5,g5] ~ [f5,ab5] ~ [g5,bb5]@3 ~ [ab5,c6]@16 ~@2]/2", E: "[g5,bb5]",
  F: "[f5,ab5] ~ [ab5,db6]@3 ~ [db6,f6]@4 [f6,ab6]@2 [eb6,g6]@2 [db6,f6]@2", G: "[c6,eb6]@7 ~", H: "~ g5 eb5 bb4",
  I: "c5 bb4", J: "[~@3 [d5,f5] [c5,e5]@2 [g4,d5] ~ [c5,e5] ~ [d5,f5]@3 ~ [e5,g5]@16 ~@2]/2",
  K: "[~@3 [e5,g5] [d5,f5]@2 [a4,e5] ~ [d5,f5] ~ [e5,g5]@3 ~ [f5,a5]@16 ~@2]/2", L: "[e5,g5]", M: "~@7 bb5",
  N: "~@2 bb5@2 g5 ~ bb5 ~ c6@3 ~ g5 ~ bb5@2", O: "~@2 bb5@2 g5 ~ bb5 ~ c6@3 ~ g5 ~ ab5@2",
  P: "[~@2 bb5@3 ~ ab5@2 g5 ~ f5 ~ c5@17 ~@3]/2",
})).s("gm_recorder").gain(0.3).pan(0.7)

// other · french horn
const french_horn = note("<~@5 A@2 B@2 ~@30 A@2 C@3 ~@17 D E F ~@25 G H I J@2 ~@3 K@3 ~@5 K@3 ~@5 L>".pickRestart({
  A: "bb4@3 ~ bb4@2 g4 ~ bb4 ~ c5@3 ~ g4 ~", B: "[ab4@3 ~ bb4@3 ~ ab4@2 g4 ~ f4 ~ bb3@17 ~]/2",
  C: "[ab4@3 ~ bb4@3 ~ ab4@2 g4 ~ f4 ~ c4@33 ~]/3", D: "~@2 f4 ~ g4 ~ a4@4 g4@2 f4@4",
  E: "~@2 f4 ~ g4 ~ ab4@4 c5@2 bb4@2 ab4@2", F: "g4", G: "~@7 bb4", H: "~@2 bb4@2 g4 ~ bb4 ~ c5@3 ~ g4 ~ bb4@2",
  I: "~@2 bb4@2 g4 ~ bb4 ~ c5@3 ~ g4 ~ ab4@2", J: "[~@2 bb4@3 ~ ab4@2 g4 ~ f4 ~ bb3@17 ~@3]/2",
  K: "[f4 ~ g4 ~ ab4@4 c5@2 bb4@2 ab4@2 g4@32 ~@2]/3", L: "f4 ~ g4 ~@13",
})).s("gm_french_horn").gain(0.43)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A@9 B A@3 C D@15 C E D@6 C D@7 C D B F G H I H J@7 ~@8 H I@3 K I@3 H I@6 K H ~@4
>`.pickRestart({
  A: "x!2", B: "x ~@2 x ~@4", C: "x", D: "x ~@2 x!2 ~@3", E: "x!2 ~@2", F: "x ~@6 x ~ x ~@6", G: "~ x ~@2", H: "~@7 x",
  I: "~@2 x!2 ~@2 x!2", J: "~@3 x ~@3 x", K: "~@2 x!2 ~@3 x",
})).gain(0.24)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@24 A B@9 ~ B@3 ~@40 C@7 ~@23 D ~ E@3 ~>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~ x ~@2", D: "~@3 x", E: "~@2 x!2 ~@2 x!2",
})).gain(0.12)

// drums · rim
const rim = s("rim").struct("<~@43 A@3 B A@7 ~ C A@6 ~ A@7 ~ A@2 D ~@40>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~@2 x ~@4 x",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@54 A ~@39 B@3 C B@3 ~ B@3 ~ B@3 ~@5>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~ x ~@3 x ~@2", C: "~ x ~@6",
})).gain(0.24)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@54 [~ x ~@6] ~@55 [~ x ~@3 x ~@2]!3 ~>").gain(0.06)

// drums · low tom
const low_tom = s("lt").struct("<~@42 A ~@3 B ~@7 C ~@7 D ~@7 D ~@22 E ~@3 F ~@3 G ~@3 H ~@3 I ~@4>".pickRestart({
  A: "~@5 x!3", B: "~@11 x!2 ~@3", C: "~@8 x ~ x ~ x!4", D: "~@4 x!4", E: "~@5 x!2 ~", F: "~@9 x!4 ~@3",
  G: "x ~ x ~@7 x!4 ~@2", H: "~@2 x ~ x!2 ~@2", I: "~ x ~@3 x ~@2",
})).gain(0.24)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@46 A ~@8 B ~@41 C ~@11 D ~@4>".pickRestart({
  A: "~@5 x ~@2", B: "x", C: "~ x", D: "x ~@10 x!3 ~@2",
// … 59 more lines

More by Carpenters