Strudelify

Concertina

Tori Amos

KeyA♭ majorTempo73 bpm
0:00/0:00
// Concertina — Amos, Tori
// 73 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: pitch bends are ignored
// note: duplicate parts dropped: ch 8 recorder (copy of ch 5 synth strings 2)
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(73/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
const piano = note("<A@8 B@6 C@2 D@2 C@2 E@8 F@7 G@3 C@2 D@2 C@2 H@2 I@3 ~ J@7 K C@2 D@2 C@2 L@6 ~@2>".pickRestart({
  A: "[~ g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 g4, f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4, ~@4 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@3]/8",
  B: "[~ g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 c4 eb4 ~@2 c4 eb4 ~@2 c4 f4 ~@2 g4 ab4 ~@45 ab4@2 bb4@2, f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 db4@4 ab3@3 ab3@2 ~@2 f4@2 ~@2 g4@2 ~@2 f4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~ g4@3 eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 g4@2 ~@3, ~@4 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 g3@4 f3@4 c4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@3 ab4@3 ab4@4 ab4@4 f4@2 ~@4, ~@50 db5@4 db5@4 db5@4 db5@4 db5@4 db5@4 db5@3 db5@3 ab3@4 ab3@4 ab3@4 ~@4]/6",
  C: "[~@16 c5 ~@11 ab4@2 bb4@2, db4@4 db4@4 db4@4 db4@3 ab4@2 eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 g4@2 ~@3, ~ ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~ g4@4 ab4@4 ab4@4 f4@2 ~@4, ~@2 db5@4 db5@4 db5@3 db5@3 ab3@4 ab3@4 ab3@4 ~@4]/2",
  D: "[~@14 ab4 bb4, eb4!2 db4!2 ab3!3 ~, ~ bb4@2 bb4@2 bb4@2 bb4@2 ab4@2 ab4@2 ab4@2 ab4@2 eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 g4@2 ~@3, ~ eb5@2 eb5@2 db5@2 db5@2 ab4@2 ab4@2 f4 ~@2]/2",
  E: "[~@33 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 eb5, eb4!4 db4!4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 f4 eb4 db4 eb4, ~ bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~@10 ab4@2 ~@14 ab4@2 ~@14 ab4@2 ~@14 ab4@2 ~@14 ab4@2 ~@14 ab4@2 ~@3, ~@2 eb5@4 eb5@4 eb5@4 eb5@4 db5@4 db5@4 db5@4 db5@4 ~ c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@7]/8",
  F: "[~ c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 ~@3 c4 eb4 ~@2 c4 eb4 ~@2 c4 f4 ~@2 g4 ab4 f4, f4@3 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 ab4@2 ~@3 g3@4 f3@4 c4@4, ~@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 g4@2 g4@2 ab3@3 ab3@2 ~@2 f4@2 ~@2 g4@2 ~@3]/7",
  G: "[~@22 ab4 bb4, db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@3 ab4@2 eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 g4@2 ~@3, ~ ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~ g4@4 ab4@4 ab4@4 f4@2 ~@4, ~@2 db5@4 db5@4 db5@4 db5@4 db5@4 db5@4 db5@3 db5@3 ab3@4 ab3@4 ab3@4 ~@4]/3",
  H: "[~@31 ab4, eb4!4 db4!4, ~ bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~, ~ eb5@2 eb5@2 eb5@2 eb5@2 db5@2 db5@2 db5@2 db5]/2",
  I: "[~ c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 ab4 db5 ab4@2 ~@15, f4@3 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@19, ~ eb4 db4 eb4 f4 eb4 db4!2 ~@4]/3",
  J: "[~ c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~ g4!2 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 g4 ab4 ~@2 f4 ab4 ~@2 g4 ab4 ~@2 c4 eb4 ~@2 c4 eb4 ~@2 c4 f4 ~@2 g4 ab4 ~@32 ab4, f4@3 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@2 ab4@2 ~@2 eb5@2 ~@3 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 g3@4 f3@4 c4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4 db4@4, ~@4 eb4@4 db4@4 eb4@4 f4@4 eb4@4 db4@4 eb4@4 f4@3 f4@2 ~@2 g4@2 ~@2 f4@2 ~@2 g4@2 ~@3 eb4@4 db4@4 db4@4 ab3@3 ab3@2 ~@2 f4@2 ~@2 g4@2 ~@2 f4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~ g4@2, ~@82 db5@4 db5@4 db5@4 db5@4 db5@4 db5@4 db5@3 db5@3]/7",
  K: "~@6 ab4 bb4, ab3!3 ~, ~ eb4@2 eb4@2 eb4@2 eb4@2 eb4@2 g4@2 ~@3, ~ ab4@2 ab4@2 f4 ~@2",
  L: "[~@33 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~@2 c5 f5 ~@2 bb4 eb5 ~@2 ab4 db5 ~@2 eb5 bb4 ~ f4@4 ~@12, eb4!4 db4!4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 f4 eb4 db4 eb4 ~@4, ~ bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ~@10 ab4@2 ~@14 ab4@2 ~@14 ab4@2 ~@19, ~@2 eb5@4 eb5@4 eb5@4 eb5@4 db5@4 db5@4 db5@4 db5@4 ~ c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@2 c5@2 ~@2 db5@2 ~@6 eb5@2 ~@15]/6",
})).s("gm_piano").gain(0.46)

// bass · piano
const bass = note(`<
  ~@13 A B A C A B A D E ~@2 F G F H F I F J K L ~@3 A B A M A B A D N ~@11 A B A O P Q A R E ~@6
>`.pickRestart({
  A: "ab1 g1 f1 f2", B: "db2 eb2 f2 db2", C: "eb2 g2 ab2 db2", D: "eb2 f2 g2 eb2", E: "db2 eb2 f2 db2, db3 ~",
  F: "f1 ab1 bb1 c2", G: "f2 g2 ab2 c2", H: "f2 eb2 db2 c2", I: "f1 g1 ab1 g1", J: "f2 g2 ab2 g2", K: "bb2 c3 db3 c3",
  L: "bb2 ab2 f2 eb2", M: "eb2 f2 db2 f2", N: "db3@2 db2 ~, db2 ~@3", O: "eb2 g2 db3 c3", P: "ab2 g2 f2 ab1",
  Q: "db2 eb2 f2 eb2", R: "eb2 g2 f2 eb2",
})).s("gm_piano").gain(0.41)

// bass · fretless bass
const bass_2 = note(`<
  ~@6 A B C D E F G H I J K L M N O P Q R A S A T A U V W X Y E F Z AA AB AC AD L AE AF AG AH AI AJ AK@2 AL AM AN AO AP
  AQ AR H I J AS AT AU E AV P AI AJ A AW ~@2
>`.pickRestart({
  A: "f1 ab1 bb1 c2", B: "f2 g2 ab2 f2", C: "bb1 c2 db2 eb2", D: "bb1 c2 db2 bb1", E: "ab1 g1 f1 f2",
  F: "db2@4 eb2@3 ~ f2@4 ab2@3 ~", G: "db3@4 c3@3 c3 bb2@4 ab2@2 eb2 c2", H: "ab1 g1 ~ f2, ~ f1",
  I: "db2@4 eb2@3 eb2 eb2@4 db2@4", J: "ab1@4 g1@3 ~ f1@4 f2@4", K: "eb2@4 g2@4 ab2@4 db2@3 c2", L: "ab1 g1 f1@2",
  M: "db2@4 eb2@4 f2@4 bb2 bb2@2 c3", N: "ab2@4 g2@3 g2 f2@4 ab1@4", O: "eb2@4 f2@3 f2 g2@4 bb1@3 eb2",
  P: "db2@4 eb2@3 ~ f2@4 db2@3 ~", Q: "f1@15 f1", R: "f1", S: "f2 g2 ab2 c2", T: "f2 eb2 db2 c2",
  U: "f1@4 g1@4 ab1@4 g1@3 g1", V: "f1@4 ab1@4 bb1@4 c2@3 eb2", W: "f2 g2 ab2 g2", X: "bb2 c3 db3 c3",
  Y: "bb2 ab2 f2 eb2", Z: "db2@4 eb2@3 eb2 f2@4 bb2@2 f2 bb2", AA: "ab2 g2 f2 ab1",
  AB: "db2@4 eb2@3 eb2 f2@4 bb2 bb2@2 f2", AC: "ab2@4 g2@3 ~ f2@4 bb1@4", AD: "eb2@4 f2@4 db2@4 f2@3 db2",
  AE: "db2 eb2 f2 db2", AF: "ab1@2 g1@2 f2@2 ab1 c2", AG: "eb2@4 f2@3 f2 g2@4 bb2@3 c3",
  AH: "db3@4 db3@3 ~ db3@4 db3@3 ~", AI: "f1@8 f1@7 f1", AJ: "f1!2", AK: "c2@7 c2 c2@7 c2",
  AL: "f2@4 eb2@4 db2@4 c2@3 c2", AM: "f1 g1 ab1 c2", AN: "bb1@4 c2@4 db2@4 eb2@2 f2 ab2",
  AO: "bb2@4 c3@4 db3@4 c3@3 bb2", AP: "ab2@4 g2@4 f2@4 ab1@2 bb1 c2", AQ: "db2@4 eb2@3 ~ f2@4 ab2@3 bb2",
  AR: "db3@4 c3@3 c3 ab2@4 f2@2 eb2 c2", AS: "eb2@4 g2@4 db3@4 c3@3 bb2", AT: "ab2@4 g2@4 f2@4 ab1@3 bb1",
  AU: "db2@4 eb2@4 f2@4 eb2 eb2@2 db2", AV: "eb2@4 g2@3 g2 f2@4 eb2@4", AW: "f2",
})).s("gm_fretless_bass").gain(0.51)

// bass · fretless bass · soft notes
const bass_soft = note("<~@11 A ~@3 B ~ C ~@3 D ~@13 A ~@3 E ~ C ~@3 F ~@9 G ~@3 B ~@5 D ~@6>".pickRestart({
  A: "~@7 eb2 ~@7 ab2", B: "~@7 g1 ~@8", C: "~@3 f2", D: "~@7 eb2 ~@7 db2", E: "~@7 g2 ~@8", F: "~@7 db3 ~@7 db3",
  G: "~@7 eb2 ~@8",
})).s("gm_fretless_bass").gain(0.31)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@9 A B@3 C@2 D@2 C@2 E@2 F@3 ~@4 G H I J ~@2 B@3 C@2 D@2 C@2 E@2 F@3 ~@4 K@2 B@3 C@2 D@2 C@2 E@2 F@3 L M@3
>`.pickRestart({
  A: "~@5 [ab3,eb4,ab4,eb5]@3", // Ab5
  B: "[~ [ab2,db3,ab3,eb4,ab4]@2, ab2 eb3 g2 eb3 f2 f3 ab3 f3 ~@16, ~ c3@2 ab2@2 c3@2 g2@2 c3@2 g3@2 g3@2 c3@2 ~@31]/3", // Absus4
  C: "[~@2 eb4@2 ~@2 eb4@2 ~@10 db4@3 ~@2 ab3 ~@2 db4@3 ~@2 ab3, eb3!3 ~ db3 ~ db3 ~, ~ ab3@2 ~@2 g3@2 ~@2 g3@2 c4@2 f4@2 c4@2 ab3@2 ~@6 ab3@2 ~@5, ~@5 ab3 eb4!2 ~@8]/2",
  D: "[~@2 eb4@2 ~@2 eb4@2 ~@10 eb4@3 ~@2 ab3 ~@2 db4@3 ~@2 ab3, eb3!3 ~ eb3 ~ db3 ~, ~ ab3@2 ~@2 g3@2 ~@2 g3@2 c4@2 f4@2 c4@2 bb3@2 ~@6 ab3@2 ~@5, ~@5 ab3 eb4!2 ~@8]/2",
  E: "[~@2 eb4@2 ~@2 eb4@2 ~@10 eb4@3 ~@2 bb3 ~@2 eb4@3 ~@2 ab3, eb3!3 ~ eb3 ~ eb3 ~, ~ ab3@2 ~@2 g3@2 ~@2 g3@2 c4@2 f4@2 c4@2 bb3@2 ~@6 bb3@2 ~@5, ~@5 ab3 eb4!2 ~@8]/2",
  F: "[~@2 db4@3 ~@2 ab3 ~@2 db4@3 ~@2 ab3 [f3,c4]@32, db3 ~ db3 ~@9, ~ ab3@2 ~@6 ab3@2 ~@4 g4@32 ~]/3", // F5
  G: "~@3 f5@3 g5@3 f5@3 g5@2 f5@2, [f4,c5]", H: "~@3 f5@3 g5@3 f5@3 g5@2 f5@2, [f4,c5], ~@3 eb4",
  I: "~@3 f5@3 g5@3 f5@3 g5@2 f5@2, c4@15 ~", J: "~@3 f5@3 g5@3 f5@3 g5@2 f5@2", K: "[~@3 f3@16 ~@13, bb2 ~]/2",
  L: "~@15 ab3", M: "[[f3,c4,g4]@35 ~@13]/3",
})).s("gm_electric_guitar_clean").gain(0.3)

// other · synth strings 2
const synth_strings_2 = note(`<
  A B C D E F A B G H I J@2 K L K M K N K O@2 A P Q R C D E F A B G H I J@2 K L K M K L K O@2 A S ~@2 A B G H I J@2 K L
  K M K N K O@2 A P Q T ~@2
>`.pickRestart({
  A: "ab5 c5 f5 ab5 g5 c5 g5 c5 f5 c5 f5 c5 g5 c5 f5 g5", B: "g5 c5 f5 ab5 g5 c5 g5 c5 f5 c5 f5 c5 g5 c5 eb5 f5",
  C: "f5 c5 f5 ab5 g5 c5 g5 c5!2 f5 c5 f5!2 g5 c5 f5", D: "f5 c5 f5 c5 g5 f5 c5 f5!2 c5 f5 ab5 g5 c5 g5 c5",
  E: "ab5 c5 f5 ab5 g5 c5 g5 c5 f5 c5 f5 g5 c5 f5 g5 c5", F: "c5 f5 ab5 c5 g5 c5 g5 c5 f5 c5 f5 g5 eb5 c5 eb5 f5",
  G: "c5 db5 bb5 db5 c5 db5 bb5 db5 c5 db5 c5 bb5 c5 db5 bb5 db5",
  H: "c5 db5 bb5 db5 c5 db5 bb5 db5 c5 db5 bb5 db5 c5 db5 bb5 db5", I: "ab5 ~@7 f5@4 ~@4, [ab3,eb4]",
  J: "[db4,eb4,ab4,db5]/2", K: "[ab3,eb4]", L: "[eb4,ab4]", M: "bb4 ab4, eb4", N: "[db4,eb4,ab4,db5]",
  O: "[bb4 ab4, eb4]/2", P: "g5 c5 f5 ab5 g5 c5 g5 ab5 f5 c5 f5 c5 g5 c5 eb5 f5",
  Q: "ab5 c5 f5 ab5 g5 c5 g5 f5!2 c5 f5 c5 f5 c5!2 f5", R: "f5 c5 f5 ab5 g5 c5 g5 ab5 f5 c5 f5 c5 g5 c5 eb5 f5",
  S: "g5 c5 ab5 c5 g5 c5 f5 c5 g5 c5 f5 c5 g5 ab5 f5 ~", T: "f5 ~@15",
})).s("gm_synth_strings_2").gain(0.31)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@11 A ~ B C D@2 E@2 B F@8 ~@7 G@2 E@2 D@2 E@2 B F@8 ~@3 G@2 E@2 D@2 E@2 H@2 I@4 J@3
>`.pickRestart({
  A: "[ab2,db3,ab3,db4]", B: "[ab2,eb3,ab3,eb4]", C: "[ab2,eb3,ab3,db4]",
  D: "[[ab2,eb4]@2 [bb2,f3,bb3] [ab2,eb3,ab3,db4], [eb3,ab3]@3 ~, ~ eb4]/2", // Ab5 Bb5 Absus4 Ab5
  E: "[[ab2,eb3,ab3] [ab2,eb3,ab3,db4], eb4]/2", F: "[[bb2,f3,bb3] ~ [eb3,ab3]@14, eb4, ~@2 [ab2,db4] ~@13]/8",
  G: "[[ab2,db3,db4] ~, ab3]/2", H: "[[ab2,eb4]@2 [bb2,f3,bb3,eb4] ~, [eb3,ab3]]/2",
  I: "[[ab2,eb3,db4]@8 ~@55 ab3, ab3@63 ~]/4", J: "[[f3,c4,g4]@35 ~@13]/3",
})).s("gm_electric_guitar_jazz").gain(0.15)

