Strudelify

Whale Song Farewell to Tarwathie

Claudia Schmidt

KeyE minorTempo101 bpm
0:00/0:00
// Whale Song   Farewell to Tarwathie — Claudia Schmidt
// 101 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 46 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(101/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.

// other · slap bass 1 · "SLAPBASS"
const slap_bass_1 = note("<~@41 A@5>".pickRestart({
  A: "[c4@11 ~]/5",
})).s("gm_slap_bass_1").gain(0.35)

// bass · electric bass finger · "FINGERDBA"
const bass = note("<~@4 A@2 B C D E F G H I J G K ~@7 L M@2 N O P@2 Q R S@2 T U V@2 W@2 X@3 ~@2>".pickRestart({
  A: "[~@15 g2@2 ~ f#2@2 ~ f2@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~, ~@14 g1@2 ~ f#1@2 ~ f1@2 ~ f1@2 ~@23]/2",
  B: "e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 d2",
  C: "e1@2 e2 e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 e2",
  D: "e1@2 d2 e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 a#2 a2 g2 e2 [d2,e2] b1 a1", // Dsus2
  E: "e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 d2, g1 ~@23",
  F: "e1@2 e2 e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ d2@2 e1 c#2 ~ d2, ~@17 e1@2 ~@5",
  G: "e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@3 d2@2 e2",
  H: "e1@2 e2 e1@2 e2 c#1@2 c#2 c#1@2 c#2 d1@2 d2 d1@2 d2 d#1@2 d#2 d#1@2 d#2",
  I: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ f2@2 g2",
  J: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ c#3 c3 a#2 c3 a#2 g2",
  K: "e1@2 ~ e1@2 ~ e1@3 a2 b2 e3 d3 b2 a2 g2 b2 a2 g2 e2 d2 b1 a1 g1", L: "~@23 e1",
  M: "[g1@2 ~ g1@2 ~ g1@2 g2 g1 ~@2 g2@2 ~ g2@2 g#1@3 g2 a1@6 a2@2 a1 a2@2 g2 e2@2 a1 g2 ~ a1 a2@2 a1 d2@2 e2 a1@2 g2, ~@11 g1@2 ~ g1@3 ~@31]/2",
  N: "g1@2 ~ g1@2 ~ g1@2 g2 g1@3 f#1@2 f#2 f#1@2 f2 f1@2 d2 e2@3",
  O: "~@2 e2 e1@3 ~@3 e1@2 b1 d2 e2 g2 d2 e2 a2 e2 g2 b2 a2 g2 e2, ~@6 e2@5 ~@13",
  P: "[g1@2 ~ g1@2 ~ g1@2 g2 g1@2 d2 e2@2 g1 g2@2 g1 a2@2 e2 g1@2 a1@4 a2@2 a1 a2@2 g2 e2@2 a1 b2@2 a1 g2@2 a2 ~@2 a2 e2@2 g2, d2 ~@41 a1@5 ~]/2",
  Q: "g1@2 ~ g1@3 g2@2 ~ g2@2 g1 f#1@2 ~ f#1@2 f2 f1@2 d2 e2@3, ~@4 g1 ~@2 f#2 ~@4",
  R: "e1@3 e2@3 e1@3 g3 e3 d3 e3 d3 b2 d3 b2 a2 b2 a2 g2 a2 g2 [e1,e2], f1 ~@11", // E
  S: "[g1@2 ~ g1@2 ~ g1@2 ~ g1 ~@2 g1@3 g1 ~ g#1@3 g1 a1@5 ~ a1@2 ~ a1@2 b2 a1 ~ a1 a2@3 a1@2 a2@3 g2 e2@2 [g1,d#2], ~@8 g2@4 ~@20 a2@3 ~@13]/2", // Cm
  T: "g1@2 ~ g1@2 ~ g1@2 ~ g1 ~ g1 f#2@2 f#1 f#1@2 ~ f1 ~ f1 e2@3, ~@8 g2@3 ~@6 f2@3 ~@4",
  U: "~@2 e2@3 b1 d2@2 e2 g2@2 e2 a2@2 ~ a2@2 g2 a2@2 g2 e2@2 [g1,d#2], ~@18 g2 ~@5", // Cm
  V: "[g1@2 ~ g1@2 ~ g1@2 ~ g1 ~ g1 g2@3 g1@2 g#1@3 g1 a1@5 ~ a1@2 ~ a1@2 c#2 e2@2 a1 g2@2 ~ g2@2 e2 g2@2 a2 g2@2 a1, g2 ~@7 g2@3 ~ g1 ~@35]/2",
  W: "[g1@2 ~ g1@2 ~ g1@2 ~ g1 ~ g1 f#2@2 f#1@3 ~ f1@3 ~@2 g1@4 g#1@2 ~ a1@2 ~@3 c2@3 ~ c#2 ~@2 d2@3 ~@3, ~@8 g2@3 ~@6 f2@3 ~@28]/2",
  X: "[~ a#0@11]/3",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@4 A B C D@2 E F G H I J K@2 ~@16 L@2 M@2 N@4 ~@5>".pickRestart({
  A: "~@23 d3", B: "~@2 e3 e2@2 b2 [g3,d4]@2 ~ [g3,d4] ~ b2 [g3,d4]@3 b2 ~ [a3,d4] ~@2 d3 b2 ~ e3",
  C: "~@2 e3 e2@2 b2 [g3,d4] ~@2 [g3,d4] ~ b2 ~@3 b2 ~ [e3,b3] ~@6, ~@12 [g3,d4]@5 ~@7", // G5 E5 G5
  D: "[~@2 [d3,a3] e2@2 b2 [e3,b3] ~@2 [g3,d4] ~@5 b2 ~ [a3,e4] ~@2 g3 b2 ~ d4 e4@3 d4 ~@2 [d4,g4]@2 ~ b3@2 b2 [a#3,e4]@2 ~ [a3,e4] ~@2 e4@2 [f3,g3] d3@2 e3, ~@12 [g3,d4]@5 ~@6 g4@5 ~@14 a3 ~@2 e3 ~@2]/2", // D5 E5 G5 A5 G5 A#dim A5 Fsus2 …
  E: "~@2 e3 e2@2 b2 [g3,d4] ~@2 [g3,d4] ~ b2 ~@3 b2 ~ [a3,e4] ~@2 d3 e2@2 e3, ~@12 [g3,d4]@5 ~@7", // G5 A5 G5
  F: "~@2 e3 e2@2 [b2,c3] [g3,d4] ~@2 [g3,d4] ~@5 b2 ~ [e3,b3] ~@2 b2 [d3,a3] ~ [e3,b3], ~@12 [g3,d4]@5 ~@7", // Cmaj7 G5 E5 D5 E5 G5
  G: "~@2 [e3,b3] e2@2 b2 [g3,d4] ~@2 [g3,d4] ~ b2 [g3,d4]@3 b2 ~ [a3,e4] ~@2 g3 b2 ~ e2, ~@3 f2 ~@20", // E5 G5 A5
  H: "b2 ~ [d5,e5,a5] ~@2 b2 [a4,b4,e5] ~@2 c3 ~ [g4,a4,d5] ~@2 c3 [d4,e4]@2 ~ c3 ~ [a3,b3,e4] ~ c3 [f3,g3], ~@15 [a4,b4] ~@8", // Dsus2 Asus2 Gsus2 Dsus2 Asus2 Fsus2 Asus2
  I: "~@2 [c4,f4] g2 ~ g2 [c4,f4] ~@2 [c4,f4] ~ g2 ~@3 g2 ~ [b3,f4] ~@3 g2 ~ f3, ~@12 [c4,f4]@5 ~@7", // F5 Bdim F5
  J: "~@2 g3 g2 ~ g2 [c4,f4] ~@2 [c4,f4]@2 g2 [c4,f4]@3 g2 ~ [b3,f4] ~@6", // F5 Bdim
  K: "[~@2 e3 e2@2 b2 d4@2 ~ [g3,d4] ~@2 [g3,d4]@3 b2 ~ [a3,d4] ~@2 [f3,g3] b2@2 ~ b2 ~ [d4,g4,a4,d5] ~@2 b2 [d4,g4,a4,d5]@2 ~@4 [d4,g4,a4,d5]@2 ~ b2 ~ [e4,a4,b4,e5]@7, ~@6 g3 ~@16 e2@2 ~@23]/2", // G5 D5 Fsus2 Dsus4 Esus4
  L: "[g2@2 [f3,b3] ~@2 g2 [f3,b3]@2 ~ g2@2 ~ [f3,b3]@2 ~ g2@2 [f#3,c4]@2 ~ g#2 [g3,c#4]@5 ~ [g3,c#4] ~@2 a2 ~ [g3,c#4] ~@2 a2 [g3,d4]@2 ~ d4@2 [g3,c#4]@2 ~@2 a2 ~ g3, ~@36 c#4 ~@2 g3 ~@8]/2", // Fdim F#dim Gdim G5 Gdim
  M: "[~@2 [f3,b3] g2@3 [f3,b3]@2 ~ g2@2 ~ [f#2,e3,a#3]@2 ~ f#2 ~ [d#3,a3] ~@2 f2 [d3,g#3]@5 ~ [d3,g#3] ~@2 [e2,f2] ~ [d3,g#3] e2 ~ e2@3 [e4,b4] ~@2 e2 [e4,b4]@2 ~ e2@2 e3]/2", // Fdim F#7 D#dim Ddim Fmaj7 Ddim E5
  N: "[~@2 [e3,b3] ~@2 g2 [f3,b3]@2 ~ g2@2 ~ [f3,b3] ~@2 g2 ~ [f#3,c4] ~@2 g#2 [g3,c#4]@5 ~ [g3,c#4] ~@2 a2 ~ [g3,c#4] ~@2 a2 [g3,d4]@2 ~ d4@2 [g3,c#4]@2 ~ a2 g3@2 a2@2 ~ [f3,b3] ~@2 g2 [f3,b3]@2 ~ [g2,f3,b3]@2 ~ [f#2,e3,a#3]@2 ~ f#2 ~ [d#3,a3] ~@2 f2 [d3,g#3]@2 [b3,e4,g4]@3 ~ [c4,f4,g#4]@2 ~ [c#4,f#4,a4]@2 ~@3 [e4,a4,c5]@3 ~ [f4,a#4,c#5]@2 ~ [f#4,b4,d5]@3 ~@3, ~@36 c#4 ~@2 g3 ~@56]/4", // E5 Fdim F#dim Gdim G5 Gdim Fdim G7 …
})).s("gm_lead_2_sawtooth").gain(0.32).pan(0)

