Strudelify

earthbound - sanctuary guardian

Christopher J. Hart

KeyB♭ majorTempo96 bpm
0:00/0:00
// earthbound - sanctuary guardian — Christopher J. Hart
// 96 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 14, 4/4 at bar 15, 3/4 at bar 43, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "B♭ Trumpet 1 & 2" named as a brass, played on trumpet (its overdriven guitar patch is not one); ch 3 "B♭ Trumpet 3 & 4" named as a brass, played on trumpet (its electric guitar jazz patch is not one); ch 5 "Trombone 1 & 2" named as a brass, played on trombone (its slap bass 1 patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5490045; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · trumpet · "B♭ Trumpet 1 & 2"
const trumpet = note("<~@7 A@3 ~@4 B C D E F@2 G@2 H I H J K L K L ~@6 M@2 ~@4 N@4 O@5 P Q R@2 S T S T>".pickRestart({
  A: "[~@5 d6@4 ~@3, ~ d5@8 ~@3]/3", B: "bb4", C: "a4", D: "~@2 d6 d6@2 d6@2 ~@2 d6@2 d6@2 d6@2 ~, g4",
  E: "~@2 d6 ~ d6!2 d6@2 ~@2 d6@2 d6!4, a4", F: "[g4,d6]/2", G: "[g5@2 a5 bb5, d6]/2",
  H: "[f4,f5] ~ [d4,d5] ~ [a4,a5] ~ [eb4,eb5] ~ f5@4 a5@4, ~ f4", // F D A Eb
  I: "[f4,bb5] ~ [d4,d6] ~ [a4,a5] ~ [bb4,bb5] ~ [b4,b5] [c5,c6] [b4,b5] [c5,c6] [b4,b5] [bb4,bb5] [a4,a5] [g4,g5]", // Bb5 D A Bb B C B C …
  J: "b5 d6 [ab4,eb6]@2, b4 ~", K: "~@6 [g4,bb5]@2 ~@6 [g4,bb5]!2", L: "~@6 [d5,f5]@2 ~@6 [d5,f5]!2", M: "[~ d6, d5]/2",
  N: "[~@12 bb4@16 a4@16 ~@2 d6 d6@2 d6@2 ~@2 d6@2 d6@2 d6@2 ~@3 d6 ~, ~@11 g4@4 a4]/4",
  O: "[d6!2 d6@2 ~@2 d6@2 d6!4 [g4,d6]@32 g5@16 a5@8 bb5@8 [f4,f5] ~ [d4,d5] ~, ~@11 d6@8 ~]/5", // G5 F D
  P: "[a4,a5] ~ [eb4,eb5] ~ f5@4 a5@4 [f4,bb5] ~ [d4,d6] ~, ~ f4@2 ~", // A Eb Bb5 D
  Q: "[a4,a5] ~ [bb4,bb5] ~ [b4,b5] [c5,c6] [b4,b5] [c5,c6] [b4,b5] [bb4,bb5] [a4,a5] [g4,g5] [f4,f5] ~ [d4,d5] ~", // A Bb B C B C B Bb …
  R: "[[a4,a5] ~ [eb4,eb5] ~ f5@4 a5@4 b5@4 d6@4 [ab4,eb6]@8 ~@4, ~ f4@2 b4@2 ~@3]/2", // A Eb Ab5
  S: "~@2 [g4,bb5]@2 ~@6 [g4,bb5]!2 ~@4", T: "~@2 [d5,f5]@2 ~@6 [d5,f5]!2 ~@4",
})).s("gm_trumpet").gain(0.45)

// chords · trumpet · "B♭ Trumpet 1 & 2" · soft notes
const trumpet_soft = note("<~ A B A B ~@25 C D C D ~@25>".pickRestart({
  A: "~ bb4 ~ bb4, ~@2 g5 ~@3 g5 ~", B: "~ a4 ~ a4, ~@2 a5 ~@3 a5 ~", C: "bb4 ~ bb4 ~, g5 ~@3 g5 ~@3",
  D: "a4 ~ a4 ~, a5 ~@3 a5 ~@3",
})).s("gm_trumpet").gain(0.2)

