Strudelify

De vissers van San Juan

Frank & Mirella

KeyD majorTempo120 bpm
0:00/0:00
// De vissers van San Juan — Frank & Mirella
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · piano
const piano = note(`<
  ~@21 A B C D E F G F H I A B C D E F G F H J K L M N O P Q J K L M N O P Q ~@8 A B C D E F G F H I A B C D E F G F H J
  K L M N O P Q J K L M N O P Q ~@5 R S T U V W X W Y Z R S T U V W X W Y@3 AA ~
>`.pickRestart({
  A: "[f#5,d6,f#6] ~ [f#5,d6,f#6]@3 ~ [g5,d6,g6] ~ [f#5,d6,f#6]@3 ~ [d5,f#5,a5,d6]@3 ~", // D G5 D
  B: "[f#5,d6,f#6] ~ [f#5,d6,f#6]@4 [g5,g6]@2 [f#5,d6,f#6]@3 ~ [d5,f#5,a5,d6]@3 ~, ~@6 d6 ~@9", // D G D
  C: "[f#5,d6,f#6] ~ [f#5,d6,f#6]@4 [d6,g6] ~ [f#5,d6,f#6]@3 ~ [d5,f#5,a5,d6]@3 ~, ~@3 g5 ~@4", // D G5 D
  D: "[a4,c#5,a5,c#6] ~ [a4,c#5,a5,c#6]@3 ~ [d5,d6]@2 [c#5,a5,c#6]@3 ~ [a4,c#5,e5,a5]@3 ~, ~@6 a5 ~@9", // A D F#m A
  E: "[c#5,a5,c#6] ~ [c#5,a5,c#6]@3 ~ [a5,d6] ~ [c#5,a5,c#6]@3 ~ [a4,c#5,e5,a5]@3 ~, ~@3 d5 ~@4", // F#m D5 F#m A
  F: "[c#5,a5,c#6] ~ [c#5,a5,c#6]@4 [a5,d6] ~ [c#5,a5,c#6]@3 ~ [a4,c#5,e5,a5]@3 ~, ~@3 d5 ~@4", // F#m D5 F#m A
  G: "[c#5,a5,c#6] ~ [c#5,a5,c#6]@3 ~ [d5,d6]@2 [c#5,a5,c#6]@3 ~ [a4,c#5,e5,a5]@3 ~, ~@6 a5 ~@9", // F#m D F#m A
  H: "[d5,f#5,d6,f#6] ~ [d5,f#5,d6,f#6]@4 [d6,g6] ~ [f#5,d6,f#6]@3 ~ [d5,f#5,a5,d6]@3 ~, ~@3 g5 ~@4", // D G5 D
  I: "[f#5,d6,f#6] ~ [f#5,d6,f#6]@3 ~ [d6,g6] ~ [f#5,d6,f#6]@3 ~ [d5,f#5,a5,d6]@3 ~, ~@3 g5 ~@4", J: "[d4,g4,b4]@7 ~@9",
  K: "[d4,g4,b4]@5 ~@3", L: "[d4,f#4,a4]@7 ~@9", M: "[d4,f#4,a4] ~", N: "[c#4,e4,a4] ~", O: "[c#4,e4,a4]@3 ~@5",
  P: "[d4,f#4,a4]@11 ~@5", Q: "[f#4,a4,d5]@11 ~@5",
  R: "[g5,d#6,g6] ~ [g5,d#6,g6]@3 ~ [g#5,d#6,g#6] ~ [g5,d#6,g6]@3 ~ [d#5,g5,a#5,d#6]@3 ~", // Cm G#5 Cm D#
  S: "[g5,d#6,g6] ~ [g5,d#6,g6]@4 [g#5,g#6]@2 [g5,d#6,g6]@3 ~ [d#5,g5,a#5,d#6]@3 ~, ~@6 d#6 ~@9", // Cm G# Cm D#
  T: "[g5,d#6,g6] ~ [g5,d#6,g6]@4 [d#6,g#6] ~ [g5,d#6,g6]@3 ~ [d#5,g5,a#5,d#6]@3 ~, ~@3 g#5 ~@4", // Cm G#5 Cm D#
  U: "[a#4,d5,a#5,d6] ~ [a#4,d5,a#5,d6]@3 ~ [d#5,d#6]@2 [d5,a#5,d6]@3 ~ [a#4,d5,f5,a#5]@3 ~, ~@6 a#5 ~@9", // A# D# Gm A#
  V: "[d5,a#5,d6] ~ [d5,a#5,d6]@3 ~ [a#5,d#6] ~ [d5,a#5,d6]@3 ~ [a#4,d5,f5,a#5]@3 ~, ~@3 d#5 ~@4", // Gm D#5 Gm A#
  W: "[d5,a#5,d6] ~ [d5,a#5,d6]@4 [a#5,d#6] ~ [d5,a#5,d6]@3 ~ [a#4,d5,f5,a#5]@3 ~, ~@3 d#5 ~@4", // Gm D#5 Gm A#
  X: "[d5,a#5,d6] ~ [d5,a#5,d6]@3 ~ [d#5,d#6]@2 [d5,a#5,d6]@3 ~ [a#4,d5,f5,a#5]@3 ~, ~@6 a#5 ~@9", // Gm D# Gm A#
  Y: "[d#5,g5,d#6,g6] ~ [d#5,g5,d#6,g6]@4 [d#6,g#6] ~ [g5,d#6,g6]@3 ~ [d#5,g5,a#5,d#6]@3 ~, ~@3 g#5 ~@4", // D# G#5 Cm D#
  Z: "[g5,d#6,g6] ~ [g5,d#6,g6]@3 ~ [d#6,g#6] ~ [g5,d#6,g6]@3 ~ [d#5,g5,a#5,d#6]@3 ~, ~@3 g#5 ~@4", // Cm G#5 Cm D#
  AA: "[g4,d#5,g5,d#6]", // Cm
})).s("gm_piano").gain(0.34)

