Strudelify

Chord Change

Camel

KeyG minorTempo66 bpm
0:00/0:00
// Chord Change — Camel
// 66 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: metre changes (7/4 at bar 1, 5/4 at bar 2, 8/4 at bar 2, 9/4 at bar 4, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 110 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(66/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 · overdriven guitar
const overdriven_guitar = note("<~@63 A B A C A B A B A B A B A B A B D E D E D F D F G@2 H ~@20>".pickRestart({
  A: "~@4 [eb3,ab3] ~@7 [eb3,ab3] ~@3", B: "~@4 [f3,bb3] ~@11", C: "~@4 [f3,bb3] ~@7 [f3,bb3] ~@3",
  D: "[eb3,ab3]!2 ~@4 [eb3,ab3]!2 ~@4 [eb3,ab3] ~@3", E: "[f3,bb3]", F: "[f3,bb3]!2 ~@4 [f3,bb3]!2 ~@4 [f3,bb3] ~@3",
  G: "[[eb3,ab3]@3 ~@2 [eb3,ab3]@3 ~ [eb3,ab3]@6 ~@9 [d3,f3]@3 ~ [d3,f3]@3 ~@2 [d3,f3]@6 ~@8 [eb3,ab3]@3 ~ [eb3,ab3]@3 ~@2 [eb3,ab3]@6 ~@8 [c3,f3]@3 ~@2 [c3,f3]@3 ~ [c3,f3]@6 ~@9 [d3,g3]@2]/2", // Ab5 Dm Ab5 F5 G5
  H: "~@2 [d3,g3]@3 ~ [d3,g3]@6 ~@9 [c3,f3]@3 ~ [c3,f3]@3 ~@2 [c3,f3]@6 ~@12", // G5 F5
})).s("gm_overdriven_guitar").gain(0.72).pan(0)

// other · overdriven guitar · "'Stan and"
const overdriven_guitar_2 = note("<~@64 A ~@3 B ~@3 A ~@3 C ~@33>".pickRestart({
  A: "~@9 bb2 d3 f3 bb3 g3 bb3 ~", B: "~@9 bb2 d3 bb3 f3 d3 bb2 ~", C: "~@9 bb2 bb3 ab3 bb3 ab3 bb3 ~",
})).s("gm_overdriven_guitar").gain(0.8).pan(0)

// other · drawbar organ · "Organ-Beg"
const drawbar_organ = note("<A B C D@2 ~@105>".pickRestart({
  A: "~@13 [c4,c5]@2 [b3,b4]@2 [a3,a4]@2 [e4,e5]@4 [c4,c5]@2 ~ [gb4,gb5]@4 [d4,d5]@2 [g4,g5]@4 [d4,d5]@2 ~@3 [b3,b4]@2 [a3,a4]@2 [e4,e5]@3, ~@20 [c4,c5] ~@3", // C B A E C Gb D G …
  B: "~ [c4,c5]@2 ~@2 [gb4,gb5]@3 [d4,d5]@2 [g4,g5]@4 [d4,d5]@2 ~@2 [c4,c5]@2 [b3,b4]@2 [a3,a4]@2 [e4,e5]@3 [c4,c5]@2 ~@2 [gb4,gb5]@4 [d4,d5]@2 [a4,a5]@7 [f4,f5]@4", // C Gb D G D C B A …
  C: "[e4,e5]@8 [c4,c5]@3 [b3,b4]@4 [c4,c5]@3 ~ [a3,a4]@7 [b3,b4]@4 [c4,c5]@8 [d4,d5]@4 [e4,e5]@3 [c4,c5]@3", // E C B C A B C D …
  D: "[~ [bb3,bb4]@8 [c4,c5]@3 [db4,db5]@8 [eb4,eb5]@4 [f4,f5]@4 [gb4,gb5]@3 [c5,c6]@2 [bb4,bb5]@2 [g4,g5]@8 [e4,e5]@3 [c4,c5]@4 [e4,e5]@8 [c4,c5]@3 [a3,a4]@2 [b3,b4] ~@32]/2", // Bb C Db Eb F Gb C Bb …
})).s("gm_drawbar_organ").gain(0.64).pan(1)

// other · rock organ · "Organ-Beg"
const rock_organ = note("<~@4 A@2 B@3 C@4 ~@97>".pickRestart({
  A: "[~@17 c4@2 b3@2 a3@2 e4@4 c4@2 ~ gb4@4 d4@2 g4@4 d4@2 ~@2 c4@2 ~ a3@2 e4@4 c4@2 ~@2 gb4@4 ~ g4@4 d4@2 ~@2 c4@2 b3@2 a3@2 e4@3 c4@2 ~@2 gb4@4 d4@2 a4@7, ~@46 b3@2 ~@13 d4@2 ~@33]/2",
  B: "[f4@4 e4@7 ~ c4@3 b3@4 c4@3 ~ a3@8 b3@3 c4@8 d4@4 e4@3 c4@3 ~ bb3@7 ~ c4@4 db4@7 eb4@4 f4@4 gb4@3 c5@2 bb4@2 g4@8 e4@3 c4@4 e4@7 ~ c4@4 ~ b3 ~ c4@2 b3@2 a3@2 e4@4 c4@2 ~@2 gb4@3 d4@2 g4@4 d4@2 ~@2, ~@57 a3 ~@14]/3",
  C: "[c4@2 ~ a3@2 e4@4 c4@2 ~@2 gb4@4 d4@2 g4@3 d4@2 ~@2 c4@2 b3@2 a3@2 e4@4 c4@2 ~ gb4@4 d4@2 a4@8 f4@3 e4@7 ~ c4@4 b3@3 c4@3 ~ a3@8 b3@3 c4@8 d4@4 e4@4 c4@3 bb3@7 ~ c4@4 db4@7 eb4@4 f4@4 gb4@3 c5@2 bb4@2 g4@8 e4@4 c4@3 e4@7 ~ c4@4 a3@2 b3 ~@23, ~ b3 ~@94]/4",
})).s("gm_rock_organ").gain(0.72).pan(1)

