Strudelify

L'aquila

Battisti

KeyD minorTempo100 bpm
0:00/0:00
// L'aquila — Battisti
// 100 bpm, 4/4, key D minor. 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 113 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C@2 D ~ E@6 F@2 G@2 H@2 I@2 J@2 K@6 L@2 M N@3 O@3 ~ E@6 F@2 G@2 H@2 I@2 P@2 Q@6 R@2 L@2 M S@3 T@4 O@3 ~ U@7
  V@8 W@6 X@3 Y@2 Z@7 ~
>`.pickRestart({
  A: "[[d3,a3,d4,f4,a4]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4,d5]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@4 [a4,d5]@4 [d4,f4,d5]@4 [d4,f4]@4, d5@5 ~@3 [d3,a3]@16 ~@16 [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4]@8, ~@8 [d4,f4]@8 ~@8 a3@12 [a3,f4,a4,d5]@3 ~@25, ~@3 a4@2 ~@2 d4@3 ~@6]/2", // Dm F D5 Dm D5 Dm D5 Dm
  B: "[[d3,a3,d4,f4,a4,d5]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@4 [a4,d5]@4 [d4,f4,a4,d5]@4 [d4,d5] d4@3, ~@2 [d3,a3]@4 ~ d4@3 ~@5 [f4,a4], ~@8 [d4,f4]@8 ~@8 a3@12 [a3,f4,a4,d5]@3 ~ [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 d3@8, ~@12 a4@8 d5 ~@43]/2", // Dm F D5 Dm D D5 F Dm …
  C: "[[d3,a3,d4,f4,a4,d5]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4]@4 d3@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@4 [a4,d5]@3 f4 c5 f5@3 [f4,d5]@4, ~ [d3,a3]@2 ~@2 [d3,a3,d4,d5] [d3,a3,d4,f4] [d3,a4], ~@8 [d4,f4]@8 ~@8 a3@12 [a3,f4,a4,d5]@3 ~@25, ~@12 a4@8 d5 ~@3 f4 ~@3 d4@12 ~@16 [d4,f4,d5]@4 d4 ~@3]/2", // Dm F D5 Dm D5 Dm D5 Dm
  D: "[d3,a3,d4,a4,d5]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [d4,f4,a4,d5]@3 ~, f4 ~@7 [d3,a3]@16 ~@8, ~@8 [d4,f4]@8 ~@8 a3@7 ~, ~@12 a4@8 d5 ~@11", // D5 Dm D5 Dm
  E: "[[d3,a3,d4,f4,a4,d5]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@4 [a4,d5]@4 [d4,f4]@4 [d4,f4]@4, ~@2 [d3,a3]@4 ~ d4@3 ~@6, ~@8 [d4,f4]@8 ~@8 a3@12 [a3,f4,a4,d5]@3 ~ [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4,d5]@8, ~@12 a4@8 d5 ~@43]/2", // Dm F D5 Dm D5 Dm D5 Dm …
  F: "[[d3,a3,d4,f4,a4,d5]@8 d5@4 d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@4 [a4,d5]@3 ~ [d4,f4,d5]@4 [d4,f4]@4, ~@2 [d3,a3]@4 ~ d4@3 ~@6, ~@8 [d4,f4]@8 ~@8 a3@12 [a3,f4,a4,d5]@3 ~ [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4]@8, ~@12 a4@8 d5 ~@43]/2", // Dm F D5 Dm D5 Dm D5 Dm …
  G: "[[d4,f4,bb4,d5]@8 [f4,bb4]@4 [f4,bb4]@4 [f4,bb4,d5]@3 ~ [d4,f4,d5]@8 [bb3,d4,f4,d5]@8 [bb3,d4,f4,bb4]@4 [d4,f4,bb4,d5]@4 bb4@4 bb4@3 ~ [f4,bb4,d5]@4 [f4,bb4]@4 [f4,d5]@3 ~, bb3@28 ~@12 bb3@8 bb3@8 bb3@7 ~, ~@8 d4@12 ~@24 [f4,d5]@8 d4@7 ~@5, ~@8 d5@8 ~@4 bb4@4 ~@4 bb4@4 ~@24 d5@2 ~@2 bb4 ~@3]/2", // Bb Bb5 Bb Dm Bb Bb5 Dm
  H: "[[f3,c4,f4,f5]@8 f4@3 ~ a4@8 [c4,f4,a4]@8 [a3,f4,f5]@8 [a3,f4,a4]@4 f4@4 ~@4 [a3,a4]@4 [a3,f4,f5]@4 [f3,a3,f4,a4]@4 [f3,a3,f5]@4, a4@3 f5 ~ f5 ~ a4 ~@2 [a3,a4]@2 ~@4, ~@2 f3@5 f3@3 f3@4 ~@2, ~@4 c4@6 ~@4 c4@17 ~, ~@22 [f4,f5]@4 ~@4 a4 ~]/2", // F5 F Dm A Dm F A F
  I: "[[d3,d4,f4,a4,d5]@7 ~ [a4,d5]@8 d5@3 ~ [f4,a4,d5]@8 [f4,d5]@4 ~@4 [f4,a4]@4 [f4,a4]@4 d5@3 ~@5 [a4,d5]@4 [d4,a4,d5]@3 ~ [a4,d5]@2 ~@2, a3@19 ~ a3@35 ~ [a3,f4]@4 ~@4, ~@4 d3@27 ~, ~@2 [d4,f4]@3 d4@4 ~ d4@2 d4@2 ~@2, ~@28 a4@7 ~ d5@8 f4@11 ~@9]/2", // Dm D5 Dm F D5 Dm
  J: "[[a3,e4,a4,c5,e5]@8 [a4,c5,e5]@4 e5 ~@3 e4@4 [a3,a4,e5]@4 a3@4 [e4,e5]@8 [e4,a4,c5,e5]@4 [e4,c5]@4 ~@8 c5@4 [a3,e4,a4,c5]@2 ~@2 [c5,e5]@3 ~, ~@2 a3@3 ~@2 a3@3 [a3,a4]@2 [a3,a4]@2 ~@2, ~@2 e4@2 ~ [e4,c5]@2 ~@9, ~@12 c5@8 ~@8 [a4,c5]@4 ~@12 [c5,e5]@8 e5@7 ~@5]/2", // Am A5 E Am C Am C A …
  K: "[[bb3,d4,f4,bb4,d5]@8 bb4@4 [bb4,d5]@8 [d4,f4,bb4,d5]@8 [f4,d5]@8 [f4,d5]@4 [f4,bb4]@4 [f4,bb4]@3 ~ [f4,bb4]@4 [bb4,d5]@4 [bb4,d5]@4 [bb4,d5]@3 ~ [f4,a4,d5]@4 [f4,bb4,d5]@4 [f4,bb4,d5]@8 [f4,bb4,d5]@8 [d4,f4,bb4]@4 [bb3,d4,f4]@8 [d4,f4,d5]@4 d5@4 bb4@4 bb4@4 [d4,f4]@3 ~ [f4,d5]@4 [f4,bb4,d5]@3 ~ [a4,d5]@4 [f4,bb4,d5]@4 [f4,bb4]@7 ~ [f4,bb4]@8 ~@2 d5@2 [f4,bb4,d5]@6 ~@2 [f4,bb4,d5]@2 ~@2 [bb4,d5]@3 ~ bb4@4 [bb4,d5]@4 bb4@4 [bb3,d4,bb4]@4 [bb4,d5]@2 ~@2, ~@2 bb3@8 bb3@8 bb3@5 ~@2 bb3@9 bb3@5 [bb3,d4]@3 ~@2 [bb3,d4,f4]@2 ~@2, ~@8 d4@12 ~@8 [d4,bb4]@12 d4@16 d4@7 ~ d4@8 d4@16 ~@16 d4@12 ~@4 d4@8 d4@8 d4@16 [d4,f4,bb4]@4 ~@12 d4@8 ~@16, ~@8 f4@8 ~@28 d5@8 f4@11 ~@29 bb4@4 ~@4 bb4@8 d5@8 bb4@8 ~@48 d5 ~@7 d5 ~@11, ~@104 f4@7 ~@73 f4@7 ~]/6", // Bb Dm Bb5 Bb Dm Bb Dm Bb …
  L: "[[a3,c4,a4,f5]@8 f5@4 f5@3 ~ [a3,c4,f4,f5]@4 [a3,c4,a4]@4 ~@4 [c4,f5]@8 f5@4 [c4,f5]@4 [c4,a4,f5]@3 ~ [c4,f4]@4 [c4,f4,a4,f5]@4 [a3,f4,a4]@4 [a4,f5]@2 ~@2, f3@31 ~, f4@8 ~@2 [f4,f5]@4 [f4,a4]@6 ~@8 f5 ~@3, ~ [a3,c4,a4] ~ a3@2 [a3,f4] a3 ~]/2", // F Am F5 F F5 F Dm F …
  M: "[a3,e4,a4,c5,e5]@2 [a3,e4,e5]@2 [e4,a4,e5]!2 [a3,e4,a4,e5] [a3,e4,a4,c5,e5], ~@2 c5@3 c5@2 ~, ~@2 a4 ~ a3@2 ~@2", // Am A5 Am
  N: "[~@17 eb5@8 ~@9 d5@8 ~@7 g5@6 ~@9 d5@11 ~@6 [bb4,eb5]@11 ~@4, ~@15 [eb4,g4]@11 ~@5 a3@14 ~@17 [a3,d4]@17 ~@17, ~@16 bb4@9 ~@6 d3@2 a4@8 ~@7 [bb4,eb5]@8 ~@7 a4@11 ~@22, ~@32 d4@13 ~@2 [eb4,g4]@9 ~@6 d3@14 ~@20, ~@33 f4@14 ~@16 f4@17 [eb4,g4]@13 ~@3]/3", // Eb5 Eb D5 Eb5 Eb
  O: "[~ [a4,d5]@7 [a4,d5]@4 a4@8 a4@4 [d4,a4]@4 d4 d3@7 ~ [d3,a3]@3 d5@3 ~ a4 ~@7 f4@2 ~ c5 [d3,a4,d5,f5]@4 [d3,a3,f4,a4,d5]@3 ~ [a4,d5]@7 [a4,d5]@4 [a4,d5]@6 ~@2 [a4,d5] ~@4 a3@3 a4 [d3,a3]@4, [d3,a3,d4,f4]@8 [d3,a3]@21 ~@11 a3@8 a3@12 ~@3 a3@20 [a3,d4]@4 ~@9, ~@8 d4@16 ~@4 [a3,f4,d5]@8 [f4,d5]@4 d4@14 f4@6 ~@11 f4@20 [d4,f4,d5]@4 ~, ~@8 f4@11 ~ f4@8 ~@8 a4@7 ~ d5@7 d5@4 ~@32 [a4,d5]@3 ~@6, ~@12 d5@12 ~@16 f4@12 a4@4 d4@7 [d3,d4,f4]@8 [d3,d4]@13 d3@7 ~@5]/3", // D5 Dm D5 Dm D5 Dm D5 Dm …
  P: "[[a3,e4,a4,c5,e5]@8 [a4,c5,e5]@4 e5 ~@3 e4@4 [a3,a4,e5]@4 a3@4 [e4,e5]@8 ~@13 e5@5 ~ a3@5 [a3,e4,c5,e5]@4, ~@8 a3@12 ~@8 a3@11 ~@9 [a3,a4,c5]@5 ~ [c5,e5]@6 ~@4, ~@2 e4@2 ~ [e4,c5]@2 ~@5 e4@3 ~, ~@6 c5@4 ~@4 [a4,c5]@2 ~@11 a4@5]/2", // Am A5 E Am C Am
  Q: "[[bb3,f4,bb4]@8 bb4@4 [bb4,d5]@8 [d4,f4,bb4,d5]@8 [f4,d5]@8 [f4,d5]@4 [f4,bb4]@4 [f4,bb4]@3 ~ [f4,bb4]@4 [bb4,d5]@4 [bb4,d5]@4 [bb4,d5]@3 ~ [f4,a4,d5]@4 [f4,bb4,d5]@4 [f4,bb4,d5]@8 [f4,bb4,d5]@8 [d4,f4,bb4]@4 [bb3,d4,f4]@8 [d4,f4,d5]@4 d5@4 bb4@4 bb4@4 [d4,f4]@3 ~ [f4,d5]@4 [f4,bb4,d5]@3 ~ [a4,d5]@4 [f4,bb4,d5]@4 [f4,bb4]@7 ~ [f4,bb4]@8 ~@2 d5@2 [f4,bb4,d5]@6 ~@2 [f4,bb4,d5]@2 ~@2 [bb4,d5]@3 ~ bb4@4 [bb4,d5]@4 bb4@4 [bb3,d4,bb4]@4 [bb4,d5]@2 ~@2, d4 ~ bb3@8 bb3@8 bb3@5 ~@2 bb3@9 bb3@5 [bb3,d4]@3 ~@2 [bb3,d4,f4]@2 ~@2, d5 ~@7 d4@12 ~@8 [d4,bb4]@12 d4@16 d4@7 ~ d4@8 d4@16 ~@16 d4@12 ~@4 d4@8 d4@8 d4@16 [d4,f4,bb4]@4 ~@12 d4@8 ~@16, ~@8 f4@8 ~@28 d5@8 f4@11 ~@29 bb4@4 ~@4 bb4@8 d5@8 bb4@8 ~@48 d5 ~@7 d5 ~@11, ~@104 f4@7 ~@73 f4@7 ~]/6", // Bb5 Bb Dm Bb5 Bb Dm Bb Dm …
  R: "[[bb3,d4,f4,bb4,d5]@2 bb4 [bb4,d5]@2 [d4,f4,bb4,d5]@2 [f4,bb4,d5]@2 ~@7, ~@2 bb3@5 [bb3,d4]@3 ~@6, ~@2 d4@3 ~@11, ~ f4 ~@6]/2", // Bb
  S: "[~@17 eb5@8 ~@9 [a4,d5]@8 ~@8 g5@6 ~@8 [a4,d5]@11 ~@6 [bb4,eb5]@11 ~@4, ~@15 [eb4,g4]@11 ~@5 d3@12 ~@20 d3@14 ~@19, ~@16 bb4@9 ~@7 a3@14 ~@3 [bb4,eb5]@8 ~@39, ~@33 d4@12 ~@2 eb4@9 ~@7 [a3,d4]@17 ~@16, ~@34 f4@13 ~ g4@8 ~@8 f4@16 [eb4,g4]@13 ~@3]/3", // D5 Eb5 Eb Eb5 D5 Eb
  T: "[~ [a4,d5]@7 [a4,d5]@4 a4@8 a4@4 [d4,a4]@4 d4 d3@11 ~@9 eb5@8 ~@8 d5@8 ~@8 g5@6 ~@9 [a4,d5]@11 ~@6 [bb4,eb5]@11 ~@4, [d3,a3,d4,f4]@8 [d3,a3]@21 ~@33 d3@11 ~@19 d3@14 ~@22, ~@8 d4@16 ~@4 [a3,f4,d5]@8 ~@27 [a3,d4]@13 ~@18 a3@18 ~@16, ~@8 f4@11 ~ f4@8 ~@19 [eb4,g4]@11 ~@6 f4@14 ~ [eb4,g4]@9 ~@7 [d4,f4]@17 [eb4,g4]@13 ~@3, ~@12 d5@12 ~@24 bb4@9 ~@7 a4@8 ~@8 [bb4,eb5]@8 ~@40]/4", // D5 Eb5 Dm D5 Dm D5 Eb Dm …
  U: "[[d3,a3,d4,f4,a4,d5]@7 ~ d5@3 ~ d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@3 [f4,a4,d5]@7 ~ [a3,f4,a4,d5]@2 d3 ~ [f4,a4]@4 f4@4 [a4,d5]@3 ~ [a4,d5]@4 [d4,f4]@4 [d4,f4]@4 [d3,a3,d4,f4,a4,d5]@7 ~ d5@3 ~ d5@3 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@3 ~ [a4,d5]@4 [d4,f4]@4 [d4,f4]@4 [d3,a3,d4,f4,a4,d5]@7 d5@3 ~ d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [f4,a4,d5]@7 ~@2 d3 ~@2 [f4,a4]@4 f4@4 [a4,d5]@3 ~ [a4,d5]@3 [d4,f4]@4 [d4,f4]@4 [d3,a3,d4,f4,a4,d5]@7 ~ d5@3 ~ d5@4 [d4,f4]@4 [d4,f4,a4]@4 [d3,f4]@4 [d4,f4,a4,d5]@8, ~@8 [d3,a3]@16 ~@3 d4@12 ~@32 [d4,f4]@7 ~@8 a3@11 ~ [a3,f4,a4,d5]@3 ~ [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4,d5]@8 ~@7 [d3,a3]@16 ~@4 d4@12 ~@15 [d3,a4,d5]@8 ~@8 [d3,a3]@16 ~@12, ~@8 [d4,f4]@8 ~@8 a3@11 ~@4 [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4,d5]@8 ~@8 [d3,a3]@15 ~@4 d4@12 ~@31 [d4,f4]@8 ~@8 a3@11 ~ [a3,f4,a4,d5]@3 ~ [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 ~@15 [d4,f4]@8 ~@8 a3@11 ~, ~@12 a4@8 d5 ~@54 a4@7 d5 ~@54 a4@8 d5 ~@54 a4@8 d5 ~@15]/7", // Dm F D5 Dm F D5 Dm F …
  V: "[~ d3 ~ [f4,a4]@4 f4@4 [a4,d5]@3 ~ [a4,d5]@3 ~ [d4,f4,d5]@4 [d4,f4]@4 [d4,f4,bb4,d5]@8 [f4,bb4]@4 [f4,bb4]@4 [f4,bb4]@4 [d4,f4,d5]@7 [bb3,d4,f4,d5]@8 [bb3,d4,f4,bb4]@4 [d4,f4,bb4,d5]@4 bb4@3 ~ bb4@3 ~ [f4,bb4,d5]@4 [bb3,f4]@4 [f4,d5]@3 ~ [f3,c4,f4,f5]@8 f4@3 ~ a4@7 [c4,f4,a4]@8 [a3,f4,f5]@8 [a3,f4,a4]@4 f4@4 ~@4 [a3,a4]@3 ~ [a3,f4,f5]@3 ~ [f3,a3,f4,a4]@4 [f3,a3,f5]@4 [d3,d4,f4,a4,d5]@7 [a4,d5]@7 ~ d5@3 ~ [f4,a4,d5]@7 ~ [f4,d5]@3 ~@5 [f4,a4]@4 [f4,a4]@4 d5@3 ~@4 [a4,d5]@3 ~ [a3,d4,a4,d5]@3 ~ [a4,d5]@2 ~@2 [a3,e4,a4,c5,e5]@8 [a4,c5,e5]@4 e5 ~@3 e4@4 [a3,a4,e5]@4 a3@4 [e4,e5]@8 ~@5, [a3,f4,a4,d5]@3 [d3,a3,d4,d5]@8 [d3,a3,d4,f4]@8 [d3,a4]@8 bb3@27 ~@12 bb3@8 bb3@8 ~@16 f3@19 f3@12 f3@15 ~@16 d3@53 ~@43, ~@35 d4@12 ~@23 [f4,d5]@8 d4@7 ~@13 c4@11 ~@8 c4@34 ~@9 [d4,f4]@12 d4@15 ~@5 d4@8 d4@7 ~@20 c5@8 ~@8 [a4,c5]@4 ~@9, ~@35 d5@8 d5@2 ~@2 bb4@4 ~@3 bb4@4 ~@24 [bb4,d5]@3 ~ bb4 ~@3 a4@11 ~ f5@4 ~@3 f5@4 ~@4 a4@4 ~@8 [a3,a4]@8 ~@16 a3@19 a3@35 ~@16 a3@12 ~@8 a3@11 ~@2, ~@133 [f4,f5]@8 ~@8 a4@2 ~@29 a4@7 ~ d5@8 f4@11 f4@4 ~@12 e4@8 ~@4 [e4,c5]@8 ~@13]/8", // F D5 Dm Bb Bb5 Dm Bb Bb5 …
  W: "[~@7 e5@5 ~ a3@5 [a3,e4,c5,e5]@4 [bb3,f4,bb4]@7 ~ bb4@4 [bb4,d5]@7 ~ [d4,f4,bb4,d5]@7 [f4,d5]@8 [f4,d5]@3 ~ [f4,bb4]@4 [f4,bb4]@3 ~ [f4,bb4]@4 [bb4,d5]@4 [bb4,d5]@4 [bb4,d5]@3 ~ [f4,a4,d5]@4 [f4,bb4,d5]@3 ~ [f4,bb4,d5]@7 [f4,bb4,d5]@8 [d4,f4,bb4]@4 [bb3,d4,f4]@8 [d4,f4,d5]@4 d5@4 bb4@4 bb4@4 [d4,f4]@3 ~ [f4,d5]@4 [f4,bb4,d5]@3 [a4,d5]@4 [f4,bb4,d5]@4 [f4,bb4]@7 ~ [f4,bb4]@7 ~@3 d5@2 [f4,bb4,d5]@6 ~@2 [f4,bb4,d5]@2 ~@2 [bb4,d5]@3 ~ [bb4,d5], ~@6 e4@12 ~@4 [d4,d5] ~@7 bb3@31 bb3@31 ~ bb3@19 ~@8 bb3@35 bb3@20 [bb3,d4]@12 ~@5, ~@6 [a3,a4,c5]@5 ~ a4@11 ~@7 d4@12 ~@7 [d4,bb4]@12 d4@16 d4@7 ~ d4@8 d4@15 ~@16 d4@12 ~@4 d4@7 d4@8 d4@15 ~ [d4,f4,bb4]@4 ~@12 d4@4 ~, ~@12 [c5,e5]@6 ~@12 f4@8 ~@27 d5@8 f4@11 ~@28 bb4@4 ~@4 bb4@8 d5@8 bb4@8 ~@48, ~@124 f4@7 ~@61]/6", // Am Bb5 Bb Dm Bb5 Bb Dm Bb …
  X: "[~@3 [bb4,d5]@3 bb4@4 [bb3,d4]@4 [bb4,d5]@2 ~@2 [a3,c4,a4,f5]@8 f5@4 f5@3 ~ [a3,c4,f4,f5]@4 [a3,c4,a4]@4 ~@4 [c4,f5]@8 f5@3 [c4,f5]@3 ~ [c4,a4,f5]@3 ~ [c4,f4]@4 [c4,f4,a4,f5]@4 [a3,f4,a4]@4 [a4,f5]@2 ~@2 [a3,e4,a4,c5,e5]@8 [a3,e4,c5,e5]@7, ~@3 [bb3,d4,f4]@7 f4@7 ~ f3@61 ~@17, ~@6 d5 ~@3 bb4@2 ~@6 f4@16 ~@4 [f4,f5]@8 [f4,a4]@11 ~@16 f5@2 ~@14 a4@4 ~@3, ~@26 [a3,c4,a4]@8 ~@8 a3@15 [a3,f4]@8 a3@7 ~@24]/3", // Bb F Am F5 F F5 F Dm …
  Y: "[~ [e4,a4,e5]@4 [e4,a4,e5]@4 [a3,e4,a4,e5]@3 [a3,e4,a4,c5,e5]@5 ~@16 eb5@8 ~@9 d5@9 ~@4 eb4, ~ a3@8 ~@22 [eb4,g4]@10 ~@7 [d3,a3]@13 ~@3, ~@5 c5@7 ~@20 bb4@9 ~@8 [d4,f4]@13 ~@2, ~@49 a4@8 ~@7]/2", // A5 Am Eb D5 Dm
  Z: "[~ [eb5,g5]@6 ~@8 [d4,f4]@15 ~@2 [bb4,eb5]@11 ~@5 d5@6 ~ d5@3 a4@7 ~ a4@4 [d4,a4]@4 [a3,f4,d5]@8 [a3,f4,a4]@4 d5@3 ~ [a4,d5]@3 ~ [f4,a4]@3 [f4,a4,d5]@4 [d4,f4,d5]@4 a4 ~ e5 ~ e5@4 [g2,g3,g4,b4,d5]@27 ~ [g2,g3,g4,b4,d5]@4 [bb2,bb3,f4,bb4,d5]@24 ~@3 f4 a4 ~@2 d5@2 ~@46, [g4,bb4]@8 ~@6 [d3,a3]@16 ~ g4@12 ~@4 [f4,a4]@7 d4@16 ~@4 d4 ~@7 d4 ~@7 d4@7 ~@11 [c3,c4,g4,c5]@5 ~@62 a4@32 ~@17, ~@15 [a4,d5]@12 ~@3 eb4@13 ~@3 [d3,a3,d4]@8 [d3,a3]@20 d3@12 [d3,a3,f4]@8 d3@19 ~@58 d3@40 ~@13, ~@54 a4@4 d5@12 ~@24 c5 ~@6 a4@3 ~@69 f4@4 ~@47, ~@55 f4@11 f4@8 ~@20 a3@7 a3@11 ~@60 [a3,d4]@36 ~@16]/7", // Eb Dm Eb5 D5 Dm D5 F Dm …
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · pad warm
const pad_warm = note("<~@78 A B@7 C@8 D@6 E@4 ~@2 F@3 ~ G@2 ~>".pickRestart({
  A: "[a4,b4] ~@31", B: "[~@27 g4@35 ~@63 d3@99, d5, ~@27 d4@157 ~@40, ~@27 d3@67 ~@130, ~@9 a4@23]/7",
  C: "[~@9 [d3,d4,a4,d5]@8 [c2,c3,c4,g4,c5]@10 [bb2,bb3,f4,bb4]@63 [f3,c4,f4,c5]@62 [d3,d4,a4,d5]@63 [a2,a3,e4,a4]@41]/8", // D5 C5 Bb5 F5 D5 A5
  D: "[~@11 [bb2,bb3,f4,bb4]@85]/6", E: "[~@16 [f2,c4,f4,c5]@65 [a1,a2,a3,e4,a4]@32 ~@15]/4",
  F: "[~@14 [d3,g3,d4,a4]@59 ~@23]/3", G: "[~@12 [d3,a3,d4]@31 ~@21]/2",
})).s("gm_pad_warm").gain(0.1).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@34 A@6 ~ B@4 C@8 D@2 E@8 ~@2 F@2 G@2 ~@2 H I ~@7 J@6 K@8 L@8 M@2 ~@2 N@3 ~ O@2 ~
>`.pickRestart({
  A: "[~@16 bb5@15 a5@16 bb5@15 a5@16 g5@9 f5@8 d5@95 ~@2]/6", B: "[f5@64 a4@20 g4@11 e4@12 f4@12 a4@9, d5]/4",
  C: "[d5@48 e5@15 [d5,f5]@126 ~@2 [c5,f5]@65, a4 ~@3]/8", D: "[~@19 d5@12 a4@12 g4@12 c5@9]/2",
  E: "[a4@35 ~@13 [a4,c5,e5]@15 f5@65 a4@35 f5@35 ~@2 d5@53 ~@3, ~@63 d5@135 ~@2 f5@45 ~@11]/8", F: "[[c5,f5]@63 ~]/2",
  G: "[[c5,e5]@9 ~@7]/2", H: "[d4,f4] [e4,g4]", I: "[f4,a4]@7 ~@9", J: "[~@31 d3@47 a3@15 [d4,a4]@99]/6",
  K: "[~@7 d4@11 ~ [c4,g4]@8 f4@47 ~@8 c4@8 a3@47 [c4,g4]@15 d4@46 ~ c4@16 [a3,e4]@41, ~@7 a4@16 ~@4 bb3@56 ~@7 a4@45 ~@121, ~@74 g4@18 ~@60 f4@63 ~@41]/8", // C5 A5
  L: "[~@22 bb3@45 ~@2 a3@4 bb3@59 a3@4 bb3@55 ~@7 bb3@12 [c4,c5]@46, ~@11 f4@86 g4@8 ~@23, ~@191 a3@8 ~@57]/8", // C
  M: "[~ [a3,a4]@16 [c4,a4]@34 ~@13]/2", N: "[~@7 [a3,d4]@31 ~@10]/3", O: "[~@12 [a3,d4]@33 ~@19]/2",
})).s("gm_string_ensemble_2").gain(0.11).pan(0.2)

