Strudelify

Strangers in the Night

Clayderman Richard

KeyG minorTempo110 bpm
0:00/0:00
// Strangers in the Night — Clayderman Richard
// 110 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 63 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 pick
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y AA AB AC AD AE AF AG@2 AH@2 AI AJ AK AL AM AN@2 AO AP AQ AR AS
  AT@2 AU@3 AV@2 AW AX@2 AY@3 ~
>`.pickRestart({
  A: "c2@9 ~@3 c2 ~@3 c2@15 ~", B: "c2@10 ~@2 c2@2 ~@2 c2@15 ~", C: "c2@8 ~@4 c2 ~@3 c2@8 g1@8",
  D: "c2@8 ~@4 c2 ~@3 c2@16", E: "c2@5 ~ c2 ~ c2@4 g1@4", F: "c2@9 ~@3 c2@3 ~ eb2@7 ~ eb2@7 ~",
  G: "d2@8 d1@8 d2@8 d1@7 ~", H: "d2@8 d1@7 ~ d2@8 d1@8", I: "d2@8 ~@4 d2 ~@3 d2@14 ~@2", J: "d2@5 ~ d2 ~ d2@4 a1@4",
  K: "d2@8 ~@4 d2 ~@3 d2@8 a1@8", L: "d2@10 ~@2 d2 ~@3 d2@8 a1@8", M: "g1@10 ~@2 g1@3 ~ g1@6 ~@2 g1@7 ~",
  N: "g1@9 ~@3 g1 ~@3 g1@6 ~@2 g1@4 a1@4", O: "c2@6 ~@6 c2 ~@3 c2@9 ~@7",
  P: "c2@9 ~@3 c2@2 ~@2 c2@6 ~@2 c2@2 g1@2 c1@4", Q: "g1@8 ~@4 g1 ~@3 g1@15 ~", R: "g1@10 ~@2 g1 ~@3 g1@7 ~ d1@8",
  S: "a1@9 ~@3 a1@4 a1@13 ~@3", T: "a1@9 ~@3 a1 ~@3 a1@5 ~@3 a1@2 e1@2 db1@4", U: "d1@8 ~@4 d1 ~@3 d1@7 ~ d1@4 e1@4",
  V: "f1@9 ~@3 f1 ~@3 f1@6 ~@2 f1@4 g1@4", W: "c2@3 b1 a1@3 c2", X: "~@12 f1@4 g1@7 ~ g1@4 a1@4, d2@15 ~@17",
  Y: "c1@8 ~@4 c1 ~@3 c1@8 g1@7 ~", Z: "c1@8 ~@4 c1 ~@3 c1@14 ~@2", AA: "c1@8 ~@3 c1 ~@3 c1@16 ~",
  AB: "g1@8 ~@4 g1 ~@3 g1@7 d1@8 ~", AC: "g1@9 ~@3 g1 ~@3 g1@6 ~@2 g1@4 d1@4", AD: "eb1@9 ~@3 eb1 ~@3 eb1@15 ~",
  AE: "eb1@9 ~@3 eb1 ~@3 eb1@8 bb1@7 ~", AF: "eb1@8 ~@4 eb1 ~@3 eb1@11 ~@5",
  AG: "[eb1@8 ~@4 eb1 ~@3 eb1@7 bb1@6 ~@2 eb1@9 ~@4 eb1 ~@3 eb1@13 ~@3]/2",
  AH: "[eb1@9 ~@3 eb1 ~@3 eb1@7 ~ gb1@7 f1@10 ~@3 f1 ~@3 f1@10 ~ f1 ~@4]/2", AI: "f1@9 ~@3 f1 ~@3 f1@10 ~@6",
  AJ: "f1@8 ~@4 f1 ~@2 f1@8 c2@7 ~@2", AK: "f1@8 ~@4 f1 ~@3 f1@8 c2@7 ~", AL: "f1@8 ~@4 f1 ~@3 f1@7 ~ c2@6 ~@2",
  AM: "f1@9 ~@3 f1 ~@2 f1@7 ~@2 f1@3 ~ g1@4",
  AN: "[bb1@8 ~@4 bb1 ~@2 bb1@8 ~ f1@2 ~@5 bb1@8 ~@4 bb1 ~@4 bb1@6 ~@2 bb1@2 ~ bb1@4 ~]/2",
  AO: "eb1@9 ~@3 eb1 ~@3 eb1@7 ~@9", AP: "eb1@7 ~@4 eb1 ~@3 eb1@16 ~", AQ: "bb1@9 ~@3 bb1 ~@2 bb1@15 ~@2",
  AR: "bb1@9 ~@2 bb1 ~@3 bb1@8 ~ f1@8", AS: "c2@10 ~@2 c2 ~@3 c2@15 ~",
  AT: "[c2@9 ~@2 c2 ~@3 c2@6 ~@2 c2@4 ~ e1@3 f1@9 ~@4 f1 ~@2 f1@6 ~@3 f1@3 g1@4 ~]/2",
  AU: "[ab1@10 ~@2 ab1 ~@3 ab1@7 ab1@4 bb1@4 eb2@11 ~ eb2@4 c2@16 f1@9 ~@3 f1@3 ~ bb1@7 ~@2 bb1@4 d1@4]/3",
  AV: "[eb1@8 ~@3 eb1 ~@3 eb1@13 ~@3 eb1@9 ~@3 eb1 ~@3 eb1@5 ~@4 eb1@5 ~@3]/2", AW: "eb1@8 ~@3 eb1 ~@3 eb1@13 ~@4",
  AX: "[eb1@8 ~@3 eb1 ~@3 eb1@7 ~@2 c2@6 ~ bb1@10 ~@3 bb1 ~@3 bb1@7 f1@8 ~]/2",
  AY: "[bb1@8 ~@3 bb1 ~@4 bb1@6 ~@2 bb1@3 c2@4 ~@36 eb1@28 ~, ~@31 eb2@63 ~@2]/3",
})).s("gm_electric_bass_pick").gain(0.3)

// chords · piano
const piano = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J K@2 L M N O P Q R S T U V W X@2 Y@2 Z@2 AA@2 AB AC AD AE AF AG@2 AH AI AJ AK AL@4
  AM@2 AN@2 AO@3 ~
>`.pickRestart({
  A: "[~ d5 ~@7 c5 ~ e5 ~@2 c5@2, [e4,g4]@31 ~@9 [g4,c5,d5]@9 ~@15, c5@3 c5@5 ~@4 [e4,g4,d5]@4, ~ d5 d5@3 ~@3]/2", // Em Gsus4 Em7
  B: "[b4 c5 ~@7 b4 ~ d5 ~@2 b4@2, [e4,g4]@31 ~@9 [g4,a4,c5]@9 ~@15, ~ c5 c5@3 ~@3, ~@12 b4@19 ~@17 [e4,g4,c5]@16]/2", // Em Am7 C
  C: "[[g4,a4]@4 b4@4 ~@8 b4@19 ~@9 c5@4 ~@8 a4@8, e4@2 ~ [c4,gb4,b4], ~ b4 ~@3 b4 ~@2, ~@12 a4@21 ~@3 a4@12 ~@16]/2", // Gsus2 B
  D: "[~@8 a4@4 a4@4 bb4@8 ~@4 bb4@3 ~ b4@12 ~@12 a4@8, f5, ~@2 d5@2 ~@7 b4@5, ~@3 bb4]/2",
  E: "[d5 e5 ~@9 f5 ~@2 d5@2, f4@33 ~@15 [f4,a4,e5]@16, a4@23 ~@17 [a4,c5,e5]@8 ~@16, ~ e5 e5@3 ~@3, ~@12 d5@11 ~@13 d5@12 ~@16]/2", // Fmaj7 Am
  F: "[c5 d5 ~ c5 ~@5 c5 ~ e5 ~@2 c5@2, f4@3 ~@3 [f4,a4,d5]@2, a4@2 ~@3 [a4,c5,d5] ~@2, ~ d5 d5@3 ~@3]/2", // Dm D7
  G: "[b4@4 c5 ~@7 b4@4 c5@19 ~@9 d5@4 ~@8 b4@8, [d4,f4]@4 ~ [f4,a4,c5] [d4,f4,c5]@2, ~@8 c5@8 ~@20 b4@13 ~@15]/2", // Dm F Dm7
  H: "[[g4,c5,e5]@16 ~@8 [g4,c5,e5]@8 ~@8 [g4,c5,e5]@9 ~@7 [g4,c5,e5]@8, g5]/2", // C
  I: "g5 f5 ~ e5 ~@2 [g4,bb4]@2, bb4 e5, d5@8 f5@9 ~@15", // Gm
  J: "~ f5 ~ g5 ~ f5 ~ e5, ~ [bb4,d5]@3 [bb4,d5,g5]@4, ~ f5 ~ f5", // Bb Gm
  K: "[g5 f5 ~ e5 ~@5 f5 ~ g5 ~ f5 ~ e5, [bb4,db5] e5@2 ~, ~@8 f5@9 ~@7 [bb4,db5]@24 [bb4,db5,g5]@16, ~@5 f5 ~ f5]/2", // Bbm Gdim
  L: "f5 e5 ~ d5 ~@2 [f4,a4]@2, a4 e5 d5@2", M: "f5 e5 ~ d5 ~@2 [f4,ab4]@2, ab4@3 ~, c5 e5@3, ~ d5",
  N: "f5 e5 ~ d5 ~@3 c5, [g4,c5] [e4,g4,d5], ~@2 e5@2 ~ c5@2 ~, ~@3 b4", // C5 Em7
  O: "~ d5 ~ c5!2 ~@2 b4, [f4,a4,e5] [d4,f4], ~@8 d5@9 ~@3 b4@8 ~@4, ~@3 a4", // Fmaj7 Dm
  P: "c5 ~ d5@2 d5@2 c5@2 d5@8, e4@25 ~@7, g4 ~@3", Q: "~ c5 ~ e5 ~@2 c5@2, ~ [g4,c5,d5] [e4,g4,d5]@2",
  R: "[g4,b4]@4 c5 ~@11 c5@16, e4@3 ~, ~ c5 ~@2, ~@3 b4@3 ~@2", // G
  S: "~@12 d5@4 ~@8 b4@7 ~, ~ b4@3 ~@4, ~@8 [g4,a4,c5]@8 [e4,g4,c5]@15 ~", // Am7 C
  T: "~@4 b4@4 ~@8 b4@15 ~, [b3,f4]@31 ~, a4@12 a4@19 ~, ~ b4 ~@2", // Bdim
  U: "~ b4 ~ [b4,d5] ~@2 [g4,b4]@2, ~ [f4,a4,c5] [f4,a4,c5]@2", V: "~ f5!2 eb5 f5@4, g4@27 ~@5, bb4 ~, eb5@9 ~@23",
  W: "~ eb5 ~ g5 ~@2 eb5@2, ~ [bb4,eb5,f5] [g4,bb4,f5]@2", // Bbsus4 Gm7
  X: "[d5@4 eb5 ~@3 eb5@4 ~@4 eb5@19 ~ d5@3 ~@5 f5@4 ~@8 d5@8, g4@5 ~@5 [bb4,c5,eb5]@2 [g4,bb4,eb5]@4, bb4@11 ~ d5@8 ~@44]/2", // Cm7 Eb
  Y: "[c5@2 d5 ~@3 c5@2 d5@10 ~@4 eb5@2 ~@4 c5@4, g4@25 ~@15 d5@8 ~@16, bb4@8 d5@7 ~@21 c5@12 [eb4,a4,d5]@16]/2", // D
  Z: "[~@2 [ab4,c5,f5]@2 [ab4,c5,e5] ~ [ab4,c5,e5]@2 [ab4,c5,eb5]@2 [ab4,c5,eb5]@2 [c5,d5] ~ [ab4,c5,d5]@2, ab5, ~@6 ab4 ~]/2", // Fm Abaug Ab Csus2 Dm7b5
  AA: "[f5@4 g5 ~@3 g5@4 ~@4 g5@20 f5@4 ~@4 ab5@4 ~@8 f5@8, [ab4,c5]@4 ~ [c5,eb5,g5] [ab4,c5,g5]@2, ~@12 f5@7 ~@45]/2", // Ab Cm Abmaj7
  AB: "~ f5 ~@2 f5@4, ab4, [c5,eb5] f5 ~@2, ~@12 eb5@9 ~@11", // Cm
  AC: "~@4 eb5@3 ~@4 g5@4 ~@8 eb5@9, ~@7 f5@8 [ab4,f5]@17, ~ [c5,eb5] c5@2", // Db Cm
  AD: "d5@4 eb5@2 ~@9 eb5@16 ~, [f4,ab4]@23 ~@9, ~@8 eb5@7 ~@17, ~@12 d5@11 ~@9", // Fm
  AE: "~@11 f5@4 ~@8 d5@9, ~@3 d5@12 ~ ab4@16, ~@7 [ab4,c5]@8 [f4,eb5]@17, ~@8 eb5@7 ~@17", // Ab F7
  AF: "[bb4,eb5,bb5], g5@13 ~@3", // Eb5
  AG: "[[d4,g4,d5]@5 ~@5 d5@6 [g4,c5]@4 ~@7 g5@4 ~ f5@3 ab5 ~@7 g5@4 [bb4,db5,g5]@16 ~, ~@5 bb4@11 bb4@7 [g4,eb5]@8 bb5@4 ~@4 ab5@8 ~@17, ~@20 d5@12 db5@15 ~@17, ~@3 bb4 ~@4]/2", // G5 C5 Gdim Cm
  AH: "~@3 ab5@4 ~@4 bb5@4 ~@4 ab5@4 ~@4 g5@5, ~@7 [db5,f5,ab5]@8 [f5,bb5]@17, ~@15 db5@8 ab5@9, ~@3 [bb4,db5]", // Db Bb5 Bbm
  AI: "bb5@3 ab5@4 ~@4 g5@4 ~ [db5,g5]@16, [bb4,db5] ~, ~@7 ab5@8 bb4@17", // Dbdim Bbm
  AJ: "~@3 ab5@4 ~@4 bb5@4 ~@4 ab5@4 ~@4 g5@4 ~, ~@7 [db5,ab5]@8 db5@8 [bb4,db5,ab5]@8 ~, ~@8 f5@7 [f5,bb5]@16 ~", // Db5 Bbm7 Bb5
  AK: "ab5@3 ~ g5@3 ~@4 f5@4 ~ [ab4,c5,f5]@16, [ab4,c5] ~, ~@7 g5@9 ~@16", // Fm Ab
  AL: "[[b4,ab5]@4 g5@4 ~@3 f5@4 ~ [ab4,b4,f5]@15 ~@4 g5@4 ~@4 f5@4 g4@4 ~@8 eb5@4 ~@4 f5@4 ~@4 eb5@4 ~ ab4@3 ~@8 d5@4 ~@4 f5@4 ~@8 f5@17, eb5@16 ~@16 [bb4,eb5]@16 ~@3 eb5@8 ~@12 f5@8 ~@8 c5@8 ~@12 eb5@8 ~@13, ~@8 g5@9 ~@14 ab5@16 ~@8 d5@8 ~@16 eb5@4 d5@8 ~@4 eb5@3 ~@5 f5@8 ~@17, ~@39 g5@8 [bb4,f5]@16 [ab4,c5,g5]@16 ~ f4@16 [g4,bb4]@20 ~@12]/4", // E Fdim Eb5 Bb5 Abmaj7 Gm
  AM: "[~@3 eb5@3 ~@5 g5@4 ~@8 eb5@8 ~ bb4@3 eb5 ~@11 eb5@17, ~@7 [bb4,eb5,f5]@8 [g4,bb4,f5]@16 [g4,d5]@5 ~@3 eb5@8 ~@17, ~@43 d5@11 ~@10]/2", // Bbsus4 Gm7 G5
  AN: "[~@3 d5@3 ~@5 f5@4 ~@8 d5@8 ~@4 d5 ~@7 c5@4 ~ [f4,ab4]@9 ~@7, ~@7 [c5,eb5]@8 [g4,eb5]@16 c5@4 ~@4 d5@8 d5@17, ~ bb4 [f4,ab4] ~]/2", // Fm Cm Fm
  AO: "[~@11 f5@4 ~@8 d5@8 ~ [g4,bb4]@64, ~@3 d5@11 ~@17 eb5@64 ~, ~@7 [ab4,c5,eb5]@7 ~ [ab4,eb5]@16 ~@65]/3", // Gm Ab Ab5
})).s("gm_piano").gain(0.56)