// other · brass section · "BRASS 1"
const brass_section = note("<~@8 A@3 B@4 C@2 ~@8 D E F ~ D E F A@3 G@4 H@2 ~@5>".pickRestart({
  A: "[~@15 [b3,b4]@2 ~ [d4,d5]@2 [e4,e5] ~@2 [g4,g5]@2 ~@18 d4 d5 [b3,b4]@2 [d4,d5]@4 [e4,e5]@2 ~@12 b4 [d4,d5]@2 ~ e4@2 ~, ~@42 [e4,e5]@2 ~@21 b3@2 ~@2 e5 ~@2]/3", // B D E G B D E D …
  B: "[[b4,b5]@2 ~@4 [a#4,a#5]@3 ~@3 [a4,a5]@2 a#5 a5 g5 ~ [a4,a5]@2 ~ [b4,b5]@2 [g4,g5]@4 [e4,e5]@2 ~@10 b3@2 ~ [d4,d5]@2 [e4,e5] ~@2 [f4,f5]@3 ~@10 [e4,e5]@2 ~@4 [d4,d5]@2 ~@3 [g3,g4]@4 [f3,f4]@2 ~@12 b4 [d4,d5]@2 ~ [e4,e5]@2 ~, ~@14 a#4@2 ~@23 b4 ~@56, ~@15 g4@2 ~@72 b3@2 ~@5]/4", // B A# A B G E D E …
  C: "[[b4,b5]@3 ~@3 [a#4,a#5]@2 ~@4 [a4,a5]@2 [a#4,a#5] [g5,a5] ~@2 [a4,a5]@2 ~@2 [g4,g5]@4 ~ [e4,e5]@2 ~@19, ~@15 g4@2 ~@4 [b4,b5]@2 ~@25]/2", // B A# A A# Gsus2 A G E …
  D: "[g3,f4,b4,e5,g5]@3 ~@9 [g3,f4,b4,e5,g5]@2 ~@3 [c5,f5,g#5] ~@3 [a3,g4,c#5,f#5,a5]@3, ~@17 [g#3,f#4]@2 ~@5", // Em Fm F#m G#7
  E: "~@12 [a3,g4,c#5,f#5,a5]@2 ~@3 [g#3,f#4,c5,g#5]@2 ~@2 [g3,f4,b4,e5,g5]@3, ~@17 f5 ~@6", // F#m G#7 Em
  F: "~@12 [f#3,e4,a#4,d#5,f#5]@2 ~@3 [a4,d5,e5,f5] ~@3 [e3,d4,g#4,c#5,e5]@3, ~@17 [f3,d#4]@2 ~@5", // D#m Dm C#m F7
  G: "[[b4,b5]@2 ~@4 [a#4,a#5]@3 ~@3 [a4,a5]@2 a#5 a5 g5 ~ [a4,a5]@2 ~ [b4,b5]@2 [g4,g5]@4 [e4,e5]@2 ~@10 [b3,b4]@2 ~ [d4,d5]@2 [e4,e5] ~@2 [g4,g5]@2 ~@18 d4 d5 [b3,b4]@2 [d4,d5]@4 [e4,e5]@2 ~@12 b4 [d4,d5]@2 ~ e4@2 ~, ~@14 a#4@2 ~@77 e5 ~@2, ~@15 g4@2 ~@49 [e4,e5]@2 ~@21 b3@2 ~@5]/4", // B A# A B G E B D …
  H: "[[b4,b5]@2 ~@4 [a#4,a#5]@3 ~@3 [a4,a5]@2 a#5 a5 g5 ~ [a4,a5]@2 ~ [b4,b5]@2 [g3,g4]@4 [g#3,g#4]@2 ~ [a3,a4]@2 ~@3 [c4,c5]@4 [c#4,c#5]@2 ~ [d4,d5]@3 ~@3, ~@7 a#4 ~@16, ~@15 g4@2 ~@31]/2", // B A# A B G G# A C …
})).s("gm_brass_section").gain(0.72).pan(0.3)