// other · drawbar organ · "Organ-Beg"
const drawbar_organ_2 = note("<~@12 A B C D@2 E F@2 G@3 H@5 I@2 J ~@79>".pickRestart({
  A: "~@25 [c5,e5]@23", B: "[b4,d5] [c5,e5] [b4,d5] [a4,c5]@3 ~@2 [b4,d5]@5 [g4,b4]@24 ~ [c5,e5]@5 [a4,c5]@5",
  C: "~ [f4,a4]@6 [a4,c5]@5 [c5,e5]@4 [a4,c5]@4 [b4,d5]@28", // F Am C Am Bm
  D: "[~@2 [c5,e5]@22 ~ [b4,d5] [c5,e5] [b4,d5] [a4,c5] ~@3 [b4,d5]@6 [g4,b4]@24 ~@34]/2", // C Bm C Bm Am Bm G
  E: "~@29 e5@2 ~ e5@2 f5@2 d5@2 e5@2 c5@2 ~@2 e5@2 g5@2, ~@31 g5@2 ~@15",
  F: "[~ f5@2 d5@2 e5@2 c5@2 d5@30 g5@4 e5@2 f5@2 g5@3 e5@2 f5@2 g5@4 e5@2 f5@2 g5@4 ~ e5@2 d5@4 b4@23, e5 ~@32 f5 ~@14]/2",
  G: "[~@3 a4@4 f4@2 g4@2 a4@4 f4@2 g4@2 a4@3 f4@2 g4@2 a4@4 b4@2 c5@2 b4@30 b4 c5 b4 bb4 b4 [a4,bb4] bb4 a4 ab4 a4 ab4 g4 ab4 g4 gb4 g4 gb4 f4 gb4 f4 e4 f4 [eb4,e4] e4 eb4 d4 eb4 d4 db4@2 d4@6 b3@5 g3@6 b3@6 d4@3 g4@2 ~@2 g4 ab4 g4 gb4 g4 gb4 f4 gb4 f4 e4 f4 [eb4,e4] e4 eb4 d4 eb4 d4 db4 d4 db4]/3", // Bbmaj7 Emaj7
  H: "[c4 db4 c4 b3 c4 b3 bb3 b3 [a3,bb3] bb3 g4@30 ~ f4@5 d4@6 e4@7 c4@4 d4@4 e4@4 f4@5 d4@6 e4@18 ~ f4@6 d4@5 e4@8 c4@3 d4@4 e4@4 f4@6 d4@5 e4@18 ~ d5@6 bb4@6 c5@7 a4@4 bb4@4 c5@3 d5@6 bb4@6 c5@18 ~ d5@5 bb4@6 c5@7]/5", // Bbmaj7
  I: "[a4@4 bb4@4 c5@4 d5@5 c5@3 bb4@3 c5@3 a4@5 g4@5 a4@3 bb4@3 a4@3 f4@5 eb4@23 f4@23]/2", J: "~ c5@47",
})).s("gm_drawbar_organ").gain(0.72).pan(1)

// chords · rock organ · "Organ-Mid"
const rock_organ_2 = note("<~@31 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@47>".pickRestart({
  A: "[ab4,c5]", B: "[g4,bb4]", C: "[eb4,g4]", D: "[d4,f4]",
})).s("gm_rock_organ").gain(0.64).pan(1)