// chords · pad new age
const pad_new_age = note("<A@4 B@4 C@2 D@2 E@4 F@5 G@3 H@3 I@3 J@4 K@2 L@5 M@5 N@2 O@2 P@2 Q@2 R@8 ~>".pickRestart({
  A: "[[e4,g4]@38 ~@2 [g4,c5]@6 ~@2 [e4,g4]@14 ~@2 g4@37 ~@3 [g4,a4]@6 ~ [e4,g4]@14 ~@3, ~@63 e4@40 ~@25]/4", // Em C5 Em Gsus2 Em
  B: "[[e4,g4]@45 ~@2 [c4,gb4]@16 ~ f4@55 ~ [d4,f4]@6 ~@2, ~@63 d4@56 ~@9]/4", // Em Cdim Dm
  C: "[a4@38 ~@2 [a4,c5]@6 ~@2 [f4,a4]@15 ~, f4@23 ~@9]/2", D: "[f4@20 [a4,c5]@3 ~ [f4,a4]@7 ~, a4@37 ~@27]/2",
  E: "[[d4,f4]@39 ~ [f4,a4]@6 ~ [d4,f4]@16 [c4,e4]@64 ~, ~@63 g4@57 ~@8]/4", // Dm F Dm C
  F: "[d5@63 ~ db5@46 ~@2 [bb4,db5]@15 [a4,d5]@33, bb4@11 ~@5]/5", // Bbm D5
  G: "[[ab4,c5]@21 ~@2 [f4,ab4]@8 [g4,c5]@15 ~ [e4,g4]@16 ~ a4@14 ~ [d4,f4]@16 ~, ~@63 f4@14 ~@19]/3", // Ab Fm C5 Em Dm
  H: "[[e4,g4]@23 g4@7 ~ [e4,g4]@29 ~@4 g4@23 ~ [g4,a4]@7 ~, ~@23 c5@4 ~@36 e4@21 ~@12]/3", // Em Gsus2
  I: "[[e4,g4]@30 ~ [b3,g4]@55 ~@2 [b3,g4]@7 ~]/3", // Em
  J: "[g4@14 ~ [g4,bb4]@23 ~@2 [bb4,eb5]@5 ~@3 g4@14 ~ bb4@39 ~@2 c5@5 ~@3 [g4,bb4]@14 ~@2, eb4@47 bb4@15 ~ g4@36 ~@4 bb4@7 ~@18]/4", // Gm Eb5 Gm
  K: "[[g4,bb4]@52 ~@4 e4@7 ~, ~@55 a4@7 ~@2]/2", // Gm
  L: "[[f4,ab4]@61 ~@2 ab4@23 ~ [ab4,c5]@7 ~ ab4@31 ~ [ab4,c5]@24 ~ [c5,eb5]@5 ~@3, ~@63 f4@60 ~@37]/5", // Fm Ab Cm
  M: "[ab4@25 ~@7 f4@21 ~@3 [ab4,c5]@7 ~ f4@29 ~@2 [g4,bb4]@32 d5@5 ~ bb4@5 d5@4 ~ c5@8 [g4,bb4]@7 ~@2, c5@17 ~@14 ab4@24 ~@8 ab4@32 ~@65]/5", // Ab Gm
  N: "[[g4,bb4]@19 ~ [db5,f5]@4 [db5,f5]@4 [bb4,db5]@4]/2", O: "[[g4,bb4]@39 ~ [db5,f5]@8 [db5,f5]@8 [bb4,db5]@8]/2",
  P: "[ab4@23 f4@8 ~ b4@16 [ab4,b4]@16, c5@30 ~ eb5@16 ~@17]/2", // Abm
  Q: "[eb5@14 ~@2 g4@13 ~@2 [ab4,c5]@13 ~@4 ab4@15 ~, bb4@28 ~@19 f4@14 ~@3]/2", // Ab
  R: "[g4@23 [bb4,eb5]@6 ~@2 [g4,bb4]@29 ~@4 bb4@20 ~@3 [bb4,c5]@6 ~@2 [g4,bb4]@32 [f4,ab4]@39 ~ [ab4,c5]@6 ~@3 ab4@15 [g4,bb4]@63 ~@2, bb4@17 ~@46 g4@23 ~@89 f4@15 ~@66]/8", // Eb5 Gm Bbsus2 Gm Fm Ab Gm
})).s("gm_pad_new_age").gain(0.32).pan(0.2)