// other · distortion guitar
const distortion_guitar = note("<~@13 A B A C A B D E F ~@3 G@2 ~@21 H@2 I J ~@5 A B A C A B D E F ~@6>".pickRestart({
  A: "ab2 g2 f2@2", B: "db3", C: "eb3 db3", D: "ab3 g3 f3@2", E: "eb3 ~", F: "db3 ~",
  G: "[ab4@2 g4@2 c4@2 bb3 c4@4 ~@5]/2", H: "~@3 c3 ~@3 c3, c3@3 ~ c3@3 ~, ~ g2@2 ~@2 g2@2 ~, ~ bb2 ~ bb2",
  I: "f3 eb3 db3 c3", J: "f2@3 ~",
})).s("gm_distortion_guitar").gain(0.36)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@48 [e4!2]!2 [f4 eb4 db4 c4] [f3@3 ~] ~@20>").s("gm_distortion_guitar").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@10 A@12 B@6 A@18 B@4 A@10 C A@5 B@2 ~@4>".pickRestart({
  A: "x!2", B: "x!2 ~@2 x!2 ~@2", C: "x ~@3 x!2 ~@2",
})).gain(0.51)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@22 [~@7 x ~@7 x]!6 ~@18 [~@7 x ~@7 x]!4 ~@16 [~@7 x ~@7 x]!2 ~@4>").gain(0.31)