// chords · piano · "A.PIANO 3"
const piano = note("<~@5 A B C D E F G H I J K L M@4 N@4 M@4 N@4 M@4 O@4 P@3 ~@2>".pickRestart({
  A: "~@2 [a3,b3,d4,e4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~ e3 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@3 e3 ~@2", // Asus4 Dsus4
  B: "~@2 [a3,b3,d4,e4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~@2 [a3,d4,g4]@3 e3 ~ [a3,d4,g4] ~@5 [a3,b3,d4,e4]", // Asus4 Dsus4 Asus4
  C: "~@2 [a3,b3,d4,e4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~ e3 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@5 [a3,b3,d4,e4]", // Asus4 Dsus4 Asus4
  D: "~@2 [a3,b3,d4,e4] e2@2 e3 [a3,b3,d4,e4] ~@2 [a3,b3,d4,e4] ~ e3 [a3,d4,g4]@3 e3 ~ [a3,d4,g4] ~@6", // Asus4 Dsus4
  E: "~@2 [a3,d4,g4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~@2 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@6", // Dsus4
  F: "~@2 [a3,b3,d4,e4] e3 ~ e2 [a3,d4,g4] ~@2 [a3,d4,g4] ~ e3 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@6", // Asus4 Dsus4
  G: "~@2 [a3,b3,d4,e4] e3@2 e2 [a3,d4,g4]@2 ~ [a3,d4] ~ e3 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@3 e3 ~ [a3,b3,d4,e4], ~@9 g4@2 ~@13", // Asus4 Dsus4 D5 Dsus4 Asus4
  H: "~@2 [a3,b3,d4,e4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~ e3 [a3,d4,g4]@3 e3 ~ [a3,d4,g4] ~@6", // Asus4 Dsus4
  I: "~@2 [f3,c4] ~@2 g2 [f3,c4] ~@2 [f3,c4] ~@2 [f3,c4]@3 g2 ~ [f3,b3]@2 ~@5", // F5 Fdim
  J: "~@2 [f3,c4] ~@2 g2 [f3,c4] ~@2 [f3,c4] ~ g2 [f3,c4]@3 g2 ~ [f3,b3]@2 ~@2 g2 ~@2, ~@17 a3 ~@6", // F5 Fdim
  K: "~@2 [a3,d4,g4] e2@2 e3 [a3,d4,g4]@2 ~ [a3,d4,g4] ~ e3 [a3,d4,g4]@4 ~ [a3,d4,g4] ~@3 e3 ~ [a3,d4]", // Dsus4 D5
  L: "~@2 [b3,e4] e2@2 e3 [a3,d4,g4] ~@2 [a3,d4,g4] ~ e3 [a3,d4,g4]@3 e3 ~ [a3,d4,g4] ~@6", // E5 Dsus4
  M: "[[g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [g2,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4]@3 b3 d3 [g#2,f#3,f4,g#4]@4 [a2,g3,c#4,f#4,a4]@5 ~ [a2,g3,c#4,f#4,a4] ~@2 [a2,g3,a4]@2 ~ [g3,c#4,f#4,a4] ~@2 [a2,g3,c#4,f#4,a4]@3 [a2,g3,c#4] ~ [g#2,f#3,f4,g#4]@3 [b2,c4] [g2,f3,b3,e4,g4]@5 ~ [g2,f3,b3,e4,g4] ~@2 [g2,f3,g4]@2 ~ [g2,f3,e4,g4]@2 ~ [f#2,e3,a#3,d#4,f#4]@3 ~@2 [d#3,a3,f4]@2 ~ a2 [e2,d3,g#3,c#4,e4]@5 ~ [e2,d3,g#3,c#4,e4] ~@2 e2@2 [g#3,c#4,e4] ~@2 [e2,d3] [e4,b4,c5,e5]@2 ~ d3@2 [g#3,b3] ~@2 [g#3,c#4,e4] e2@2 d3, ~@9 f3@2 ~@6 c4@2 ~@2 g#4 ~@8 [c#4,f#4] ~@2 a2@2 ~@6 c4 ~@3 d#4 ~@8 [b3,e4] ~@2 b3 ~@7 [f2,d4]@3 ~@28, ~@65 c#4 ~@18 a#4 ~@11]/4", // Em C# F#m A7 F#m A7 C# Cmaj7 …
  N: "[[g2,a2,f3,b3,e4,g4]@2 ~ [f3,b3,g4]@2 ~ [g2,f3,b3,e4,g4]@2 ~ [f3,e4,g4]@2 ~ [g2,f3,b3,e4,g4]@3 d3 ~ [g#2,f#3,g#4]@2 ~@2 [a2,g3,c#4,f#4,a4]@5 ~ [a2,g3,c#4,f#4,a4] ~@2 [a2,g3,a4]@2 ~ [g3,f#4,a4]@2 ~ [a2,g3,c#4,f#4,a4]@3 d3 ~ [g#2,f#3,g#4]@2 ~@2 [g2,f3,b3,e4,g4]@5 ~ [g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [f#2,e3,f#4]@2 ~@3 [d#3,a3,c#4,d4,e4,f4] ~@3 [e2,d3,b3,e4]@5 [b3,e4,f4] ~@3 [a#4,b4,d5] ~@2 [a#4,e5]@2 ~ e5@2 g4 e4@2 d4 [e4,f4]@2 a3 g3@2 e3, [c4,d#4,f4] ~@2 [g2,e4] ~@2 [d#4,f#4] ~@2 [g2,b3] ~@7 [c4,f4] ~@3 [f4,g#4] ~@8 [c#4,f#4] ~@2 [a2,c#4] ~@2 [d3,f4] ~@4 [c4,f4] ~@3 d#4 ~@14 [a#3,d#4] ~@4 f2@2 ~@2 g#3@3 ~@3 e2@20 ~, ~@78 e5@2 ~@4 a4 ~@5 b3 ~@5]/4", // Em G7 Em C Em G#7 F#m A7 …
  O: "[[g2,a2,f3,b3,e4,g4]@2 ~ [f3,b3,g4]@2 ~ [g2,f3,b3,e4,g4]@2 ~ [f3,e4,g4]@2 ~ [g2,f3,b3,e4,g4]@3 d3 ~ [g#2,f#3,g#4]@2 ~@2 [a2,g3,c#4,f#4,a4]@5 ~ [a2,g3,c#4,f#4,a4] ~@2 [a2,g3,a4]@2 ~ [g3,f#4,a4]@2 ~ [a2,g3,c#4,f#4,a4]@3 d3 ~ [g#2,f#3,g#4]@2 ~@2 [g2,f3,b3,e4,g4]@5 ~ [g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [g2,f3,b3,e4,g4] ~@2 [f#2,e3,f#4]@2 ~@3 [d#3,a3,c#4,d4,e4,f4] ~@3 [g#3,b3,e4]@2 [b3,e4,g4]@3 ~ [c4,f4,g#4]@2 ~ [c#4,f#4,a4]@2 ~@3 [e4,a4,c5]@3 ~ [a#4,c#5]@2 ~ [f#4,b4,d5]@2 ~@4, [c4,d#4,f4] ~@2 [g2,e4] ~@2 [d#4,f#4] ~@2 [g2,b3] ~@7 [c4,f4] ~@3 [f4,g#4] ~@8 [c#4,f#4] ~@2 [a2,c#4] ~@2 [d3,f4] ~@4 [c4,f4] ~@3 d#4 ~@14 [a#3,d#4] ~@4 f2@2 ~@2 [e2,d3]@5 ~@13 f4 ~@2 a#4 ~@5]/4", // Em G7 Em C Em G#7 F#m A7 …
  P: "[~@3 [d4,g4,c5,e5]@22 ~@11]/3", // C
})).s("gm_piano").gain(0.34).pan(0.9)