// other · string ensemble 1
const string_ensemble_1 = note("<~@45 A B@2 C@2 D@2 E@7 F@3 ~>".pickRestart({
  A: "~@15 eb4 f4@2 bb3 [c4,ab4] ~ [d4,bb4] eb4 ~ d5 [g4,eb5] ab4 [bb4,g5]@2 [c5,ab5]@2 ~, ~@15 g3@2 ~@6 f4@2 ~@7, ~@16 ab3 ~ g4@2 ~@2 c5@2 ~@2 f5@2 ~@4", // Fm Gm Cm Eb Fm
  B: "[bb5@4 ab5@3 ab5@4 ~ g5@3 ~ g5@20 ab5@3 ~ ab5@3 ~ bb5@3 ~ bb5@3 ~ ab5@3 ab5@3 ~ g5@4 ~]/2",
  C: "[bb5@3 ~ ab5@3 ~ ab5@3 ~ g5@3 g5@20 ~ ab5@3 ab5@3 ~ bb5@3 ~ bb5@3 ~@2 ab5@3 ab5@4 g5@4 ~]/2",
  D: "[ab5@4 g5@3 ~ g5@3 ~ f5@3 ~ f5@15 ab5@4 ~ g5@3 ~ g5@3 f5@3 ~ f5@16 ~, ~@16 g5 ~@47]/2",
  E: "[ab5@3 g5@4 g5@4 f5@3 ~ f5@4 eb5@4 d5@4 eb5@4 g5@4 f5@3 ~ f5@4 eb5@3 ~ eb5@4 d5@4 c5@3 ~ d5@4 eb5@4 f5@3 ~ f5@4 eb5@4 f5@8 bb5@8 f5@4 eb5@4 f5@4 g5@4 f5@7 ~ eb5@8 d5@4 eb5@3 ~ eb5@4 d5@3 ~ eb5@8 bb5@8 eb5@4 d5@4 eb5@4 f5@4 eb5@8 d5@8 c5@4 d5@3 ~ d5@4 c5@4 d5@17]/7",
  F: "[~@4 d5@3 eb5@4 f5@4 eb5@8 ~ d5@7 eb5@63 ~@2]/3",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.9)

// chords · string ensemble 1
const string_ensemble_1_2 = note("<~@6 A@4 B@2 C@4 D E@4 F@2 G@4 H@8 I@2 J@8 K L@4 M N@3 O@6 P@2 ~>".pickRestart({
  A: "[a3@15 bb3@16 b3@13 ~@3 bb3@7 ~ a3@7 ~ a3@24 d4@8 a3@31 ~@2, d3@61 ~@2 d3@63 ~@2]/4",
  B: "[a3@23 d4@8 ~ a3@32, d3]/2", C: "[b3@24 d4@7 b3@23 ~ d4@8 c4@17 b3@15 a3@15 ~ g3@14 ~@3, g3@63 e3@61 ~@4]/4",
  D: "~@15 g4@5 f4@3 ~ f4@3 ~ e4@3 ~, g3@3 ~, d4@21 ~@11",
  E: "[~@9 d4@7 db4@7 d4@6 ~@3 db4@14 ~ g4@5 f4@3 f4@4 e4@3 ~ e4@15 ~ f4@8 g4@8 ~ a4@31 ~, e4@9 ~@86 d4@32 ~, ~ g3@29 ~ g3@64 ~@33]/4",
  F: "[[f4,ab4]@31 [c4,g4]@16 [a3,e4]@16 d4]/2", G: "[~@15 [g3,d4]@16 c4@24 g4@8 c4@56 ~ g4@7 c4, ~@31 e3@97]/4",
  H: "[~@31 b3@65 eb4@160, ~@31 g4@225]/8", I: "[~@31 f3@16 ~ e3@15 ~, ~@31 c4@33]/2",
  J: "[eb3@15 ~ d3@15 ~ c4@126 [f3,d4]@64 ~ eb4@32 d4, ~@31 f3@126 ~@65 g3@34]/8", K: "~@15 eb4@16 ~",
  L: "[f4@31 ~ g4@15 ~@26 e4@38 f4@8 g4@9, bb3@32 c4@31 ~, ~@47 f4@26 ~@55]/4", M: "[c4,ab4]",
  N: "[[c4,ab4]@31 ~@48 d4@17, ~@31 eb4@35 ~@30, ~@31 g4@32 [f4,ab4]@33, ~@46 c4@32 bb3@15 ~@3]/3", // Fm
  O: "[bb3@63 eb4@63 ~ bb3@35 ~ [bb3,d4]@4 [c4,eb4]@4 [d4,f4]@4 ~ eb4@7 [bb3,d4]@8 ~, g4@126 d4@36 ~@13 c4@7 ~@10]/6", // Bb Cm Dm Bb
  P: "[[bb3,eb4]@63 ~]/2", // Eb5
})).s("gm_string_ensemble_1").gain(0.29).pan(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@3 B A@3 C B@6 D@2 B@5 E F B@3 F B A B G B G H B@3 I J K H L M N O P Q R S Q T@2 U ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@2 x ~@3", C: "~ x ~@2", D: "x!2", E: "~@8 x ~@8 x ~@6 x ~@7",
  F: "x ~@3 x ~@4 x ~@2 x ~@3", G: "~@8 x ~@9 x ~@4 x ~@8", H: "~@7 x ~@9 x ~@6 x ~@7", I: "~@7 x ~@23 x",
  J: "~@7 x ~@9 x ~@6 x ~@3 x ~@3", K: "x ~@7 x ~@8 x ~@6 x ~@6 x", L: "~@8 x ~@8 x ~@5 x ~@7 x", M: "~@8 x ~@14 x ~@8",
  N: "x ~@7 x ~@14 x ~@7 x", O: "~ x", P: "x ~@14 x ~@16", Q: "~@7 x ~@9 x ~@5 x ~@8", R: "~@7 x ~@10 x ~@5 x ~@7",
  S: "~@7 x ~@10 x ~@4 x ~@8", T: "~@8 x ~@8 x ~@5 x ~@8", U: "x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@7 B ~@7 C ~@21 D ~@7 E ~@9>".pickRestart({
  A: "~@10 x ~@2 x ~@2", B: "~@10 x ~ x!3 ~", C: "~@14 x!2", D: "~@27 x ~@4", E: "~@27 x!2 ~@3",
})).gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A@39 B A@5 B A B C A@2 B C D B D@3 B D ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@7 x ~@16 x ~@7", C: "~@8 x ~@14 x ~@8", D: "~@7 x ~@15 x ~@8",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 [~@10 x!3 ~@3] ~@21 [~@19 x ~@3 x ~@8] ~@17>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@53 [~@19 x ~ x ~ x ~ x ~@6] ~@9>").gain(0.36)

// drums · crash
const crash = s("cr").struct("<A ~@21 B C ~@6 A ~@2 D A ~@10 E F G ~@2 A G H I ~@5 J ~@3>".pickRestart({
  A: "x", B: "x!2", C: "x ~@15 x ~@14 x", D: "~@7 x", E: "x ~@4 x ~@4 x ~@5 x ~@15", F: "x ~@6 x", G: "x ~@30 x",
  H: "~@16 x ~@14 x", I: "~@15 x ~@16", J: "~@31 x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A B C D C@5 E C@6 ~@2 F G@4 H I G@2 J F K G@3 L M N L O G P Q R S T U V ~ W X Y Z AA AB AC ~ AD ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@9 x ~@2 x ~@2", C: "x!8", D: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", E: "x!5 ~@3",
  F: "~@2 x ~ x ~ x ~ x ~ x!3 ~ x ~", G: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~",
  H: "x ~@3 x ~ x ~ x ~@3 x ~@2 x ~@3 x ~@2 x ~ x ~@3 x ~@3", I: "~@4 x ~@3 x ~@3 x ~@3 x ~@3 x!2 ~@2 x ~@3 x ~@3",
  J: "x ~ x!3 ~ x ~ x ~ x!3 ~@3", K: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3",
  L: "x ~@3 x ~ x!2 ~@4 x ~@3 x ~@3 x ~ x ~ x ~@3 x ~@3", M: "x ~@3 x ~ x ~ x ~@3 x ~@3 x ~@3 x ~ x!2 ~@4 x ~@3",
  N: "x ~@2 x ~@3 x ~@3 x ~@4 x ~@3 x ~ x ~ x ~@3 x ~@3", O: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~ x ~ x ~@2 x ~@4",
  P: "x ~@10 x ~@20", Q: "~ x!6 ~", R: "~@4 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@4",
  S: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@3 x", T: "~@3 x ~ x ~@2 x ~@2 x ~@3 x ~@3 x ~ x ~ x ~@3 x ~@4",
  U: "~@3 x ~@4 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@4", V: "~@4 x ~@3 x ~@3 x ~@3 x ~@2 x ~@4 x ~@2 x ~@4", W: "~@31 x",
  X: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~ x ~ x ~@3 x ~@3 x", Y: "~@3 x ~ x ~ x ~@3 x ~@3 x ~@4 x ~ x ~ x ~@3 x ~@3",
  Z: "x ~@2 x ~ x ~ x ~@3 x ~@4 x ~@3 x ~ x ~ x ~@2 x ~@3 x",
  AA: "~@3 x ~ x ~ x ~@3 x ~@3 x ~@3 x ~ x ~@2 x ~@2 x ~@3 x",
  AB: "~@4 x ~ x ~ x ~@3 x ~@2 x ~@3 x ~ x ~ x ~@3 x ~@3 x", AC: "~@3 x ~ x ~ x ~@3 x ~@3 x ~@3 x ~ x ~ x ~@3 x ~@4",
  AD: "~@11 x ~@4",
})).gain(0.36)

// drums · bongos
const bongos = s("bongo:4").struct("<~ [~ x] ~@61>").gain(0.63)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@49 [~@3 x] ~@13>").gain(0.63)

// drums · congas
const congas = s("conga:13").struct(`<
  A@3 B A@5 C A D A@3 ~ C@3 ~@2 E F@2 A@3 C A@2 ~@3 G ~ C H I C J C@2 K ~ L M N ~ O ~@3 P Q C R S T@2 U ~@3
// … 142 more lines

More by Clayderman Richard