Strudelify

Amore Amore (Elisabeth)

Hasselhoff David

KeyA majorTempo120 bpm
0:00/0:00
// Amore Amore (Elisabeth) — Hasselhoff David
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · "FINGERDBAS"
const bass = note(`<
  ~@6 A B C D A E@2 F E B G H D I J K L M ~ N O A@2 P Q R G S P T U V W X Y D Z X AA AB AC AD AE AF AG D AH AI AJ A M ~
  AK AL AM AN AO AP AQ AR S AS AT U D AU AV AW@2 AN AX P AW AY@2 S P AZ BA BB BC BD BE BF AX T BG X BH P BI BJ BH X BK
  BL BM ~
>`.pickRestart({
  A: "a1@5 ~ e2@3 ~ e2@2 e1@3 ~", B: "a1@5 ~ e2@3 ~ e2@2 e1@4", C: "a1@5 ~ e2@3 ~ e2@2 ~@2 e1@2",
  D: "a1@5 ~ e2@3 ~ e2@3 ~ e1@2", E: "e1@5 ~ b1@3 ~ b1@2 e1@3 ~", F: "e2@5 ~ b1@2 ~@2 b1@2 e2@3 ~",
  G: "d2@6 a2@3 ~@3 a1 ~@3, ~@5 a2@3", H: "d2@5 ~ a2@3 ~ a2@2 d2@4", I: "a1@6 e2@3 ~ e1@3 ~ e1 ~",
  J: "e1@5 ~ b1@2 ~@2 b1@2 e2@3 ~", K: "e1@13 ~@3", L: "a1@4 ~@2 e2@3 ~ e2@3 ~ e1@2", M: "a1 ~@3",
  N: "e2@5 ~ b2@2 ~@2 b2@2 b1@3 ~", O: "e2@6 b2@3 ~ b2@2 b1@3 ~", P: "a1@5 ~ e2@3 ~ e2@2 a1@4",
  Q: "e2@4 ~@2 b2@3 ~ b2@2 b1@3 ~", R: "d2@5 ~ a2@3 ~ a2@2 a1@4", S: "d2@6 a2@3 ~ a2@2 d2@4",
  T: "e1@5 ~ b1@3 ~ b1@2 e1@4", U: "e2@3 ~", V: "a1@5 ~ e2@2 ~@2 e2@2 a1@4", W: "e1@5 ~@3",
  X: "a1@5 ~ e2@3 ~ e2@2 a1@3 ~", Y: "a1@4 ~@2 e1@3 ~ e1@3 ~ e1@2", Z: "a1@6 e2@3 ~ e2@2 a1 ~ a1 ~",
  AA: "e2@5 ~ b2@3 ~ b2@2 e2 ~ b1@2", AB: "e2@6 b2@3 ~ b2@3 ~ b1@2", AC: "e2@6 b2@3 ~ b2@4 b1@2",
  AD: "e2@6 b1@4 e2@3 ~ e1@2", AE: "a1@6 e2@3 ~ e2@3 ~ a1@2, b1 ~@15", AF: "d2@5 ~ a2@3 ~ a2@4 d2@2",
  AG: "d2@3 a2@2 d2@2 a2", AH: "a1@6 e2@3 ~ e2@3 ~ a1@2", AI: "e1@5 ~ b1@3 ~ b1@2 e2@3 ~", AJ: "e1@15 ~",
  AK: "e2@5 ~ b2@5 ~ e2@3 ~", AL: "e2@6 b2@3 ~ b1@2 e2@2 ~@2", AM: "a1@5 ~ e2@3 ~ e1 ~ a1@3 ~",
  AN: "a1@6 e2@3 ~ e2@2 a1@3 ~", AO: "a1@6 e2@3 ~ e2@2 a1@4", AP: "e2@3 b2 ~ b2 e2@2", AQ: "d2@6 a2@3 ~ a1@2 d2@3 ~",
  AR: "d2@6 a2@3 ~ a2@2 d2@2 ~@2", AS: "a1@5 ~ e2@3 ~ e1@2 a1@4", AT: "e1@5 ~ b1@2 ~@2 b1@2 e1@3 ~",
  AU: "a1@5 ~ e2@3 ~ e2@2 a1@2 ~@2", AV: "a1@6 e2@3 ~ a1@3 ~ a1@2", AW: "e2@6 b2@3 ~ b2@2 e2@3 ~",
  AX: "a1@5 ~ e2@3 ~ e1@2 a1@3 ~", AY: "d2@5 ~ a2@3 ~ a1@2 d2@3 ~", AZ: "e1@5 ~ b1@2 ~@2 b1@2 e1@4", BA: "e2@13 ~@3",
  BB: "a1@5 ~ e2@2 ~@2 e2@2 e1@3 ~", BC: "a1@5 ~ a1@2 b1@3 ~ c#2@3 ~", BD: "d2@4 ~@2 a2@3 ~ a2@2 a1@3 ~",
  BE: "d2@6 a2@4 a1@2 d2@3 ~", BF: "d2@5 ~ a2@3 ~ a2 ~ d2@4", BG: "e2@9 ~@7", BH: "e1@5 ~ b1@3 ~ e1@2 e2@4",
  BI: "e1@5 ~ b1@4 e1@2 e2@4", BJ: "a1@6 e2@3 ~ a1@2 e2@3 ~", BK: "e1@5 ~ b1@2 ~@2 e1@2 e2@3 ~",
  BL: "a1@5 ~ f#2@3 ~ e2@2 c#2@3 ~", BM: "a1",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · synth strings 2 · "SYN STRING"
const synth_strings_2 = note(`<
  A@2 B@2 C@7 D@3 E@2 F@2 G@4 H@2 ~ I@2 J@4 K@8 L M@8 N@8 ~@2 O@2 P@3 Q@4 R@2 S@5 T@4 U@4 V W X@6 Y@6 Z@7 ~
>`.pickRestart({
  A: "[[a4,c#5]@5 ~ [a4,c#5]@6 [b4,d5]@4 [c#5,e5]@15 ~, a3]/2", // A Bm C#m
  B: "[[f#5,a5]@6 [f#5,a5]@5 ~ e5@4 [d5,f#5]@16, d4, ~@11 g#5@4 ~@17]/2", // F#m D
  C: "[[e5,g#5]@5 ~ [e5,g#5]@6 [d5,f#5]@4 [c#5,e5]@5 ~ [c#5,e5]@6 [b4,d5]@4 [a4,c#5]@64 [c#5,e5]@6 [b4,d5]@5 [a4,c#5]@5, e4]/7", // E D C#m Bm A C#m Bm A
  D: "[~ [g#4,b4]@7]/3", E: "[[d5,f#5]@3 [c#5,e5]@3 [b4,d5]@5 [a4,c#5]@5]/2", F: "[f#4,a4,d5]/2",
  G: "[[a4,c#5]@31 ~ [d4,g#4,b4]@31 ~, e4@31 ~]/4", H: "[[c#4,e4,a4]@11 ~@5]/2", I: "[~ b4, [d4,e4,g#4]]/2",
  J: "[~ [f#4,a4] ~@13 c#5@32 ~ [g#4,b4,e5]@16, ~ a4@22 ~@9, ~@3 e4@61, ~@3 c#4@31 ~@30]/4", // F#m E
  K: "[[f#4,d5]@47 ~@17 [g#4,b4]@22 g#4 ~ [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 c#5@13 ~ [g#4,b4]@8 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@2, a4@61 ~@37 a4@12 ~ d4@9 ~@8, ~@47 c#5@17 ~@64, ~@48 e4@73 ~@7]/8", // D G#m D C#m Bm G#m D C#m …
  L: "~ [a4,c#5]@7, e4", // A
  M: "[~@6 [e4,g#4,b4]@9 ~@33 [c#5,e5]@6 [b4,d5]@6 [a4,c#5]@9 ~@41 g#4 ~ [d5,f#5]@6 [c#5,e5]@6 [b4,d5]@4, ~@6 d4@7 ~@2 c#4@31 ~@24 b4@42 ~@16, ~ e4@7, ~@16 a4@36 ~@17 g#4@40 ~@19]/8", // E C#m Bm A D C#m Bm
  N: "[~@6 c#5@10 [f#4,d5]@32 c#5@33 g#4@31 ~ c#4@15, ~@6 a4@74 ~ d4@29 ~@18, ~@3 e4@5, ~@81 b4@27 ~@4 a4@16]/8", // D
  O: "[~@5 b4@27, [d4,e4,g#4]@31 ~]/2", P: "[~@15 c#5@32 ~, e4, [c#4,a4]@23 ~]/3",
  Q: "[[g#4,b4]@15 ~ [a4,d5]@48, d4@13 ~@2 d4@48 ~, ~@16 f#4@45 ~@3]/4", R: "[c#5 [d4,g#4,b4], e4]/2",
  S: "[~@6 g#4 ~ [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 ~@13 c#4@32 ~ [d4,b4]@16, ~@3 e4@37, ~@9 c#5@23 ~@8, ~@18 a4@44 ~ g#4@17]/5", // D C#m Bm G
  T: "[~@3 c#5@5, ~@7 c#4@24 ~, ~@15 e4@49, ~@15 a4@46 ~@3]/4",
  U: "[[g#4,b4]@15 ~ f#4 ~ f#4 ~ f#4@41 ~@3, d4@13 ~@2 d4@46 ~@3, ~ [a4,d5]@3]/4", V: "[e4,c#5], c#4@7 ~",
  W: "[d4,g#4,b4]", // G#dim
  X: "[~@6 g#4@2 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 ~@12 c#4@15 ~@3 d5@47 c#4, ~@6 e4@39 ~@2 d4@45 ~@4, ~@3 a4@13, ~@6 c#5@10 f#4@15 ~]/6", // D C#m Bm
  Y: "[c#5@16 [g#4,b4]@22 g#4 ~ [d5,f#5]@4 [c#5,e5]@2 ~@4 c#5@14 g#4@15 ~ [e4,a4]@14 ~@2, e4@79 ~ c#5@16, ~@16 d4@16 ~@14 [b4,d5]@4 a4@12 ~@2 b4@17 ~@15, ~@48 c#4@15 ~ d4@13 ~@2 c#4@15 ~@2]/6", // G#m D C#m A5 Bm
  Z: "[[d4,e4]@15 ~ a4@14 ~@18 [e4,a4]@14 ~@2 b4@16 ~@15 a5@14 ~@3, [g#4,b4]@8 e4@15 ~@9 e4@22 ~@2, ~@15 c#4@15 ~ [d4,g#4]@15 c#4@16 ~ d4@14 ~@3 [a3,a4,c#5]@29 ~@3, ~@32 b4@16 ~@16 g#4@15 ~@33]/7", // Dsus2 A5 G#m Ddim A
})).s("gm_synth_strings_2").gain(0.2).pan(0.9)

// chords · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  A B C D E F G@2 ~@15 H@2 I@2 J@2 K L M N O@2 P@2 Q R@2 S ~@15 T U V W X@2 Y Z M N AA AB AC AD AE AF AG AH@2 AI AJ@2 AK
  AL@8 M N AM@4 AE AN AO@2 AP@2 AQ@2 AR@2 ~
>`.pickRestart({
  A: "[a4,c#5]@5 ~ [a4,c#5]@6 [b4,d5]@4", B: "[c#5,e5]@7 ~", C: "[f#5,a5]@5 ~ [f#5,a5]@6 [e5,g#5]@4",
  D: "[d5,f#5]@13 ~@3", E: "[e5,g#5]@5 ~ [e5,g#5]@5 ~ [d5,f#5]@4", F: "[c#5,e5]@5 ~ [c#5,e5]@5 ~ [b4,d5]@3 ~",
  G: "[[a4,c#5]@13 ~@3]/2", // A
  H: "[~@2 [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@11 ~ [c#5,g#5]@3 ~ e5@2]/2", // F#m C#5
  I: "[~@8 g#4@10 [e5,g#5]@3 ~ [e5,g#5] ~ [e5,g#5]@2 ~ [f#5,a5]@3 [e5,g#5]@2, d5@17 ~@15, ~@4 e5@13 ~@15]/2", // E F#m E
  J: "[[d5,f#5]@6 [a4,c#5,e5]@12 [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5] ~]/2", // D A F#m
  K: "[c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@3 ~ [c#5,g#5]@4 e5@2", L: "~@4 e5@11 ~, [b4,d5]@7 ~, ~@4 g#4@9 ~@3",
  M: "[d5,f#5]@5 ~ [d5,f#5]@6 [e5,g#5]@4, a4@3 ~", N: "[f#5,a5]@6 [e5,g#5]@6 [d5,f#5]@3 ~",
  O: "[[f#5,a5]@6 [e5,g#5]@6 [d5,f#5]@3 ~ [c#5,e5]@12 ~@4, ~@15 a4@16 ~]/2", // F#m E D C#m
  P: "[[e4,b4,d5]@19 ~@3 e4@2 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@2]/2", Q: "~ [a4,c#5]@7",
  R: "[~@6 e4@2 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 [e4,a4,c#5]@13 ~]/2", S: "~@6 [b3,e4,b4]@9 ~",
  T: "~@2 [c#5,a5]@5 ~ [c#5,a5]@3 ~@3 [c#5,a5] ~", U: "a5@5 g#5@2 e5, c#5@7 ~", V: "~ [g#4,b4,e5]@3, d5",
  W: "~@2 [e5,g#5]@3 ~ [e5,g#5] ~ [e5,g#5]@3 [f#5,a5]@3 [e5,g#5]@2", // E F#m E
  X: "[f#5@6 [a4,c#5,e5]@12 [c#5,a5]@11 ~ [c#5,a5] ~, d5 ~@7]/2", Y: "[c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@4 g#5@4 e5@2",
  Z: "~@4 e5@11 ~, [g#4,b4,d5]@7 ~", AA: "[f#5,a5]@3 [e5,g#5]@3 f#5@2, ~@6 d5 ~", AB: "[a4,c#5,e5]@11 ~@5",
  AC: "~ g#4@7, [e4,b4]", AD: "~@8 [d5,f#5] ~ [d5,f#5]@2 [c#5,e5]@2 [b4,d5]@2", AE: "~ [a4,c#5]@6 ~",
  AF: "~@2 [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@5 ~ [c#5,a5] ~", // F#m
  AG: "[c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@3 ~ [c#5,g#5]@3 ~ [c#5,e5] ~", // F#m C#5 C#m
  AH: "[~@4 e5 ~ e5@11 ~ [e5,g#5]@3 ~ [e5,g#5] ~ [e5,g#5]@2 ~ [f#5,a5]@3 g#5@2, d5@17 ~@13 e5 ~, ~@4 [g#4,b4]@15 ~@13]/2", // E F#m G#m
  AI: "f#5@3 [a4,c#5,e5]@5, d5 ~@3", // A
  AJ: "[~@2 [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@3 ~ [c#5,a5] ~ [c#5,a5]@7 ~ a5@4 g#5@4 e5@2, ~@11 c#5@4 ~]/2", // F#m
  AK: "~@4 e5 ~ e5@9 ~, [g#4,b4,d5]@7 ~", // G#dim
  AL: "[[d5,f#5]@12 [e5,g#5]@4 [f#5,a5]@6 [e5,g#5]@6 [d5,f#5]@3 ~ [f#5,a5]@6 [e5,g#5]@6 [d5,f#5]@2 ~@2 [a4,c#5]@13 ~@7 d4@16 ~@2 e4@2 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 [a4,c#5]@13 ~ a4@14 ~@2, a4@46 ~ e4@37 ~@27 [c#4,e4]@15 ~@2, ~@48 e5@10 ~@6 [g#4,b4]@19 ~@29 c#5@2 ~@14]/8", // D E F#m E D F#m E D …
  AM: "[[f#5,a5]@5 ~ [e5,g#5]@6 [d5,f#5]@3 ~ c#5@13 ~@3 [e4,g#4,b4]@19 ~@3 e4@2 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@2, ~@15 a4@14 ~@2 d4@19 ~@14, ~@16 e5@11 ~@37]/4", // F#m E D E D C#m Bm
  AN: "[d4,e4,g#4]@8 [d5,f#5]@3 ~ [c#5,e5]@2 [b4,d5]@2", // E7 D C#m Bm
  AO: "[~@2 [a4,c#5]@12 ~@2 [e4,g#4]@8 [d5,f#5]@3 ~ [c#5,e5]@2 [b4,d5]@2, ~@15 d4@9 ~@8]/2", // A E D C#m Bm
  AP: "[~@2 [a4,c#5]@11 ~@3 b4@8 [d5,f#5]@3 ~ [c#5,e5]@2 [b4,d5]@2, ~@7 d4@5 ~@4, ~@15 [e4,g#4]@9 ~@8]/2", // A D C#m Bm E
  AQ: "[~@2 [a4,c#5]@11 ~@3 b4@8 [d5,f#5]@4 c#5@2 [b4,d5]@2, ~@15 [d4,e4,g#4]@10 ~@3 e5 ~@3]/2", // A D Bm E7
  AR: "[~@2 a4@11 ~@3 [a4,a5]@12 ~@4, ~@2 c#5@9 ~@4 [c#5,e5]@13 ~@4, ~@15 c#4@2 ~@15]/2", // A C#m
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.7)

// chords · glockenspiel · "GLOCKENSPL"
const glockenspiel = note(`<
  A B C D E F G@2 ~@17 H ~ I ~@12 J ~@17 H ~ I ~@12 H ~ I ~@10 K ~@5 L M L M L M L M L M N ~
>`.pickRestart({
  A: "[a5,c#6] ~@5 a5@4 ~@2 [b5,d6]@3 ~, ~@3 c#6 ~@4", B: "[c#6,e6]@11 ~@5",
  C: "[f#6,a6]@4 ~@2 [f#6,a6]@5 ~ [e6,g#6]@3 ~", D: "[d6,f#6]@5 ~@3", E: "[e6,g#6]@5 ~ [e6,g#6]@4 ~@2 [d6,f#6]@4",
  F: "[c#6,e6]@5 ~ [c#6,e6]@5 ~ [b5,d6]@2 ~@2", G: "[[a5,c#6]@9 ~@7]/2", H: "~@10 [f#6,a6] ~ [e6,g#6]@4",
  I: "~@5 [d6,f#6] [c#6,e6]@2", J: "~@10 e6 ~ b6 ~ e7 ~", K: "~@2 c#6 ~ b5 ~ a5@2 e6 ~@7",
  L: "~@8 [d6,f#6] ~ [d6,f#6] ~ [c#6,e6] ~ [b5,d6] ~", M: "~@2 [a5,c#6] ~@13", N: "[c#6,a6] ~@15, a5 ~@7",
})).s("gm_glockenspiel").gain(0.25).pan(0.1)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@6 A@4 B C D@2 E F G@2 A@2 D@2 A H I J K L M N O P@3 Q R S Q R Q T A@2 B C D@2 E F G@2 A@2 U V A H I O W X M N Y P@3
  Q R Z Q M N AA AB AC M N AA P@2 AD Q R Z A@2 G@2 AE AF AG Z AF R Q AH Q R Q AH Q AI ~
>`.pickRestart({
  A: "[e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  B: "[e4,c#5,e5] ~ [e4,c#5,e5] ~ [e4,c#5,e5] ~ [e4,b4,d5] ~ [e4,b4,d5] ~ [e4,b4,d5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // C#m E7 A
  C: "[e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // A E
  D: "[e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~", // E7
  E: "[e4,d5,f#5] ~ [e4,d5,f#5] ~ [e4,d5,f#5] ~ [e4,c#5,e5] ~ [e4,c#5,e5] ~ [e4,c#5,e5] ~ [e4,b4,d5] ~ [e4,b4,d5] ~", // D C#m E7
  F: "[e4,b4,d5] ~ [e4,b4,d5] ~ [e4,b4,d5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // E7 A
  G: "[f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~", // D
  H: "[e4,a4,c#5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~", // A
  I: "[c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,g#5] ~ [c#5,e5,g#5] ~ [c#5,e5] ~", // A C#m
  J: "[d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~", // E7
  K: "[d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,a5] ~ [d5,e5,a5] ~ [d5,e5,g#5] ~", // E7 Dsus2 E7
  L: "[d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // D A
  M: "[a4,c#5,e5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~", // A
  N: "[a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,a5] ~ [a4,c#5,e5,g#5] ~ [a4,c#5,e5,g#5] ~ [a4,c#5,e5] ~", // A Amaj7 A
  O: "[d5,e5] ~ [d5,e5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~", // Dsus2 E7
  P: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  Q: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // A
  R: "[g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~", // E7
  S: "[g#4,b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~", // E7
  T: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~", // A E7
  U: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4,d5] ~ [e4,g#4,b4,d5] ~", // E E7
  V: "[e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4,e5] ~", // E
  W: "[d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,g#5] ~ [d5,e5,a5] ~ [d5,e5,g#5] ~", // E7 Dsus2 E7
  X: "[d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ e5 ~ [c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // D C#m A
  Y: "[b4,d5,e5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~", // E7
  Z: "[b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5] ~", // E7
  AA: "[b4,d5,e5] ~ [b4,d5,e5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~", // E7
  AB: "[b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [b4,d5,e5,g#5] ~ [d5,e5,a5] ~ [d5,e5,g#5] ~", // E7 Dsus2 E7
  AC: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // D A
  AD: "[a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~", // D
  AE: "[f#4,a4,d5] ~ [f#4,a4,d5] ~ [f#4,a4,d5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  AF: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5] ~, ~@7 e5", // A
  AG: "[g#4,b4,d5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~ [g#4,b4,d5,e5] ~", // G#dim E7
  AH: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~", // E
  AI: "[a4,c#5,e5] ~@15", // A
})).s("gm_pizzicato_strings").gain(0.25).pan(0.9)

// chords · shamisen
const shamisen = note(`<
  A B C D E F G@2 ~@2 H I ~@2 J K L@2 M@2 N@2 O@2 ~ P@2 Q@2 ~@2 R@2 S T ~ U@2 V W X ~@2 H Y ~@2 Z K AA@2 AB@2 AC Z O@2 ~
  AD@2 AE@2 ~@2 AF AG AH AI AJ@4 ~ P@2 AK@2 ~@2 AF S AL AM ~ AN@3 AF S@2 AO ~ AP@4 AQ@2 AP@2 V AR@2 ~
>`.pickRestart({
  A: "[a4,c#5]@11 [b4,d5]@4 ~", B: "[c#5,e5]@7 ~, d5 ~@15", C: "[f#5,a5]@5 ~ [f#5,a5]@6 [e5,g#5]@4", D: "[d5,f#5]@15 ~",
  E: "[e5,g#5]@3 [e5,g#5]@3 [d5,f#5]@2", F: "[c#5,e5]@5 ~ [c#5,e5]@6 [b4,d5]@3 ~", G: "[[a4,c#5]@31 ~]/2",
  H: "[c#5,e5]@6 [b4,d5]@6 [a4,c#5]@3 ~", I: "[a4,c#5]@3 [g#4,b4]@5", J: "[d5,f#5]@6 [c#5,e5]@6 ~ b4@2 ~, ~@12 d5@3 ~",
  K: "[b4,d5]@6 [a4,c#5]@9 ~", L: "[d5,f#5]/2", M: "[[c#5,e5]@15 ~]/2", N: "[[e5,g#5]@24 [d5,f#5]@5 [c#5,e5]@3]/2",
  O: "[[b4,d5]@6 [a4,c#5]@13 ~@13]/2", P: "[~@5 [f#5,a5] [e5,g#5]@5 ~@5]/2", Q: "[~@5 [d5,f#5] [c#5,e5]@5 ~@5]/2",
  R: "[[d5,f#5]@11 ~ e5@3 ~ g#5 ~@5 [e5,g#5]@6 [d5,f#5]@4, ~@11 g#5@4 [f#5,a5]@7 ~@10]/2", // D E D F#m
  S: "[f#5,a5]@6 [e5,g#5]@6 [d5,f#5]@3 ~", T: "c#5@7 ~, e5@3 ~", U: "[~@4 [d5,f#5]@2 [c#5,e5] [b4,d5]@2 [a4,c#5]@7]/2",
  V: "~@4 [d5,f#5]@2 [c#5,e5] [b4,d5]", W: "~@2 [a4,c#5]@13 ~", X: "~@10 e6@5 ~, ~@6 e5@9 ~, ~@8 b5@7 ~",
  Y: "[a4,c#5]@6 [g#4,b4]@9 ~", Z: "[d5,f#5]@6 [c#5,e5]@5 ~ [b4,d5]@3 ~", AA: "[[d5,f#5]@31 ~]/2",
  AB: "[[c#5,e5]@29 ~@3]/2", AC: "[e5,g#5]@15 ~", AD: "[~@10 [f#5,a5]@2 [e5,g#5]@11 ~@9]/2",
  AE: "[~@10 [d5,f#5]@2 [c#5,e5]@9 ~@11]/2", AF: "[d5,f#5]@3 [e5,g#5]",
  AG: "[f#5,a5]@6 [e5,g#5]@5 ~ d5@4, ~@11 f#5@4 ~", AH: "[f#5,a5]@5 ~ [e5,g#5]@6 [d5,f#5]@4, ~@12 g#5 ~@3",
  AI: "[c#5,e5]@7 ~", AJ: "[[e5,g#5]@20 ~@4 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 a4@25 ~@5, ~@34 c#5@21 ~@9]/4",
  AK: "[~@10 [d5,f#5]@2 [c#5,e5]@7 ~@13, ~@12 f#5 ~@19]/2", AL: "[f#5,a5]@3 [e5,g#5]@3 [d5,f#5]@2",
  AM: "[c#5,e5]@11 ~@5", AN: "[~@4 [d5,f#5]@2 [c#5,e5] [b4,d5]@2 [a4,c#5]@13 ~@2]/3", AO: "[c#5,e5]@13 ~@3",
  AP: "[~@8 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 [a4,c#5]@13 ~]/2", // D C#m Bm A
  AQ: "[~@8 [d5,f#5]@4 [c#5,e5]@2 [b4,d5]@4 [a4,c#5]@11 ~@3]/2", AR: "[~ a5, ~ [a4,c#5]@15]/2",
})).s("gm_shamisen").gain(0.3).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@6 A@2 B@12 C@2 A D@17 C B@12 C D A D@46 E ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x ~@3 x", C: "x ~@2 x!2 ~ x ~", D: "x!4", E: "x",
})).gain(0.45)

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

// drums · low tom
const low_tom = s("lt").struct("<~@5 A ~@16 B C A ~@3 C A ~@25 B C A ~@3 C A ~@8 C D ~@3 C D ~@23 B ~@2>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@3 x", D: "~@14 x!2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  A@5 B C D@7 E D E D@6 F G H D E D E D E D@2 I D F D F D@4 E D@4 E D@7 F G J D@5 E D E D@6 E D I D E D@7 E D E D@3 E D
  E D E D I D K D@2 F ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@4 x", C: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", D: "x!8", E: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
  F: "x", G: "x ~@6 x", H: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", I: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2",
// … 24 more lines

More by Hasselhoff David