Strudelify
(They Long to Be) Close to You cover art

Close To You

(They Long to Be) Close to You

Carpenters

KeyA♭ majorTempo88 bpm
0:00/0:00
// (They Long to Be) Close to You — Carpenters
// 88 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 3 "Harpsichord" harpsichord (copy of ch 6 "Piano" piano)
// note: Full arrangement: all 83 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · "Bass"
const bass = note(`<
  ~@12 A B C D E F G H I@2 J K L M N@2 O P Q R S T U V W M X Y Z AA AB AC AD@2 I AE AF@2 AG@2 AH AI AJ AK AL AM AN AO AP
  AQ@2 ~@3 AR AS AT AU AV AW AX AY@2 AZ BA BB@2 BC BD@3
>`.pickRestart({
  A: "c2@12 g2@11 ~", B: "b1@11 ~ gb2@10 ~@2", C: "b1@6 gb2@5 ~", D: "e1@9 ~ b1@2 e2@6 b1@5 ~",
  E: "c2@9 ~@3 g2@8 ~@2 g1@2", F: "c2@5 ~ g2@5 ~", G: "g1@12 d2@11 ~", H: "g2@10 ~@2 g2@6 d2@5 ~",
  I: "c2@8 ~@2 c2@2 g2@11 ~", J: "b1@8 ~@2 b1@2 gb2@11 ~", K: "e2@11 ~ b1@6 e2@5 ~", L: "c2@11 ~ g2@11 ~",
  M: "c2@11 ~ g2@10 ~@2", N: "[d2@5 ~@3]/2", O: "c2@7 ~@3 c2@2 g2@10 ~@2", P: "b1@7 ~@3 b1@2 gb2@7 ~ b2 ~ gb2@2",
  Q: "b1@7 ~@3 b1@2 gb2@11 ~", R: "e2@7 ~@3 g2@2 ~@4 b2@3 ~ g2@2 e2@2", S: "c2@6 ~@4 c2@2 g1@9 ~@3",
  T: "c2@7 ~@3 c2@2 g2@9 ~@3", U: "g1@7 ~@5 d2@7 ~ g2 ~ d2@2", V: "g1@5 ~@19", W: "db2@12 ab2@11 ~", X: "c2@6 g2@5 ~",
  Y: "f1@9 ~ c2@2 f2@6 c2@5 ~", Z: "db2@9 ~@3 ab2@8 ~@2 ab1@2", AA: "db2@5 ~ ab2@5 ~", AB: "ab1@12 eb2@11 ~",
  AC: "ab2@10 ~@2 ab2@6 eb2@5 ~", AD: "db2@8 ~@2 db2@2 ab2@11 ~", AE: "f2@11 ~ c2@6 f2@5 ~", AF: "db2@11 ~ ab2@11 ~",
  AG: "[eb2@5 ~@3]/2", AH: "db2@7 ~@3 db2@2 ab2@10 ~@2", AI: "c2@7 ~@3 c2@2 g2@7 ~ c3 ~ g2@2",
  AJ: "c2@7 ~@3 c2@2 g2@11 ~", AK: "f2@7 ~@3 ab2@2 ~@4 c3@3 ~ ab2@2 f2@2", AL: "db2@6 ~@4 db2@2 ab1@9 ~@3",
  AM: "db2@7 ~@3 db2@2 ab2@9 ~@3", AN: "ab1@7 ~@5 eb2@7 ~ ab2 ~ eb2@2", AO: "ab1@5 ~@19", AP: "db2@5 ~ ab2@4 ~ ab1",
  AQ: "[db2@5 ~ db2@11 ~@7]/2", AR: "~@12 db2@11 ~", AS: "ab2@8 ~@2 c2@2 db2@9 ~ g2@2", AT: "ab2@11 ~ ab1@10 db2@2",
  AU: "eb2@11 ~ ab1@10 d2@2", AV: "eb2@4 ab1@2 eb2@5 ~ db2@9 ~ g2@2", AW: "ab2@9 ~ c2@2 db2@12",
  AX: "ab2@12 ab1@9 ~ ab1@2", AY: "[eb2@9 ~ eb2@2 ab1@8 ~@2 ab1@4 ~@2 bb1@2 ~@4 db2@14]/2",
  AZ: "ab2@10 c2@2 db2@9 ~ g2@2", BA: "ab2 ab1", BB: "[eb2@9 ~ g1@2 ab1@10 eb2@6 db2@2 c2@6 db2@9 ~ g2@2]/2",
  BC: "ab2@11 ~ db2@11 ~", BD: "[ab2@5 g1 ab1@24 ~@6]/3",
})).s("gm_acoustic_bass").gain(0.45)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@12 A B@2 C@2 D@3 E@2 F G H@2 ~@2 A B@2 I J K ~@6 L@4 M@2 N O P@2 Q@2 R S@2 T U V ~@2 W@2 ~@4 X@3 ~ Y@7 ~ X@3 ~@2
>`.pickRestart({
  A: "d5@3 c5", B: "[b4@3 gb5]/2", C: "[g5 gb5 e5@4 d5@2]/2", D: "[g5@12 d5@59 ~]/3", E: "[[g3,c4,e4]@47 ~]/2",
  F: "[a3,d4,gb4]@23 ~", G: "a3@10 ~@2 ab3@11 ~, [b3,e4]@23 ~", H: "[d5 c5 b4 a4, [g3,b3,e4]]/2",
  I: "g5@3 gb5@3 e5 ~@5", J: "d5@2 ~@10 [d5,e5] ~@11", K: "g5@12 e5@11 ~, d5 ~@11 d5 ~@11",
  L: "[eb5@5 ~ eb5@4 ~@2 db5@4 ~@2 db5@4 ~@2 c5@4 ~@2 c5@4 ~@2 db5@4 ~@2 db5@4 ~@2 [c4,eb5]@46 ~@2, [db4,ab4]@48 g4@23 ~@25, f4@11 ~ eb4@35 ~]/4", // Cm Db5
  M: "[[ab3,db4,f4]@47 ~]/2", N: "[bb3,eb4,g4]@23 ~", O: "f5@12 [a3,c5]@11 ~, [c4,f4]@23 ~, bb3@5 ~@7",
  P: "[eb5 db5 c5 bb4, [ab3,c4,f4,ab5]]/2", Q: "[ab5@6 [eb4,bb4,g5] ~@5, eb5@9 ~@7]/2", R: "eb5@3 db5",
  S: "[c5@3 g5]/2", T: "ab5@3 g5@3 f5 ~@5", U: "eb5@2 ~@10 [eb5,f5] ~@11", V: "ab5@12 f5@11 ~, eb5 ~@11 eb5 ~@11",
  W: "[~@3 ab5 g5@2 [db4,f5]@3 eb4@2 ~, f4@11 ~, eb4@11 ~@13]/2", X: "[~ [c4,eb4,f4,ab4]@4 ~]/3",
  Y: "[~@12 [c4,eb4,f4,ab4]@48 eb5@43 ~@3 [c4,eb4,f4,ab4]@50 ~@12]/7", // Fm7
})).s("gm_string_ensemble_1").gain(0.26).pan(0.2)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note("<~@34 A ~@8 B ~@14 C ~@9 D@3 ~ E@3 ~ F@3 ~@4>".pickRestart({
  A: "gb5", B: "gb4@23 ~", C: "g5", D: "[~@12 g4@47 ~@13]/3", E: "[~@2 g4@7 ~@3]/3",
  F: "[~@36 eb5@23 ~@13, ~@12 [g4,g5]@47 ~@13]/3", // G
})).s("gm_string_ensemble_1").gain(0.15).pan(0.2)

// other · trumpet
const trumpet = note("<~@35 A B C@3 ~@43>".pickRestart({
  A: "~@6 f4 ~@2 ab4 ~@2", B: "eb5@5 ~@7 eb5@3 ~ db5@3 ~ eb5 ~ f5@2",
  C: "[c5@4 ~@12 c5@2 eb5@3 ~ g5@5 ~@13 c5@2 eb5@3 ~ ab5@7 ~@19]/3",
})).s("gm_trumpet").gain(0.41)

// chords · piano
const piano = note(`<
  A B C D E F G H I@2 J K E F G H I@2 L M N O P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM AN@2 AO
  AP AQ AR AS AT AU AV AW AX AY AZ@4 BA@5 BB@8 BC@5