// chords · trumpet · "B♭ Trumpet 3 & 4"
const trumpet_2 = note("<~@7 A@3 ~@4 B C B C D@2 E@2 F G F H I J I J ~@6 K@2 ~@4 L@8 M@5 N O N O>".pickRestart({
  A: "[~ [g3,g4]@8 ~@3]/3", B: "[bb3,g4]", C: "[a3,f4]", D: "[g3,d4]/2", E: "[d4@2 c4 bb3, g3]/2", F: "[f3,c4]",
  G: "[ab3,eb4] [gb3,db4]", H: "b3 d4 [ab3,eb4]@2, gb3 ~", I: "~@6 [g3,d4]@2 ~@6 [g3,d4]!2",
  J: "~@6 [d4,a4]@2 ~@6 [d4,a4]!2", K: "[g3,g4]/2",
  L: "[~@3 [bb3,g4]@4 [a3,f4]@4 [bb3,g4]@4 [a3,f4]@4 [g3,d4]@8 d4@4 c4, ~@27 g3@5]/8", // Eb Dm Eb Dm G5
  M: "[~ bb3@2 [f3,c4]@4 [ab3,eb4]@2 [gb3,db4]@2 [f3,c4]@4 b3 d4 [ab3,eb4]@2 ~, ~@15 gb3@2 ~@3]/5", // F5 Ab5 Gb5 F5 Ab5
  N: "~@2 [g3,d4]@2 ~@6 [g3,d4]!2 ~@4", O: "~@2 [d4,a4]@2 ~@6 [d4,a4]!2 ~@4",
})).s("gm_trumpet").gain(0.4)