// chords · pizzicato strings
const pizzicato_strings = note(`<
  ~@40 A B C D E F G H I B C D E J K ~@28 A B C D E F G H I B C D E J K ~@29
>`.pickRestart({
  A: "[g4,b4] ~ [g4,b4] ~@5 [g4,b4] ~@3 [a4,c#5] ~@3", B: "[b4,d5] ~ [b4,d5] ~@3 [b4,d5] ~ [a4,c#5] ~@3 [g4,b4] ~@3",
  C: "[f#4,a4] ~ [f#4,a4] ~@3 [f#4,a4] ~ [f#4,a4] ~@3 [g4,b4] ~@3", // F#m G
  D: "[a4,c#5] ~@3 [a4,c#5] ~ [g4,b4] ~@3 [f#4,a4] ~@5", // A G F#m
  E: "[e4,g4] ~ [e4,g4] ~@3 [e4,g4] ~ [e4,g4] ~@3 [f#4,a4] ~ [g4,b4] ~", F: "~@6 [g4,b4] ~ [f#4,a4] ~@3 [f#4,a4] ~@3",
  G: "[d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [d4,f#4] ~", // D
  H: "~@2 [d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~", // D
  I: "[g4,b4] ~ [g4,b4] ~@3 [g4,b4] ~ [g4,b4] ~@3 [a4,c#5] ~@3", // G A
  J: "~@2 [g4,b4] ~@3 [g4,b4] ~ [f#4,a4] ~@3 [f#4,a4] ~@3", K: "[d4,f#4] ~ [d4,f#4] ~@3 [d4,f#4] ~ [d4,f#4] ~@7",
})).s("gm_pizzicato_strings").gain(0.39).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@3 A B C B C B D E A B C B C B D E F G H I J K L K M N O P H I J K L K M N O Q R S T U V W X Q R S T U V W X Y Z AA
  AB AC AD AE AF H I J K L K M N O P H I J K L K M N O Q R S T U V W X Q R S T U V W X Y Z AA AG AH AI AJ AK AL AM AL AN
  AO AP AQ AI AJ AK AL AM AL AN AO AP@3 AR ~