// other · drawbar organ · "Organ-End"
const drawbar_organ_3 = note(`<
  ~@63 A B C D E F G H I J K L M N O P Q R Q R S@4 T@3 U V W X Y Z AA AB AC AD AE AF@2 AG AH AI AJ AK AL AM
>`.pickRestart({
  A: "eb4 d4 ~ c4@39 d4@3 eb4@3", B: "d4", C: "eb4 d4 ~ c4@15 ab4 g4 ~ f4@21 g4@3 ab4@3",
  D: "f4@6 g4 ab4 f4 g4 ab4 bb4 c5 d5 eb5 f5", E: "eb5@33 f5@3 g5@6 f5 g5 ~ f5 eb5 ~", F: "f5@5 d5 f4@8 g4 ab4",
  G: "g4@5 ab4 eb4@8 f4 g4", H: "f4@18 bb4 ab4 ~ bb4@9 d5 c5 ~ d5@15", I: "ab5@15 f5@3 eb5@18 g5@4 eb5@3 g5@4 ~",
  J: "f5@10 d5 bb4 f5 d5 bb5 f5", K: "c6@4 ab5 g5@2 ab5 eb5@2 g5 c5@2 d5 eb5@2",
  L: "d5@24 bb4 ab4 ~ bb4 ~@2 f4 eb4 ~ f4 ~@2 bb4 ab4 ~ bb4 ~@2 d5 c5 ~ d5 ~@2",
  M: "c5@3 d5 eb5 f5 g5 ab5 bb5 g5 ab5 f5 bb5 g5 ab5 f5", N: "bb5 g5 ab5 f5 g5 eb5 f5 d5 bb5 g5 ab5 f5 g5 eb5 f5 d5",
  O: "f5@5 g5 f5 g5 ab5@5 bb5 ab5 bb5", P: "bb5", Q: "c6 ab5 bb5 g5 ab5 f5 g5 eb5 c6 ab5 bb5 g5 ab5 f5 g5 eb5",
  R: "f5 d5 g5 eb5 ab5 f5 bb5 g5 c6 ab5 bb5 g5 ab5 f5 g5 eb5",
  S: "g5 eb5 ~ f5 d5 ~ eb5 c5 ~ d5 bb4 ~ g5 eb5 ~ f5 d5 ~ eb5 c5 ~ d5 bb4 ~ g5 eb5 ~ f5 d5 ~ eb5 c5 ~ d5 bb4 ~ g5 eb5 ~ f5 d5 ~ eb5 c5 ~ d5 bb4 ~",
  T: "[eb5@5 c5@4 ab4@6 eb5@3 c5@3 ab4@3 d5@4 bb4@4 ~ f4@14 eb5@4 c5@4 ~ ab4@6 eb5@3 c5@2 ab4@3 e5@4 ~ c5@4 a4@6 e5@3 c5@3 a4@3 d5@4 b4@4 g4@15 e5@4 c5@4 ~ a4@6 e5@2 c5@3 a4@3 db5 ~ a4 gb4]/3",
  U: "~ db5 a4 ~ gb4 db5 a4 ~ db5 a4 ~ gb4 db5 ~ a4 gb4 ~ a4 db5 ~ b4 ab4 e4 ~ b4 ab4 ~ e4 b4@2 ab4 b4 ~ ab4 e4 ~ b4 ab4 e4@2 ab4 b4 ~ db5 a4 ~ gb4 db5",
  V: "~ a4 gb4 ~ db5 a4 ~ db5 a4 gb4 ~ db5 a4 ~ gb4 a4 ~ db5 b4 ~ ab4 e4 ~ b4 ab4 e4 ~ b4 ab4 ~ b4 ab4 ~ e4 b4@2 ab4 e4 ~ ab4 b4 db5 ~ a4 gb4 ~ db5 a4",
  W: "~@2 db5 ~ a4 db5 ~ a4 gb4 db5 ~ a4 gb4 ~ a4 db5 ~ b4 ab4 ~ e4 b4 ~ ab4 e4 b4@2 ab4 b4 ~ ab4 e4 ~ b4 ab4 ~ e4 ab4 ~ b4 db5 a4@2 gb4 db5 ~ a4 gb4, ~ gb4@2 ~@45",
  X: "~ db5 a4 ~ db5 a4 ~ gb4 db5 ~ a4 gb4 a4 ~ db5 d5 ~ b4 g4 ~ d5 b4 ~ g4 d5 ~ b4 d5 b4@2 g4 d5 ~ b4 g4 ~ b4 d5 ~ e5 db5 ~ a4 e5 db5 ~ a4 e5",
  Y: "~ db5 e5 ~ db5 a4 ~ e5 db5 ~ a4 db5 e5 ~ gb5 d5 ~ b4 gb5 ~ d5 b4 ~ gb5 d5 ~ gb5 d5 b4 ~ gb5 d5 ~ b4 d5 ~ gb5 ab5 ~ e5 db5 ~ ab5 e5 db5 ~@2 e5, ~@23 ab5",
  Z: "~ ab5 e5 ~ db5 ab5@2 e5 db5 ~ e5 ab5 ~ a5 gb5 d5 ~ a5 gb5 ~ d5 a5 ~ gb5 a5 ~ gb5 d5 ~ a5 gb5 d5 ~ gb5 a5 ~ b5 ab5 ~ e5 b5 ~ ab5 e5 ~ b5 ab5 b5",
  AA: "~ ab5 e5 ~ b5 ab5 ~ e5 ab5 ~ b5 db5 ~ a4 gb4 db5 ~ a4 gb4 ~ db5 a4@2 db5 a4 ~ gb4 db5 ~ a4 ~ a4 ~ db5 d5 ~ b4 g4 ~ d5 b4 ~ g4 d5 ~ b4 d5 b4, ~@15 gb4 ~@8",
  AB: "~ g4 d5 ~ b4 g4 ~ b4 d5 ~ e5 db5 ~@2 e5 ~ db5 a4 e5 ~ db5 e5 ~ db5 a4 ~ e5 db5 ~ a4 db5 ~ e5 gb5 d5 ~ b4 gb5 ~ d5 b4 ~ gb5 d5 ~ gb5 d5 ~, ~@13 a4@2 ~@33",
  AC: "b4 gb5 d5 ~@2 d5 ~ gb5 ab5 ~ e5 db5 ~ ab5 e5@2 db5 ab5 e5 ~ ab5 e5 ~ db5 ab5 ~ e5 db5 ~ e5 ab5 ~ a5 ~ d5 ~ a5 gb5 ~@2 a5 ~ gb5 a5 ~ gb5 d5 ~, ~@4 b4@2 ~@27 gb5@2 ~@4 d5@2 ~@7",
  AD: "a5 gb5 d5 ~ gb5 a5@2 b5 ab5 ~ e5 b5 ~ ab5 e5 ~ b5 ab5 ~ b5 ab5 e5 ~ b5 ab5 ~ e5 ab5 ~ b5 gb5 d5 b4 ~ gb5 d5 ~ b4 gb5 ~ d5 gb5 ~ d5 b4 gb5 ~ d5",
  AE: "b4 ~ d5 gb5 ~ ab5 e5 ~ db5 ab5 ~ e5 db5 ab5 ~ e5 ab5 ~ e5 db5 ~ ab5 e5@2 db5 e5@2 ab5 a5 gb5 ~ d5 a5 ~ gb5 d5 ~ a5 gb5 ~ a5 gb5 ~ d5 a5 gb5 ~ d5",
  AF: "[gb5 ~ a5 b5 ~ ab5 e5 ~@2 ab5 ~@2 b5 ab5 ~ b5 ab5 ~ e5 b5 ~ ab5 e5 ~ ab5 b5 ~ gb5 d5 ~ b4 gb5 d5 ~ b4 gb5@2 d5 gb5 ~ d5 b4 ~ gb5 d5 ~ b4 ~ gb5 ~ ab5 e5 ~ db5 ab5 ~ e5 db5 ~ ab5 e5 ~ ab5 e5 db5 ~ ab5 e5 ~ db5 e5 ~ ab5 a5 ~ gb5 d5 ~@2 gb5 d5 ~@2 gb5 ~@2 gb5 ~ d5 a5 ~ gb5 d5 ~ gb5 a5, ~@8 b5@2 ~ e5@2 ~@34 d5@2 ~@29 a5@2 ~@2 a5@2 ~ a5@2 ~@9]/2",
  AG: "b5 ~ ab5 e5@2 b5 ab5 ~ e5 b5 ~ ab5 b5 ~ ab5 e5 b5 ~ ab5 e5 ~ ab5 b5 ~ gb5 d5 ~ b4 gb5 ~ d5 b4 ~ gb5 d5 gb5 ~@2 b4 ~ gb5 d5 ~ b4 d5 ~ gb5 ab5, ~@37 d5@2 ~@9",
  AH: "~ e5 db5 ab5 ~ e5 db5 ~ ab5 e5 ~ ab5 e5@2 db5 ab5 ~ e5 db5 e5 ~ ab5 a5 ~ gb5 d5 ~ a5 gb5 ~ d5 a5 ~ gb5 a5 gb5 ~ d5 a5 ~ gb5 d5 ~ gb5 a5 ~ b5 ab5",
  AI: "~ e5 b5 ab5 ~ e5 b5 ~ ab5 b5 ~ ab5 e5 ~ b5 ab5 ~ e5 ab5 b5 ~ gb5 d5 b4 ~ gb5 d5 b4 ~ gb5 d5 ~ gb5 d5 ~ b4 gb5 ~ d5 b4 ~ d5 gb5 ~ ab5 e5 db5 ~",
  AJ: "ab5 e5 ~ db5 ab5 ~ e5 ab5 ~ e5 db5 ~ ab5 e5 db5 ~ e5 ab5 ~@2 gb5 ~ d5 a5 ~ gb5 d5 ~ a5 gb5 a5 ~ gb5 d5 ~ a5 gb5 ~@2 gb5 ~ a5 b5 ~ ab5 e5 b5 ~, ~@19 a5@2 ~@17 d5@2 ~@8",
  AK: "ab5 e5 ~ b5 ab5 ~ b5 ab5 ~ e5 b5 ~ ab5 e5 ab5 ~ b5 gb5 ~ d5 b4 ~@2 d5 ~ b4 gb5 ~ d5 gb5 d5 ~ b4 gb5 ~ d5 b4@2 d5 gb5@2 ab5 e5 ~ db5 ab5 ~ e5, ~@11 gb5 ~@12",
  AL: "db5 ab5 ~ e5 ab5 ~ e5 db5@2 ab5 e5 ~ db5 e5 ~ ab5 a5 gb5 ~ d5 a5 ~ gb5 d5 ~ a5 gb5 ~ a5 gb5@2 d5 a5 gb5 ~ d5 gb5 ~ a5 b5 ~@2 e5 ~ b5 ab5 ~ e5, ~@41 ab5@2 ~@5",
  AM: "b5 ab5 ~ b5 ab5 ~ e5 b5 ~ ab5 e5 ~ ab5 ~@35",
})).s("gm_drawbar_organ").gain(0.72).pan(1)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A@2 B C@3 D@3 E@3 F G@2 H I@4 J@4 K L@3 M N ~ O P Q R S P Q R T P Q R S U Q V W X Y Z AA AB AC AD AE AF AG AH AI AF AJ
  AK AL@6 AM AL@9 AN AO AN AP AQ AR AQ AR AS@2 AT AU@2 AV AW@4 AX AY AZ BA BB BC BD@2 BE BF BG BH BI