>`.pickRestart({
  A: "[g4,g5]@4 ~@2 g4@3 ~ g4@2 [g4,c5,g5]@6 g4@4 g4@2, d5 [d5,g5] ~ [c5,g5]", // G C5 G5 C5
  B: "[g4,g5]@2 [g4,e5,g5] g4 ~ g4 [g4,c5,g5]@3 g4@2 g4, d5 [d5,g5] ~ [c5,g5]", // G C C5 G5 C5
  C: "[g4,d5,g5]@6 [g4,d5,g5]@4 g4 ~ [g4,c5,g5]@6 [g4,c5,g5]@4 g4 ~", D: "[g4,d5,g5]@7 ~",
  E: "[c4,d4,e4,g4]@6 [c4,d4,e4,g4]@6 [c4,d4,e4,g4]@6 [c4,d4,e4,g4]@5 ~, c2@23 ~", // C
  F: "[b3,e4,gb4]@6 [b3,e4,gb4]@6 [b3,eb4,gb4]@6 [b3,eb4,gb4]@5 ~, b2@12 b2@11 ~", // Bsus4 B
  G: "[a3,d4,gb4]@3 [a3,d4,gb4]@3 [a3,d4,gb4]@3 [a3,d4,gb4]@2 ~, b2@11 ~", // D
  H: "[b3,d4,g4]@6 [b3,d4,g4]@6 [b3,e4,g4]@6 [b3,e4,g4]@5 ~, e2@13 ~@11", // G Em
  I: "[[b3,g4]@3 g4@3 [d4,g4]@3 [d4,g4]@3 [c4,g4]@3 [c4,g4]@3 [d4,g4]@3 [d4,g4]@2 ~, c2@23 ~, [c3,e3,g3]@12 [c3,e3,g3]@11 ~, ~ b3@3 ~@4]/2", // Em G5 C5 G5 C
  J: "[g3,a3,b3,d4]@3 [g3,a3,b3,d4]@3 [b3,d4,gb4]@3 ~@2 g3, g2, ~@6 g3@5 ~, ~@3 [b3,d4,gb4]", // G Bm
  K: "~@10 d3 db3, [g2,g3,b3,d4,gb4]@11 ~", L: "[g3,a3,b3,d4]!2 [a3,d4,gb4]!2",
  M: "[f3,a3,d4,f4]@3 ~@7 b3 f4, ~@6 d4@8 f3@4 [d4,f4]@5 ~, ~@6 a3@6 f4@2 b3@2 a3@7 ~, ~@6 [f3,f4]@6 d3@11 ~, ~@10 g2@13 ~", // Dm F
  N: "[c4,e4]@3 ~@2 g2 [c4,e4]@3 ~@2 g2, [c2,g3] [c3,b3], ~@6 [a3,c4,e4]@7 ~@5 [a3,c4,e4]@6", // C C5 Cmaj7 Am
  O: "[c4,e4]@3 [a3,c4,e4]@2 g2 [c4,e4]@3 [a3,c4,e4]@3, [c2,g3]@11 ~ [c3,b3]@12", // C Am C Am C5 Cmaj7
  P: "[a3,d4,gb4]@6 [a3,d4,gb4]@6 [a3,d4,gb4]@6 [a3,d4,gb4]@5 ~, b2@23 ~", // D
  Q: "[a3,d4,e4]@6 ~@4 b2@2 [ab3,b3,e4]@6 [ab3,b3,e4]@5 ~, e2@12 e2@11 ~, ~ [a3,d4,e4] ~@2", // Asus4 E Asus4
  R: "[d4,e4,g4]@5 ~@5 g3@2 [c4,e4,g4]@6 ~@4 g3@2, c3!2, g3@5 ~ g3@5 ~, ~ [d4,e4,g4] ~ [c4,e4,g4]", // Em7 C Em7 C
  S: "[b3,e4,g4]!2 [a3,e4,g4]!2, [c3,g3] c3", // Em A7 C5
  T: "[[a3,d4,gb4]@10 [gb6,a6] d6@6 ~@5 [gb5,a5] d5@10 ~@15, a4@19 ~@29, d3@5 ~@11]/2", // D Gbm
  U: "[b3,d4,e4,g4] ~ [b3,d4,e4,g4]!2, g3 ~, c3@5 c3@7, ~ [b3,d4,e4,g4] ~@2", // Em7
  V: "[b3,e4,gb4] ~ [b3,eb4,gb4]!2, b2@5 b2@7, ~ [b3,e4,gb4] ~@2", // Bsus4 B Bsus4
  W: "[a3,d4,gb4]@3 [a3,d4,gb4]@2 ~ [a3,d4,gb4]@3 [a3,d4,gb4]@3, b2@5 b2@7", // D
  X: "[g3,b3,e4] ~ [g3,b3,e4]!2, e2@5 e2@7, ~ [g3,b3,e4] ~@2", // Em
  Y: "[d4,e4,g4]@3 ~@2 g3 [b3,e4,g4]@3 ~@2 g3, c3!2, g3@5 ~ g3@5 ~, ~ [d4,e4,g4] ~ [b3,e4,g4]", // Em7 Em Em7 Em
  Z: "[c4,e4,g4]@3 ~@2 g3 [b3,e4,g4]@3 [b3,e4,g4]@3, c3!2, ~ [c4,e4,g4] ~@2", // C Em C
  AA: "[a3,d4,gb4]@3 ~@3 [a3,d4,gb4]@3 ~@2 d3, g2@5 g2@7, ~ [a3,d4,gb4] ~ [a3,d4,gb4]", AB: "[g2,a3,d4,gb4] ~@5",
  AC: "[db4,eb4,f4,ab4]@6 [db4,eb4,f4,ab4]@6 [db4,eb4,f4,ab4]@6 [db4,eb4,f4,ab4]@5 ~, db2@23 ~", // Db
  AD: "[c4,f4,g4]@6 [c4,f4,g4]@6 [c4,e4,g4]@6 [c4,e4,g4]@5 ~, c3@12 c3@11 ~", // Csus4 C
  AE: "[bb3,eb4,g4]@3 [bb3,eb4,g4]@3 [bb3,eb4,g4]@3 [bb3,eb4,g4]@2 ~, c3@11 ~", // Eb
  AF: "[c4,eb4,ab4]@6 [c4,eb4,ab4]@6 [c4,f4,ab4]@6 [c4,f4,ab4]@5 ~, f2@13 ~@11", // Ab Fm
  AG: "[[ab4,f5]@2 ab4 ~@3 [eb4,ab4]@3 [eb4,ab4]@3 f5@2 ab4 ~@2 [f5,db6,f6] [eb4,ab4]@3 [eb4,ab4]@2 ~, db2@23 ~, [db3,f3,ab3,f4,db5]@3 ab4@2 [eb5,c6,eb6]@7 [f4,db5]@2 f5 [db4,ab4]@3 [eb5,c6,eb6]@5 ~, c4@3 c4@9 [db3,f3,ab3]@11 ~, ~@4 [f5,ab5]@20 [db4,ab4]@4 ab5@9 ~@11]/2", // Db Ab5 Db Ab5 Db Cm Db Db5 …
  AH: "f5@2 ~@4 [bb3,eb4,g4]@3 [bb3,eb4,g4]@3, [f4,c5]@13 ~@11, [ab3,bb3,c4,eb4]@6 [ab3,bb3,c4,eb4]@7 ~@11, ~@4 [ab4,f5,ab5]@9 ~@11, ~@5 [eb5,c6,eb6]@7", // Eb F5 Ab Db Cm
  AI: "[eb4,c5] ~@4 ab4 ~@4 c4 gb4, [gb3,bb3,gb4]@6 eb4@8 gb3@4 [eb4,gb4]@5 ~, ~@2 [db4,bb4]@4 [gb3,gb4]@6 eb3@11 ~, ~@4 [c4,ab4]@6 ab2@13 ~, ~@6 bb3@6 gb4@2 c4@2 bb3@7 ~", // Cm Gb Ebm Gb Fm
  AJ: "[db4,f4]@3 ~@2 ab2 [db4,f4]@3 ~@2 ab2, [db2,ab3] [db3,c4], ~@6 [bb3,db4,f4]@7 ~@5 [bb3,db4,f4]@6", // Db Db5 Dbmaj7 Bbm
  AK: "[db4,f4]@3 [bb3,db4,f4]@2 ab2 [db4,f4]@3 [bb3,db4,f4]@3, [db2,ab3]@11 ~ [db3,c4]@12", // Db Bbm Db Bbm Db5 Dbmaj7
  AL: "[bb3,eb4,g4]@6 [bb3,eb4,g4]@6 [bb3,eb4,g4]@6 [bb3,eb4,g4]@5 ~, c3@23 ~", // Eb
  AM: "[bb3,eb4,f4]@6 ~@4 c3@2 [a3,c4,f4]@6 [a3,c4,f4]@5 ~, f2@12 f2@11 ~, ~ [bb3,eb4,f4] ~@2", // Bbsus4 F Bbsus4
  AN: "[[eb4,f4,ab4]@3 ~@2 ab3 [db4,f4,ab4]@3 [db4,f4,ab4]@2 ~ [c4,f4,ab4]@3 [c4,f4,ab4]@2 ~ [db4,f4,ab4]@3 [db4,f4,ab4]@3, db3@6 db3@5 db3@6 db3@7, ab3@5 ~@19, ~ [eb4,f4,ab4] ~@6]/2", // Fm7 Db Fm Db Fm7
  AO: "[eb4,ab4,bb4]@3 ~ g3 ab3 bb3@2 ~@3 ab3, bb2, eb3@5 eb3@7, ~@6 [eb4,ab4,bb4]@5 ~ [eb4,ab4,bb4]@6 [eb4,ab4,bb4]@6, ~@4 bb3!2", // Ebsus4
  AP: "[eb2,eb3] ~@5", AQ: "[c4,eb4,f4,ab4] ~ [c4,eb4,f4,ab4]!2, ab3 ~, db3@5 db3@7, ~ [c4,eb4,f4,ab4] ~@2",
  AR: "[c4,f4,g4] ~ [c4,e4,g4]!2, c3@5 c3@7, ~ [c4,f4,g4] ~@2", // Csus4 C Csus4
  AS: "[bb3,eb4,g4]@3 [bb3,eb4,g4]@2 ~ [bb3,eb4,g4]@3 [bb3,eb4,g4]@3, c3@5 c3@7", // Eb
  AT: "[ab3,c4,f4] ~ [ab3,c4,f4]!2, f2@5 f2@7, ~ [ab3,c4,f4] ~@2", // Fm
  AU: "[eb4,f4,ab4]@3 ~@2 ab3 [c4,f4,ab4]@3 ~@2 ab3, db3!2, ab3@5 ~ ab3@5 ~, ~ [eb4,f4,ab4] ~ [c4,f4,ab4]", // Fm7 Fm Fm7 Fm
  AV: "[db4,f4,ab4]@3 ~@2 ab3 [c4,f4,ab4]@3 [c4,f4,ab4]@3, db3!2, ~ [db4,f4,ab4] ~@2", // Db Fm Db
  AW: "[bb3,eb4,g4]@3 ~@3 [bb3,eb4,g4]@3 ~@2 eb3, ab2@5 ab2@7, ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]", // Eb
  AX: "[ab4,c5]@2 [db4,bb4]@2 [c4,ab4]@5 ~ c4@2 db4@2 [c4,ab4]@3 ~ [ab3,c4,eb4] ~ [g3,bb3,eb4]@4, [ab2,bb3,eb4]@4 ~@6 ab4 ~ ab4 ~ ab2@10", // Ab Gb Fm Ab Eb Absus2
  AY: "[c4,f4,ab4]@3 ~@2 ab3 [bb3,f4,ab4]@3 ~@2 ab3, db3!2, ab3@5 ~ ab3@5 ~, ~ [c4,f4,ab4] ~ [bb3,f4,ab4]", // Fm Bb7 Fm Bb7
  AZ: "[[db4,f4,ab4]@3 ~@2 ab3 [db3,ab3,eb4,f4,ab4]@11 ~ [ab4,bb4,eb5]@2 ~@4 [ab4,eb5]@3 [ab4,eb5]@2 ~ [ab4,eb5]@2 [ab4,eb5] ~@3 [ab4,eb5]@2 ~@4 [ab4,bb4,eb5]@3 [ab4,bb4,eb5]@2 eb4, db3@6 ~@15 [ab4,eb5]@3 ~@8 c5@4 ~@12, ab3@10 ~@32 bb4@17 ~ bb4@6 [ab4,bb4,eb5]@6 ~@6 [ab4,eb5]@6 ~@12, ~@6 [db4,f4,ab4]@6 ~@24 eb4@9 ~ eb4@12 eb4@12 eb4@12 eb4@12 ~@2]/4", // Db Absus2 Ab5 Absus2 Ab5 Absus2 Ab5 Db
  BA: "[[ab4,eb5]@5 ~ [ab4,eb5]@4 ~@2 [ab4,bb4,eb5]@22 ~@8 [ab3,c4,f4]@12 ~@12 [ab3,c4,f4]@12 [ab3,c4,f4]@4 ~@8 [c4,eb4,g4]@11 ~@7 c5@2 bb4@2 ~@2 [c4,eb4]@4 [eb3,ab3,ab4]@2, ~@10 eb4@24 ~@2 [db2,db3]@18 [ab3,c4,f4]@12 ~@18 eb3@23 ~ [eb3,ab3]@9 ~@3, ~@60 [db2,db3]@22 ~@2 [ab2,ab3]@21 ~@3 ab2@12, ~@51 [c4,eb4]@5 ~@4, ~@51 g4@4 ~ ab4@3 ~]/5", // Ab5 Absus2 Fm Cm Ab5 Db Fm Ab5 …
  BB: "[eb4@2 [db4,eb4]@2 c4 ~ [c4,eb4]@5 ~@7 [ab3,c4,f4]@12 ~@12 [ab3,c4,f4]@12 [ab3,c4,f4]@4 ~@8 [c4,eb4,g4]@8 ~@2 [c4,eb4,g4] ~@13 [c4,eb4]@6 [c4,eb4]@6 ~@4 [c4,f4,ab4]@20 ~@12 [c4,f4,ab4]@12 [c4,f4,ab4]@5 ~@7 [c4,eb4,g4]@11 ~@7 c5@2 bb4@2 ~@2 [c4,eb4]@4 [eb3,ab3,ab4]@2, c4 ~ c4 ~ [eb3,ab3]@7 ~ [db2,db3]@18 [ab3,c4,f4]@12 ~@38 g4@6 ~@88 [c4,eb4]@10 ~@8, ~@36 [db2,db3]@22 ~@2 [ab2,eb3,ab3]@22 [c4,eb4]@8 ~@36 [c4,f4,ab4]@12 ~@18 [ab2,ab3]@21 ~@3 ab2@12, ~@84 [ab2,eb3,ab3]@18 ~@4 [db3,ab3]@26 [db3,ab3]@22 ~@2 eb3@23 ~ [eb3,ab3]@9 ~@3, ~@87 g4@4 ~ ab4@3 ~]/8", // Dbsus2 Cm Fm Cm Fm Cm Ab5 Db …
  BC: "[eb4@2 [c4,db4,eb4]@2 c4 ~ [c4,eb4]@5 ~@7 [ab3,c4,f4]@12 ~@12 [ab3,c4,f4]@12 [ab3,c4,f4]@4 ~@2 [ab2,eb3,ab3,c4,eb4,g4]@48 ~@12, c4 ~@3 [eb3,ab3]@7 ~ [db2,db3]@18 [ab3,c4,f4]@12 ~@78, ~@18 [db2,db3]@11 ~@31]/5", // Cm Fm Abmaj7 Ab5 Db Fm Db
})).s("gm_piano").gain(0.3).pan(0.2)

// chords · orchestral harp · "harp"
const orchestral_harp = note(`<
  ~@2 A@2 ~@8 B@2 ~@6 C D E@2 ~@4 F ~@7 G@2 ~@6 H@3 ~@19 I@4 J@3 ~ K@4 L@4 ~