// other · distortion guitar · "DISTORTIO"
const distortion_guitar = note("<~@4 A B C@3 D E@2 F G H I J ~@7 K L M N@3 O@3 P@2 Q@4 R@2 ~@5>".pickRestart({
  A: "~@15 [e3,a3] ~@8, ~@5 b3@3", B: "~@18 d3@2 ~ e3@2 ~",
  C: "[g3@5 e3@2 ~@10 [g3,a3] [a3,b3] ~@8 e4@2 [d4,g4] e4@2 d4 c#4 [b3,c#4] ~@2 c#4 [a3,b3] g3 b3 a3 g3 e3 ~@2 f3 d3@16 [e3,g3]@2 [d3,d#3] [f#3,g3,a3] ~ e3@4, ~@18 g4@9 ~@9 [d4,e4]@2 ~@6 d3@2 ~@26, ~@45 g3@2 ~@25]/3", // Gsus2 Asus2 G5 Bsus2 Asus2 Em D#maj7 F#m …
  D: "e2@4 ~@5 b2@2 ~ d3@5 e3@2 ~@5",
  E: "[~@6 e3@2 d3 b2@2 ~ g3@2 ~ g3@2 ~ e3 ~@2 d3@2 e3@3 ~@4 e3@2 d3 b2@2 ~ d3@4 ~ e3@2 ~@5]/2",
  F: "~@2 e2 ~@3 e3@2 d3 b2@3 g3@2 ~ g3@2 ~ d3@2 e3 ~@2 g2", G: "~@2 g2 ~@2 g2 g3@2 f3 d3@2 ~ f3@4 ~ g3@2 ~@5",
  H: "~@2 g2 ~@2 g2 f3@2 g2 g3@2 ~ a#3@4 ~ g3@6 d#3, ~@12 b3 ~@11", I: "c3 ~@4 e2 e3@2 d3 ~@3 d3@4 ~ e3 ~@5 e2",
  J: "~@2 e2 e3@2 ~ d3@2 ~ e3@2 b2 g3@2 ~ e3@2 b2 d3@2 e3@4", K: "~@15 e4 g4 a4 a#4 b4 [c#5,d5] d#5 e5 [g5,a5]",
  L: "e5 a5@8 g5@2 e5 g5 ~ b5@7 ~@2 a5, ~@11 b5",
  M: "g5@2 a5 a5@3 g5 ~ e5 g5@2 e5@4 d5@2 ~ d5@6, ~@17 e5@2 ~@5, ~@9 c5 ~@2",
  N: "[~@2 d5 [b4,c#5] a4 [b4,c#5] [d5,e5]@2 [b4,c#5] a4 g4 b4 ~ [e4,g4] f#4 ~ [f#4,a4] e4 d4@8 c#4 c4 b3 [c4,d4] d#4 e4 f#4 [e4,f#4] g4 a4 e4 [f#4,g4] [g4,a4] a4 a#4 [b4,c5] [c#5,d5] [c5,d5,d#5,e5,g5,a5] [d#5,e5] [g5,g#5,a5] ~@10 e6@8 ~ e6 c#6 b5 a5 b5 ~ c#6, ~ e5@2 ~@7 a4@3 ~@2 [g4,g#4]@2 ~@28 b5@11 ~@8 d6@2 ~@4 d6@2]/3", // Bsus2 Dsus2 Bsus2 Em F#m Csus2 Esus2 Gmaj7 …
  O: "[[b5,c6] a5 [g5,b5] ~ a5 g5@10 e5@2 b4 e5@2 d5@7 e5@2 a4@3 a#4 g4@2 e4 a4@2 e4 g4@3 e4@2 d4 b3@2 a3@10 d4@9 g3@5 ~]/3", // Cmaj7 G
  P: "[e3@3 g3 ~@2 g3@2 f3 d3@2 g2 f3@5 g3@3 ~ a2@6 a3 ~@2 a3@2 g3 e3 ~ a3@3 g3 e3@2 d3 g3@2 e3@4]/2",
  Q: "[~@3 g3 ~@2 g3@2 ~ d3@2 g2 f#3@3 f#2 ~ f3@3 ~ e3@6 e2@2 ~ e3@2 d3 b2 ~ g3@4 e3@2 b2 d3 ~ e3@3 g2@4 g3 ~@2 g3@2 ~@4 f3@5 g3@2 ~@2 a2@6 a3@2 ~ a3@2 ~ a3@2 g3 a3@2 ~ e3@2 g3@4 e3@3, ~@4 f3 ~@38 g3 ~@4]/4",
  R: "[g2@3 g3 ~@2 g3@2 f3 g2@3 f#2@3 ~@2 f2@3 ~ e2 ~ g2@4 g#2 ~@2 a2@2 ~@3 c3@4 c#3@2 ~ d3@4 ~@2]/2",
})).s("gm_distortion_guitar").gain(0.56)

