Strudelify

Stay (I Missed You)

Lisa Loeb

KeyD♭ majorTempo81 bpm
0:00/0:00
// Stay (I Missed You) — Lisa Loeb
// 81 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(81/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 · acoustic guitar steel · "ACOUSTIC GUIT 1"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D A B C E A B C D F@4 G H F@2 A B I J K L M ~@8 N O P Q R@4 S T F U V W X Y A B C D A B C Z@3 ~
>`.pickRestart({
  A: "~ eb5@7, db4, ~ ab4@15", B: "~ bb4@3, bb3, ~ f4@2 f4@13, ~ ab4@7",
  C: "~@3 eb3 ~@3 f3, eb3@3 ~ f3@3 ~, ~ eb4@3 ~ eb4@3, ~ bb4 ~ c5",
  D: "[gb3,gb4]@3 ~ db5 ~ [gb4,db5,ab5]@10, ~@3 gb3@12 ~, ~@3 gb4@3 ~@10", E: "~@3 db5 ~ db5 [gb4,db5,ab5]@10, gb3@3 ~",
  F: "[db3,eb3,gb3,ab3,db4]@3 [db3,f3,ab3,db4] ~@2 [db3,f3,ab3,db4]@3 [db3,f3,ab3,db4] ~ [db3,f3,ab3,db4] [db3,eb3,gb3,ab3,db4] [db3,f3,ab3,db4] ~@2", // Dbsus4 Db Dbsus4 Db
  G: "[db4,gb4,ab4,db5]@3 [db4,gb4,ab4,db5]!2 ~ [db4,gb4,ab4,db5]@9 [a3,db4,gb4,a4]", // Dbsus4 Gbm
  H: "[a3,db4,gb4,a4]@3 [a3,db4,gb4,a4]@5", I: "eb4 ~ bb4@2 f4 ~ c5@2, ~@2 eb4@6 ~@3 ab4@5, ~@3 gb4@5 ~@2 f4@6",
  J: "gb4 ~ db5@2 db4 ~ ab4@2, ~ gb4@3 ~ db4@3, ~@3 bb4@5 ~@3 f4@5",
  K: "~@2 db4 eb4 bb4 gb4 db4@4 ~ ab4 c5 ab4 db4@2, ~@5 f4 ~@2",
  L: "[db5,eb5,ab5]@3 db5 [db5,eb5,ab5] ~ [db5,eb5,ab5]@3 db5 [db5,eb5,ab5] ~ [db5,eb5,ab5] db5 [db5,eb5,ab5] ~", // Dbsus2
  M: "[db5,eb5,ab5]@3 db5 [db5,eb5,ab5] ~ [db5,eb5,ab5]@3 db5 [db5,eb5,ab5] ~ [db5,eb5,ab5]@4", // Dbsus2
  N: "eb3 ab3 db4 ab3 eb3 db4 ab3 db4", O: "f3 ab3 db4 ab3 f3 db4 ab3 db4", P: "eb3 ab3 db4 ab3 f3 ab3 db4 ab3",
  Q: "gb3@2 ab3@2 db4@2 ~@3 ab3 db4@2 ~@2 db4 ab3, ~@6 ab4@5 ~ ab4@4",
  R: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [db3,f3,ab3,db4,f4] [eb3,gb3,bb3,db4,gb4] [db3,f3,ab3,db4,f4] ~@2", // Ebm7 Db Ebm7 Db
  S: "[gb3,ab3,db4,gb4,ab4]@3 [gb3,ab3,db4,gb4,ab4] [gb3,ab3,db4,gb4]@2 [gb3,ab3,db4,gb4,bb4]@8 ~ [gb3,a3,db4,gb4,a4], ~@2 ab4@5 ~", // Gbsus2 Gb Gbm
  T: "[gb3,a3,db4,gb4,a4]@3 [gb3,a3,db4,gb4,a4]@5", // Gbm
  U: "[db3,eb3,gb3,ab3,db4]@3 [db3,f3,ab3,db4] ~@2 [db3,f3,ab3,db4]@3 [db3,f3,ab3,db4] ~ [db3,f3,ab3,db4]!3 ~@2", // Dbsus4 Db
  V: "[eb3,gb3,bb3,db4,eb4]!8", W: "[db3,gb3,bb3,db4,gb4]!8", X: "[eb3,gb3,bb3,db4,eb4]!4 [f3,ab3,db4,f4]!4",
  Y: "[gb3,ab3,db4,gb4,ab4]@3 [gb3,ab3,db4,gb4,ab4]!2 ~ [gb3,ab3,db4,gb4,ab4]@10", // Gbsus2
  Z: "[[gb3,gb4]@3 ~ db5 ~ [gb4,db5,ab5]@42, ~@3 gb3@44 ~, ~ gb4 ~@14]/3", // Gb Gbsus2
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.7)

// chords · acoustic guitar steel · "ACOUSTIC GUIT 2"
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C D A B C D A B C E F G H I J K L M N@2 O P O Q R S T U V W X Y@2 Z AA AB AC AD AE AD AF AG AH AI AJ AK AL AM
  AN A B C D A B C AO@3 ~
>`.pickRestart({
  A: "[db3,ab3,db4,f4]", B: "[bb2,f3,ab3,db4]", C: "~ db4 ~ db4, eb3 f3, ~ ab3@3 ~ ab3@3",
  D: "f3 ~@5 ab4@10, ~ gb3@15, ~ ab3@7, ~ db4@3", E: "f3 ~@3 db4@2 ab4@10, ~ gb3@15, ~ ab3@7",
  F: "[gb3,bb3,db4,gb4]@3 [f3,ab3,db4,f4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [gb3,bb3,db4,gb4] [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]", // Gb Db Gb Db
  G: "[gb3,bb3,db4,gb4]@3 [bb3,db4,gb4,bb4] ~@2 [f3,ab3,db4,f4]@3 [gb3,bb3,db4,gb4] ~ [gb3,bb3,db4,gb4]!2 [bb3,db4,gb4,bb4] ~ [gb3,bb3,db4,gb4]", // Gb Db Gb
  H: "[gb3,bb3,db4,gb4]@3 [bb3,db4,gb4,bb4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]!3 ~ [f3,ab3,db4,f4]", // Gb Db
  I: "[gb3,bb3,db4,gb4]@3 [bb3,db4,f4,bb4] ~@2 [f3,ab3,db4,f4]@3 [bb3,db4,gb4,bb4] ~ [f3,ab3,db4,f4]!3 ~@2", // Gb Bbm Db Gb Db
  J: "[db3,gb3,ab3,bb3,db4]@3 [db3,gb3,ab3,bb3,db4] ~@2 db4@8 ~ [db3,gb3,a3,db4], ~@2 ab3@5 ~", // Gb Gbm
  K: "[db3,gb3,a3,db4]@3 [db3,gb3,a3,db4]@5", // Gbm
  L: "[gb3,bb3,db4,gb4,bb4]@3 [gb3,bb3,db4,gb4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] db4 [db4,eb4] bb3 ~", // Gb Db Dbsus2
  M: "[gb3,bb3,db4,gb4]@3 [f3,ab3,db4,f4] ~@2 [f3,ab3,db4,f4]@6 [gb3,bb3,db4,gb4] [f3,ab3,db4,f4]@3", // Gb Db Gb Db
  N: "[~@6 ab3 db4 f4@4 db4@2 db4 ab4 eb4@3 db4 ab4@2 eb4@6 db4@4, ~@15 eb5@8 ~@9]/2",
  O: "eb3 ab3 db4 eb3 f3 ab3 c4 ab3", P: "gb3 ab3 db4 ab3 db3 f3 db4 ab3",
  Q: "[gb3,ab3,db4,gb4]@3 [gb3,ab3,db4,gb4] [gb3,ab3,db4,gb4]@2 [gb3,ab3,db4,gb4]@3 [gb3,ab3,db4,gb4] [gb3,ab3,db4,gb4]@2 [gb3,ab3,db4,gb4]!4", // Gbsus2
  R: "f3@2 eb3 [eb3,f3] f3 ~ ab3!2 eb3 [eb3,f3] db3 bb2 [db3,ab3]@2 eb3@2, ~@5 eb3@3 ~@8", // Ebsus2 Db5
  S: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [db3,f3,ab3,db4,f4] [eb3,gb3,bb3,db4,gb4]!2 [db3,f3,ab3,db4,f4] ~", // Ebm7 Db Ebm7 Db
  T: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [eb3,gb3,bb3,db4,gb4]!2 [db3,f3,ab3,db4,f4] ~@2", // Ebm7 Db Ebm7 Db
  U: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4,bb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [db3,f3,ab3,db4,f4] [eb3,gb3,bb3,db4,gb4]!2 [db3,f3,ab3,db4,f4] ~", // Ebm7 Db Ebm7 Db
  V: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4,bb4] ~ [eb3,gb3,bb3,db4,gb4,bb4] [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ db4 eb4 db4 bb3 ab3", // Ebm7 Db
  W: "[eb3,gb3,bb3,db4,gb4,bb4]@3 [eb3,gb3,bb3,db4,gb4,bb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [db3,f3,ab3,db4,f4] [eb3,gb3,bb3,db4,gb4]!2 [db3,f3,ab3,db4,f4] ~", // Ebm7 Db Ebm7 Db
  X: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4] ~ [db3,f3,ab3,db4,f4] [bb3,eb4]@2 [bb3,eb4] db4", // Ebm7 Db Eb5
  Y: "[eb3,gb3,bb3,db4,gb4]@3 [eb3,gb3,bb3,db4,gb4,bb4] ~@2 [db3,f3,ab3,db4,f4]@3 [db3,f3,ab3,db4,f4,bb4] ~ [db3,f3,ab3,db4,f4] [eb3,gb3,bb3,db4,gb4]!2 [db3,f3,ab3,db4,f4] ~", // Ebm7 Db Bbm7 Db Ebm7 Db
  Z: "[eb3,gb3,bb3,db4,eb4]!8", AA: "[db3,gb3,bb3,db4,gb4]!8", AB: "[eb3,gb3,bb3,db4,eb4]!4 [f3,ab3,db4,f4]!4",
  AC: "~@3 [db5,eb5,ab5] [db5,eb5,ab5]@2 [db5,eb5,ab5]@3 [db5,eb5,ab5]@3 [db5,eb5,ab5]@4", // Dbsus2
  AD: "db5 ab4 db5 f5 ~ db5 ab4 eb5 ~ f4 ab4 ~@2 ab4 f4 ab4, ~@11 bb4@5",
  AE: "db5 ab4 db5 f5@2 ab4 bb4 ab4 f4 eb5@2 ab4 bb4 ab4 f4 db4",
  AF: "db5 ab4 db5 f5 ~ db5 ab4 eb5 ~ f4 ab4 ~@2 ab4 f4 db4, ~@11 bb4@5", AG: "ab4 gb4 ab4 eb5@3 ab4 eb5@3 ab4 eb5@5",
  AH: "[gb3,a3,db4,gb4,a4]@3 [gb3,a3,db4,gb4,a4]@5", // Gbm
  AI: "~@3 [gb3,bb3,db4,gb4] ~ [gb3,bb3,db4,gb4] [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [gb3,bb3,db4,gb4] [f3,ab3,db4,f4] ~@2", // Gb Db Gb Db
  AJ: "[eb3,gb3,bb3,db4]@3 [gb3,bb3,db4,gb4] ~ [gb3,bb3,db4,gb4] [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]!3 ~@2", // Ebm7 Gb Db
  AK: "eb3 ab3 db4 ab3 eb3 db4 ab3 db4", AL: "f3 ab3 db4 ab3 ab4 db4 ab4 db4",
  AM: "~@5 ab4 ~ ab4 ~@5 ab4 ~ ab4, eb3 f3, ~ ab3@7 ~ ab3@7, ~@2 eb4@3 ~ eb4@2 ~@2 db4@3 ~ f4@2, ~@3 c5@5 ~@3 eb5@5",
  AN: "~@2 [db5,f5] ~@3 db4@2, db4@5 ab3@3, ~ eb4@15, ~ ab4@7, ~@3 [db5,ab5]@5", // Db Db5
  AO: "[f3 ~@5 ab4@42, ~ gb3@47, ~ ab3@23, ~ db4@11]/3",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.3)

