Strudelify

Medley (They long to Be) Close to You For All We Know Top of the World Ticket to Ride Only Yesterday I Wont Last a Day Without You Hurting Each Other Superstar Rainy Days and Mondays Goodbye to Love

Carpenters

KeyA♭ majorTempo90 bpm
0:00/0:00
// Medley (They long to Be) Close to You   For All We Know   Top of the World   Ticket to Ride   Only Yesterday   I Wont Last a Day Without You   Hurting Each Other   Superstar   Rainy Days and Mondays   Goodbye to Love — Carpenters
// 90 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 7/4 at bar 77, 4/4 at bar 79) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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.

// chords · piano · "Ac Piano"
const piano = note(`<
  ~ A B C D@3 E F@2 G H@2 I J K L@2 G H@2 I J K M N O P Q R@2 S T U V W C D@3 E F@2 G H@2 I J K L@2 G H@2 I J K M N O P
  Q X@2 S T Y@2 O P Q X@2 S T U ~ Z@4
>`.pickRestart({
  A: "~@3 f2 ~@3 [ab3,f6], g4, f2@3 f1@5, ~ ab3@2 ab3 [f2,f4]@4, ~@2 c4@3 ab3 [c4,g6]@2", // Db F C5
  B: "~@7 ab3, [g4,c6], eb2@3 eb2@5, ~ ab3@2 ab3 f4@4, ~@2 c4@3 ab3 c4@2", // C5
  C: "~@7 db2, f4@5 [g5,g6] [f5,f6]@2, db2@3 db2 [ab5,ab6]@4, db4 db4@3, ~ ab3@2 ab3@5", // G F Ab
  D: "[f4 ~@2 c2 ~@4 [bb1,d4,f4]@8 db2@8, c2@3 c4@3 c4@2 ~@16, ab3@4 ab3@6 ab3@4 ab3@19 ~@15, ~ f4@7 ~@16, ~ eb4@3 [c2,eb4]@4 ~@16]/3", // Bb Cm
  E: "c2",
  F: "[~@15 g6 ~@14 [f4,f5]@2, [ab3,c4]@12 f1 [c5,c6] [g4,g5]@2, f4 g6, f2@7 [ab6,c7]@9, ~@6 f1@9 f6@7 f2@10]/2", // F Ab C G Ab
  G: "[ab3,c4]@3 ~@11 [f2,ab3]@2, g4, f2@4 c4 f2 c4@2, ~@3 ab3@11 ~@2, ~@2 c4 f4@5", // Ab Fm
  H: "[ab3 ~@9 db4 ~@4 db4, eb2@3 eb4@2 ab3@2 ab3 db4 ab3@2 db3@3 f4@2, eb4@3 eb1@5 db1@8, c4@2 c4@4 [c4,eb4]@2 f4@3 db4@2 ab3@3, ~ ab3@3 eb2@4 db2@3 [ab3,f4] db2@4]/2", // Cm Db
  I: "ab3 ~@6 eb4, [c2,c3], eb4@5 ab4@3, c4 c4@3, ~ ab3@3 ab3 eb4 ab3@2", // C
  J: "[bb2,ab3]@2 ~@5 [c2,c3], bb1@13 ~@3, d4@3 [d4,ab4]@3 [d4,ab4]@2, ~@2 ab3@3 ab3@3, ~@4 bb2@4 bb2@5 ~@3", // Bb7 C Ddim
  K: "db3 ~@13 ab3@2, db2, [db4,f4]@3 ab4@5, ab3!2 db3@2, ~ db3@2 [db4,f4]@2 ab3 [db4,f4]@2", // Db
  L: "[c4@2 ~@2 eb4@2 c4@2 ~@21 eb4@3, [c2,c3,g4]@6 c2@8 c3 g2@16 ~, eb4@4 ~@2 g4@16 c4@9 ~, ~@2 c4@4 c3@6 c4@4 [c2,c3]@15 ~, ~@6 eb4@2 c4@2 eb4@16 g4@5 ~]/2", // C5 C
  M: "c4@2 ~@2 eb4@2 c4@2 ~@7 g2, [c2,c3,g4]@3 [c2,g4]@5, eb4@2 ~ eb4@2 eb4@3, ~ c4@2 c3@4 c3, ~@2 c4!2", // C5
  N: "[c3,c4]@3 ~@4 c2, [c2,c5]@13 c4@2 ~, ~@6 [c3,c4]@6 c3@3 ~, ~@10 g4@5 ~", // C
  O: "db2 ~@5 db2@2 [c2,bb3,eb4,g4]@4 ab3@2 ab3@2, [ab3,db4,f4] ab3 ~ [bb1,db4,f4], ~@2 db2@3 [db4,f4]@3 ~@8", // Cm7 Db Bbm Db
  P: "ab3@2 ab3@2 ab3 ~@2 ab3 [ab3,ab4]@2 ab3 ~@3 ab3@2, [c4,eb4], ab1@5 [ab3,ab4]@3 ~@3 [ab3,ab4]@2 ab4@3, ~@3 ab1@2 ab1 ab1@2", // Ab Cm Ab
  Q: "db2 ~@2 db2 bb3!2 ab3!2, [ab3,db4,f4] ab3 [c2,eb4,g4] [bb1,db4,f4], ~@2 db2@3 [db4,f4]@3 ~@8", // Db Cm Bbm Db
  R: "[ab3@2 ab3@2 ~@3 [bb3,db4,eb4]@2 ab1 [ab3,c4,eb4,ab4]@2 ~@2 ab1 ~@3 ab3@2 ~@2 db2@2 bb3@2 bb3@2 ab3@2 ab3@2, [ab1,c4]@6 ab1@3 ~@3 ab1@2 ~@2 db2@6 ~@2 [c2,eb4,g4]@4 [bb1,db4,f4]@4, eb4@4 [eb4,ab4]@3 ~@9 [db4,f4]@4 ~@12, ~@5 ab3@2 ~@6 [ab3,c4,eb4,ab4]@2 ab3@3 ~@2 [ab3,db4,f4]@4 ~@8]/2", // Eb7 Ab Cm Bbm Ab5 Db Ab Db
  S: "ab3 ~ [eb4,ab4] ~@4 ab1, ab1@6 ab1 eb4 ab1@2 ab3@6, [c4,eb4] c4@3, ~@2 ab3@7 eb4@3 ab1 eb4@3, ~@7 ab4@9", // Ab5 Cm
  T: "[gb1,bb3,db4,f4]@3 [gb1,bb3,db4,f4]@5, ab3", U: "[db2,c4,f4,ab4]@15 ~",
  V: "~@3 f2 ~@3 ab3, g4, f2@3 f1@5, ~ ab3@2 ab3 [f2,f4]@4, ~@2 c4@3 ab3 c4@2", // F
  W: "~@7 ab3, g4, eb2@3 eb2@5, ~ ab3@2 ab3 f4@4, ~@2 c4@3 ab3 c4@2",
  X: "[ab3@2 ab3@2 ~@3 [bb3,db4,eb4]@2 ab1 [ab3,c4,eb4,ab4]@2 ~@6 ab3@2 ~@2 db2@2 bb3@2 bb3@2 ab3@2 ab3@2, [ab1,c4]@6 ab1@3 ~@3 ab1@2 ab1@2 db2@6 ~@2 [c2,eb4,g4]@4 [bb1,db4,f4]@4, eb4@4 [eb4,ab4]@3 ~@9 [db4,f4]@4 ~@12, ~@5 ab3@2 ~@6 [ab3,c4,eb4,ab4]@2 ab3@3 ~@2 [ab3,db4,f4]@4 ~@8]/2", // Eb7 Ab Cm Bbm Ab5 Db Ab Db
  Y: "[[ab3,bb3,eb4]@4 ~@10 ab3@2 ~@4 [ab3,bb3,eb4] [ab3,bb3,eb4]@2 ~ [bb3,eb4] ~ [ab1,c4]@2 [bb1,db4]@2 [c2,eb4]@2, ab1@6 ab1@12 ab1@7 ~@7, ~@4 ab3@6 ab3@4 ~@3 ab3@3 ~@5 ab3@2 ~@5, ~ [bb3,eb4]!3 [bb3,eb4] ~@3]/2", // Absus2 Eb5 Ab Bbm Cm Eb5
  Z: "[~@13 [g2,eb3,g3,c4]@51, ~@12 c2@51 ~]/4", // Cm
})).s("gm_piano").gain(0.28)