>`.pickRestart({
  A: "d2@15 ~", B: "d2@3 a1", C: "d2@7 ~", D: "e2@7 ~", E: "g1@3 a1", F: "d2@5 ~ d2 ~ d2@6 b1@2",
  G: "a1@6 a1 ~ a1@4 a1@4", H: "d2@4 ~@2 d2@2 d2@3 ~ a1@2 b1@2", I: "d2!2 ~ d2 d2@2 a1 b1",
  J: "d2@2 d2@2 ~@2 d2 ~ d2@4 e1@2 f#1@2", K: "a1@2 a1@2 ~@2 a1@2 a1@3 ~ e1@2 f#1@2",
  L: "a1@2 a1@2 ~@2 a1 ~ a1@3 ~ e1@2 f#1@2", M: "a1@2 a1@2 ~@2 a1 ~ a1@4 e1@2 f#1@2",
  N: "a1@2 a1@2 ~@2 a1@2 a1@3 ~ a1@2 b1@2", O: "d2@2 d2@2 ~@2 d2 ~ d2@3 ~ a1@2 b1@2",
  P: "d2@2 d2@2 ~@2 d2 ~ d2@4 a1@3 ~", Q: "g1@4 ~@2 g1@2 g1@3 ~ d1@2 e1@2", R: "g1@5 ~ g1 ~ g1@3 ~ f#2@2 e2@2",
  S: "d2@5 ~ d2 ~ d2@4 a1@2 b1@2", T: "d2@5 ~ d2 ~ d2@4 c#2@2 b1@2", U: "a1@5 ~ a1 ~ a1@4 e1@2 f#1@2",
  V: "a1@5 ~ a1 ~ a1@4 f#2@2 e2@2", W: "d2@5 ~ d2@2 d2@4 a1@2 b1@2", X: "d2@4 ~@2 d2 ~ d2@4 a1@4",
  Y: "a1 ~ a1@3 ~ a1 ~ a1@3 ~ a1@2 b1@2", Z: "d2@2 d2@3 ~ d2 ~ d2@4 c#2@2 b1@2", AA: "a1@5 ~ a1 ~ a1@3 ~ a1@2 b1@2",
  AB: "d2@4 ~@2 d2 ~ d2@3 ~ c#2@2 b1@2", AC: "a1@2 a1@3 ~ a1@2 a1@3 ~ a1 ~ b1@2",
  AD: "d2@2 d2@2 ~@2 d2 ~ d2@4 c#2@2 b1@2", AE: "a1@2 a1@3 ~ a1@2 a1@3 ~ a1@2 b1@2",
  AF: "d2@2 d2@3 ~ d2 ~ d2@3 ~ a1@3 ~", AG: "d2@4 ~@2 d2@2 d2 ~ d2 c#2 c2@2 b1@2",
  AH: "a#1 ~ a#1 ~ a#1 ~ a#1@2 a#1 ~ a#1 ~ a#1 ~ a#1@2", AI: "d#2@4 ~@2 d#2@2 d#2@3 ~ a#1@2 c2@2",
  AJ: "d#2!2 ~ d#2 d#2@2 a#1 c2", AK: "d#2@2 d#2@2 ~@2 d#2 ~ d#2@4 f1@2 g1@2",
  AL: "a#1@2 a#1@2 ~@2 a#1@2 a#1@3 ~ f1@2 g1@2", AM: "a#1@2 a#1@2 ~@2 a#1 ~ a#1@3 ~ f1@2 g1@2",
  AN: "a#1@2 a#1@2 ~@2 a#1 ~ a#1@4 f1@2 g1@2", AO: "a#1@2 a#1@2 ~@2 a#1@2 a#1@3 ~ a#1@2 c2@2",
  AP: "d#2@2 d#2@2 ~@2 d#2 ~ d#2@3 ~ a#1@2 c2@2", AQ: "d#2@2 d#2@2 ~@2 d#2 ~ d#2@4 a#1@3 ~", AR: "d#1",
})).s("gm_electric_bass_finger").gain(0.39)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@21 A@3 B@2 C@3 D@2 A@3 B@2 C@3 E F@2 G@2 H@2 G@2 F@2 G@2 H@2 G@2 ~@8 A@3 B@2 C@3 D@2 A@3 B@2 C@3 E F@2 G@2 H@2 G@2
  F@2 G@2 H@2 G@2 ~@4 I J@3 K@2 L@3 M@2 J@3 K@2 L@3 N@4 ~
>`.pickRestart({
  A: "[a3,d4,f#4]/3", B: "[a3,c#4,e4]/2", C: "[a4@4 [a3,g4] a4, [c#4,e4]]/3", D: "[a3,d4,f#4]/2", E: "[a3,d4,f#4]",
  F: "[g4,b4,d5,g5]/2", G: "[f#4,a4,d5,f#5]/2", H: "[e4,a4,c#5,e5]/2", I: "[d4,f4,g#4,a#4]", J: "[a#3,d#4,g4]/3",
  K: "[a#3,d4,f4]/2", L: "[a#4@4 [a#3,g#4] a#4, [d4,f4]]/3", M: "[a#3,d#4,g4]/2", N: "[~ [a#4,d#5,g5], [a#3,d#4,g4]]/4",
})).s("gm_synth_strings_1").gain(0.23).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@3 A B C D E D F G A B C D E D F G A H I J K L M N O P Q R S J K L M N O P Q T U V W X@2 Y@2 U@2 V W X@2 Y@2 Z AA Z
  AB AC Y AD AE S J K L M N O P Q R S J K L M N O P Q T U V W X@2 Y@2 U@2 V W X@2 Y@2 Z AA Z AB AF AG AH AI AJ AK AL AM
  AN AO AP AG AH AI AJ AK AL AM AN AO@3 AQ ~