>`.pickRestart({
  A: "[~@13 a2@2 ~@2 a2@2 ~@2 a2@2 ~ a2@2 d2@2 ~@2 d2@2 g2@2 ~@2 g2@2 ~@2 a2@2 ~ a2@2 ~@2 a2@2 ~@2 a2@2 d2@2 ~ d2@2 g2@2 ~@2 g2@2 ~@2 a2@2 ~@2 a2@2 ~ a2@2 ~@2 a2@2 d2@2 ~@2 d2@2 f2@7 c2@4]/2",
  B: "f1@8 f2@3 c2@4 f1@3 ~ d2@7 a2@4 d3@8 a2@4 f2@6",
  C: "[~ gb2@8 db2@3 gb1@8 gb2@4 db2@4 gb2@3 e2 ~ e2 ~ c2@4 ~@4 c2@3 c2@4 f2@8 gb2@3 g2@3 ~ a2@2 ~@2 a2@2 ~@2 a2@2 ~@3 d2@2 ~@2 d2@2 g2@2 ~@2 g2@2 ~@2 a2@2 ~ a2@2 ~@2 a2@2 ~@2 a2@2 d2@2 ~@3 g2@2 ~@2 g2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@2 ~ a2@2 d2@2 ~@2 d2@2 f2@7, ~@77 a2@2 ~@30 d2@2 ~@33]/3",
  D: "[c2@4 f1@8 f2@3 c2@4 f1@3 ~ d2@8 a2@3 d3@8 a2@4 f2@7 gb2@8 db2@4 gb1@7 gb2@4 db2@4 gb2@3 e2 ~ e2 ~ c2@4 ~@4 c2@3 c2@4 f2@8 gb2@4 g2@3 a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@2 d2@2 ~ d2@2 g2@2 ~@2 g2@2 ~@2]/3",
  E: "[a2@2 ~ a2@2 ~@2 a2@2 ~@2 a2@2 d2@2 ~@2 d2@2 g2@2 ~ g2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@2 ~ a2@2 d2@2 ~@2 d2@2 f2@8 c2@3 f1@8 f2@4 c2@3 f1@3 ~ d2@8 a2@3 d3@8 a2@4 f2@7 gb2@8 db2@4 gb1@7 gb2@4 db2@4 gb2@3 e2 ~ e2 ~ c2@4 ~]/3",
  F: "~@3 c2@4 c2@3 f2@8 gb2@4 g2@3 g2@6 g2@2 g2@2 g2@2 g2@5 g2@2 g2@2 g2@2",
  G: "[d2@4 c2@3 ~ g2@5 g2@2 g2@2 g2@2 g2@6 g2 g2@2 g2@2 c3@4 d3@3 ~ g2@5 g2@2 g2@2 g2@2 g2@6 g2@2 g2@2 ~ d2@4 c2@3 ~ g2@6 g2 g2@2 g2@2 g2@6 g2@2 g2@2 g2@2 c3@3 d3@2, ~@59 g2@2 ~@35]/2",
  H: "~@2 g2@6 g2@2 g2@3 g2@6 g2@2 g2@4 d2@4 c2@3 g1@6 g1@2 g1@4 g1@4",
  I: "[~ g1@2 g1@2 g1@2 d2@4 d2@3 g1@6 g1@2 g1@4 g1@5 g1@2 g1@4 c2@4 d2@4 g2@5 g2@2 g2@4 g2@6 g2 g2@4 c3@4 d3@3 ~ g2@5 g2@2 g2@4 g2@6 g2@2 g2@3 d2@4 c2@3 ~ g1@6 g1@2 g1@3 g1@6 g1@2 g1@2 g1@2 d2@3 d2@4 g1@6 g1@2 g1@3 g1@6 g1@2 g1@4 c2@4 d2@3 g2@6 g2@2 g2@4 g2@5 g2@2 g2@4 c3@4]/4",
  J: "[d3@3 g2@6 g2@2 g2@4 g2@5 g2@2 g2@4 d2@4 c2@3 ~ g1@5 g1@2 g1@4 g1@6 g1@2 g1 g1@2 d2@4 d2@4 g1@5 g1@2 g1@4 g1@6 g1@2 g1@3 c2@4 d2@4 g2@6 g2@2 g2@3 g2@6 g2@2 g2@4 c3@3 d3@3 ~ g2@6 g2@2 g2@3 g2@6 g2@2 g2@4 d2@4 c2@3 g1@6 g1@2 g1@4 g1@5 g1@2 g1@2 g1@2 d2@4 d2@4 g1@5 g1@2]/4",
  K: "g1@4 g1@5 g1@2 g1@4 c2@4 d2@4 g2@5 g2@2 g2@4 g2@6 g2@2 g2@3 c3@3",
  L: "[~ d3@3 ~ g1@6 g1 g1@4 g1@6 g1@2 g1@3 c2@4 d2@4 g2@6 g2@2 g2@3 g2@6 g2@2 g2@4 c3@3 d3@3 ~ eb2@6 eb2@2 eb2@4 eb2@5 eb2@2 eb2@4 g2@4 bb2@3 eb3@6 eb3@2 eb3@4 eb3@5 eb3@2 eb3@4 bb2@4 bb2@3 ~ eb2@5 eb2@2 eb2@4 eb2@6 eb2]/3",
  M: "eb2@4 g2@4 bb2@4 eb2@11 d2@8 c2@11 bb1@6", N: "~@2 ab1@23 bb1@8 ~@15", O: "f2@5 ~ c2@2 f2@4 c2 ~ f2 ~",
  P: "eb2@5 ~ bb1 ~ eb2@4 bb1@3 ~", Q: "c2@3 g1 c2@2 g1 c2", R: "bb1@3 f1 bb1@2 f1 bb1",
  S: "f2@5 ~ c2 ~ f2@4 c2 ~ f2@2", T: "f2@5 ~ c2@2 f2@4 c2 ~ f2@2", U: "eb2@6 bb1 ~ eb2@4 bb1@3 ~",
  V: "bb1@6 f1@2 bb1@4 f1@2 bb1 ~", W: "f2@5 ~ f2!2 ~@4 c3@2 f2 ~", X: "eb2@5 ~ eb2!2 ~@4 bb1 ~ eb2 ~",
  Y: "c2@4 ~@2 eb2@3 ~ f2 ~ g2@2 ~@2", Z: "bb1@5 ~ bb1!2 ~@4 f2 ~ bb1 ~", AA: "f2@2 ~ f2!2 ~@7 c3 ~ f2 ~",
  AB: "eb2@2 ~ eb2!2 ~@7 bb1 ~ eb2 ~", AC: "c2@4 ~@2 eb2@3 ~ f2@2 g2@2 ~@2", AD: "bb1@2 ~ bb1!2 ~@7 f2 ~ bb1 ~",
  AE: "f2@5 ~ c2 f1 ~@4 f2 ~ c2 ~", AF: "eb2@5 ~ eb2 ~@5 bb2 ~ eb2 ~", AG: "c2@4 ~@2 eb2@4 f2 ~ g2@3 ~",
  AH: "bb1@5 ~ bb1 ~@3 c2 ~ d2@2 eb2@2", AI: "f2@5 ~ c2 f1 ~@4 f2@2 c2@2", AJ: "c2@4 ~@2 g2@3 ~ f2 ~ eb2@2 c2@2",
  AK: "bb1@5 ~ bb1 ~@3 c2@2 d2@2 eb2@2", AL: "bb1@5 ~ bb1@4 f1@2 bb1@2 f1@2", AM: "bb1@2 ~ bb1@2 f1 bb1 f1",
  AN: "bb1!2 ~@4 bb1!2 ~@4 bb1 ~ f1 ~", AO: "bb1@6 bb2@3 f2 ab2 f2 eb2 db2 bb1 ab1",
  AP: "bb1@6 bb2@3 bb2 f3 bb2 db3 bb2 f2 ~", AQ: "bb1!2 ~@4 bb1!2 ~@4 bb1 ~@3", AR: "bb2!2 ~@4 bb2!2 ~@4 bb2 ~@3",
  AS: "[bb1@3 ~@2 bb1@3 ~ bb1@6 f2@3 eb2@3 f2@3 bb2@3 ~ bb2@3 ~@2 bb2@5 f2@3 eb2@3 f2@3 bb1@3 ~ bb1@3 ~@2 bb1@6 f2@3 eb2@2 f2@3 g1@3 ~@2 g1@3 ~ g1@6 d2@3 c2@3 d2@3 g2@2]/2",
  AT: "~@2 g2@3 ~ g2@6 d2@3 c2@3 d2@3 g1@3 ~ g1@3 ~@2 g1@6 d2@2 c2@3 d2@3 e1@3 ~",
  AU: "[~ e1@3 ~ e1@6 a1@3 b1@3 a1@3 e2@3 ~ e2@3 ~ e2@6 b1@3 d2@3 b1@3 e1@3 ~ e1@3 ~@2 e1@5 a1@3 b1@3 a1@3 e2@3 ~@2 e2@3 ~ e2@6 b1@3 a1@3 b1@2 e1@3 ~@2 e1@2]/2",
  AV: "~@2 e1@6 a1@3 b1@3 a1@3 e1@3 ~ e1@3 ~ e1@6 a1@3 b1@3 a1@3 e2@3 ~ e2@3 ~",
  AW: "[~ e2@6 b1@3 d2@2 b1@3 e1@3 ~@2 e1@3 ~ e1@6 a1@3 b1@3 a1@3 e1@3 ~ e1@3 ~ e1@6 a1@3 b1@3 a1@3 e2@3 ~ e2@3 ~@2 e2@5 db2@3 b1@3 db2@3 e2@3 ~@2 e2@3 ~ e2@6 a2@3 bb2@3 b2@3 e2@3 ~ e2@3 ~ e2@6 db2@3 b1@3 db2@3 e2@3 ~ e2@3 ~@2 e2@5 db2@3 b1@3 db2 ~@2 e2@3 ~ e2@3 ~@2 e2@6 db2@3 b1@2 db2@3 e2@3 ~@2 e2@3 ~ e2@5]/4",
  AX: "~ a2@3 bb2@3 b2@3 e2@3 ~ e2@3 ~ e2@6 db2@3 b1@3 db2@3 e2@4 ~@2 e2 ~@2 e2@6",
  AY: "db2 ~ b1@3 db2@3 e2@4 ~@2 e2 ~@2 e2@6 a2 ~@2 bb2@3 b2@3 e2@4 ~ e2 ~@2 e2@6 db2@2",
  AZ: "~ b1@3 db2@3 e2@4 ~@2 e2 ~@2 e2@5 db2@3 b1@3 db2 ~@2 e2@4 ~@2 e2 ~@2 e2@6 db2 ~@2",
  BA: "b1@3 db2@2 e2@4 ~@2 e2 ~@2 e2@6 a2 ~@2 bb2@3 b2@3 e2@4 ~@2 e2 ~ e2@6 db2@3 b1@2",
  BB: "~ db2@3 e2@4 ~@2 e2 ~@2 e2@6 db2@3 b1@2 db2 ~@2 e2@4 ~ e2 ~@2 e2@5 db2@3 b1@3 db2@2",
  BC: "~ e2@4 ~@3 e2 ~ e2@6 a2 ~@2 bb2@3 ~ b2@3 e2@4 ~@2 e2 e2@6 db2@3 b1@3 db2@3",
  BD: "[e2@4 ~@3 e2 e2@6 ~@3 b1@3 ~@2 db2 e2@4 ~@2 e2 ~@2 e2@6 db2 ~@2 b1@2 db2@3 e2@4 ~@2 e2 ~@2 e2@6 a2 ~@2 bb2@3 b2@3 e2@4 ~ e2 ~@2 e2@6 db2@3 b1@3 db2@3 e2@3, ~@16 db2@3 ~@77]/2",
  BE: "~@3 e2 ~@2 e2@5 db2@3 b1@3 db2 ~@2 e2@4 ~@2 e2 ~@2 e2@6 db2 ~@2 b1@3 db2@3 e2@4",
  BF: "~ e2 ~@2 e2@6 a2 ~@2 bb2@3 b2@3 e2@4 ~@2 e2 ~@2 e2@5 db2@3 b1@3 db2@3 e2@4 ~@2",
  BG: "e2 ~@2 e2@6 db2@3 b1@2 db2 ~@2 e2@4 ~@2 e2 ~@2 e2@6 db2 ~@2 b1@3 db2@3 e2@4 ~@2 e2",
  BH: "~ e2@6 a2@3 bb2@3 b2@3 e2@4 ~@2 e2 ~@2 e2@6 db2@2 b1@3 db2@3 e2@4 ~@2 e2 ~@2", BI: "e2@6 db2@3 b1@3 db2 ~@35",
})).s("gm_electric_bass_pick").gain(0.8)

// drums · kick
const kick = s("bd").struct(`<
  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 AA AB AC ~@2 AD AE AD@3 AE AD AF AD AE AD AG AD AE AD AH AI AJ AE
  AJ AI AJ AE AJ AK AE AL AM AI AJ AE AJ AN AO AN@3 AP AN AQ AN AE AN AE AN@2 AR AE AS AT AS AU ~@4 AV AW ~ AX AY AZ BA
  BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP ~