// bass · fretless bass · "El Bass"
const bass = note(`<
  ~ A B C D E@2 F G H I J K D L M N O I J K D L M N O P Q R S T U V W A B C D E@2 F G H I J K D L M N O I J K D L M N O
  P Q R S T X V Y Z P Q R S T X V W ~ AA@4
>`.pickRestart({
  A: "f2@5 ~ f2 ~ f2@6 f2@2", B: "eb2@5 ~ eb2@2 eb2@6 eb2@2", C: "db2@5 ~ db2@2 db2@6 eb2 db2",
  D: "c2@5 ~ c2 ~ c2@6 f2@2", E: "bb1/2", F: "~@6 g3@4 eb3@3 c3@3", G: "f2@5 ~ f2@2 f2@8", H: "f2@5 ~ f2@2 f2@7 ~",
  I: "f2@6 f2 ~ f2@8", J: "eb2@6 eb2 ~ eb2@7 ~", K: "db2@3 db2 db2@4", L: "bb1@5 ~ bb1@2 bb1@6 c2@2",
  M: "db2@5 ~ db2@8 bb1@2", N: "c2@5 ~ c2@8 c3 g2", O: "c2@15 ~", P: "db2@5 ~ db2@2 c2@3 ~ bb1@3 ~",
  Q: "ab1@7 eb2 ab2!2 ~ ab2@2 eb2 ab1@2", R: "db2@6 db2 ~ c2@4 bb1@3 ~", S: "ab1@7 eb2 ab2 eb2 ~ ab2 ~ eb2 ab1@2",
  T: "db2@5 ~ db2 ~ c2@3 ~ bb1@4", U: "ab1@3 ~ ab1@3 c2 eb2@2 ab2@3 eb2 f1 ~", V: "gb1@13 ~ ab1@2", W: "db2",
  X: "ab1@3 ab1@5", Y: "ab1@7 eb2", Z: "ab2@6 ab1@4 ab1@2 bb1@2 c2 ~", AA: "[~@6 c2@25 ~]/4",
})).s("gm_fretless_bass").gain(0.4)