// drums · rim
const rim = s("rim").struct("<~@10 [~ x ~ x]!12 ~@6 [~ x ~ x]!18 ~@4 [~ x ~ x]!16 ~@6>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@12 A ~@9 B@5 C ~@8 A ~@3 D ~@5 B@3 E ~@6 F ~@3 G ~@5 B@2 ~@4>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~ x ~ x", C: "~@4 x ~@6 x!3 ~@2", D: "~@11 x!2 ~ x ~", E: "~@4 x ~@6 x!3 ~ x",
  F: "~@9 x ~ x!2 ~@3", G: "~@13 x ~@2",
})).gain(0.36)

// drums · clap
const clap = s("cp").struct("<~@10 [~@4 x ~@8 x ~@2] [~ x ~ x]!11 ~@6 [~ x ~ x]!18 ~@4 [~ x ~ x]!16 ~@6>").gain(0.36)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@6 [~ x ~ x]!4 ~@62>").gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<~@10 A@12 B@6 A@18 B@4 A@6 C A@3 D A@5 B@2 ~@4>".pickRestart({
  A: "x!16", B: "~@2 x ~@2 x ~@4 x ~@2 x ~@2", C: "x!4 ~ x ~@2 x ~ x!4 ~@2", D: "x!13 ~ x!2",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@6 A@4 ~@12 B@6 ~@18 B@4 ~@16 B@2 ~@4>".pickRestart({
  A: "x!16", B: "x ~@2 x!2 ~@2 x",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@27 [~@7 x] ~@12 [~@13 x ~@2] ~@31>").gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@22 A@6 ~@18 A@4 ~@6 B ~@3 C ~@5 A@2 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@3 x", C: "~@13 x ~@2",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@48 [x!4]!2 ~@22>").gain(0.31)

stack(
  piano, bass, bass_2, bass_soft, electric_guitar_clean, synth_strings_2, electric_guitar_jazz, distortion_guitar,
  distortion_guitar_soft, kick, kick_soft, rim, snare, clap, clap_soft, hihat, hihat_soft, low_tom, open_hat, crash
)

More by Tori Amos