// chords · rock organ
const rock_organ = note(`<
  ~@2 A B C D@2 E F ~@9 G@3 ~ H I@2 ~@6 J@3 ~ K L M N O ~ P Q R S T U V W X Y Z AA AB T AC AD AE ~@8 AF AG@2 ~@2 AH AI
  AJ ~ AK@4 ~@7 AL ~@2 AM@2 ~@2 AN ~ AO@2 ~@3 AP@3 ~ AQ ~@8
>`.pickRestart({
  A: "~@8 [e6,g6]@2 ~@2 [e6,g6]@3 ~ [d6,f6]@6 a5 ~ [c6,e6]@3 ~ [a5,c6,e6]@3 ~, ~@7 a5@3 ~ a5@4 ~ a5@3 ~@5 a5 ~@7", // Em Dm C Am
  B: "[a5,d6,f6]@31 ~", C: "e6 ~ d6 ~ c6@4 a5@2 g5 ~ f5@3 ~ g5@3 ab5 a5@4 ab5 ~@3 f5@3 ~",
  D: "[d5@56 c5 ~ d5 ~ e5@4]/2", E: "d5", F: "~@3 [a4,b4] [f4,g4] ~@2 b3 a3 ~@23",
  G: "[~@8 d5@3 ~ f5@12 g5@3 ~ ab5 a5@60 ~@7, ~@8 db5 ~@87]/3", H: "~@12 e5 f5 ~@2", I: "[~@7 e5@54 ~@3]/2",
  J: "[~@23 f5@5 a5@39 ~@29, ~@28 ab5 ~@67]/3", K: "a5@16 bb5@15 ~", L: "~@15 g5@8 f5@8 ~", M: "~@31 g5",
  N: "[a5,b5,c6] d6@7 ~@24", O: "~@10 a5 [d6,f6]@3 ~ [a5,c6,e6]@4 [a5,d6,f6]@12 ~",
  P: "~@8 [d5,f5,a5]@6 ~@2 [e5,g5]@3 ~ [d5,f5,a5] ~@3 [d5,e5,g5] ~@3 [d5,f5,a5] ~@3, ~@7 d5@2 ~@7", // Dm Em Dm Em7 Dm
  Q: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@4 [d5,f5,a5] ~@3 [d5,e5,g5] ~@3 [d5,f5,a5] ~@3, ~@8 d5@3 ~@21", // F Em7 Dm Em7 Dm
  R: "~@8 [d5,f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5,a5] ~@3 [d5,e5,g5] ~@3 [d5,f5,a5] ~@3", // Dm Em7 Dm Em7 Dm
  S: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5] ~@3 [d5,e5] ~@3 [d5,f5,a5] ~@3, ~@8 d5@3 ~@9 a5@2 ~@2 g5@2 ~@6", // F Em7 Dm Dsus2 Dm
  T: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5,a5] ~@3 [d5,e5,g5] ~@3 [d5,f5,a5] ~@3, ~@8 d5@3 ~@21", // F Em7 Dm Em7 Dm
  U: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5,a5]@2 ~@2 [d5,g5] ~@3 [d5,f5,a5] ~@3, ~@8 d5@3 ~@13 e5@2 ~@6", // F Em7 Dm G5 Dm
  V: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@2 ~@2 [f5,a5]@2 ~@2 [e5,g5]@2 ~@2 [d5,f5,a5] ~@3, ~@8 d5@3 ~@9 d5 ~@3 d5 ~@7", // F Em7 F Em Dm
  W: "~@8 [f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5,a5] ~@3 [d5,e5,g5] ~@3 [d5,f5,a5] ~@3, ~@4 d5 ~@11", // F Em7 Dm Em7 Dm
  X: "~@8 [bb5,d6]@6 f5 ~ [f5,a5,c6]@4 [f5,bb5,d6] ~@3 [f5,a5,c6]@2 ~@2 [f5,bb5,d6] ~@3", // Bb F Bb F Bb
  Y: "~@9 [bb5,d6]@5 f5 ~ [f5,a5,c6]@3 d6 [f5,bb5] ~@3 [a5,c6]@2 ~@2 [f5,bb5,d6] ~@3, ~@9 f5@2 ~@13 f5 ~@7", // Bb F Bb5 Am Bb
  Z: "~@8 [a5,c6]@6 f5 ~ [f5,g5,bb5]@3 ~ [f5,a5,c6] ~@3 [g5,bb5]@2 ~@2 [f5,a5,c6] ~@3, ~@8 f5@3 ~@13 f5 ~@7", // Am Gm7 F Gm F
  AA: "~@8 [a5,c6]@5 ~ f5 ~ [f5,g5,bb5]@3 ~ [f5,a5,c6] ~@3 [f5,g5,bb5]@2 ~@2 [f5,a5,c6]@2 ~@2, ~@4 f5 ~@11", // Am Gm7 F Gm7 F
  AB: "~@8 [d5,f5,a5]@6 d5 ~ [d5,e5,g5]@3 ~ [d5,f5,a5] ~@3 [d5,e5] ~@3 [d5,f5,a5] ~@3, ~@12 g5 ~@3", // Dm Em7 Dm Dsus2 Dm
  AC: "~@8 [a5,c6]@6 e5 ~ [e5,g5]@2 ~@2 [e5,a5,c6] ~@3 [e5,g5,b5]@2 ~@2 [e5,a5,c6] ~@3, ~@8 e5@3 ~@4 b5@2 ~@15", // Am Em Am Em Am
  AD: "~@4 e5@4 e5@3 ~ e5@3 ~ e5@4 f5@3 ~ e5@8, ~@4 eb5 ~@27", AE: "eb5 e5@3 d5@28",
  AF: "~@16 a5@3 ~ c6@3 ab5 a5@4 c6@4, ~@16 ab5 ~@15", AG: "[a5@49 ~@15, ab5 ~@63]/2", AH: "~ [c5,e5]",
  AI: "[d5,f5]@8 ~ a4 ~ [e4,f4] d4 [b3,c4] a3 [f3,g3] ~ [eb5,g5,bb5]@15", AJ: "~@14 [g5,bb5]@17 ~",
  AK: "[~@28 d6@12 c6@2 a5 ~ g5@4 g5@5 ab5 g5 ~ g5@3 f5@38 ~@31, ~@28 db6 ~@26 f5@2 ~@71]/4",
  AL: "~@4 a6@3 c7@3 ~ ab6 a6@6 g6@2 ~@12", AM: "[~@6 [e6,g6]@10 ~ [e6,g6]@4 [d6,f6]@28 ~@15]/2",
  AN: "~@28 [f5,g5] [d5,e5] c5 ~", AO: "[~@14 d6 ~ e6 ~ f6@35 ~@11]/2", AP: "[~@13 a5@23 ~@12, ~@26 ab5 ~@69]/3",
  AQ: "~@16 a5@15 ~",
})).s("gm_rock_organ").gain(0.08)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@4 A ~@3 B ~@13 C D ~@12 E@2 F ~@33 G H ~@2 I ~@9 J@3 ~@4 K ~@10 L ~@8>".pickRestart({
  A: "~@13 g5 ~@2", B: "~@2 c5 ~@2 e4 [c4,d4] ~ g3 ~@23", C: "~@7 g5", D: "d5@7 ~@25", E: "[~@31 d5@31 e5 f5]/2",
  F: "~@7 c6 [a5,b5] [f5,g5] [d5,e5] [b4,c5] a4 ~@19", G: "~@8 c5 b4 g4 ~@5 e3 ~@15", H: "~@14 eb5@15 ~@3",
  I: "~@16 f5 ~@15", J: "[~@4 ab6 ~@13 ab6 ~ f6@56 ~@20]/3", K: "~@27 [a5,b5] ~@3 b4", L: "[eb5,g5,bb5] ~",
})).s("gm_rock_organ").gain(0.05)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~ A ~ B ~ B ~ A ~ A ~ A ~ A ~ A@8 ~@6 A ~ A ~@3 C D C ~ C D C D C D C D C D C D C@3 D@9 C D C D ~@2 C D ~@2 C D E
  D F G H I J K L M N O P@2 Q R@2 S T@2 U V@2 W X Y Z ~@2 AA AB AC AD ~@3