>`.pickRestart({
  A: "[~@12 g4@2 ~@8 e5@2 ~@13 g4@11, d6@3 e5@5 g4@6 g5@3 b4@7, ~ b5@8 ~ c5@2 d6 b5@11, ~@2 g5@7 b4@6 e5@9, ~@4 c5 b4@2 e4@9 c5@2 e4@6]/2",
  B: "[~@7 g4 ~@4 e5@7 ~@5, ~ d6@4 c5 b4@2 e4@10 ~@6, ~@4 b5@18 c5@15 ~@11, ~@6 g5@12 g4@19 ~@11, ~@8 e5@12 b4@17 ~@11]/2",
  C: "~@7 b5@4 ~, ~ e4@4 e5@6 ~, ~@4 g4@8 g5@9 ~@3, ~@2 b4@5 ~, ~@8 d5@13 ~@3",
  D: "~@12 g5@2 [g5,b5]@5 ~@5, ~@2 e4@8 e5@9 ~@5, ~@4 g4@15 ~@5, ~@6 b4@13 ~@5, ~@8 d5@11 ~@5", // G
  E: "[~@12 gb5@2 a5 b5@3 a5@17 ~@13, ~@3 d4@7 d5@26 ~@12, ~@4 gb4@31 ~@13, ~@6 a4@29 ~@13, ~@8 b4@27 ~@13]/2",
  F: "~@9 g4 e4@2, ~@6 d6@6 e5@5 ~@7, ~@4 b5@3 c5@3 ~@2, ~@10 g5@5 ~ b4@5 ~@3",
  G: "[~@2 eb6@2 ~@10 ab4@2 ~@8 f5@15 ~@9, ~@4 c6@14 ab4@19 ~@11, ~@6 ab5@13 ~@3 eb5@17 ~@9, ~@8 f5@12 c5@17 ~@11, ~@10 eb5@2 c5@4 f4@23 ~@9]/2",
  H: "[~@42 c5@2 ~ c5@11 ~@16, ~@2 ab6@10 c5@2 ab4@4 ab4@8 eb6@8 c5@5 ~@33, ~@4 eb6@6 eb5@6 f4@12 c6@8 ab4@4 ab4@17 ~@15, ~@6 c6@11 ~@5 eb5@2 ab6@6 ab5@8 f4@15 ~@19, ~@8 ab5@12 c5@12 eb5@7 ~@5 eb5@26 ~@2]/3",
  I: "[~@13 ab4 ~@6 eb6 ~@6 ab4 ~@2 c5@9 ~@9, ~@14 ab6@8 eb5@6 ~@2 ab4@14 eb6@8 c5@5 ~ ab4@20 ~@18, ~@8 eb6@4 c5@2 f4@9 c6@4 ~@21, ~@18 c6@9 ~@7 eb5@2 ab5@2 c6@4 ab6@8 eb5@7 ~@39, ~@20 ab5@10 ~@2 c5@16 ab5@8 f4@23 ~@17]/4",
  J: "[~@12 ab4 ~@11 ab4 ~@4 ab5@7, ~@12 ab6@6 ab5@7 ~@5 c5@12 ab5@9 ~ ab4@20, ~@13 eb6@7 eb5@5 ~@3 ab4@16 eb5@6 gb4@4 c5@18, ~@16 c6@6 c5@4 f4@12 eb6@5 ~@13 eb5@16, ~@32 eb5@2 ab5@2 ab6@4 c6@5 ~ c5@4 f4@22]/3",
  K: "[~@27 f4@10 ~@11, ~@18 ab6@10 eb5@19 ~ eb5@7 ~@41, ~@20 eb6@19 ~@3 eb6@8 ~@2 ab4@15 ~@29, ~@22 c6@17 ~@5 c6@6 c5@5 ~@41, ~@24 ab5@16 ~@6 ab5@11 ~@39]/4",
  L: "[~@26 ab4@2 ~@12 eb6@2 ~@12 ab4@35 ~@7, ~@14 ab6@8 eb5@6 ~ gb4@2 ~ c5@12 eb6@6 eb5@17 ~@29, ~@16 eb6@7 ~@11 eb5@2 ab5@2 c6@4 ab6@12 ~@42, ~@9 c6@3 c5@2 f4@9 c6@3 c5@18 ~@4, ~@20 ab5@7 ~@3 ab4@18 ab5@6 ~@42]/4",
})).s("gm_orchestral_harp").gain(0.2).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A B A B A B A B@2 C B C B C D E A B A B A B F D A B A B A B A B@2 C B C B C B D A B A B A B A D A G ~@2 H ~ H I A
  F J I A I G I A F J I A ~@2
>`.pickRestart({
  A: "x!2", B: "x ~@4 x!2 ~@5", C: "x ~@4 x!2 ~@3 x!2", D: "x", E: "~@11 x", F: "x ~@5 x ~ x ~@2 x", G: "x ~@4 x ~@6",
  H: "~@5 x!2 ~@5", I: "x ~@5 x ~@4 x", J: "x ~ x ~ x!3 ~@5",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@7 B ~@15 A ~@6 A C ~@22 D ~@8>".pickRestart({
  A: "~@11 x", B: "~@3 x", C: "x", D: "~ x ~@2",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@12 A@7 B C@6 A@17 B C@7 D A@6 E A@2 F A@18 G ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@2 x ~ x!3 ~", C: "x!4", D: "x!2 ~ x", E: "~@3 x ~@5 x ~ x", F: "~ x ~@2", G: "~@5 x ~@6",
})).gain(0.5)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@19 A B@6 ~@17 A B@7 ~@7 C ~@21 D ~@2>".pickRestart({
  A: "~@4 x!2 ~@5 x", B: "~ x!2 ~ x!2 ~ x!2 ~ x!2", C: "~@5 x", D: "~@2 x!3 ~@7",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@7 B ~@15 C ~@6 D ~@23 E ~@8>".pickRestart({
  A: "~@5 x", B: "~@2 x", C: "~@6 x ~@2 x!2 ~", D: "~@6 x ~ x!3 ~", E: "~@4 x!2 ~@18",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@61 A ~@2 B ~ B ~@13 A ~@2>".pickRestart({
  A: "~ x", B: "~ x ~@4",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@7 B ~@15 C ~@6 D ~@32>".pickRestart({
  A: "~@2 x", B: "~@5 x ~@6", C: "~ x!2", D: "~@2 x ~ x!2 ~@6",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<~@20 A ~@5 A ~@8 A ~@8 A ~@5 A ~@8 A@2 ~@7 B ~@5 C ~ B ~@3 B ~@2>".pickRestart({
  A: "x", B: "~ x", C: "~@5 x ~@6",
})).gain(0.5)

stack(
  bass, string_ensemble_1, string_ensemble_1_soft, trumpet, piano, orchestral_harp, kick, low_tom, hihat, hihat_soft,
  mid_tom, open_hat, high_tom, ride
)

More by Carpenters