// chords · electric guitar jazz · "ELECTRIC GUIT"
const electric_guitar_jazz = note(`<
  ~@2 A B C D E F C G H I J K L M L N@2 O P Q R S T U T V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AJ AK AL AM AN AO AF
  AG AH AP AQ AR AS AT AU AV AS AW@3 ~
>`.pickRestart({
  A: "[ab3,db4]", B: "[db4,eb4]", C: "~ db4 db4@3 db4 db4@2", D: "~ db4 ~ db4@5", E: "[db3,ab3,db4]", F: "[f3,bb3,db4]",
  G: "~@2 db4 ~ db4@2 db4@10", H: "f4, db4@13 ~@3", I: "eb4", J: "db4 c4", K: "bb3",
  L: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,f4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [f3,ab3,db4,gb4] [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]", // Gb Gbmaj7 Db
  M: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4,bb4] ~@2 [f3,ab3,db4,f4]@3 [gb3,bb3,db4,gb4] ~ [gb3,bb3,db4,gb4]!2 [bb3,db4,gb4,bb4] ~ [gb3,bb3,db4,gb4]", // Gb Db Gb
  N: "[[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,f4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [f3,ab3,db4,gb4] [f3,ab3,db4,f4] ~ db5@4 db5!3 [e4,ab4,db5]@10]/2", // Gb Gbmaj7 Db Dbm
  O: "~@12 [e4,a4] [eb4,ab4]@3, a3@7 ~", // A5 Ab5
  P: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4] ~ [f3,ab3,db4,f4] [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [f3,ab3,db4,gb4]!3 [f3,ab3,db4,f4]", // Gb Db
  Q: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4] ~ [f3,ab3,db4,f4] [f3,ab3,db4,f4]@10", R: "eb3", S: "bb2",
  T: "[eb3,ab3,db4] [f3,ab3,db4]", U: "[gb3,ab3,db4] [db3,ab3,db4]",
  V: "[db3,gb3,ab3,db4]@3 [db3,gb3,ab3,db4]!2 ~ [db3,gb3,ab3,db4]@3 [db3,gb3,ab3,db4]!2 ~ [db3,gb3,ab3,db4]!2 [db3,gb3,ab3,db4]@2", // Dbsus4
  W: "[db3,gb3,ab3,db4]@3 [db3,gb3,ab3,db4]!2 ~ [db3,gb3,ab3,db4]@6 ~@3 eb5", // Dbsus4
  X: "eb5@3 eb5@2 ~ eb5@3 eb5!2 db5 c5 db5!2 eb5",
  Y: "eb5@3 ~@3 db5@3 db5@2 db5 ~ db5 db5@2, ab4@3 ab4@3 ab4@2, ~@3 eb5@13",
  Z: "eb5@3 eb5@2 ~ [db4,ab4,db5]@3 [ab4,db5]@3 ~ eb5@3, [eb4,ab4]@6 ~@6 [db4,ab4]@3 ~", // Db5 Ab5 Db5
  AA: "eb5@3 eb5@2 ~ [db4,ab4,db5]@3 [ab4,db5]@3 db4 db5@3, [eb4,ab4]@6 ~@6 ab4@3 ~", // Db5 Ab5
  AB: "[db3,gb3,bb3,db4]@3 [ab4,bb4] ab4 gb4 f4@3 db5@2 db5!5", // Gb Absus2
  AC: "[eb3,gb3,bb3,eb4]@3 [eb3,gb3,bb3,eb4] ~@2 [db3,f3,ab3,db4]@4 [db3,f3,ab3,db4] ~ [bb3,eb4]@2 [bb3,eb4] db4", // Ebm Db Eb5
  AD: "[gb3,bb3,db4,gb4]@3 [ab4,bb4] ab4 gb4 f4@3 [db3,f3,ab3,db4]@2 [db3,f3,ab3,db4]!3 ~@2", // Gb Absus2 Db
  AE: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [ab3,f4] [f3,ab3,db4,f4] [ab3,db4,f4]@3", // Gb Db
  AF: "[gb3,bb3,db4,eb4,gb4,bb4]!4", AG: "[db3,gb3,bb3,db4,gb4,ab4]!4",
  AH: "~ [bb3,db4,gb4,bb4] ~ [db4,f4,ab4,c5], eb3@4 ~ ab3@3, ~ gb3@3 f3@4", // Gb Dbmaj7
  AI: "~@6 [gb4,ab4,db5]@3 [gb4,ab4,db5]@3 [gb4,ab4,db5]@4, gb3, ~ ab3@7, ~ db4@3", // Gbsus2
  AJ: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4] [gb3,bb3,db4,gb4] [f3,ab3,db4,f4] ~@2", // Gb Db Gb Db
  AK: "[gb3,bb3,db4,gb4]@3 [gb3,bb3,db4,gb4] ~@2 [f3,ab3,db4,f4]@3 [f3,ab3,db4] ~ db4 f4 db4 bb3 ab3", // Gb Db
  AL: "gb4 ~@2 bb4@5, [ab3,db4,ab4], ~@3 gb4@13", AM: "[gb3,a3,db4,gb4,a4]@3 [gb3,a3,db4,gb4,a4]@5",
  AN: "[eb3,gb3,bb3,db4,eb4]@3 [eb3,gb3,bb3,db4,eb4] ~@2 [db3,f3,ab3,db4]@3 [db3,f3,ab3,db4] ~ db3 eb3 db3 bb2 ab2", // Ebm7 Db
  AO: "[eb3,gb3,bb3,db4,eb4]@3 [eb3,gb3,bb3,db4,eb4] ~@2 [db3,f3,ab3,db4]@3 ab4 ~ db4 ab4 ab4@3", // Ebm7 Db
  AP: "~@3 [gb4,ab4,db5]@5, gb3, ~ ab3@7, ~ db4@3", AQ: "[ab3,db4,eb4]", AR: "[bb3,db4,f4]", AS: "gb4 ab4",
  AT: "[ab4,bb4]", AU: "[db4,f4,ab4]", AV: "[db4,f4,bb4]",
  AW: "[~ [ab3,f5,ab5]@7, gb4@15 ~, ~ ab4@2 ~ ab4@44, ~ db5@21 ~@2]/3", // Db
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.7)