>`.pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "x ~@5 x!2", D: "x", E: "x ~@22 x ~@4 x ~@3", F: "x ~@23 x ~@2 x ~@3 x", G: "~@31 x",
  H: "~@11 x ~ x ~ x", I: "~@15 x", J: "~@21 x ~@3 x ~@3 x ~@2", K: "~@29 x ~@2", L: "~@5 x!3", M: "~@27 x ~@4",
  N: "~@19 x ~@2 x ~@4 x ~@4", O: "~@9 x ~ x ~ x ~@2", P: "~@17 x ~@3 x ~@3 x ~@6", Q: "~@4 x!3 ~",
  R: "~@15 x ~@3 x ~@3 x ~@8", S: "~@11 x ~@4", T: "~@21 x ~@10", U: "~@5 x ~@2", V: "~@19 x ~@12", W: "~@9 x ~@6",
  X: "~@5 x ~ x ~ x ~@6", Y: "~@17 x ~@14", Z: "~@9 x ~@2 x ~@4 x ~@14", AA: "~@15 x ~@16", AB: "~@3 x ~ x ~ x ~@8",
  AC: "~@5 x ~@3 x ~@3 x ~@3 x ~@14", AD: "~@13 x ~@3 x ~@14",
})).gain(0.27)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@5 A ~ A ~@79 B ~@7 C ~@2 D ~@4 E ~@9>".pickRestart({
  A: "~@3 x", B: "~@23 x ~@8", C: "~@17 x ~@14", D: "~ x", E: "~@13 x ~@18",
})).gain(0.16)

// drums · rim
const rim = s("rim").struct(`<
  ~@37 A@3 ~ A@15 ~ A@7 ~ A@3 ~@3 A ~@3 A@3 ~ A B@2 C@2 D E F@2 G@2 H I J@2 K@2 L@2 M N@2 O P@2 ~@2 Q@2 ~@5