// chords · epiano2 · "Rhodes"
const epiano2 = note(`<
  ~@18 A B@4 C D E F@2 G H I J K L ~@9 A M@4 C N@2 A B@4 C D E F@2 G H I J K O P F@2 G H I J K Q@2 R@3 ~
>`.pickRestart({
  A: "ab3 ~@2 f2 ~@3 ab3, f2@3 ~ f2@4, [c4,f4]!4, ~ ab3@2 ab3@2 ab3@2 ~", // F5
  B: "[~@3 eb2 ~@7 db2 ~@19 [c2,ab3], f4 ~@3, eb2@3 ~ eb2@4 db2@3 ~ db2@4 c2@8 bb1@3 bb1@4 ~, c4 [c4,eb4]!3 [db4,f4]!4 [c4,eb4]!4 d4 [d4,f4]!3, ~ ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ~]/4", // Fm Cm Db Cm Dm
  C: "ab3 ~@5 db2@2 ~@6 ab3@2, db2@3 ~ db2@4, [db4,f4]!4, ~ ab3@2 ab3@2 ab3@2 ~", // Db
  D: "~@7 c4, c2@3 c2@5, [eb4,g4]!4, ~ c4@2 c4@2 c4@2 ~", // Eb
  E: "[eb4,g4,c5]@4 [c4,e4] ~@3 f4 c4@2 [c4,f4] ~ eb4 c4 ~, [c2,c3]@15 ~, ~@2 c5@3 ~@3, ~@4 g4@4 ~ eb4 ~@6", // Cm C F5 C
  F: "[c4@4 c4@2 [c4,f4,ab4]@2 [c3,bb3,eb4,g4]@4 [bb2,ab3,db4,f4]@3 ab3 ~@2 c4@4 ab3 [bb3,db4]@3 [ab3,c4,eb4]@2 ~@2 ab2 ~, db3@4 ~@4 ab2@7 ~, [f4,ab4]@6 ~@9 [db4,f4]@2 ab3@5 ~@6 ab3@3 ~, ~@18 eb4@8 ~@3 [c4,eb4]@2 ~]/2", // Fm Cm7 Bbm7 Bbm Ab Fm Db Cm
  G: "~@2 ab4@2 [db4,f4,ab4]@2 db3 ~@3 eb4 ab3 ~@2 db4@2, [db3,ab3]@7 ~ c3@3 ~ bb2@4, [db4,f4]@4 ~@3 g4@4 f4@5, ~@9 bb3@2 db4@2 ab3@3", // Db Db5 Db
  H: "ab3@4 ~@3 [bb3,db4,eb4]@3 [ab3,c4,eb4]@2 ~@2 ab2 ~, [ab2,c4,eb4]@5 eb4@2 ~@5 ab3@3 ~, ~@4 ab3@2 ab2@7 [c4,eb4]@2 ~", // Eb7 Ab Cm
  I: "[db4,f4]@3 [db4,f4,ab4]@3 ab4 ~ c3@2 c4 ~@3 [db4,f4]@2, [db3,ab3]@7 [c4,eb4,g4]@4 [bb3,db4,f4]@2 bb3@3, ~@3 bb2", // Db Db5 Cm Bbm
  J: "ab3@2 ab3!2 ~@2 [ab3,c4,eb4]@2, ab2@4 ab2 ab2@3, [c4,eb4]@3 [c4,eb4]@3 ~@2, ~@9 ab3@3 ~@4", // Ab Cm
  K: "[gb2,db3,bb3]@3 [gb2,db3,bb3]@5, f4", L: "~@8 c5@7 ~, db3@15 ~, [c4,f4,ab4]@9 ~@7, ~@6 ab5@9 ~, ~@7 f5@8 ~",
  M: "[~@3 eb2 ~@7 db2 ~@19 [c2,ab3], f4@4 ~@8 d4 [d4,f4]!3, eb2@3 ~ eb2@4 db2@3 ~ db2@4 c2@8 bb1@3 bb1@4 ~, c4@2 [c4,eb4]@2 [c4,eb4]@2 [c4,eb4]@2 [db4,f4]@2 [db4,f4]@2 [db4,f4]@2 [db4,f4]@2 [c4,eb4]@2 [c4,eb4]@2 [c4,eb4]@2 [c4,eb4]@2 c4@7 ~, ~ ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ab3@2 ~]/4", // Fm Dm Cm Db Cm
  N: "[~@26 g4@3 ~ c2 ~, c2@3 c2@5 c2@7 ~, [eb4,g4]@4 [eb4,g4]@4 [eb4,g4]@4 [eb4,g4]@4 g4@10 ~@3 eb4@3, ~ c4@2 c4@2 c4@2 c4@4 [c4,c5]@4 ~]/2", // Eb C
  O: "~@3 ab3, c5, ab3@3 ~, eb4@5 eb4@3, ~@3 bb4@5",
  P: "~ eb4 [eb4,c5] ~ [db4,bb4] [c4,ab4]@4 ab3 [c4,eb4] ~ [bb3,db4] [ab3,c4]@2 ~, ab3@9 ~@7, ~@5 g4 ~@10", // Cm Gb Fm Cm Bbm Ab
  Q: "[f3@10 ~@4 db4@2 [db4,f4,ab4]@15 ~, db3@31 ~, f4 ~, db4@12 ab3@19 ~, ab3@10 f3@21 ~]/2", // Db
  R: "[~@17 eb3@31, ~@11 c2@32 ~@5, ~@7 g2@16 ~, ~@15 d3@32 ~]/3",
})).s("gm_epiano2").gain(0.25)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B C D E ~@2 F@2 ~@8 G H C I J K L M@2 N O P O Q R S A B C D T ~@2 F@2 ~@8 G H C I U K L M@2 N O P O Q R V@2 O N O
  P O Q R W X Y@4