>`.pickRestart({
  A: "~@13 x ~@7 x ~@6 x ~@7 x ~@3 x ~@6 x", B: "~@7 x ~@6 x ~@3 x ~@6 x ~@7 x ~@3 x ~@6 x ~@3", C: "~@19 x ~@6 x ~@21",
  D: "~ x ~@7 x ~@10 x ~@12 x ~@9 x ~@4", E: "~@2 x ~@7 x ~@6 x ~@7 x ~@6 x ~@7 x ~@3 x ~@3",
  F: "~@3 x ~@7 x ~@6 x ~@3 x ~@7 x ~@6 x ~@3 x ~@6", G: "x ~@22 x ~@7 x ~@16", H: "~@5 x ~@7 x ~@10 x ~@12 x ~@9 x",
  I: "~@6 x ~@7 x ~@6 x ~@7 x ~@6 x ~@7 x ~@3", J: "x ~@6 x ~@7 x ~@6 x ~@3 x ~@7 x ~@6 x ~@3 x ~@2",
  K: "~@5 x ~@21 x ~@7 x ~@12", L: "~@9 x ~@7 x ~@10 x ~@12 x ~@6", M: "~@3 x ~@6 x ~@7 x ~@6 x ~@5 x ~@5 x ~@4 x ~@5",
  N: "x ~@3 x ~@3 x ~@4 x ~@5 x ~@5 x ~@4 x ~@3 x ~@3 x ~@4 x ~@4",
  O: "~ x ~@5 x ~@4 x ~@3 x ~@3 x ~@5 x ~@4 x ~@5 x ~@5 x ~@2 x ~", P: "~@2 x ~@7 x ~@10 x ~@10 x ~@7 x ~@4 x ~@2",
  Q: "~ x ~@3 x ~@3 x ~@4 x ~@7 x ~@10 x ~@11 x ~@2", R: "~@4 x ~@10 x ~@11 x ~@6 x ~@11 x ~",
  S: "~@9 x ~@7 x ~@10 x ~@10 x ~@7 x", T: "~@10 x ~@10 x ~@7 x ~@10 x ~@7", U: "~@3 x ~@7 x ~@10 x ~@11 x ~@6 x ~@6",
  V: "~@5 x ~@10 x ~@6 x ~@11 x ~@10 x ~", W: "~@6 x ~@10 x ~@10 x ~@7 x ~@10 x", X: "~@10 x ~@7 x ~@10 x ~@11 x ~@6",
  Y: "x ~@10 x ~@11 x ~@6 x ~@11 x ~@5", Z: "~@5 x ~@6 x ~@11 x ~@10 x ~@7 x ~@4", AA: "~@6 x ~@10 x ~@11 x ~@17 x",
  AB: "~@5 x ~@5 x ~@18 x ~@10 x ~@6", AC: "~ x ~@2", AD: "x ~@2 x!2 ~@2 x", AE: "x ~@2 x ~@4",
  AF: "x ~@17 x ~@5 x ~@18 x ~@4", AG: "x ~@2 x!5", AH: "x ~@5 x ~ x ~ x ~ x!3 ~", AI: "x ~@5 x!2 ~@6 x ~",
  AJ: "x ~@5 x!2 ~@8", AK: "x ~@2 x ~@3 x", AL: "x ~@2 x ~ x!2 ~", AM: "x ~@5 x!10", AN: "x ~@2 x ~ x ~ x",
  AO: "x ~@5 x ~@3 x!2 ~@2 x ~", AP: "x ~@3 x!3 ~@3 x ~@3 x ~", AQ: "x ~@3 x!3 ~@9", AR: "x ~@3 x!2 ~@4 x ~@3 x ~",
  AS: "~@7 x", AT: "~@3 x ~@3 x", AU: "~@6 x ~@4 x ~@3 x", AV: "~@3 x ~@4", AW: "~@17 x ~@22 x ~@7",
  AX: "~@14 x ~@22 x ~@10", AY: "~ x ~ x", AZ: "~@11 x ~@22 x ~@13", BA: "~@10 x ~@22 x ~@5 x ~@3 x ~@3 x",
  BB: "~@14 x ~@5 x ~@5 x ~@4 x ~ x ~@3 x ~@5 x ~@4", BC: "~ x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x",
  BD: "~@5 x ~@5 x ~@3 x ~@18 x ~@5 x ~@5 x ~", BE: "~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@3 x ~@10",
  BF: "~@8 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4", BG: "~ x ~@28 x ~@3 x ~@13",
  BH: "~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~", BI: "~@27 x ~@3 x ~@16",
  BJ: "~@2 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4", BK: "~@24 x ~@3 x ~@18 x",
  BL: "~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@7", BM: "~@21 x ~@3 x ~@18 x ~@3",
  BN: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@6 x ~@10", BO: "~@17 x ~@4 x ~@18 x ~@5 x",
  BP: "~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@14",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  A B C D E F G H I J K L M ~@2 N O P Q R S T U V W X Y Z AA ~@2 AB AC AB@3 AC AB AD AB@7 AE AB@3 AF AB AG AB AC AB@3 AH
  AB@3 AC AB@3 AI AJ AK AL AM AL AN AJ AO AJ AI AK AP AQ AR AQ AS AQ@4 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI
  BJ BK BL BM BN BO ~
>`.pickRestart({
  A: "~@17 x ~@6 x ~@7 x ~@10 x ~@4", B: "~@3 x ~@6 x ~@11 x ~@6 x ~@11 x ~@4 x ~",
  C: "~@4 x ~ x ~@16 x ~@4 x ~@9 x!10", D: "x ~@4 x ~@5 x ~@4 x ~@7 x ~@3 x ~@2 x ~ x ~@5 x ~@6 x ~",
  E: "~@13 x ~ x ~@5 x ~@7 x ~@6 x ~@10 x", F: "~@7 x ~@6 x ~@11 x ~@6 x ~@11 x ~@2",
  G: "~@2 x ~@5 x ~ x ~@16 x ~@4 x ~@9 x!6", H: "x!5 ~@4 x ~@5 x ~@4 x ~@7 x ~@3 x ~@2 x ~ x ~@5 x ~@4",
  I: "~@2 x ~@15 x!2 ~@5 x ~@7 x ~@6 x ~@7", J: "~@3 x ~@7 x ~@7 x ~@10 x ~@6 x ~@10",
  K: "~ x ~@4 x ~@5 x ~ x ~@16 x ~@5 x ~@8 x!2", L: "x!9 ~@4 x ~@5 x ~@4 x ~@7 x ~@3 x ~@2 x ~ x ~@5 x",
  M: "~@7 x ~@14 x ~ x ~@23", N: "~@6 x ~@6 x ~ x ~@9 x ~@3 x ~@6 x ~@11", O: "~@18 x ~@7 x ~ x ~@8 x ~@3 x ~@6",
  P: "x ~@7 x ~ x ~@8 x ~ x ~ x ~@7 x ~@6 x ~ x ~@7", Q: "~ x ~@3 x ~@7 x ~@6 x ~ x ~@9 x ~@2 x ~@7 x ~@4",
  R: "~@2 x ~ x ~@9 x ~@3 x ~@6 x ~@7 x ~ x ~@8 x ~ x ~", S: "x ~@6 x ~@7 x ~ x ~@8 x ~@3 x ~@6 x ~@7 x ~ x",
  T: "~@8 x ~@3 x ~@7 x ~@6 x ~ x ~@8 x ~@3 x ~@5", U: "~@2 x ~@6 x ~ x ~@9 x ~ x!2 ~@7 x ~@6 x ~ x ~@6",
  V: "~@3 x ~@3 x ~@6 x ~@7 x ~ x ~@8 x ~@3 x ~@6 x ~@3", W: "~@4 x ~ x ~@8 x ~@3 x ~@6 x ~@7 x ~ x ~@8 x ~ x",
  X: "~ x ~@7 x ~@6 x ~ x ~@8 x ~@3 x ~@7 x ~@6 x ~", Y: "x ~@5 x!3 ~ x!4 ~ x!2 ~@4 x ~@7 x ~@10 x ~@3 x ~@3",
  Z: "~@22 x ~ x ~ x ~@6 x ~@7 x ~@6", AA: "~ x!2 ~@9", AB: "~ x ~ x", AC: "~@4 x ~@4 x ~@6",
  AD: "~@37 x ~ x ~ x ~ x ~ x ~ x", AE: "~@4 x ~@4 x ~@2 x ~@3", AF: "~@4 x ~@3 x!2 ~@6", AG: "~@12 x ~@23 x!2 ~@10",
  AH: "~@4 x ~@3 x!8", AI: "~@3 x!2 ~@7 x ~@3", AJ: "~@4 x!2 ~@6 x ~@3", AK: "~@3 x", AL: "~@3 x!3 ~@6 x ~@3",
  AM: "~@3 x ~@4", AN: "~@4 x!2 ~@10", AO: "~@9 x ~@2 x ~@11 x!2 ~ x ~@20", AP: "~@4 x!2 ~@2 x!8",
  AQ: "x!2 ~@4 x!2 ~@4 x ~@3", AR: "~ x ~@2", AS: "~@2 x ~@2 x!3", AT: "x ~@4 x!2 ~@5 x ~@11 x ~@3 x ~ x ~@16 x",
  AU: "~@3 x ~ x ~@5 x!11 ~ x ~@3 x!2 ~@5 x ~@10 x ~@2", AV: "~@2 x ~ x ~@16 x ~@4 x!2 ~@16 x ~@3",
  AW: "~ x!2 ~@5 x ~@11 x ~@3 x!2 ~@5 x ~@11 x ~@3 x", AX: "~ x ~@5 x ~@10 x ~@4 x!2 ~@5 x ~@10 x ~@4 x!2",
  AY: "~@5 x ~@11 x ~@3 x ~ x ~@4 x ~@11 x ~@3 x ~ x ~", AZ: "~@4 x ~@10 x ~@4 x!2 ~@5 x ~@20",
  BA: "~@2 x!13 ~@2 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~", BB: "~@4 x!2 ~@4 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@2",
  BC: "~@2 x ~@5 x ~@11 x!2 ~@7 x ~@7 x ~@5 x ~ x ~@2", BD: "~@4 x!2 ~ x!2 ~@9 x ~ x!13 ~@9 x!2 ~@4",
  BE: "~@2 x ~@8 x ~@5 x!2 ~@7 x!2 ~ x!2 ~@9 x ~ x!6", BF: "x!6 ~ x ~@3 x!2 ~@26 x!2 ~@6 x",
  BG: "~@8 x ~@5 x!2 ~@7 x!2 ~ x!2 ~@9 x!2 ~ x!8", BH: "x!3 ~ x ~@3 x!2 ~@25 x ~ x ~@6 x ~@3",
// … 137 more lines

More by Camel