Strudelify
Il mio canto libero cover art

1999 · Il mio canto libero

Il mio canto libero

Battisti

KeyA majorTempo60 bpm
0:00/0:00
// Il mio canto libero — Battisti
// 60 bpm, 4/4, key A 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 83 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 finger
const bass = note("<~@21 A@4 B C D E F@8 ~@2 G@6 H I@2 J K L@4 ~@8 M@7 N@2 O@3 P Q R S T@2 ~ U@2>".pickRestart({
  A: "[~@4 a1@15 ~ a1 ~@3 a1@11 ~ c#2@15 c#2 ~@3 c#2@12 d2@14 ~@2 d2 ~@3 d2@12 a1@15 a1 ~@3 a1@10]/4",
  B: "~@2 a1@15 ~ a1 ~@3 a1@10", C: "~@2 c#1@15 c#1 ~@3 c#1@11", D: "~ d1@14 ~@2 d1 ~@3 d1@11",
  E: "~ a1@15 a1 ~@3 a1@3 ~ e1@3 ~ e1@4",
  F: "[a1@15 ~ a1 ~@3 a1@4 e2@4 d#2@2 ~ c#2@14 ~ g#1 c#2@2 ~@2 c#2@10 ~ a1 d1@14 ~@2 d1 ~@3 d1@3 ~ d1@3 ~ d1@3 a1@19 ~ a1 ~@3 e1@7 ~ a1@15 ~ a1 ~@3 a1@4 e2@3 d#2@2 d2@2 c#2@14 ~ g#1 c#2@2 ~@2 c#2@10 ~@2 d1@14 ~@2 d1 ~@3 d1@3 d1@2 e1@2 d1@4 a1@24 ~@12, ~@15 d2 ~@112]/8",
  G: "[~@6 c#1@16 d1@16 a1@14 e2 f#2 g2@16 a1@16 ~@10]/6", H: "~@12 e1@2 ~@2 e1@3 ~ e1@3 ~ e1@3 ~ e1@3 ~",
  I: "[e1@3 ~ e1@4 e2@2 e1 ~ a1@10 ~ a1@16 ~@2 e1 ~ c#2@11 c#1@10]/2", J: "~@2 c#2@6 d1 ~ d2@10 a1 d1@11",
  K: "~ d2@4 d1@3 a1@10 ~@2 a1@11 ~",
  L: "[e1@4 e1@3 a1@10 ~@2 a1@10 e1 ~ a1@4 e1@3 c#2@10 ~ g#1 c#1@12 c#2@4 c#1@3 d2@6 ~ a1@5 d1@8 d2@4 d1@8 a1@27]/4",
  M: "[g1@30 ~ f#1@11 ~ f#1@3 ~ f#1@3 ~ f#1@2 ~@2 f#1@3 ~ f#1@3 ~ b1@10 ~ b0@12 b1@4 b0@4 d#1@7 d#2@4 d#1@11 ~ d#2@4 d#1@4 e1@10 ~ e1@11 ~ e2@4 e1@4 b1@18 f#1 b1@4 f#1@4 d#1@4 b1@10 ~@9 b0@11 ~ d#1@6, ~@198 b1@19 ~@7]/7",
  N: "[~ d#2@4 d#1@12 d#2@4 d#1@4 e1@10 ~ e1@12 e2@4 e1@4 b1@8]/2",
  O: "[~@3 b1@8 f#1@7 ~ f#1@3 b1@7 ~ b1@5 ~@2 b1@2 ~@2 b1 b1@6 ~@2 e1@3 d#1@14 ~ d#2 d#1 ~@2 d#1 d#1@8 d#2@2 d#1 e1@12]/3",
  P: "~@3 e1@2 ~ e1 ~ e1@8 e2@2 e1 b1@13", Q: "~@2 f#1 b1@2 f#1 ~ f#1@4 b1@3 f#1@4 b1@14",
  R: "~ f#1@3 b0 ~ b0@6 b1 b0@4 d#1@8 d#2@6 ~", S: "d#1 d#2@2 d#1 ~ d#2@7 d#1@4 e1@8 e2@6 e1@2",
  T: "[~@2 e1 ~ e1@7 e2@4 b1@28 ~@21]/2", U: "[~@27 b1@33 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.53)

// other · brass section
const brass_section = note("<~@46 A B C D E@2 F G@2 ~@8 H@2 I J K L M N ~@3 O ~@8>".pickRestart({
  A: "~@4 [a3,a4,a5]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@3 ~@17", // A B C# B C#
  B: "~@3 [a3,a4,a5]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@2 [e4,e5] ~ [c#4,c#5,c#6]@3 ~@18", // A B C# E C#
  C: "~@2 [a3,a4,a5]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@2 [d4,d5,d6] ~ [c#4,c#5,c#6]@2 [b3,b4,b5] [a3,a4,a5]@3 ~@16", // A B C# D C# B A
  D: "~ [f#3,f#4,f#5]@4 [e3,e4,e5]@2 [c#3,c#4,c#5]@4 ~@21", // F# E C#
  E: "[[a3,a4,a5]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@2 [b3,b4,b5] [c#4,c#5,c#6]@2 ~ [b3,b4,b5] [c#4,c#5,c#6]@2 ~ [b3,b4,b5] [c#4,c#5,c#6]@2 ~@14 [a3,a4,a5]@2 [b3,b4,b5] ~ [c#4,c#5,c#6]@2 [e4,e5,e6] [c#4,c#5,c#6]@2 ~ [b3,b4,b5] [c#4,c#5,c#6]@2 ~ [b3,b4,b5] [c#4,c#5,c#6]@3 ~@13 [a3,a4,a5]@2]/2", // A B C# B C# B C# B …
  F: "[b3,b4,b5] ~ [c#4,c#5,c#6]@2 [d4,d5,d6] [c#4,c#5,c#6]@9 ~@3 [b3,b4,b5]@6 ~@2 [a3,a4,a5]@6 ~", // B C# D C# B A
  G: "[~ [f#3,f#4,f#5]@2 ~@2 [f#3,f#4,f#5]@2 [e3,e4,e5] [e3,e4,e5]@28 ~@28]/2", // F# E
  H: "[~@23 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@3 ~@20 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@2 f#5 ~ [d#4,d#5,d#6]@2]/2", // B C# D# C# D# B C# D#
  I: "~@21 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@2 [e4,e5,e6] ~ [d#4,d#5,d#6]@2 [c#4,c#5,c#6]", // B C# D# E D# C#
  J: "~ [b3,b4,b5]@3 ~@16 [g#3,g#4,g#5]@4 [f#3,f#4,f#5]@2 [d#4,d#5,d#6]@4 ~@2", // B G# F# D#
  K: "~@19 [b4,b5]@2 [c#4,c#5,c#6] ~ [d#5,d#6]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@4 ~, ~@19 b3 ~@3 d#4 ~@8", // B C# D# C# D#
  L: "~@18 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@2 f#5 ~ [d#4,d#5,d#6]@3 ~@3", // B C# D#
  M: "~@17 [b3,b4,b5]@2 [c#4,c#5,c#6] ~ [d#4,d#5,d#6]@2 [e4,e5,e6] ~ [d#4,d#5,d#6]@2 [c#4,c#5,c#6] [b3,b4,b5]@3 ~", // B C# D# E D# C# B
  N: "~@10 [f#3,f#4,f#5] [d#4,d#5,d#6]@2 ~@3", O: "~@16 [f#3,f#4]@2 [d#4,d#5]@3 ~@11",
})).s("gm_brass_section").gain(0.48).pan(0.6)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A@2 B A ~@8 C D E F C D E G H I@3 J K L M N@3 O P Q R@2 ~@5 S@4 T ~@14 U V@2 ~@7 W X Y Z@2 AA AB AC@2 ~@3
>`.pickRestart({
  A: "f#4@7 e4@2 c#4@21 ~@2", B: "f#4@7 e4 c#4@7 ~ a3@8 f#3@7 ~",
  C: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~", // A
  D: "[c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~", // C#m
  E: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~", // D
  F: "[a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~", // A
  G: "[a3,c#4,e4]@13 ~@3", // A
  H: "~@4 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~", // A
  I: "[[c#4,e4,a4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@2 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2]/3", // A C#m D A
  J: "~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2", // A
  K: "~@2 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 [c#4,e4,g#4]@2 ~@2 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3", // C#m
  L: "~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3", // D
  M: "~ [a3,c#4,e4]@3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~", // A
  N: "[[c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@2 ~@2 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 [a3,c#4,e4]@2]/3", // A C#m D A
  O: "~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [a3,c#4,e4]@3 ~ [c#4,e4,a4]@2", // A
  P: "~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 [c#4,e4,a4]@3 ~ [c#4,e4,g#4]@3", // A C#m
  Q: "~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@2 ~@2 [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [c#4,e4,g#4]@3 ~ [a3,d4,f#4]@3", // C#m D
  R: "[~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@16 ~@20]/2", // D A
  S: "[~@20 g4@23 ~@9 a4@23 ~ [b2,f#4,b4]@26 ~@22 g#4@2 [e4,g#4]@2, ~@3 g2@8 ~@21, ~@14 g3@30 ~@6 e4@25 ~@48 e4@2 ~@3, ~@18 d4@26 ~@4 c#4@27 d4@27 ~@21 b3@5]/4", // B5 E
  T: "[b3,e4,g#4]@2 [b3,e4,g#4] ~ g#4@2 [e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 ~@20, ~@3 b3@5 ~@24, ~@3 e4@2 ~@27", // E
  U: "~@30 c#4 ~", V: "[c#4@2 d4@2 b3@23 ~@4 c#4@2 e4@2 a#3@24 ~@5]/2",
  W: "~@22 [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@2", // B
  X: "~@2 [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@2 ~", // B D#m
  Y: "~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // D#m E
  Z: "[[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 [d#4,f#4]@3 ~ [d#4,f#4]@2 ~@2 [d#4,f#4]@2 ~@2 [d#4,f#4]@3 ~ [d#4,f#4]@3 ~ [d#4,f#4]@3 ~ [d#4,f#4]@3 [d#4,f#4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@2]/2", // E D#m B
  AA: "~@2 [d#4,f#4,b4]@2 ~@2 [d#4,f#4,b4]@3 ~ [d#4,f#4,b4]@3 [d#4,f#4,b4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@2 ~@2 [d#4,f#4,a#4]@3", // B D#m
  AB: "~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 ~ [d#4,f#4,a#4]@3 [d#4,f#4,a#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", // D#m E
  AC: "[[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 [b3,e4,g#4]@3 ~ [b3,d#4,f#4]@22 ~@27]/2", // E B
})).s("gm_acoustic_guitar_nylon").gain(0.19).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@5 A@2 B@2 A@2 C@2 A@2 B@2 A@2 D@2 E@4 F@2 G H@4 I@8 ~@6 J@8 ~@9 K@4 L@8 M@5 ~@3
>`.pickRestart({
  A: "[[a3,a4] [c#4,g#4], e4]/2", B: "[[d4,f#4] [c#4,e4], a3@31 ~]/2", C: "[[d4,f#4] [c#4,e4], a3@59 ~@5]/2",
  D: "[[d4,f#4] [c#4,e4], a3@29 ~@3]/2", // D C#m
  E: "[~@4 [a3,a4]@31 ~ [c#4,g#4]@31 [d4,f#4]@32 [c#4,e4]@24 ~@5, ~@4 e4@63 a3@56 ~@5]/4", // A C#5 D C#m
  F: "[~@2 [a3,a4]@31 ~ [c#4,g#4]@30, ~ e4@31]/2", G: "~ [a3,d4,f#4]@31",
  H: "[~ [c#4,e4]@24 ~@6 [a3,a4]@31 ~ [c#4,g#4]@31 [a3,d4,f#4]@32 [c#4,e4]@2, ~@31 e4@63 ~@34]/4", // C#m A C#5 D C#m
  I: "[~@30 [a3,a4]@31 [c#4,g#4]@31 ~ [d4,f#4]@31 [c#4,e4]@26 ~@6 [d3,d4,f#4]@12 [a2,c#4,e4]@20 [d3,d4,f#4]@12 [a2,c#4,e4]@30 ~@26, ~@30 e4@63 a3@58 ~@5 a3@74 ~@26]/8", // A C#5 D C#m D A D A
  J: "[~@12 [a3,a4]@31 [c#4,g#4]@31 [d4,f#4]@30 [c#4,e4]@30 ~ [a3,a4]@31 [c#4,g#4]@31 [d4,f#4]@31 ~ [c#4,e4]@27, ~@12 e4@62 a3@61 e4@62 a3@59]/8", // A C#5 D C#m A C#5 D C#m
  K: "[~@31 [b3,b4]@31 [d#4,a#4]@31 [e4,g#4]@31 [d#4,f#4]@4, ~@31 f#4@62 b3@35]/4", // B D#5 E D#m
  L: "[~@27 [b3,b4]@31 [d#4,a#4]@31 [e4,g#4]@31 [d#4,f#4]@30 [b3,b4]@31 [d#4,a#4]@31 [e4,g#4]@31 f#4@13, ~@27 f#4@62 b3@61 f#4@62 b3@44]/8", // B D#5 E D#m B D#5 E
  M: "[~@18 [b3,b4]@31 [d#4,a#4]@31 [e4,g#4]@31 f#4@31 ~@18, ~@9 f#4@31 b3@31 ~@9]/5", // B D#5 E
})).s("gm_synth_strings_1").gain(0.25)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@39 A@6 ~@8 B@3 C D E F G H I@2 ~@7 J@4 ~@5 K@3>".pickRestart({
  A: "[~@14 g#3@2 a3@2 b3@2 c#4@2 [a3,d4]@4 d4@8 c#4@2 b3@2 [b3,c#4]@4 c#4@11 ~ [g5,d6,g6]@16 [a5,e6,a6]@16 ~@10, ~@3 [e4,g#4]@8 a4@16 ~@21, ~@6 c#4@13 ~@3 f#4@16 e4@16 ~@42]/6", // D5 Bsus2 G5 A5 E
  B: "[~@28 [a5,a6]@39 [g#5,g#6]@29]/3", C: "~@3 [f#5,f#6]@29", D: "~ [e5,e6]@15", E: "~ [a2,a5,a6]@15",
  F: "~ [c#2,g#5,g#6]@31", G: "~ [d2,f#5,f#6]@31", H: "[a2,e5,e6]@31 ~",
  I: "[[d3,g3,b3,d4]@31 [f#3,a#3,c#4]@31 ~@2, ~@31 c#3@23 ~@10]/2", // G F#
  J: "[~@22 [b5,b6]@31 [a#5,a#6]@31 [g#5,g#6]@29 ~@15]/4", // B A# G#
  K: "[~@23 f#4@24 [e3,e4,g#4]@12 [d#4,f#4]@33 ~@4, ~@47 b3@40 ~@9, ~@59 d#3@30 ~@7]/3", // E D#m
})).s("gm_string_ensemble_2").gain(0.28).pan(0.4)