// chords · trumpet · "B♭ Trumpet 3 & 4" · soft notes
const trumpet_soft_2 = note("<~ A@5 ~@24 B C B C ~@25>".pickRestart({
  A: "[~ g3@2 g3@2 f3@2 f3@2 g3@2 g3@2 f3@2 f3@2 ~@3, ~@2 d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~ d4@3 ~@7]/5",
  B: "g3!2, d4@3 ~ d4@3 ~", C: "f3!2, d4@3 ~ d4@3 ~",
})).s("gm_trumpet").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<A B@8 C@3 ~@4 D E F G F H I J I K L@4 M@4 N@4 O P ~@5 Q R S T S U V W X@2 Y@3 Z>".pickRestart({
  A: "~@4 a3@2 e3@2 g3@2 e3@2 a3!2 e3@2", B: "[g3 e3 d3@8 d3@8 d3@8 d3@8 d3@16 d3@14]/8",
  C: "[~@4 g3 d3 eb3 bb3 ab3@12 db4@2 db4 db4@2 db4@3 db4@8 ~@12]/3", D: "~@4 d5!4 ~@4 d5!4", E: "~@4 d5!12",
  F: "f4@3 ~ a4@3 ~ f4@8", G: "f4@3 ~ a4@3 ~ eb5@8", H: "f4@3 ~ a4@3 ~ f5@8", I: "f4 ~ d4 ~ a4 ~ eb4 ~ f4@8",
  J: "f5 ~ d5 ~ a5 ~ bb5 ~ b5 c6 b5 c6 b5 bb5 a5 g5", K: "b4 ab4", L: "c5@3 c5 c5@2 ~@2 c5@3 c5 c5@2 ~@2", M: "d3",
  N: "d3/2", O: "g3 d3 eb3 bb3 ab3@12", P: "db4@2 db4 db4@2 db4@3 db4@8", Q: "d5!4 ~@4 d5!4 ~@4", R: "d5!12 f4@3 ~",
  S: "a4@3 ~ f4@8 f4@3 ~", T: "a4@3 ~ eb5@8 f4@3 ~", U: "a4@3 ~ f5@8 f4 ~ d4 ~", V: "a4 ~ eb4 ~ f4@8 f5 ~ d5 ~",
  W: "a5 ~ bb5 ~ b5 c6 b5 c6 b5 bb5 a5 g5 f4 ~ d4 ~", X: "[a4 ~ eb4 ~ f4@8 b4@8 ab4@8 c5@3 c5]/2",
  Y: "c5@2 ~@2 c5@3 c5 c5@2 ~@2 c5@3 c5", Z: "c5@2 ~@2 c5@3 c5 c5@2 ~@6",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<A B ~@3 C@7 ~@5 D E F E G H I H J K@4 ~@4 L@4 M N ~@6 O P Q P R@4 S T@3 U>".pickRestart({
  A: "~@4 d3@2 a2@2 c3@2 a2@2 d3!2 a2@2", B: "c3 a2 ~@6",
  C: "[~@4 g3@32 g3@32 g3 d3 eb3 bb3 ab3@12 db4@2 db4 db4@2 db4@3 db4@8 ~@12]/7", D: "~@8 d4!8",
  E: "f3@3 ~ a3@3 ~ f3@8", F: "f3@3 ~ a3@3 ~ eb4@8", G: "f3@3 ~ a3@3 ~ f4@8", H: "c3", I: "eb3 db3", J: "b2 d3 eb3@2",
  K: "f3@3 f3 f3@2 ~@2 f3@3 f3 f3@2 ~@2", L: "g3/2", M: "g3 d3 eb3 bb3 ab3@12", N: "db4@2 db4 db4@2 db4@3 db4@8",
  O: "~@4 d4!8 f3@3 ~", P: "a3@3 ~ f3@8 f3@3 ~", Q: "a3@3 ~ eb4@8 f3@3 ~",
  R: "[a3@3 ~ f4@8 c3@16 eb3@8 db3@8 c3@16 b2@4]/4", S: "d3@4 eb3@8 f3@3 f3", T: "f3@2 ~@2 f3@3 f3 f3@2 ~@2 f3@3 f3",
  U: "f3@2 ~@2 f3@3 f3 f3@2 ~@6",
})).s("gm_tenor_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note("<~ A@5 ~@24 B C B C ~@25>".pickRestart({
  A: "[~ g3@4 f3@4 g3@4 f3@4 ~@3]/5", B: "g3", C: "f3",
})).s("gm_tenor_sax").gain(0.2)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B ~@3 C@5 ~ D@3 ~@3 E F G F H I J I K L M L M ~@4 N@4 ~@2 O P ~@4 Q R S R T@5 U V U W
>`.pickRestart({
  A: "~@4 g2@2 d2@2 f2@2 d2@2 g2!2 d2@2", B: "f2 d2 ~@6", C: "[~ g2@8 g2@8 ~@3]/5",
  D: "[~@4 g2 d2 eb2 bb2 ab2@12 eb3@2 eb3 eb3@2 eb3@3 eb3@8 ~@12]/3", E: "~@12 d3!4", F: "f2@3 ~ a2@3 ~ f2@8",
  G: "f2@3 ~ a2@3 ~ eb3@8", H: "f2@3 ~ a2@3 ~ f3@8", I: "f2", J: "ab2 gb2", K: "eb2 ab2",
  L: "bb2@3 bb2 bb2@2 ~@2 bb2@3 bb2 bb2@2 ~@2", M: "ab2@3 ab2 ab2@2 ~@2 ab2@3 ab2 ab2@2 ~@2", N: "g2/2",
  O: "g2 d2 eb2 bb2 ab2@12", P: "eb3@2 eb3 eb3@2 eb3@3 eb3@8", Q: "~@8 d3!4 f2@3 ~", R: "a2@3 ~ f2@8 f2@3 ~",
  S: "a2@3 ~ eb3@8 f2@3 ~", T: "[a2@3 ~ f3@8 f2@16 ab2@8 gb2@8 f2@16 eb2@8 ab2@8 bb2@3 bb2]/5",
  U: "bb2@2 ~@2 bb2@3 bb2 bb2@2 ~@2 ab2@3 ab2", V: "ab2@2 ~@2 ab2@3 ab2 ab2@2 ~@2 bb2@3 bb2",
  W: "ab2@2 ~@2 ab2@3 ab2 ab2@2 ~@6",
})).s("gm_baritone_sax").gain(0.4)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note("<~ A@5 ~@24 B C B C ~@25>".pickRestart({
  A: "[~ bb2@4 a2@4 bb2@4 a2@4 ~@3]/5", B: "bb2", C: "a2",
})).s("gm_baritone_sax").gain(0.2)

// chords · trombone · "Trombone 1 & 2"
const trombone = note("<A B ~@6 C@2 ~@3 D ~@6 E F G H G I J K J K ~@7 L ~@4 M ~@5 N O P@5 Q R Q S>".pickRestart({
  A: "~@2 [c4,f4] [b3,e4] [bb3,eb4] [a3,d4] [ab3,db4] [g3,c4]", B: "[gb3,b3] [f3,bb3] ~@6", C: "[~ [g3,d4]@4 ~@3]/2",
  D: "~@4 [bb3,eb4]@3 [f3,bb3] [bb3,eb4]@3 [f3,bb3] [bb3,eb4] ~@3", // Eb5 Bb5 Eb5 Bb5 Eb5
  E: "[g3,d4]@4 [d3,a3]@3 [d3,a3] [f3,c4]!2 [d3,a3]@2 [f3,c4]@2 [d3,a3]@2", // G5 D5 F5 D5 F5 D5
  F: "[g3,d4]@4 [d3,a3]@3 [d3,a3] [eb3,bb3]!2 [d3,a3]@2 [c3,g3]@2 [d3,a3]@2", G: "[f3,c4]", H: "[ab3,eb4] [gb3,db4]",
  I: "[gb3,b3] [ab3,c4]", J: "[bb3,d4] [bb3,d4]@3", K: "[f3,c4] [f3,d4]@3", L: "[g3,d4]",
  M: "[bb3,eb4]@3 [f3,bb3] [bb3,eb4]@3 [f3,bb3] [bb3,eb4] ~@7", N: "~@3 [g3,d4]",
  O: "[d3,a3]@3 [d3,a3] [f3,c4]!2 [d3,a3]@2 [f3,c4]@2 [d3,a3]@2 [g3,d4]@4", // D5 F5 D5 F5 D5 G5
  P: "[[d3,a3]@3 [d3,a3] [eb3,bb3]!2 [d3,a3]@2 [c3,g3]@2 [d3,a3]@2 [f3,c4]@16 [ab3,eb4]@8 [gb3,db4]@8 [f3,c4]@16 [gb3,b3]@8 [ab3,c4]@8 [bb3,d4]@4]/5", // D5 Eb5 D5 C5 D5 F5 Ab5 Gb5 …
  Q: "[bb3,d4]@3 [f3,c4]", R: "[f3,d4]@3 [bb3,d4]", S: "[f3,d4]@3 ~",
})).s("gm_trombone").gain(0.4)

// chords · trombone · "Trombone 1 & 2" · soft notes
const trombone_soft = note("<~ A B A B ~@25 C D C D ~@25>".pickRestart({
  A: "~ bb3 ~ bb3, ~@2 g4 ~@3 g4 ~", B: "~ a3 ~ a3, ~@2 a4 ~@3 a4 ~", C: "bb3 ~ bb3 ~, g4 ~@3 g4 ~@3",
  D: "a3 ~ a3 ~, a4 ~@3 a4 ~@3",
})).s("gm_trombone").gain(0.2)

// bass · slap bass 2 · "Trombone 3 & Bass Trombone"
const bass = note("<A B ~@5 C@3 ~@3 D ~@4 E F E F G H G I J K J K ~@6 L@2 ~@4 M ~@3 N O P O Q@5 R S R T>".pickRestart({
  A: "~@2 [c2,a2] [db2,bb2] [d2,b2] [eb2,c3] [e2,db3] [f2,d3]", B: "[gb2,eb3] [g2,e3] ~@6", C: "[~ [g2,d3]@8 ~@3]/3",
  D: "~@4 [eb2,eb3]@3 [bb1,bb2] [eb2,eb3]@3 [bb1,bb2] [eb2,eb3] ~@3", // Eb Bb Eb Bb Eb
  E: "[g2,d3]@4 [d2,a2]@3 [d2,a2] [f2,c3]!2 [d2,a2]@2 [f2,c3]@2 [d2,a2]@2", // G5 D5 F5 D5 F5 D5
  F: "[g2,d3]@4 [d2,a2]@3 [d2,a2] [eb2,bb2]!2 [d2,a2]@2 [c2,g2]@2 [d2,a2]@2", G: "[f2,c3]", H: "[ab2,eb3] [gb2,db3]",
  I: "b2 d3 [ab1,eb3]@2, eb2 ~", J: "[g2,g3] [d2,g3]@3", K: "[ab2,ab3] [ab2,ab3]@3", L: "[g2,d3]/2",
  M: "[eb2,eb3]@3 [bb1,bb2] [eb2,eb3]@3 [bb1,bb2] [eb2,eb3] ~@7", N: "~@3 [g2,d3]",
  O: "[d2,a2]@3 [d2,a2] [f2,c3]!2 [d2,a2]@2 [f2,c3]@2 [d2,a2]@2 [g2,d3]@4", // D5 F5 D5 F5 D5 G5
  P: "[d2,a2]@3 [d2,a2] [eb2,bb2]!2 [d2,a2]@2 [c2,g2]@2 [d2,a2]@2 [g2,d3]@4", // D5 Eb5 D5 C5 D5 G5
  Q: "[[d2,a2]@3 [d2,a2] [eb2,bb2]!2 [d2,a2]@2 [c2,g2]@2 [d2,a2]@2 [f2,c3]@16 [ab2,eb3]@8 [gb2,db3]@8 [f2,c3]@16 b2@4 d3@4 [ab1,eb3]@8 [g2,g3]@4, ~@15 eb2@2 ~@3]/5", // D5 Eb5 D5 C5 D5 F5 Ab5 Gb5 …
  R: "[d2,g3]@3 [ab2,ab3]", S: "[ab2,ab3]@3 [g2,g3]", T: "[ab2,ab3]@3 ~",
})).s("gm_slap_bass_2").gain(0.4)

// bass · slap bass 2 · "Trombone 3 & Bass Trombone" · soft notes
const bass_soft = note("<~ A@5 ~@24 B C B C ~@25>".pickRestart({
  A: "[~ g2@2 g2@2 f2@2 f2@2 g2@2 g2@2 f2@2 f2@2 ~@3, ~@2 d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~ d3@3 ~@7]/5",
  B: "g2!2, d3@3 ~ d3@3 ~", C: "f2!2, d3@3 ~ d3@3 ~",
})).s("gm_slap_bass_2").gain(0.2)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  A B ~@7 C@5 ~@2 D E F G F G H I J K L M L M ~@8 N O N P ~@2 Q@2 R S T S U V W X Y@5
>`.pickRestart({
  A: "~@4 d4@2 a3@2 c4@2 a3@2 d4!2 a3@2", B: "c4 a3 ~@6",
  C: "[~@4 g3 d3 eb3 bb3 ab3@12 db4@2 db4 db4@2 db4@3 db4@8 g3 d3 eb3 bb3 ab3@12 eb4@2 eb4 eb4@2 eb4@3 eb4@8 ~@12]/5",
  D: "~@2 d5 d5@2 d5@2 ~@2 d5@2 d5@2 d5@2 ~", E: "~@2 d5 ~ d5!2 d5@2 ~@2 d5@2 d5!4",
  F: "[g4,d5,g5]@4 [d4,a4,d5]@3 [d4,a4,d5] [f4,c5,f5]!2 [d4,a4,d5]@2 [f4,c5,f5]@2 [d4,a4,d5]@2", // G5 D5 F5 D5 F5 D5
  G: "[g4,d5,g5]@4 [d4,a4,d5]@3 [d4,a4,d5] [eb4,bb4,eb5]!2 [d4,a4,d5]@2 [c4,g4,c5]@2 [d4,a4,d5]@2", // G5 D5 Eb5 D5 C5 D5
  H: "f5 ~ d5 ~ a5 ~ eb5 ~ f5@4 a5@4", I: "bb5 ~ d6 ~ a5 ~ bb5 ~ b5 c6 b5 c6 b5 bb5 a5 g5",
  J: "f5 ~ d5 ~ a4 ~ eb4 ~ f4@4 a4@4", K: "b4 d5 eb5@2", L: "bb4", M: "ab4@12 ab4 g4 ab4 a4", N: "g3 d3 eb3 bb3 ab3@12",
  O: "db4@2 db4 db4@2 db4@3 db4@8", P: "eb4@2 eb4 eb4@2 eb4@3 eb4@8",
  Q: "[~@14 d5 d5@2 d5@2 ~@2 d5@2 d5@2 d5@2 ~@3 d5 ~]/2", R: "d5!2 d5@2 ~@2 d5@2 d5!4 [g4,d5,g5]@4",
  S: "[d4,a4,d5]@3 [d4,a4,d5] [f4,c5,f5]!2 [d4,a4,d5]@2 [f4,c5,f5]@2 [d4,a4,d5]@2 [g4,d5,g5]@4", // D5 F5 D5 F5 D5 G5
  T: "[d4,a4,d5]@3 [d4,a4,d5] [eb4,bb4,eb5]!2 [d4,a4,d5]@2 [c4,g4,c5]@2 [d4,a4,d5]@2 [g4,d5,g5]@4", // D5 Eb5 D5 C5 D5 G5
  U: "[d4,a4,d5]@3 [d4,a4,d5] [eb4,bb4,eb5]!2 [d4,a4,d5]@2 [c4,g4,c5]@2 [d4,a4,d5]@2 f5 ~ d5 ~", // D5 Eb5 D5 C5 D5
  V: "a5 ~ eb5 ~ f5@4 a5@4 bb5 ~ d6 ~", W: "a5 ~ bb5 ~ b5 c6 b5 c6 b5 bb5 a5 g5 f5 ~ d5 ~",
  X: "a4 ~ eb4 ~ f4@4 a4@4 b4@4", Y: "[d5@4 eb5@8 bb4@16 ab4@12 ab4 g4 ab4 a4 bb4@16 ab4@12 ab4 g4 ab4 a4 ~@4]/5",
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · electric guitar clean · "Electric Guitar" · soft notes
const electric_guitar_clean_2 = note("<~ A@5 B C D E ~@20 F G F G H I J K ~@21>".pickRestart({
  A: "[~@4 [g3,bb3,d4]@16 [f3,a3,d4]@16 [g3,bb3,d4]@16 [f3,a3,d4]@16 [g3,d4]@4 d3@3 d3 f3!2 d3@2]/5", // Gm Dm Gm Dm G5
  B: "f3@2 d3@2 g3@4 d3@3 d3 eb3!2 d3@2", C: "c3@2 d3@2 [g3,d4]@4 d4@3 d4 f4!2 d4@2",
  D: "f4@2 d4@2 g4@4 d4@3 d4 eb4!2 d4@2", E: "c4 d4 ~@6", F: "[g3,bb3,d4]", G: "[f3,a3,d4]",
  H: "[g3,d4]@4 d3@3 d3 f3!2 d3@2 f3@2 d3@2", I: "g3@4 d3@3 d3 eb3!2 d3@2 c3@2 d3@2",
  J: "[g3,d4]@4 d4@3 d4 f4!2 d4@2 f4@2 d4@2", K: "g4@4 d4@3 d4 eb4!2 d4@2 c4@2 d4@2",
})).s("gm_electric_guitar_clean").gain(0.2)

// bass · electric bass pick · "Bass Guitar"
const bass_2 = note(`<
  A B C D C D E D E D E D E F G H G H G I G I G I G I J K J K G H G H G I G I G I G I L M N M N O N O N O N O P@5
>`.pickRestart({
  A: "~@4 g2@2 d2@2 f2@2 d2@2 g2!2 d2@2", B: "f2@2 d2@2 g2@4 d2@3 d2 f2!2 d2@2", C: "f2@2 d2@2 a2@4 d2@3 d2 eb2!2 d2@2",
  D: "c2@2 d2@2 g2@4 d2@3 d2 f2!2 d2@2", E: "f2@2 d2@2 g2@4 d2@3 d2 eb2!2 d2@2",
  F: "c2@2 d2@2 eb2@3 bb1 eb2@3 bb1 eb2 ~@3", G: "g2@4 d2@3 d2 f2!2 d2@2 f2@2 d2@2",
  H: "a2@4 d2@3 d2 eb2!2 d2@2 c2@2 d2@2", I: "g2@4 d2@3 d2 eb2!2 d2@2 c2@2 d2@2", J: "bb1", K: "ab1@12 ab1 g1 ab1 a1",
  L: "eb2@3 bb1 eb2@3 bb1 eb2 ~@3 g2@4", M: "d2@3 d2 f2!2 d2@2 f2@2 d2@2 a2@4", N: "d2@3 d2 eb2!2 d2@2 c2@2 d2@2 g2@4",
  O: "d2@3 d2 f2!2 d2@2 f2@2 d2@2 g2@4",
  P: "[d2@3 d2 eb2!2 d2@2 c2@2 d2@2 bb1@16 ab1@12 ab1 g1 ab1 a1 bb1@16 ab1@12 ab1 g1 ab1 a1 ~@4]/5",
})).s("gm_electric_bass_pick").gain(0.3)

// chords · piano
const piano = note(`<
  A B@6 C@2 D E F E G H I H I H J K L M N M O P Q P Q R S R S T U T U H J H J V W X W X Y Z@6 AA@5
>`.pickRestart({
  A: "~@2 [c2,a2,c5,f5] [db2,bb2,b4,e5] [d2,b2,bb4,eb5] [eb2,c3,a4,d5] [e2,db3,ab4,db5] [f2,d3,g4,c5]", // F Bbdim Ebmaj7 Adim Dbm Fsus2
  B: "[[gb2,eb3,gb4,b4]@2 [g2,e3,f4,bb4]@2 [bb2,g3,d4,g4]@15 ~ [a2,f3,d4,f4]@15 ~ [bb2,g3,d4,g4]@15 ~ [a2,f3,d4,f4]@15 ~ [g2,g3]@4 [d2,d3]@3 [d2,d3] [f2,f3]!2 [d2,d3]@2 [f2,f3]@2 [d2,d3]@2 [g2,g3]@4 [d2,d3]@3 [d2,d3] [eb2,eb3]!2 [d2,d3]@2, ~@68 [d4,g4,d5]@15 ~@13]/6", // B Edim Gm Dm Gm Dm G D …
  C: "[[c2,c3]@2 [d2,d3]@2 [g2,g3]@4 [d2,d3]@3 [d2,d3] [f2,f3]!2 [d2,d3]@2 [f2,f3]@2 [d2,d3]@2 [g2,g3]@4 [d2,d3]@3 [d2,d3] [eb2,eb3]!2 [d2,d3]@2, ~@4 [d4,g4,d5]@15 ~@13]/2", // C D G D F D F D …
  D: "[c2,c3]@2 [d2,d3]@2 [g1,g2]@4 [d1,d2]@3 [d1,d2] [f1,f2]!2 [d1,d2]@2", // C D G D F D
  E: "[f1,f2]@2 [d1,d2]@2 [g1,g2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2", // F D G D Eb D
  F: "[c1,c2]@2 [d1,d2]@2 [g1,g2]@4 [d1,d2]@3 [d1,d2] [f1,f2]!2 [d1,d2]@2", // C D G D F D
  G: "[c1,c2]@2 [d1,d2]@2 [eb1,eb2]@3 [bb0,bb1] [eb1,eb2]@3 [bb0,bb1] [eb1,eb2] ~@3", // C D Eb Bb Eb Bb Eb
  H: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [f1,f2]!2 [d1,d2]@2 [f1,f2]@2 [d1,d2]@2", // G D F D F D
  I: "[a1,a2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2 [c1,c2]@2 [d1,d2]@2", // A D Eb D C D
  J: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2 [c1,c2]@2 [d1,d2]@2", // G D Eb D C D
  K: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [f1,f2]!2 [d1,d2]@2 [f1,f2]@2 [d1,d2]@2, [g4,d5,g5]@15 ~", // G D F D F D G5
  L: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2 [c1,c2]@2 [d1,d2]@2, g5@15 ~, [a4,c5] bb4", // G D Eb D C D Am
  M: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [f1,f2]!2 [d1,d2]@2 [f1,f2]@2 [d1,d2]@2, [f4,c5]@15 ~", // G D F D F D F5
  N: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2 [c1,c2]@2 [d1,d2]@2, [ab4,eb5] [gb4,db5]", // G D Eb D C D Ab5 Gb5
  O: "[g1,g2]@4 [d1,d2]@3 [d1,d2] [eb1,eb2]!2 [d1,d2]@2 [c1,c2]@2 [d1,d2]@2, [b3,gb4] [ab4,c5,eb5]", // G D Eb D C D B5 Ab
  P: "[bb1,bb2]@15 ~", Q: "[ab1,ab2]@11 ~ [ab1,ab2] [g1,g2] [ab1,ab2] [a1,a2]", R: "[bb2,g3,d4,g4]@15 ~",
  S: "[a2,f3,d4,f4]@15 ~", T: "[g2,g3]@4 [d2,d3]@3 [d2,d3] [f2,f3]!2 [d2,d3]@2 [f2,f3]@2 [d2,d3]@2, [d4,g4,d5]@15 ~",
  U: "[g2,g3]@4 [d2,d3]@3 [d2,d3] [eb2,eb3]!2 [d2,d3]@2 [c2,c3]@2 [d2,d3]@2", // G D Eb D C D
  V: "[eb1,eb2]@3 [bb0,bb1] [eb1,eb2]@3 [bb0,bb1] [eb1,eb2] ~@3 [g1,g2]@4", // Eb Bb Eb Bb Eb G
// … 40 more lines