>`.pickRestart({
  A: "[a3,d4] [a3,d4]@2 [d3,f#3,a3,d4] a3!4, [d3,f#3]@3 ~ [d3,f#3,d4]@2 [d3,f#3,d4]@2", // D5 D
  B: "[d3,f#3,a3,d4] [a3,d4]@2 [a3,d4] a3!4, ~ [d3,f#3]@3 [d3,d4]@2 [d3,d4]@2, ~@8 f#3 ~@3 f#3 ~@3", // D D5 D
  C: "[d3,f#3,a3,d4] [a3,d4]@2 [a3,d4] a3!4, ~ [d3,f#3]@3 [d3,f#3,d4]@2 [d3,f#3,d4]@2", // D D5 D
  D: "[d3,f#3,a3,d4] a3!2 [a3,d4]!5, ~ [d3,f#3]@3 [d3,f#3]@2 [d3,f#3]@2, ~ d4@2 ~@5", // D D5 D
  E: "[f#3,a3,d4] [a3,d4]@2 [a3,d4] a3!4, ~ [d3,f#3]@3 [d3,f#3,d4]@2 [d3,f#3,d4]@2", // D D5 D
  F: "[g3,b3,e4] [b3,e4]@2 [b3,e4] b3!4, ~ [e3,g3]@3 [e3,g3,e4]@2 [e3,g3,e4]@2", // Em E5 Em
  G: "[d3,g3,b3,d4] b3!2 [b3,d4]!5, ~ [d3,g3]@3 [d3,g3]@2 [d3,g3]@2, ~ d4@2 ~@5", // G Bm G5
  H: "[a2,d3,e3,a3,c#4,e4]@2 [a3,c#4,e4]@4 [a3,c#4,e4]@2 a3@2 a3@2 a3@2 a3 ~, ~ [a2,e3]@3 [a2,e3,c#4,e4]@2 [a2,e3,c#4,e4]@2", // A A5 A
  I: "[a3,d4,f#4] ~ [d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4] ~ [d4,f#4]@2, ~@6 a3 ~", // D
  J: "[a3,d4,f#4]!2 [a3,d4] [d4,f#4] [a3,d4,f#4]!2 [a3,d4] [d4,f#4], ~@4 f#4 ~@7 f#4 ~@3", K: "[a3,d4,f#4]!8",
  L: "[a3,c#4,e4]!8", M: "[a3,c#4,e4]!7 [c#4,e4]",
  N: "[a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [e3,a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2, e3 ~@3 e3 ~@3", // A
  O: "[a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2, [a2,e3] ~@3 [a2,e3] ~@3", // A A5
  P: "[a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2, ~@8 [a2,e3]@5 ~@3", // A A5
  Q: "[d3,f#3,a3,d4,f#4]@2 [d3,f#3,a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~ [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2, ~@4 [d3,f#3] ~@3", // D
  R: "[d3,a3,d4,f#4] [a3,d4,f#4]!3 [d3,a3,d4,f#4]!2 [a3,d4,f#4]!2, ~ d3@3 ~@2 d3@2", // D
  S: "[d4,f#4] ~ [d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d4,f#4] ~ [d4,f#4]@2, a3 ~@5 a3 ~", // D
  T: "a3 ~ [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~@3 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~", // G
  U: "~@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~@3 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~", // G
  V: "~@2 [d3,a3,d4,f#4]@2 [f#3,a3,d4,f#4] ~ [d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~", // D
  W: "~@2 [d3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 ~@2 [d3,a3,d4,f#4]@2 [f#3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~", // D
  X: "~@2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~", // A
  Y: "~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~", // D
  Z: "~@2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4]@2", // A
  AA: "~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4]@2 ~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4] ~", // D
  AB: "~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ [d3,a3,d4,f#4]@2 ~@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@2", // D
  AC: "~@2 [a2,e3,a3,c#4,e4]@2 [a2,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@2 [a2,a3,c#4,e4]@2 [a2,e3,a3,c#4,e4] ~", // A
  AD: "~ [a2,e3,a3,c#4,e4] [a2,a3,c#4,e4] [a2,e3,a3,c#4,e4] ~ [a2,e3,a3,c#4,e4] [a2,a3,c#4,e4] [a2,e3,a3,c#4,e4]", // A
  AE: "~ [d3,a3,d4,f#4]!3 ~ [d3,a3,d4,f#4]!3", // D
  AF: "[a#3,d4,f4] ~ [a#3,d4]@2 [d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4] ~, ~@2 f4 ~@13", // A# Dm A#
  AG: "[d#4,g4] ~ [d#4,g4]@2 [a#3,d#4,g4]@4 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [d#4,g4] ~ [d#4,g4]@2, a#3 ~@5 a#3 ~", // D#
  AH: "[a#3,d#4,g4]!2 [a#3,d#4] [d#4,g4] [a#3,d#4,g4]!2 [a#3,d#4] [d#4,g4], ~@4 g4 ~@7 g4 ~@3", AI: "[a#3,d#4,g4]!8",
  AJ: "[a#3,d4,f4]!8", AK: "[a#3,d4,f4]!7 [d4,f4]",
  AL: "[a#3,d4,f4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2 [f3,a#3,d4,f4]@2 [a#3,d4,f4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2, f3 ~@3 f3 ~@3", // A#
  AM: "[a#3,d4,f4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#2,f3,a#3,d4,f4]@2 [a#3,d4,f4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4]@2, [a#2,f3] ~@3 [a#2,f3] ~@3", // A# A#5
  AN: "[a#2,f3,a#3,d4,f4]@2 [a#2,f3,a#3,d4,f4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2 [a#3,d4,f4] ~ [a#3,d4] ~ [a#3,d4,f4]@2 [a#3,d4,f4]@2, ~@8 [a#2,f3]@5 ~@3", // A# A#5
  AO: "[d#3,g3,a#3,d#4,g4]@2 [d#3,g3,a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [a#3,d#4,g4] ~ [a#3,d#4,g4]@2 [a#3,d#4,g4]@2 [a#3,d#4,g4]@2, ~@4 [d#3,g3] ~@3", // D#
  AP: "[d#3,a#3,d#4,g4] [a#3,d#4,g4]!3 [d#3,a#3,d#4,g4]!2 [a#3,d#4,g4]!2, ~ d#3@3 ~@2 d#3@2", // D#
  AQ: "[d#3,a#3,d#4,g4]@15 ~", // D#
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.8)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@3 A@4 B@2 C@2 A@4 B@2 C@2 D@2 E@8 F@8 G@3 H@2 I@2 J@2 I@2 H@2 I@2 J@2 I@2 J I J I J I J K L M N O P Q R S L T L M N
  O P Q R S L ~@16 J I J I ~ U V W X Y Z AA AB U AC U V W X Y Z AA AB U ~@4
>`.pickRestart({
  A: "[~@31 d4, d3@3 [d3,b3,g4] d3@3 [d3,b3,g4] d3@3 [d3,b3,g4] d3@4, f#4 ~ f#4 ~ f#4 ~ f#4 ~, ~ d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 ~, ~ a3 [a3,f#4] ~ a3!2 [a3,f#4] ~ a3!2 [a3,f#4] ~ a3!2 [a3,f#4] [b3,g4]]/4", // G D Em
  B: "[~@15 d4, d3@3 [d3,b3,g4] d3@4, f#4 ~ f#4 ~, a3!2 [a3,f#4] ~ a3!2 [a3,f#4] [b3,g4], ~ d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 ~]/2", // G D Em
  C: "[~@15 d4, e3@2 ~ [e3,b3,a4] [g3,g4]@2 [g3,b3]!2, g4 b3 [b3,g4] ~ b3!2 g4@2, ~ e4@2 e4@2 e4@2 e4@2 d4@2 d4@2 d4@2 ~]/2", // Esus4 G Em
  D: "[~@16 c#4 ~ e4@2 c#4@2 e4@2 [a3,c#4,a4]@2 e4@2 ~@2 e4@2, d3@3 [d3,b3,g4] ~@4, f#4 ~@3, ~ d4@2 d4@2 d4@2 d4@2 ~@7, ~@4 a3@4 [a3,f#4]@4 ~@4 [a3,a4]@7 ~@5 [a3,c#4,a4]@4]/2", // A G D A
  E: "[~@3 g4 ~@7 g4 ~@7 g4 ~@7 d5 ~@7 d5 ~@7 d5 ~@7 d5 ~@7 d5 ~@3 a4, f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2, ~ d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 ~]/8",
  F: "[~@3 g4 ~@7 g4 ~@7 g4 ~@7 g4 ~@7 g4 ~@7 d5 ~@7 d5 ~@7 d5 ~@3 a4, f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2, ~ d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 f#4@2 a3@2 ~ d4@2 d4@2 d4@2 ~ f#4@2 a3@2 c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 ~]/8",
  G: "[~@3 d5 ~@7 d5 ~@7 g4 ~@3 d4, c#5@2 e4@2 ~ a4@2 a4@2 a4@2 ~ c#5@2 e4@2 f#4@2 a3@2 ~ d4@2 ~, ~ a4@2 ~ c#5@2 e4@2 c#5@2 e4@2 ~ a4@2 a4@2 d4@2 ~ f#4@2 a3@2]/3",
  H: "[g3,b3,d4,g4] ~@3 [g3,b3,d4,g4] ~@3", I: "[d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4] ~@3",
  J: "[a2,e3,a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4] ~@3", K: "[d3,a3,d4,f#4] ~@3 [d3,a3,d4,f#4] ~ a4 ~", L: "[d5,f#5]!16",
  M: "[d5,f#5] ~@3 [a4,d5] ~ [c#5,e5] ~ [d5,f#5]@3 ~ [e5,g5]@3 ~", // D D5 C#m D Em
  N: "[f#5,a5] ~ [f#5,a5]@3 ~ [d5,f#5] ~ [g5,b5]@2 ~@2 [g5,b5]@3 ~", O: "[c#5,e5]!16", P: "[c#5,e5]!10 ~@2 a5@3 ~",
  Q: "[a5,c#6]!16", R: "[a5,c#6] ~@3 d6 ~ c#6 ~ b5@2 ~@2 a5@3 ~",
  S: "[e5,g5] ~ [e5,g5]@2 ~@2 [c#5,e5] ~ [f#5,a5]@2 ~@2 [f#5,a5]@2 ~@2", T: "[d5,f#5]!10 ~@2 a4@3 ~", U: "[d#5,g5]!16",
  V: "[d#5,g5] ~@3 [a#4,d#5] ~ [d5,f5] ~ [d#5,g5]@3 ~ [f5,g#5]@3 ~", // D# D#5 Dm D# Fm
  W: "[g5,a#5] ~ [g5,a#5]@3 ~ [d#5,g5] ~ [g#5,c6]@2 ~@2 [g#5,c6]@3 ~", X: "[d5,f5]!16", Y: "[d5,f5]!10 ~@2 a#5@3 ~",
  Z: "[a#5,d6]!16", AA: "[a#5,d6] ~@3 d#6 ~ d6 ~ c6@2 ~@2 a#5@3 ~",
  AB: "[f5,g#5] ~ [f5,g#5]@2 ~@2 [d5,f5] ~ [g5,a#5]@2 ~@2 [g5,a#5]@2 ~@2", AC: "[d#5,g5]!10 ~@2 a#4@3 ~",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.3)

// other · lead 8 bass lead · D C# C B A#
const lead_8_bass_lead = note("<~@102 [~@10 [d3,d4] [c#3,c#4] [c3,c4]@2 [b2,b3]@2] [[a#2,a#3]@3 ~] ~@23>")
  .s("gm_lead_8_bass_lead").gain(0.33)

// chords · bandoneon
const bandoneon = note(`<
  A B@2 C@2 ~@50 D E F G H E I J K ~@19 L M N O P@2 Q R S T U O V@2 W D X Y J K Z AA AB AC AD@2 AE AF AG AH@2 AA AI AJ
  AK@2 AL AM AN AA ~@4
>`.pickRestart({
  A: "~@3 a4", B: "[[f#5,a5]@11 a4 [e4,g4]@2 [e5,g5]@2]/2", C: "[d5,f#5]/2", D: "~@3 [a4,f#5,a5]",
  E: "[c#5,a5,c#6]@3 [b4,g5,b5]", F: "[b4,g5,b5] [a4,f#5,a5]!2 [f#4,d5,f#5]", G: "[a4,f#5,a5]@3 [g4,e5,g5]",
  H: "[f#4,d5,f#5]@3 [a4,f#5,a5]", I: "[b4,g5,b5] [a4,f#5,a5]!2 [f#4,d5]", J: "[a4,f#5]@3 [g4,e5]", K: "[f#4,d5]",
  L: "[g5,b5]@2 ~ [g5,b5]@2 ~ [g5,b5] ~ [g5,b5]@3 ~ [a5,c#6]@3 ~", // G A
  M: "[b5,d6]@4 ~@2 [b5,d6]@2 [a5,c#6]@3 ~ [g5,b5]@3 ~", // Bm A G
  N: "[f#5,a5] ~ [f#5,a5]@2 ~@2 [f#5,a5] ~ [f#5,a5]@3 ~ [g5,b5]@3 ~", // F#m G
  O: "[a5,c#6]@3 ~ a5@2 [g5,b5]@4 [f#5,a5]@5 ~, ~@4 c#6 ~@11", // A G F#m
  P: "[[e5,g5] ~ [e5,g5]@2 ~@2 [e5,g5] ~ [e5,g5]@3 ~ a5@2 [g5,b5]@7 ~ g5@2 [f#5,a5]@3 ~ [f#5,a5]@4, ~@12 f#5 ~@9 b5 ~@9]/2", // Em G F#m
  Q: "[d5,f#5]@15 ~", R: "[f#5,a5]@7 ~", S: "[g5,b5]@2 [g5,b5]@3 ~ [g5,b5] ~ [g5,b5]@4 [a5,c#6]@4",
  T: "[b5,d6]@5 ~ [b5,d6]@2 [a5,c#6]@3 ~ [g5,b5]@4", // Bm A G
  U: "a5@2 [f#5,a5]@3 ~ [f#5,a5] ~ [f#5,a5]@3 ~ [g5,b5]@3 ~, f#5 ~@15", // F#m G
  V: "[[e5,g5] ~ [e5,g5]@2 ~@2 [e5,g5] ~ [e5,g5]@3 ~ [f#5,a5]@2 [g5,b5]@6 ~@2 g5@2 [f#5,a5]@3 ~ [f#5,a5]@4, ~@22 b5 ~@9]/2", // Em F#m G F#m
  W: "[d5,f#5] ~", X: "[a5,c#6]@12 [g5,b5]@3 ~", Y: "[g5,b5]@4 [f#5,a5]@3 ~ [f#5,a5]@4 [f#4,d5]@4",
  Z: "a#4@12 a#4@3 ~, [d4,f4,g#4]", AA: "[d#5,g5]", AB: "~@4 d#5 ~ [d5,f5]@2 [d#5,g5]@4 [f5,g#5]@4",
  AC: "[g5,a#5]@2 [g5,a#5]@3 ~ [d#5,g5] ~ [g#5,c6]@2 ~@2 [g#5,c6]@4", AD: "[[d5,f5]@23 ~@5 a#5@3 ~]/2",
  AE: "[a#5,d6]@15 ~", AF: "~@2 c6 [a#5,d6] [g#5,c6]@2 [g5,a#5]@2, ~@4 d#6 ~@11",
  AG: "g#5@2 [f5,g#5]@3 ~ d5@2 [g5,a#5]@2 ~@2 [g5,a#5]@4, f5 ~@5 f5 ~@9", AH: "[[d#5,g5]@23 ~@5 a#4@4]/2",
  AI: "~@2 d#5 [d5,f5] [d#5,g5]@2 [f5,g#5]@2", AJ: "[g5,a#5] ~ [g5,a#5]@3 ~ [d#5,g5] ~ [g#5,c6]@2 ~@2 [g#5,c6]@4",
  AK: "[[d5,f5]@22 ~@6 a#5@3 ~]/2", AL: "[a#5,d6]", AM: "~@2 [c6,d#6] [a#5,d6] [g#5,c6]@2 [g5,a#5]@2",
  AN: "[f5,g#5] ~ [f5,g#5]@3 ~ d5@2 a#5@2 ~@2 [g5,a#5]@4, ~@6 f5 ~ g5 ~@7", // Fm Gm
})).s("gm_bandoneon").gain(0.27)

// drums · kick
const kick = s("bd").struct("<~@21 A@18 B A@7 C A@34 B A@7 C A@12 D A@21 C ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "~@3 x ~@4", C: "x", D: "x!8",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A B C@9 D C@8 E C@7 F C@15 D C@9 D C@8 E C@7 F C@12 B C@9 D C@10 G ~@2
>`.pickRestart({
  A: "~@14 x!2", B: "x!8", C: "~ x ~ x", D: "~@4 x ~@3 x!3 ~ x ~@3", E: "x!2 ~ x!2 ~@3 x!2 ~@2 x ~ x ~",
  F: "~@4 x ~ x!3 ~@3 x ~@3", G: "~@2 x ~ x!4",
// … 47 more lines