>`.pickRestart({
  A: "f3", B: "[eb3,ab3]", C: "[db3,ab3,f4]", D: "[c3,ab3,eb4]", E: "[bb2,ab3,d4]@5 ~@3", F: "[f1,f2]/2",
  G: "c4@4 g4@3 f4", H: "[eb3,c4]", I: "[c3,ab3,eb4,ab4]", J: "[bb2,ab3,d4]", K: "[db3,ab3,db4,f4]", L: "[c3,bb3,eb4]",
  M: "[[c3,eb4]@12 f4 [g4,ab4] [bb4,c5] [db5,eb5] f5@8 eb5@4 db5@4, bb3 ~@11 eb4@12 ~@8]/2", N: "c5@14 db5 eb5",
  O: "f5@2 eb5 db5", P: "c5@15 [db5,eb5]", Q: "c5", R: "[gb2,db4,f4,bb4]", S: "[db3,c4,f4,ab4]",
  T: "[bb2,ab3,d4]@11 ~@5", U: "[bb2,ab3,c4,d4]", V: "[[ab2,eb3,c4]@28 [eb4,f4] [g4,ab4] [bb4,c5] [db5,eb5]]/2",
  W: "[db3,ab3,c4,f4]", X: "[db3,db4,f4,ab4]", Y: "[~@6 [c2,eb3,c4,eb4,g4]@25 ~]/4",
})).s("gm_string_ensemble_1").gain(0.25)

// chords · french horn · "Fr Horn"
const french_horn = note("<~@5 A B C D ~@23 E F ~@4 A B C D ~@23 E G ~@7 E F ~@5>".pickRestart({
  A: "~@5 f4 g4 ab4", B: "[eb4,g4,bb4] [db4,f4,ab4]", C: "[ab3,db4,f4] [g3,c4,eb4]", D: "[ab3,c4,f4]",
  E: "~@5 bb4 f4 eb4", F: "f4@7 ~", G: "eb4",
})).s("gm_french_horn").gain(0.28)

// other · oboe
const oboe = note("<~ A@2 B C@2 ~@28 A@2 B C@2 ~@42>".pickRestart({
  A: "[g5@6 f5@2 c5@17 ~ g5@2 f5@2 g5@2]/2", B: "ab5@2 g5@2 f5@11 ~", C: "[f5 eb5 ab4@10 ~@4]/2",
})).s("gm_oboe").gain(0.19)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<A B ~@2 C D ~@27 E F ~@2 C D ~@39 G H ~>".pickRestart({
  A: "~@9 eb3 [f3,g3,ab3] [bb3,c4,db4] [eb4,f4,g4] [ab4,bb4,c5] [db5,eb5,f5] [g5,ab5,bb5]", // Fm Bbm Eb Ab Db Gm
  B: "[c6,db6,eb6] [f6,g6] ~@14", C: "~@11 [eb3,f3,g3] [ab3,bb3,c4] [db4,eb4,f4] [g4,ab4,bb4] [c5,d5,eb5]",
  D: "[f5,g5,ab5] ~@15", // Fm
  E: "~@8 eb3 [f3,g3,ab3] [bb3,c4,db4] [eb4,f4,g4] [ab4,bb4,c5] [db5,eb5,f5] [g5,ab5,bb5] [c6,db6,eb6]", // Fm Bbm Eb Ab Db Gm Cm
  F: "[f6,g6] ~@15", G: "~ c3 ~@3 d3 ~@2 eb3 ~@2 g3 ~@2 c4 ~", H: "~@2 d4 ~@2 eb4 ~@4 g4 ~@5",
})).s("gm_orchestral_harp").gain(0.14)

// other · brass section · "Brass"
const brass_section = note("<~@27 A ~ B ~@30 A ~ B ~@6 A ~ B ~@9>".pickRestart({
  A: "~@4 ab4 bb4 ~ db5 ~ c5@3 bb4 ab4 ~ ab4", B: "~@3 eb4 ab4 bb4 ~ db5 ~ c5@3 bb4 ab4 ~ ab4",
})).s("gm_brass_section").gain(0.35)

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

// drums · rim
const rim = s("rim").struct("<~ A@4 ~@3 A@9 ~ A@7 ~@9 A@4 ~@3 A@9 ~ A@7 ~@23>".pickRestart({
  A: "~ x ~ x",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct("<~@26 A B A C A B ~@27 A B A C A B ~ D E A B A C A B ~@7>".pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@2 x", B: "~@4 x ~@4 x ~@2 x!2 ~@2", C: "~@4 x!2 ~ x ~ x ~@2 x ~@3", D: "~@5 x ~@2",
  E: "~@3 x ~@4",
})).gain(0.42)

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

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

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@4 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@2 B C D A E C ~@5 A ~@4 A ~ A ~ A ~ A ~@3 A ~ A ~ A ~@2 B C D A E C ~@3 B C D
  A E C ~@7
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@2", C: "~@3 x ~@4", D: "~@7 x", E: "~ x ~@6",
})).gain(0.36)

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

// drums · crash
const crash = s("cr").struct("<~@26 A ~ A ~ A ~ A ~@26 A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A ~@6>".pickRestart({
  A: "x",
})).gain(0.42)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@26 [x!16]!6 ~@27 [x!16]!6 ~@3 [x!16]!6 ~@7>").gain(0.3)

stack(
  piano, bass, epiano2, string_ensemble_1, french_horn, oboe, orchestral_harp, brass_section, kick, rim, snare, low_tom,
  hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, ride, tambourine
// … 1 more lines

More by Carpenters