// other · distortion guitar · "DISTORTIO" · soft notes
const distortion_guitar_soft = note("<~@4 A B ~ C ~ D E F G H ~ I G ~@15 J@2 ~ K ~ L ~@8>".pickRestart({
  A: "~@14 e3 ~@9", B: "~@17 e2 ~@5 g2", C: "~@23 e3", D: "~@6 e3 ~ d3 ~@15", E: "~@3 e2@2 ~@19",
  F: "~@2 e2 ~@2 e2 ~@18", G: "~@5 e2 ~@18", H: "~@11 g2 ~@11 g2", I: "~@2 e2 ~@6 b2@2 [e2,f2] ~@8 e2 ~@3",
  J: "[~@21 b3@2 ~ [f3,g3] ~@14 g2@2 ~@7, ~@23 [g#3,a3]@2 ~@23]/2", K: "g2@3 ~@17 f2 ~@3",
  L: "~@9 d3@2 g2 ~@3 g2 ~@8, ~@4 f3 ~@7",
})).s("gm_distortion_guitar").gain(0.32)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@41 A@3 ~@2>".pickRestart({
  A: "[~ [f3,c4,d4,g4,c5,e5]@11]/3", // C
})).s("gm_pad_sweep").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C A B A C A B A C A B A C D@8 A B A C A B A C A B A C A B A E F ~@4
>`.pickRestart({
  A: "x ~@10 x!2 ~@10 x", B: "~@2 x ~@8 x!2 ~@11", C: "~ x ~@4 x ~@5", D: "x!4", E: "~@3 x ~@7 x ~@3 x ~@8",
  F: "~ x!3 ~@8",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@17 [~@3 x]!3 [~@7 x] [~@3 x]!3 [~@7 x] ~@21>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<~ A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C E ~@5>".pickRestart({
  A: "~ x!7", B: "~@5 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", C: "x!8", D: "~@5 x ~@3 x ~ x!2 ~@2 x ~@2 x ~ x ~@3",
  E: "x!3 ~ x!4",
})).gain(0.59)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~ A B A@3 C ~@3 D ~@3 C ~@3 D ~@3 E ~@5>".pickRestart({
  A: "~@3 x", B: "~@6 x!2", C: "~@3 x!4 ~ x ~ x ~@7 x ~@2 x ~@2", D: "~@7 x", E: "~@23 x",
})).gain(0.52)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B C D A B C D A B C D A B C D ~@8 A B C D A B C D A B C D A B C ~@6
>`.pickRestart({
  A: "x ~@22 x", B: "~ x ~@10", C: "~@23 x", D: "~@2 x ~@18 x ~@2",
})).gain(0.66)