// bass · fretless bass · "BASS"
const bass = note(`<
  ~@2 A B C D A B E D A B E F G H I J K L M N A O E P E Q R S T U V U V U V W X W Y U V@2 Z AA AB AC U AD AE AF AG A B E
  D A B E AH@3 ~
>`.pickRestart({
  A: "db2", B: "bb1", C: "eb2@4 f2@3 f2", D: "gb2@3 gb2 db2@2 gb1@10", E: "eb2@3 eb2 f2@3 f2",
  F: "gb2@3 gb2 db2@2 gb1@5 eb1 ab1 bb1 db2@2", G: "eb2@3 gb2 eb2 bb1 db2@3 ab2@2 db2 ab2 ab2@2 ~",
  H: "eb2@3 gb2 eb2 bb1 db2@3 ab2@2 db2 ab2!2 db2@2", I: "eb2@3 gb2 eb2 bb1 db2@3 ab2@2 db2 ab2!2 ab2@2",
  J: "eb2@3 gb2 eb2 bb1 db2@3 ab2@2 db2 ab2!2 db2 f2", K: "gb2@3 gb2!2 ~ gb2@7 db2 eb2 db2",
  L: "gb2@3 gb2!2 ~ gb2@6 gb1 ab1 bb1 db2", M: "eb2@3 gb2 eb2 bb1 db2@5 db2 ab2!2 db2 d2",
  N: "eb2@3 gb2 eb2 bb1 db2@3 ab2@2 ab2 ab1!2 bb1@2", O: "bb1@7 bb1", P: "gb2@6 gb2 eb2 db2@2 db2@2 db2@2 db2@2",
  Q: "gb2@3 gb2!2 ~ gb2@3 gb2!4 db2 eb2 db2", R: "gb2@3 db2 gb2 gb1 gb1@4 ~ gb1 db2 eb2 gb2@2",
  S: "eb2@3 gb2 eb2 bb1 db2@3 ab2 db2!6", T: "eb2@3 gb2 eb2 bb1 db2@3 ab2 ~ ab2 ab1 bb1 db2 f2",
  U: "eb2@3 gb2 eb2 bb1 db2@3 ab2 ~ db2 ab2!2 db2 d2", V: "eb2@3 gb2 eb2 bb1 db2@3 db2 ~ db2 ab1 bb1 db2 f2",
  W: "eb2!8", X: "gb2!7 d2", Y: "gb2@3 gb2!2 ~ gb2@3 db2 eb2 db2 gb2 db2 eb2 db2",
  Z: "eb2@3 gb2 eb2 bb1 db2@3 ab2 ~ db2 ab2!2 eb2 f2", AA: "gb2@3 gb2!2 gb1 gb2@7 db2 eb2 f2",
  AB: "gb2@3 gb2!2 gb1 gb1@6 ab1 bb1 db2 f2", AC: "eb2@3 gb2 eb2 bb1 db2@3 ab2 ab1 db2!4 d2",
  AD: "eb2@2 eb2@2 eb2!4 eb2@2 eb2@2 eb2@2 eb2!2", AE: "gb2@2 gb2@2 gb2!4 gb2@2 gb2@2 gb2@2 gb2 db2",
  AF: "eb2@2 eb2@2 eb2@2 eb2!2 f2@2 f2@2 f2@2 eb2 f2", AG: "gb2@3 db2 gb2 ~ gb1@10", AH: "[gb2@3 gb2 db2@2 gb1@42]/3",
})).s("gm_fretless_bass").gain(0.5).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@22 [~@3 x]!2 ~@30 [~ x ~@2] ~@9>").gain(0.75)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 [~@7 x] ~@6 [~@13 x ~@2] ~@35>").gain(0.75)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~ B ~@6 A ~@3 A ~@3 A C D@2 E ~@3 A@2 ~@2 B C D ~ F ~@7 G ~@3>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x!7", D: "x!8", E: "x", F: "~@3 x ~@8 x ~@3", G: "~ x ~@6",
})).gain(0.6)

// drums · crash
const crash = s("cr").struct("<~@22 A ~@6 A ~@7 A ~@3 A ~@7 A ~ A ~@12>".pickRestart({
  A: "x",
})).gain(0.68)

// drums · ride
const ride = s("rd").struct("<~@18 A ~@33 B ~@2 C A ~@2 C D ~@3>".pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "x!2", D: "x ~ x!2 ~@4",
})).gain(0.6)

// drums · tambourine
const tambourine = s("tb").struct("<~@29 A@3 B C A@2 B D@3 E F@11 G ~@11>".pickRestart({
  A: "~@3 x", B: "~@12 x!4", C: "x ~@2 x", D: "x!8", E: "x ~ x!3 ~ x ~ x!8", F: "x!16", G: "x!13 ~@3",
})).gain(0.45)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@29
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!8
  ~@4
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!11
  [x ~ x!3 ~ x ~@9]
  ~@11
>`).gain(1.9)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_jazz, bass, kick, rim, hihat, mid_tom, open_hat,
  crash, ride, tambourine, cabasa
)