>`.pickRestart({
  A: "~ x", B: "~@15 x ~@16", C: "~@7 x ~@8", D: "~@13 x ~@18", E: "~@3 x ~@4", F: "~@11 x ~@20", G: "~@5 x ~@10",
  H: "~@9 x ~@22", I: "~ x ~@2", J: "~@7 x ~@24", K: "~@3 x ~@12", L: "~@5 x ~@26", M: "~ x ~@6", N: "~@3 x ~@28",
  O: "~ x ~@14", P: "~ x ~@30", Q: "~@15 x",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@41 A@15 ~ A@6 B ~ A@3 ~@3 A ~@3 A@3 ~ C@2 D E F G H I J K L M N O P Q R@2 S@2 T U V W X ~@2 Y Z AA ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "~@9 x ~@14 x ~@7", C: "~@8 x ~@14 x ~@8", D: "~@7 x ~@14 x ~@9", E: "~@3 x ~@6 x!2 ~@4",
  F: "~@5 x ~@15 x ~@10", G: "~@5 x ~@14 x ~@11", H: "~ x ~@3 x ~@2", I: "~@2 x ~@4 x ~@2 x ~@5",
  J: "~@3 x ~@14 x ~@13", K: "~ x ~@7 x ~@3 x ~@2", L: "~@2 x ~@14 x ~@14", M: "~ x ~@15 x ~@14", N: "~ x ~@14 x ~@15",
  O: "x ~@30 x", P: "~@15 x ~@14 x ~", Q: "~@7 x ~@7 x", R: "~@13 x ~@15 x ~@2", S: "~@3 x ~@3 x", T: "~@27 x ~@4",
  U: "~@7 x ~@5 x ~@2", V: "~@10 x ~@14 x ~@6", W: "~@9 x ~@15 x ~@6", X: "~@9 x ~@22", Y: "~@11 x ~@4",
  Z: "~@3 x ~@7 x ~@4", AA: "~@3 x ~@12",
})).gain(0.44)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@80 A ~@3 B ~ C ~ D ~@3 E ~@2 F G ~@2 H I ~@12>".pickRestart({
  A: "~@21 x ~@10", B: "~@9 x ~@6", C: "~@6 x ~@9 x ~@10 x ~@4", D: "~@15 x ~@16", E: "~@13 x ~@5 x ~@12",
  F: "~@27 x ~@4", G: "~@10 x ~@10 x ~@10", H: "~@9 x ~ x ~@7 x ~@12", I: "~@4 x!2 ~@10",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@78 [~@3 x] ~@34>").gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@82 A ~@3 B ~ C ~@3 D ~@3 E ~@2 D ~@13>".pickRestart({
  A: "~@13 x ~@2", B: "~@23 x ~@8", C: "~@11 x ~@4", D: "~@15 x ~@16", E: "~@17 x ~@14",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@78 [~@21 x ~@10] ~@34>").gain(0.22)

// drums · high tom
const high_tom = s("ht").struct("<~@78 [~@19 x ~@12] ~@34>").gain(0.16)

// drums · ride
const ride = s("rd").struct("<~@108 [~@13 x ~@3 x ~@14]!2 ~@3>").gain(0.33)

// drums · splash
const splash = s("cr").struct("<~@79 x ~@33>").gain(0.33)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@9 A@13 B A C A D E F A F A ~ A ~@3 A@3 ~ A F A C A E A F A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 E ~ A ~ A@2
  G H@2 C F@2 I J@2 K@2 L M N O@2 P Q@2 R@2 S ~@4 I J ~@4
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x ~@4", C: "~@5 x ~@26", D: "~@3 x", E: "~@9 x ~@22", F: "~ x ~@6", G: "~@7 x ~@24",
  H: "~@3 x ~@12", I: "~@3 x ~@28", J: "~ x ~@14", K: "~ x ~@30", L: "x", M: "x ~@14 x", N: "~@15 x", O: "~@29 x ~@2",
  P: "~@7 x", Q: "~@27 x ~@4", R: "~@13 x ~@2", S: "~@25 x ~@6",
})).gain(0.72)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct("<~@32 [~@5 x ~@2] [~ x ~@30] ~@18 [~@5 x ~@2] ~@60>").gain(0.29)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@9 A ~@6 A ~ B ~ C A D A ~@2 E ~ F E F ~ G A ~@4 H ~@3 I ~ J ~ K ~ I A L M G A ~@2 N A H A O ~ O ~@3 O A O ~@8 P ~ A
  Q D@2 R S ~ T U V W X Y Z AA AB AA AC ~ C ~ C AD AE@2 ~@2 C AF AG ~@4
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x", C: "~@7 x ~@8", D: "~@9 x ~@6", E: "~@13 x ~@2", F: "~@5 x ~@5 x ~@4", G: "~@7 x",
  H: "~@11 x ~@4", I: "~@3 x ~@4", J: "~@6 x ~@4 x ~@4", K: "~@2 x ~@5 x ~@2 x ~@4", L: "~@8 x ~@2 x ~@4",
  M: "~@11 x ~@2 x ~", N: "~@3 x", O: "~@11 x!2 ~@3", P: "~@6 x!2", Q: "~@19 x ~@12", R: "~@17 x ~@14",
  S: "~@13 x ~ x ~@3 x ~@12", T: "~@12 x ~@4 x ~@3 x ~@10", U: "~@9 x ~@22", V: "~@9 x ~@2 x ~@19", W: "~@4 x!3 ~@9",
  X: "~@7 x ~@15 x ~@8", Y: "~@3 x!4 ~@9", Z: "~@3 x ~@6 x ~@2 x ~@18", AA: "~@11 x ~@20", AB: "~@2 x ~@4 x ~ x ~@6",
  AC: "~@3 x ~ x ~@9 x ~@16", AD: "~@3 x ~@12", AE: "~@5 x ~@26", AF: "~@8 x ~@13 x!2 ~@8", AG: "~@4 x ~@2 x ~@24",
})).gain(0.72)

// drums · bongos · soft notes
const bongos_soft_2 = s("bongo:18").struct(`<
// … 87 more lines

More by Battisti