// drums · high tom
const high_tom = s("ht").struct("<~@20 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 C ~@5>".pickRestart({
  A: "~@9 x!4 ~ x ~ x ~ x ~@5", B: "~@12 x ~@2 x ~ x!2 ~@2 x ~@2", C: "~@21 x!2 ~",
})).gain(0.52)

// drums · crash
const crash = s("cr").struct("<~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B A ~@3 A ~@3 A ~@3 A ~@3 A ~ B C D ~@4>".pickRestart({
  A: "x", B: "~@23 x", C: "~@3 x ~@2 x ~@4 x ~@3 x ~@2 x ~@5", D: "~ x ~@2",
})).gain(0.66)

// drums · cowbell
const cowbell = s("cb").struct("<~ [x!4]!16 ~@8 [x!4]!15 ~@6>").gain(0.66)

// drums · bongos
const bongos = s("bongo:4").struct("<~@17 A B C D C E F G A B C D C E F G A B C D C E F ~@6>".pickRestart({
  A: "~@3 x ~@5 x ~@5 x!2 ~@4 x ~@2", B: "~@3 x ~ x ~@9 x ~ x ~@6", C: "~@3 x ~@10 x ~@3 x ~@5",
  D: "~@4 x ~ x!2 ~ x!2 ~", E: "~@8 x ~@5 x ~@6 x ~@2", F: "~ x", G: "~@2 x ~@9 x ~@4 x ~@3 x ~@2",
})).gain(1.04)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~@17 A B C D C E F G A B C D C E F G A B C D C E F ~@6>".pickRestart({
  A: "~@6 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3", B: "~@6 x ~ x ~@9 x ~ x ~@2 x", C: "~@15 x ~ x ~@6",
  D: "~@9 x ~ x ~@3 x ~ x ~@3 x ~ x", E: "~@9 x ~ x ~@12", F: "x ~ x ~@2 x ~ x ~@3 x ~@12",
  G: "~@6 x ~@2 x ~ x ~@2 x ~@3 x ~@5",
})).gain(1.04)