// chords · piano
const piano = note("<~@21 A@3 B C D E F G@8 ~@9 H@8 ~@10 I J K L M N O P@5 ~@7>".pickRestart({
  A: "[~@4 [a1,a2]@31 ~ [c#2,c#3]@31 [d2,d3]@29]/3", B: "~@3 [a1,a2]@29", C: "~ [a1,a2]@15", D: "~ [c#2,c#3]@15",
  E: "~ [d2,d3]@31", F: "~ [a1,a2]@31",
  G: "[[c#4,e4,a4]@8 [c#4,e4,a4]@8 [c#4,e4,a4]@8 [c#4,e4,a4]@6 ~ [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@7 ~ [a3,d4,f#4]@8 [a3,d4,f#4]@8 [a3,d4,f#4]@8 [a3,d4,f#4]@6 ~ [a3,c#4,e4]@8 [a3,c#4,e4]@8 [a3,c#4,e4]@8 [a3,c#4,e4]@6 ~@2 [c#4,e4,a4]@8 [c#4,e4,a4]@8 [c#4,e4,a4]@8 [c#4,e4,a4]@6 ~ [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@8 [b3,c#4,e4,g#4]@7 ~ [a3,d4,f#4]@8 [a3,d4,f#4]@8 [a3,d4,f#4]@7 [a3,d4,f#4]@7 ~ [a3,c#4,e4]@20 ~@16]/8", // A C#m7 D A C#m7 D A
  H: "[~@23 [a1,a2]@18 ~@13 [c#2,c#3]@19 ~@12 [d2,a2,d3]@19 ~@12 [a1,a2]@16 ~@15 [a1,a2]@18 ~@13 [c#2,c#3]@19 ~@12 [d2,d3]@19 ~ [a1,a2]@27]/8", // A C# D5 A C# D A
  I: "~@5 [b1,b2]@9 ~@2", J: "~@9 [d#2,d#3]@19 ~@4", K: "~@8 [e2,b2,e3]@19 ~@5", L: "~@7 [b1,b2]@16 ~@9",
  M: "~@3 [b1,b2]@9 ~@4", N: "~@5 [d#2,d#3]@19 ~@8", O: "~@4 [e2,b2,e3]@19 ~@9",
  P: "[~@3 [b1,b2]@16 ~@3 [d#4,f#4,b4]@8 [d#4,f#4,b4]@8 [d#4,f#4,b4]@8 [d#4,f#4,b4]@6 ~ [c#4,d#4,f#4,a#4]@8 [c#4,d#4,f#4,a#4]@8 [c#4,d#4,f#4,a#4]@8 [c#4,d#4,f#4,a#4]@7 [b3,e4,g#4]@8 [b3,e4,g#4]@8 [b3,e4,g#4]@8 [b3,e4,g#4]@6 ~ [b3,d#4,f#4]@8 [b3,d#4,f#4]@8 [b3,d#4,f#4]@8 [b3,d#4,f#4]@6 ~@15]/5", // B D#m7 E B
})).s("gm_piano").gain(0.44).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<A@8 B@6 C@7 D@4 E F G H@2 I@5 J@7 K@3 L M@8 ~@8 N@4 O@8 P@2 Q R@6>".pickRestart({
  A: "[~@32 e4@30 ~@2 e4@30 ~@2 f#4@30 ~@2 e4@30 ~@2 e4@4 e4@4 ~@7 [a3,c#4,e4]@5 [a3,c#4,e4]@4 ~@4 a2@3 ~ [c#4,e4]@4 [g#3,c#4,e4]@4 ~@4 c#3@3 [g#3,c#4,e4]@4 ~@5 [c#4,e4]@4 [c#4,e4]@3 ~ [c#4,d4]@4 [a3,c#4,d4]@4 ~@4 d3@3 [a3,c#4,d4]@4 ~ [a3,c#4,d4]@4 ~@4 d3@3 a2, ~@30 a3@32 [c#3,g#3]@32 d3@32 [a2,a3]@32 ~ a2@13 a2@5 ~@14 c#3@13 ~@8 c#3@12 ~@32, ~@31 [a2,c#4]@32 [b3,c#4]@32 [a3,c#4]@31 ~ [b3,c#4]@31 ~ a3@5 ~@4 [a3,c#4,e4]@7 ~@9 [a3,e4]@8 ~@19 [c#4,e4]@5 ~@7 a3@5 ~@4 [f#3,a3,d4]@7 ~@9 [f#3,a3,d4]@8, ~@160 c#4@8 ~@23 g#3@5 ~@4 [g#3,c#4,e4]@7 ~@16 d3@13 ~@7 d3@9 ~@4]/8", // A C#m Dmaj7 C#5 A Bsus2 A Bsus2 …
  B: "[[c#4,e4]@4 [a3,c#4,e4]@4 ~@4 a2@3 [a3,c#4,e4]@4 ~ [a3,c#4,e4]@4 ~@4 a2@2 ~@2 e4@4 e4@4 ~@7 [a3,c#4,e4]@5 [a3,c#4,e4]@4 ~@4 a2@3 ~ [c#4,e4]@4 [g#3,c#4,e4]@4 ~@4 c#3@3 [g#3,c#4,e4]@4 ~@5 [c#4,e4]@4 [c#4,e4]@3 ~ [c#4,d4]@4 [a3,c#4,d4]@4 ~@4 d3@3 [a3,c#4,d4]@4 ~ [a3,c#4,d4]@4 ~@4 d3@3 ~ [c#4,e4]@4 [a3,c#4,e4]@4 ~@4 a2@3 [a3,c#4,e4]@4 ~ [a3,c#4,e4]@4 ~@4 a2@3 ~ [c#4,e4]@4 [a3,c#4,e4]@4 ~@4 a2@3 [a3,c#4,e4]@4 ~ [a3,c#4,e4]@4 [a3,c#4,e4]@6 ~ b3, ~@8 [a3,c#4,e4]@7 ~@4 a2@9 ~@2 a2@14 a2@7 ~@12 c#3@13 ~@8 c#3@12 ~@31 a2@13 ~@7 a2@9 ~@3 a2@13 ~@7 a2@12 ~, ~@24 [a3,c#4,e4]@7 a3@5 ~@4 [a3,c#4,e4]@7 ~@9 [a3,e4]@7 g#3@5 ~@4 [g#3,c#4,e4]@7 ~@16 d3@13 ~@7 d3@9 ~@68, ~@32 c#4@8 ~@43 [c#4,e4]@5 ~@7 a3@5 ~@4 [f#3,a3,d4]@7 ~@9 [f#3,a3,d4]@7 ~@9 [a3,c#4,e4]@7 ~@9 [a3,c#4,e4]@7 ~@9 [a3,c#4,e4]@7 ~@17]/6", // C#m A C#m Dmaj7 C#m A C#m A …
  C: "[~@8 [g#3,b3,e4]@4 c#3@3 [g#3,b3,e4]@5 [g#3,b3,e4]@4 ~@4 c#3@3 ~@16 [a3,d4]@4 ~ d4@4 ~@20 a2@3 [a3,c#4,e4]@4 ~ [a3,c#4,e4]@3 ~@5 a2@3 ~@13 a2@3 [a3,c#4,e4]@5 [a3,e4]@4 [a3,c#4,e4]@4 a2@3 ~@9 [g#3,c#4,e4]@6 ~ [g#3,c#4,e4]@5 [c#4,e4]@4 ~@4 c#3@2 ~@14 d3@3 [a3,c#4]@4 ~ a3@4 ~@4 d3@2 ~@2 e4@32, e4@8 ~@23 f#3@5 f#3@8 ~@7 f#3@11 a2@5 ~ a2@8 ~@7 a2@4 a2@5 ~@3 a2@5 a2@8 ~@82 a2@34, ~@4 c#3@8 ~@12 [g#3,b3,e4]@7 d3@13 d3@16 d3@4 ~@63 c#3@5 c#3@8 ~@18 d3@6 d3@8 ~@7 d3@4 ~@41, ~@32 [a3,d4]@8 [a3,d4]@7 ~@5 a3@11 [a3,c#4]@9 [a3,c#4,e4]@7 ~@9 [a3,c#4,e4]@7 a3@9 [a3,c#4,e4]@7 ~@16 g#3@9 ~@16 [g#3,c#4,e4]@7 a3@9 [a3,c#4]@7 ~@9 a3@7 [a3,c#4]@33, ~@7 d4 e4 ~@3 [c#4,e4] ~@3 [c#4,e4] ~@3 c#4 ~@7]/7", // E D5 A A5 A C#m A E …
  D: "[~@12 [e3,a3,c#4]@4 a2@3 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@3 ~@5 a2@2 ~@13 c#3@3 [e3,g#3,c#4]@5 [e3,g#3,c#4]@4 [e3,g#3,c#4]@4 [e3,g#3,c#4]@2 ~@14 d3@3 [a3,c#4]@4 d3@3 ~@6 d3@2 ~@13 a2@2 ~ [e3,a3,c#4]@4 ~ [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 a2@2, ~@3 e3@9 ~@16 [e3,a3,c#4]@7 [e3,g#3]@9 [e3,g#3,c#4]@6 ~@16 f#3@9 ~@16 [f#3,a3,c#4]@7 [e3,a3]@9 [e3,a3,c#4]@6 ~@15, ~@4 [a3,c#4]@8 ~@24 c#4@8 ~@23 [a3,c#4]@8 [a3,c#4]@7 ~@17 c#4@8 ~@21, ~@8 a2@8 ~@7 a2@4 a2@5 ~@2 c#3@5 ~ c#3@7 ~@18 d3@6 d3@8 ~@10 d3@5 ~@3 a2@2 ~@4 a2@7 ~@7 a2@4 a2@5 ~@2]/4", // A C#m A E C#m F#m A5 A
  E: "~ a2 ~@8 [e3,a3,c#4]@4 a2@3 ~@9 [e3,a3,c#4]@6, ~ e3@9 ~@7 [e3,a3,c#4]@5 [e3,a3,c#4]@4 ~@6, ~ [a3,c#4]@4 ~@11, ~@6 a2@8 ~@6 a2@4 a2@5 ~@3", // A
  F: "c#3 ~@12 c#3@3 [e3,g#3,c#4]@4 ~ [e3,g#3,c#4]@4 ~@4 c#3@3, ~ [e3,g#3,c#4]@8 [e3,g#3,c#4]@7 ~@9 [e3,g#3,c#4]@7, ~@6 c#3@7 ~@7 c#3@4 ~@8", // C#m
  G: "d3 ~@8 [f#3,a3,c#4]@4 d3@2 [f#3,a3,c#4]@4 ~@10 d3@2 a2, ~ [a3,c#4]@8 ~@12 [f#3,a3,c#4]@4 [f#3,a3,c#4]@7, ~@5 d3@8 ~@6 d3@4 d3@5 ~@4", // F#m A F#m
  H: "[~@8 [e3,a3,c#4]@4 a2@3 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@3 ~@5 a2@2 a2 ~@9 [e3,a3,c#4]@4 a2@2 [e3,a3,c#4]@4 ~@10 a2@2 ~ [e3,g#3], [e3,a3]@8 ~@16 [e3,a3,c#4]@7 [e3,a3]@9 ~@12 [e3,a3,c#4]@4 [e3,a3,c#4]@7 ~, ~ c#4@7 ~@24 c#4@8 ~@24, ~@4 a2@8 ~@7 a2@4 a2@5 ~@8 a2@8 ~@6 a2@4 a2@5 ~@3 c#3@2]/2", // A E A5 A A5 A
  I: "[~@7 [e3,g#3,c#4]@4 c#3@2 ~ [e3,g#3,c#4]@4 ~ [e3,g#3,c#4]@3 ~@5 c#3@3 ~@9 [f#3,a3,c#4]@4 d3@2 [f#3,a3,c#4]@4 ~@10 d3@2 ~@13 a2@3 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@3 ~@5 a2@3 ~ a2@4 ~@4 [e3,a3,c#4]@4 ~@2 [e3,a3,c#4]@4 ~@9 a2@3 c#3 ~@12 c#3@3 [e3,g#3,c#4]@4 ~ [e3,g#3,c#4]@3 ~@5 c#3@2 ~@2 [a3,c#4]@3, c#4@7 ~@16 [e3,g#3,c#4]@7 ~ [f#3,a3,c#4]@8 ~@12 [f#3,a3,c#4]@4 [f#3,a3,c#4]@7 [e3,a3,c#4]@8 [e3,a3,c#4]@7 ~@9 [e3,a3,c#4]@7 e3@9 ~@12 [e3,a3,c#4]@4 [e3,a3,c#4]@8 c#4@7 ~@27, ~@3 c#3@8 ~@7 c#3@4 c#3@5 ~@3 d3@2 ~@3 d3@8 ~@6 d3@4 d3@5 ~@3 a2@2 ~@3 a2@8 ~@7 a2@4 a2@5 ~@4 [a3,c#4]@8 ~@23 [e3,g#3]@8 [e3,g#3,c#4]@7 ~@9 [e3,g#3,c#4]@7 f#3@4, ~@98 a2@8 a2@4 ~@2 a2@4 a2@5 ~@8 c#3@8 ~@7 c#3@4 c#3@5 ~@2 d3@2 ~@3]/5", // C#m F#m A C#m A C#m F#m A …
  J: "[~@5 [f#3,a3,c#4]@4 d3@2 [a3,c#4]@4 ~@2 [a3,c#4]@2 ~ [a3,c#4]@6 ~@2 c#4@30 ~@2 [f#3,a3]@11 ~@2 c#4@18 ~ [f#3,a3]@11 ~@2 c#4@34 ~@5 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@3 ~@5 [f#3,a3,c#4]@4 [a3,c#4]@4 [f#3,a3,c#4]@4 [f#3,a3,c#4]@4 [f#3,a3,c#4]@4 [f#3,a3,c#4]@4 [f#3,a3,c#4]@4 ~@4 [e3,a3,c#4]@4 [e3,a3,c#4]@4 [e3,a3,c#4]@4 [e3,a3,c#4]@4, ~ d3@8 ~@6 d3@4 d3@7 a2@32 ~ [d2,d3]@12 a2@20 [d2,d3]@13 [e3,a3]@35 ~ c#3@31 ~ d3@32 ~@20, ~@27 [e3,a3]@31 ~@14 [e3,a3]@19 ~@12 a2@36 ~@65 a2@20]/7", // F#m A F#m C#m F#m A F#m A …
  K: "[[e3,a3,c#4]@4 [e3,a3,c#4]@3 ~ e2@2 f#2@2 ~@4 [d3,a3,b3]@4 [d3,a3,b3]@4 [d3,b3]@4 ~@4 [d3,g3,b3]@4 [d3,g3,b3]@4 [d3,g3,b3]@3 ~@5 [e3,a3,c#4]@4 [e3,a3,c#4]@4 ~@4 [e3,a3]@4 [e3,a3,c#4]@4 [e3,a3,c#4]@4 [e3,a3,c#4] ~@3 [d4,f#4]@16 d4@4, ~@12 g2@31 ~ a2@31 [f#3,b3]@17 ~@4, ~@24 a3@19 ~@31 b2@17 ~@5]/3", // A Bm7 G A A5 A D B5
  L: "[d4,f#4]@2 [d4,f#4]@2 [b3,d4,f#4] ~ [g#3,b3,e4]@2 [b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2, ~@5 e2 ~@10, ~@11 e3@5 ~@16", // D Bm E E5 E
  M: "[[e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@4 [e3,g#3,b3,e4]@2 ~@9 [e3,a3,c#4]@3 ~@9 [e3,a3,c#4]@4 ~@4 a2@2 ~@9 [e3,g#3,c#4]@3 ~ [e3,g#3,c#4]@7 ~ [e3,g#3,c#4]@4 [e3,g#3,c#4]@4 c#3@2 ~@9 [f#3,a3,d4]@4 [f#3,a3,d4]@7 ~ [f#3,a3,d4]@4 [f#3,a3,d4]@4 d3@2 a2 ~@8 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@7 ~ [e3,a3,c#4]@4 [e3,a3,c#4]@6 ~@9 [e3,a3,c#4]@4 [e3,a3,c#4]@7 ~@5 [e3,a3,c#4]@4 a2@2 ~@9 [e3,g#3,c#4]@4 [e3,g#3,c#4]@8 [e3,g#3,c#4]@4 ~@3 c#3@3 ~@9 [f#3,a3,c#4]@4 [f#3,a3,c#4]@6 ~@6 [f#3,a3,c#4]@4 ~@4 c#4@25 ~@2, ~@10 a2@5 a2@7 ~@5 a2@12 ~@2 c#3@2 ~@3 c#3@7 ~@8 c#3@9 ~@2 d3@5 d3@7 ~@8 d3@9 ~@7 a2@8 ~@7 a2@11 a2@5 a2@10 ~@5 a2@3 a2@5 ~@4 [e3,g#3]@8 ~@16 [e3,g#3,c#4]@6 ~@30 a2@2 ~@28, ~@11 [e3,a3]@8 ~@4 [e3,a3,c#4]@8 ~@4 [e3,a3,c#4]@7 [e3,g#3,c#4]@8 ~@54 [e3,a3]@8 ~@23 [e3,a3]@8 ~@12 [e3,a3,c#4]@4 ~@6 c#3@5 c#3@9 ~@17 d3@5 d3@8 ~@6 d3@4 d3@5 ~ d3@2 e3@26 ~@3, ~@12 c#4@7 ~@54 [a3,d4]@8 ~@24 c#4@7 ~@24 c#4@7 ~@24 c#4@7 ~@23 [a3,c#4]@8 ~@12 [a3,c#4]@4 ~@7 a3@26 ~@2]/8", // E A C#m D A C#m F#m E …
  N: "[~@4 [g3,d4]@4 [g3,d4]@4 [g3,d4]@4 [g3,d4]@3 [g3,d4]@4 [g3,d4]@4 [g3,d4]@4 ~@4 [f#3,a#3]@4 [f#3,a#3]@4 [f#3,a#3]@4 [f#3,a#3]@4 [f#3,a#3]@4 [f#2,f#3,a#3,c#4]@3 ~ [f#2,f#3,a#3,c#4]@2 ~@21 [f#3,b3,d#4]@4 [f#3,b3,d#4]@4 b2@2 ~@9 [f#3,a#3,d#4]@3 ~ [f#3,a#3,d#4]@7 ~ [f#3,a#3,d#4]@4 ~@4 d#3@2 ~@2 d#4@3, g2@31 f#2@23 ~@7 b2@5 b2@8 b2@16 ~@4 [a#3,d#4]@7 ~@23 b3@4, ~@62 f#3@8 ~ [f#3,b3,d#4]@11 ~@10 d#3@5 ~ d#3@7 ~@7 d#3@9 ~@2 e3@5, ~@63 [b3,d#4]@8 ~@22 f#3@8 ~@16 [f#3,a#3,d#4]@7 ~@4]/4", // G5 F# B D#m D#5 B D#m
  O: "[~@4 [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@7 ~ [g#3,b3,d#4]@4 [g#3,b3,d#4]@4 e3@2 b2 ~@8 [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@4 [f#3,b3,d#4]@6 ~@5 f#3@4 [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@4 [f#3,b3,d#4]@4 b2@2 ~@9 [f#3,a#3,d#4]@3 ~ [f#3,a#3,d#4]@6 ~@2 [f#3,a#3,d#4]@4 [f#3,a#3,d#4]@4 d#3@2 ~@9 [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@7 ~ [g#3,b3,d#4]@4 [g#3,b3,d#4]@5 ~@10 [f#3,b3,d#4]@3 ~ [f#3,b3,d#4]@7 ~ [f#3,b3,d#4]@4 [f#3,b3,d#4]@6 ~@9 [f#3,b3,d#4]@4 b2@2 ~ [f#3,b3,d#4]@4 [f#3,b3] ~@8 b2@3 ~@8 [f#3,a#3,d#4]@4 d#3@3 [f#3,a#3,d#4]@4 ~@9 d#3@3 e3@4 ~@4 [g#3,b3,d#4]@4, ~ e3@7 ~@7 e3@9 ~@3 [f#3,b3]@8 ~@23 f#3@4 ~@26 d#3@5 ~ d#3@13 d#3@9 ~@3 e3@5 ~ e3@14 e3@12 b3@8 ~@97, ~@28 d#4@7 ~@23 [b3,d#4]@8 ~@23 [f#3,a#3]@8 ~@23 [g#3,b3]@8 ~@21 b2@6 b2@14 ~ b2@11 b2@5 b2@8 ~@10 b2@5 ~@8 d#3@8 ~@7 d#3@3 d#3@5 ~@8 e3@8, ~@31 b2@14 b2@12 ~@2 b2@17 b2@9 ~@5 d#4@7 ~@24 d#4@7 ~@22 f#3@9 ~@23 [f#3,b3]@8 ~@12 [f#3,b3,d#4]@4 [f#3,b3,d#4]@7 [f#3,a#3,d#4]@8 ~@12 [f#3,a#3,d#4]@4 [f#3,a#3,d#4]@7 [g#3,b3,d#4]@8 ~@4, ~@152 d#4@7 ~@24 d#4@7 ~@66]/8", // G#m B D#m G#m B B5 D#m G#m …
  P: "[~@12 [g#3,b3,d#4]@5 ~@10 [f#3,b3,d#4]@4 b2@3 ~@9 [f#3,b3,d#4]@7 ~ b2@3 ~@4 [f#3,b3,d#4]@4 b2@2, e3@6 e3@4 e3@7 b2@6 b2@8 ~@6 b2@4 b2@8 ~@2 d#4@7 ~@6, ~@3 [g#3,b3,d#4]@5 [g#3,b3,d#4]@4 ~@7 [f#3,b3,d#4]@8 ~@7 [f#3,b3,d#4]@5 [f#3,b3,d#4]@4 ~@7 [f#3,b3]@8 ~@6, ~@27 b2@4 ~]/2", // G#m B G#m B B5
  Q: "~@10 [f#3,b3,d#4]@6 ~@9 [f#3,a#3,d#4]@4 d#3@3, ~ [f#3,b3,d#4]@5 [f#3,b3,d#4]@4 ~@6 d#3@5 d#3@8 ~@3, ~@4 b2@4 b2@7 ~@2 [f#3,a#3]@8 ~@7, ~@18 d#4@7 ~@7", // B D#m B F#
  R: "[~@5 [f#3,a#3,d#4]@2 ~ [f#3,a#3,d#4]@6 ~@10 [g#3,b3,d#4]@4 e3@2 [g#3,b3,d#4]@4 ~@2 [g#3,b3,d#4]@4 [g#3,b3,d#4]@5 ~@2 [f#3,b3,d#4]@30 ~@2 [b3,e4]@11 ~ [b3,d#4]@19 ~ [b3,e4]@10 ~@2 d#4@18 ~@3 e4@9 ~@2 d#4@34 ~@3, [f#3,a#3,d#4]@5 ~@11 [g#3,b3,d#4]@8 ~@54 [e3,g#3]@11 ~@21 [e3,g#3]@12 [f#3,b3]@19 ~ [e3,g#3]@11 b2@36 ~@3, ~@3 d#3@4 d#3@7 ~ e3@5 e3@8 ~@6 e3@10 ~@2 b2@31 ~@13 [b2,f#3]@20 ~@11 b2@19 ~@3 b3@10 ~ [f#3,b3]@35 ~@3]/6", // D#m G#m B E5 B E5 D#m G#m …
})).s("gm_acoustic_guitar_steel").gain(0.39).pan(0.4)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@5 A B@3 C D@5 E ~ F G@2 ~ H I@2 ~ J K L ~@7 M ~@4 N ~ O P Q R ~@2 S ~@2 T U ~@12 V@2 ~@5 W ~@10
>`.pickRestart({
  A: "~ a3 ~@4 c#4@2, ~@19 a2@9 ~@4", B: "[~@19 g#3@5 g#3@4 g#3@3 f#3@5 f#3@4 c#4@7 f#3@5 f#3@4 c#4@7 a3@5 ~@28]/3",
  C: "~@4 a3@4 ~@16 c#4@7 ~, ~@19 a2@9 ~@4",
  D: "[~@19 g#3@5 g#3@4 g#3@3 f#3@5 f#3@4 c#4@7 f#3@5 f#3@4 c#4@7 a3@5 ~@27 a3@5 ~@27 g#3@9 ~@11 c#3@4 c#3@5 ~@4, ~@127 c#3@5 ~@28]/5",
  E: "~@12 f#3@3 ~@17", F: "~@20 c#4@3 a2@5 ~@4, ~@19 a2@4 ~@9",
  G: "[~@12 c#3@3 ~@5 g#3@3 c#3@5 ~@3 f#3@9 f#3@7 f#3@5 [f#3,c#4]@3 ~ [f#3,c#4]@7 ~, ~@19 c#3@4 ~@32 d3@5 ~@4]/2", // F#5
  H: "~@3 a2@5 ~@24", I: "[~@22 c#3@4 c#3@4 c#3@4 ~@9 f#3@7 f#3@5 [f#3,a3,c#4]@4 ~@5]/2", J: "~@15 a2",
  K: "~@24 c#3@5 ~@3", L: "f#3 ~@3", M: "~@11 f#3@5 ~ f#3@3 f#3@6 ~@6", N: "~@5 f#3 ~@2", O: "~@7 [d3,g3,b3]",
  P: "~@6 [e3,a3,c#4] c#4", Q: "~@7 [b3,f#4]", R: "b3!2 ~@2 [e3,g#3] ~@3", S: "~@9 f#3@8 ~@15", T: "~@6 c#3!2",
  U: "~@5 f#3@8 ~@12 f#3@4 ~@3", V: "[~@7 g#3@2 ~@7]/2", W: "~@9 d#4 ~@22",
})).s("gm_acoustic_guitar_steel").gain(0.23).pan(0.4)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@45 [~@7 x] x ~@2 [~@25 x ~ x!3 ~@2] ~@33>").gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A@2 B C D@2 E F ~@16 G H ~@3 I ~@12 J ~@3 K ~@3 L ~@3 D ~@7>".pickRestart({
  A: "~@19 x ~@12", B: "~@9 x ~@6", C: "~@9 x ~@5 x", D: "~@17 x ~@14", E: "~ x", F: "~@16 x ~@14 x", G: "~@4 x!4",
  H: "x!2 ~@6", I: "~@5 x!2 ~@25", J: "~@27 x!3 ~@2", K: "~@15 x ~@2 x ~@6 x ~@6", L: "~@12 x!2 ~ x!3 ~ x ~@12",
})).gain(0.38)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@21 A B C D E F@2 G H I J K L M N O ~@3 P@4 ~ P Q R S T U V W X ~@10 Y W Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@4
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@12 x ~@14 x ~@4", C: "~@11 x ~@15 x ~@4", D: "~@11 x ~@20", E: "~@5 x ~@7 x ~@2",
// … 58 more lines

More by Battisti