// drums · congas
const congas = s("conga:13").struct("<~@17 A B A B A@2 C D A B A B A@2 C D A B A B A@2 C ~@6>".pickRestart({
  A: "~@3 x ~@10 x ~@9", B: "~ x ~ x ~@2 x ~@5", C: "~ x ~@4 x ~", D: "~ x ~ x ~@8",
})).gain(1.26)

// drums · congas
const congas_2 = s("conga:18").struct("<~@17 A B A C A ~ D E A B A C A ~ D E A B A C A ~ D ~@6>".pickRestart({
  A: "~@3 x", B: "~@17 x ~@2 x ~@3", C: "~@17 x ~@6", D: "~@7 x ~@4", E: "~@12 x ~ x!2 ~@8",
})).gain(1.26)

// drums · congas
const congas_3 = s("conga:33").struct("<~@17 A B A B A@3 C A B A B A@3 C A B A B A@3 ~@6>".pickRestart({
  A: "~@9 x ~ x ~@9 x ~ x", B: "~@9 x ~@11 x ~ x", C: "~@9 x ~@8 x ~ x!2 ~@2",
})).gain(1.26)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~@17 A B C D C E D F A B C D C E D F A B C D C E D ~@6>".pickRestart({
  A: "x ~@2 x ~@7 x ~@2 x ~@2 x ~@6", B: "x ~@2 x ~@7 x ~@2 x ~@9", C: "~@3 x ~@7 x ~@2 x ~@9",
  D: "~@3 x ~@7 x ~@2 x ~@2 x ~@6", E: "~@3 x ~@10 x ~@2 x!2 ~@5", F: "~@3 x ~@7 x ~@6 x ~@5",
})).gain(1.67)

// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~@17 A B C A C D A E A B C A C D A E A B C A C D A ~@6>".pickRestart({
// … 34 more lines