Strudelify

Medley

James Last

KeyE♭ majorTempo103 bpm
0:00/0:00
// Medley — James Last
// 103 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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(`<
  ~ A B C D E F G H I J K L M N O P I J K L M N O P Q R Q R S T U@2 V W X Y@2 Z Y AA AB AC AD AE AF AG AH AI AJ AK AL AI
  AK@2 AL AC AD AE AF AG AH AM AN AO AN AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE AX AY AZ BA BB BF BG BH BI BJ BK
>`.pickRestart({
  A: "e1@7 ~ f1@7 ~", B: "ab1@3 ~ g1@3 ~ gb1@3 ~ f1@3 ~", C: "e1@3 ~ f1@3 ~ ab1@3 ~ g1@3 ~",
  D: "gb1@3 ~ eb1@4 d1@4 a1@4", E: "ab1@3 ~ bb1@3 ~ g1@3 ~ bb1@3 ~", F: "bb1@3 ~ c2@3 ~ a1@3 ~ ab1@3 ~",
  G: "g1@3 ~ gb1@3 ~ f1@3 ~ e1@3 ~", H: "eb2@2 ~@2 d2@2 ~@2 db2@2 ~@2 c2 ~ c2@2",
  I: "b1@3 ~ b1@3 ~ bb1@3 bb1 c2@2 d2@2", J: "eb2@3 ~ bb1@3 ~ eb2@4 bb1@2 eb2@2",
  K: "b1@3 ~ b1@3 ~ bb1@2 ~ bb1 c2@2 d2 ~", L: "eb2@3 ~ bb1@3 ~ eb2@2 ~@2 bb1 ~ eb2@2",
  M: "a2@3 ~ a2@2 ~ ab2@4 ~ ab2@3 ~", N: "g2@4 g2@2 ~ gb2@4 ~ gb2@3 ~", O: "f2@3 ~ f2@3 ~ bb1@3 bb2 bb1@2 c2@2",
  P: "eb2@3 ~ bb1@3 ~ eb2@3 ~ bb1@3 ~", Q: "gb1@3 ~ db2@4 gb1@2 ~ gb1 gb1@4", R: "eb2@3 ~ bb1@4 eb2@3 ~ bb1@2 eb2 bb1",
  S: "a2@4 a2@3 ~ ab2@4 ab2@3 ~", T: "g2@4 g2@3 ~ gb2@4 gb2@3 ~",
  U: "[f1@3 ~ f1@3 [ab1,a1] bb1 ~@3 bb1 ~ bb1 eb2@3 ~@2 bb1@2 ~@2 eb2@2 ~@2 bb1@2 ~@2]/2", // Amaj7
  V: "eb2@2 ~@2 bb1@2 ~@2 eb2@2 ~@2 bb1@2 db2 ~", W: "eb2 ~ bb1 ~ eb2 ~ bb1 ~", X: "eb2 ~ bb1 ~ eb2@3 ~",
  Y: "ab1@11 ~@5", Z: "db2@11 ~@5", AA: "eb2@3 ~", AB: "ab2@2 ~@2 db2@2 ~@2 e2 eb2 ~ d2@5",
  AC: "ab1@2 ~ ab1 ab1@2 ~@2 ab1@2 ~ ab1 ab1@2 ~@2", AD: "ab1@2 ~ ab1 ab1@2 ~@2 ab1@2 ~ ab1!3 bb1 c2",
  AE: "db2@2 ~ db2 db2@2 ~@2 db2@2 ~ db2!3 db2@2", AF: "ab1@2 ~ ab1 ab1@2 ~@2 ab1@2 ~ ab1!5",
  AG: "eb2@2 ~ eb2 eb2@2 ~@2 eb2@2 ~ eb2!5", AH: "ab1@3 ~ db2@3 ~ f2 eb2 ~ ab1@4 ~",
  AI: "ab1@3 ~ ab1@3 ~ db2@3 ~ eb2@3 ~", AJ: "ab1@2 ~@2 ab1@3 ~ db2@3 ~ eb2@2 ~@2",
  AK: "ab1@3 ~ ab1@3 ~ db2@3 ~ eb2@2 ~@2", AL: "eb2@3 ~ eb2@3 ~ eb2 ~ c2 bb1 ~ ab1@2 ~",
  AM: "bb1@2 ~ bb1 bb1@2 ~ bb1 bb1@2 ~ bb1 bb1@2 ~ bb1", AN: "bb1@2 ~ bb1!2 ~@2 bb1 bb1@2 ~ bb1!5",
  AO: "eb2 ~@2 eb2@2 ~@2 eb2 eb2@2 ~ eb2!3 eb2@2", AP: "f2@2 ~ f2!2 ~@2 f2 f2@2 ~ f2!5",
  AQ: "bb1@3 ~ eb2@3 ~ g2 f2 ~ bb1@4 ~", AR: "ab1@7 ~ a1@7 ~", AS: "c2@3 ~ b1@3 ~ bb1@3 ~ a1@3 ~",
  AT: "ab1@3 ~ a1@3 ~ c2@3 ~ b1@3 ~", AU: "bb1@3 ~ ab1@4 f1@3 ~ d1@4", AV: "g2@2 ~@2 d2@3 ~ g2@2 ~@2 d2@2 ~@2",
  AW: "g2@3 ~ d2@3 ~ g2@2 ~ g2 d2@2 ~@2", AX: "g2@3 ~ d2@3 ~ g2@3 ~ d2@3 ~", AY: "g2@4 d2@3 ~ c2@3 ~ g1@3 ~",
  AZ: "f1@4 c2@3 ~ f1@3 ~ c2@3 ~", BA: "f1@4 f1 g1 ab1 a1 bb1@4 f1@3 ~", BB: "eb2@3 ~ bb1@3 ~ eb2@3 bb1 d2@3 ~",
  BC: "g2@4 d2@3 ~ g2@4 d2@4", BD: "g2@2 d2@2 g2 ~@3", BE: "~@2 d2 ~ d2 d2@2 d2 ~@8", BF: "g2@4 d2@3 ~ g2@2 ~@6",
  BG: "~@2 d2 ~ a1 a1@2 d2 ~@8", BH: "g1@3 ~ d2@4 g1@4 d2@4", BI: "g1@3 g1 d2@3 ~ g1@4 d2@4",
  BJ: "g1@4 d2@3 ~ g1@4 d2@3 g1", BK: "~@4 f1@3 g1@2 ~@7",
})).s("gm_electric_bass_finger").gain(0.45)

// other · trombone
const trombone = note(`<
  ~ A B C D E F G H I J I K L M N@2 O P O Q L M N@2 R S R T U V W@2 X@3 Y@2 Z Y@2 AA ~@5 AB AC@3 ~ AC@3 ~@6 AB ~@5 AD
  ~@5 AE AF@2 AG@2 AH AI AJ AK AF@2 AG@2 AL AM AN AO AP AQ AR
>`.pickRestart({
  A: "e2@7 ~ f2@7 ~", B: "ab2@3 ~ g2@3 ~ gb2@3 ~ f2@3 ~", C: "e2@3 ~ f2@3 ~ ab2@3 ~ g2@3 ~",
  D: "gb2@3 ~ eb2@4 d2@4 a2@4", E: "ab2@3 ~ bb2@3 ~ g2@3 ~ bb2@3 ~", F: "bb2@3 ~ c3@3 ~ a2@3 ~ ab2@3 ~",
  G: "g2@3 ~ gb2@3 ~ f2@3 ~ e2@3 ~", H: "eb3 ~ d3 ~ db3 ~ c3 ~", I: "~@4 gb4@2 ~ f4@6 ~@3",
  J: "~@2 eb4 ~ bb3 ab3 ~ g3@6 ~@3", K: "~@2 eb4 ~ bb3 ab3 ~ g3@6 c4 ~ c4", L: "c4 ~ c4 ~ c4 ~ c4 b3@4 ~@3 b3 ~",
  M: "bb3 ~ bb3 ~ bb3 ~ bb3 ~ a3 ~ a3 a3@2 ~ a3 ~", N: "[ab3 ~ eb3 eb3@4 ~@5 bb4 ~ bb4 bb4@8 ~@9]/2",
  O: "~@3 b3 eb4 gb4 f4 eb4 d4@4 ~@4", P: "~@3 bb3 d4 f4 eb4 d4 eb4@4 ~@4", Q: "~@3 bb3 d4 f4 eb4 d4 eb4@4 ~ c4 ~ c4",
  R: "gb4@15 ~", S: "g4@15 ~", T: "g4@13 eb3@2 ~", U: "eb3 ~@4 eb3@2 ~ eb3 ~@7", V: "d3 ~@3 d3 ~@3 d3@2 db3 c3@4 ~",
  W: "[~@12 bb2 ~ bb2 eb2@3 ~@2 bb1@2 ~@2 eb2@2 ~@2 bb1@2 ~@2]/2", X: "eb2 ~ bb1 ~ eb2 ~ bb1 ~", Y: "eb3@3 ~",
  Z: "ab2@3 ~", AA: "eb3@3 ~ f3@2 ~@2 e3 eb3 ~ d3@3 ~@2", AB: "~@8 eb3!2 ~ eb3@4 ~", AC: "ab3 f3 ~ ab3@3 ~@10",
  AD: "~@8 f3!2 ~ f3@4 ~", AE: "~@11 d3 g3 ~ a3 ~", AF: "[a3@3 b3@6 ~ d3!2 g3 a3 ~ bb3@8 ~@4 c3 f3 ~ g3 ~]/2",
  AG: "[g3@3 a3@6 ~ c3!2 f3 g3 ~ ab3@9 ~@8]/2", AH: "eb3 ~ bb2 ~ eb3 ~ d3 ~", AI: "g3 ~ d3 ~ g3 ~ d3 ~",
  AJ: "g3 ~ d3 ~ g3 ~@3", AK: "~@2 d3 ~ d3 d3@2 d3 ~@3 d3 g3 ~ a3 ~", AL: "eb3@3 ~ bb2@3 ~ eb3@3 bb2 d3@3 ~",
  AM: "g3@4 d3@3 ~ g3@2 ~@6", AN: "~@2 d3 ~ a2!2 ~ d3 ~@8", AO: "g2@3 ~ d3@4 g2@4 d3@4",
  AP: "g2@3 ~ d3@3 ~ g2@4 d3@3 ~", AQ: "g2@4 d3@3 ~ g2@4 d3@3 g2", AR: "~@4 f2@3 g2@2 ~@7",
})).s("gm_trombone").gain(0.52).pan(0.8)

// other · trombone · soft notes
const trombone_soft = note("<~@42 A B C B D E ~@8 A B C B D E F G H G C I ~@25>".pickRestart({
  A: "eb3@7 ~", B: "gb3@7 ~", C: "f3@15 ~", D: "eb3@15 ~", E: "eb3@3 ~ eb3@3 ~@9", F: "f3@7 ~", G: "ab3@7 ~",
  H: "g3@15 ~", I: "f3@3 ~ f3@3 ~@9",
})).s("gm_trombone").gain(0.32).pan(0.8)

// chords · synth strings 1
const synth_strings_1 = note("<~@31 A@2 B@2 C ~@38 D E F G H I@2 J D E F G H K ~@5>".pickRestart({
  A: "[~@15 [g3,bb3,eb4]@5 [f3,ab3,db4]@4 [g3,bb3,eb4]@4 [f3,ab3,db4]@4]/2", // Eb Db Eb Db
  B: "[g3,bb3,eb4] [f3,ab3,db4] [g3,bb3,eb4] [f3,ab3,db4]", C: "[g3,bb3,eb4]", D: "[b3,d4,g4]@15 ~",
  E: "[bb3,d4,g4]@7 ~ [g3,bb3,c4,e4]@7 ~", F: "[a3,c4,f4]@15 ~", G: "[ab3,c4,f4] [ab3,bb3,d4,f4]",
  H: "[bb3,eb4,g4]@11 ~ [a3,d4,gb4]@4", I: "[[bb3,d4,g4]@11 ~ [a3,a4]@3 ~ [b3,g4]@9 ~@7, ~@3 d4@3 ~@2]/2",
  J: "~@2 [c4,e4,g4] ~ [c4,e4,g4]!2 ~ [a3,d4,gb4]@3 ~@6", K: "[b3,d4,g4]@9 ~@7",
})).s("gm_synth_strings_1").gain(0.26).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  ~@5 A B C D E F E G H I J@2 E F E G K ~@5 L M N O P ~@4 Q@2 R Q S T Q@2 R Q S U V@3 W V@3 W Q@2 R Q S U X@2 S X Y Z
  ~@10 AA@3 AB AC@2 AD@2 AE@2 AF@5
>`.pickRestart({
  A: "~@2 eb4 ~ bb4@2 a4 ab4 g4@2 e4@5 ~", B: "~@2 e4 ~ bb4@2 a4 g4 f4@7 ~", C: "eb4@7 ~ d4@7 ~",
  D: "g4@3 ~ gb4@3 ~ f4@2 ~@2 e4@2 ~@2", E: "eb4@6 ~ d4@6 ~@3", F: "eb4@3 ~@5", G: "eb4@6 ~@7 eb4@2 eb4",
  H: "eb4 ~ eb4 ~ eb4@2 eb4 eb4@5 ~@2 eb4@2", I: "f4 ~ f4 ~ f4 ~ f4 ~ f4@2 e4 eb4@3 d4 ~",
  J: "[c4@2 b3 bb3@8 ~ eb4 ~ eb4 eb4@8 ~@9]/2", K: "eb4 ~ eb4 ~ eb4@2 eb4 eb4@5 ~@4",
  L: "bb4 b4 ~ bb4 b4 ~ bb4 b4 ~ bb4@6 ~", M: "~@13 [c4,eb4]@2 ~", N: "[c4,eb4] ~@4 [c4,eb4]@2 ~ [b3,eb4] ~@7",
  O: "[bb3,d4] ~@3 [bb3,d4] ~@3 [a3,f4]@2 [a3,e4] [a3,eb4]@4 ~", P: "c4@8 bb3 ~@7",
  Q: "c4 eb4 ab4 c4 eb4 ab4 c4 eb4 ab4 c4 eb4 ab4@2 ~@3", R: "db4 f4 ab4 db4 f4 ab4 db4 f4 ab4 db4 f4 ab4@2 ~@3",
  S: "eb4 g4 bb4 eb4 g4 bb4 eb4 g4 bb4 eb4 g4 bb4@2 ~@3",
  T: "[eb4,ab4] ~ [eb4,ab4]!2 [f4,ab4] ~ [f4,ab4]!2 [e4,ab4] [eb4,ab4] ~ [d4,ab4]@2 ~@3", // Ab5 Fm E Ab5 Ddim
  U: "[eb4,ab4] ~ [eb4,ab4]!3 ~ [eb4,ab4]!4 ~ [eb4,ab4]@2 ~@3", V: "ab4 f4 ~ [eb4,ab4]@3 ~@10, eb4 ~@7",
  W: "eb4!9 b3 ~ bb3@2 ~@3", X: "d4 f4 bb4 d4 f4 bb4 d4 f4 bb4 d4 f4 bb4@2 ~@3",
  Y: "f4 a4 c5 f4 a4 c5 f4 a4 c5 f4 a4 c5@2 ~@3", Z: "[f4,bb4] ~ [f4,bb4]!3 ~ [f4,bb4]!4 ~ [f4,bb4]@2 ~@3",
  AA: "[eb4 ~ eb4!4 ~ eb4 ~@3 eb4 d4 eb4 d4 g4@9 ~@3 eb4 d4 e4 d4 g4@9 ~@8]/3",
  AB: "~@2 g4 ~ g4!2 ~ gb4 ~@3 d4 g4 ~ a4 ~", AC: "[a4@3 b4@6 ~ d4!2 g4 a4 ~ bb4@8 ~@4 c4 f4 ~ g4 ~]/2",
  AD: "[g4@3 a4@6 ~ c4!2 f4 g4 ~ ab4@9 ~@8]/2", AE: "[eb4 ~ eb4!4 ~ eb4 ~@3 eb4 d4 e4 d4 g4@9 ~@8]/2",
  AF: "[~@2 gb4 ~ e4!2 ~ gb4 ~@2 d5 ~ f5 d5 c5 d5@9 ~@2 d5 ~ f5 d5 c5 d5@9 ~@2 d5 ~ f5 d5 c5 d5@9 ~@2 d5 ~ f5 d5 c5 d5@2 ~@3 f5@2 ~ g5 ~@8]/5",
})).s("gm_alto_sax").gain(0.52).pan(0.7)

// chords · percussive organ
const percussive_organ = note(`<
  ~@9 A B C D E F G H A B C D E F G H I J K L M N O P@2 Q R ~@6 S T U@2 V W X@3 ~ X@3 ~ S T U@2 V W Y Z AA@2 AB AC AD AE
  AF AG AH AI AJ AK AL AM AN AO@2 AP AQ AK AL AM AR@2 AS AT AU ~@2
>`.pickRestart({
  A: "~ ab6 eb6!2 b5@2 ~ [db6,d6] ~ f6@6 ~", B: "~ bb5 ~ c6 [db6,d6]!2 ~ d6@5 ~@4, ~@7 db6 ~@8",
  C: "~ b5 eb6 gb6 bb6 gb6 eb6 b5 [db6,d6] f6@2 ~@5, ~@9 d6 ~@6", D: "bb5@6 ~ bb5 [db6,d6] bb5@2 ~@5",
  E: "~ a5 c6 eb6 g6 eb6 c6 a5 ~@3 ab5 b5 eb6 gb6 ~",
  F: "~ g5 bb5 g5 d6!2 ~@3 [gb5,a5,c6] ~ gb5 [gb5,a5,c6] ~ [gb5,a5,c6] ~", // Gbdim
  G: "[c6,f6] ~ f6 g6 ab6@2 c6 [d6,f6]@3 d6 ~@5, ~ c6@4 ~@11", H: "~ d6 bb5 c6 d6@2 bb5 [db6,d6] ~ bb5 d6@2 bb5 ~@3",
  I: "[bb5,db6]@14 ~ bb5", J: "[bb5,eb6]@9 [bb5,eb6] ~ bb5 [bb5,eb6]@3 ~", K: "[bb5,db6]@12 ~ [bb5,db6] ~@2",
  L: "[bb5,eb6]@9 ~ [bb5,eb6] ~ [bb5,eb6]!2 ~@2", M: "g6 b6", N: "bb6@8 a6 ~ [d6,e6,f6,g6] [g5,a5,b5,c6] f5 ~@3",
  O: "[c5,eb5,ab5] ~ [c5,eb5,ab5]!2 ~ [c5,eb5,ab5] ~ [bb4,d5,f5,ab5]@2 ~@7", // Ab Bb7
  P: "[~@9 [c6,db6]!2 ~ [c6,db6]!2 ~ db6@2 bb5 db6@6 ~ [bb5,db6] [eb6,e6] f6 [e6,f6] f6@2 ~, ~@15 c6 ~@13 e6 ~@2]/2", // Dbmaj7 Bbm Emaj7 Fmaj7
  Q: "[e6,f6]!3 f6@10 [c6,db6] c6 db6", R: "bb5@5 ab5 ~ [a5,bb5] eb5@6 ~@2",
  S: "[ab5,c6,eb6]@2 [ab5,c6] ~ [ab5,c6] [ab5,c6,eb6] ~ [ab5,c6] ~@2 [ab5,c6,eb6] ~@5, ~@2 eb6@2 ~@3 eb6@2 ~@7", // Ab
  T: "~ [ab5,c6,eb6] ~ ab5 [ab5,c6] ~@2 [ab5,c6,eb6,gb6] ~ [ab5,c6,eb6,gb6] ~ [c6,eb6,gb6]@2 ab5 [ab5,c6,eb6] ~, ~@4 eb6@2 ~@5 ab5 ~@4", // Ab Ab7 Cdim Ab
  U: "[~@2 [ab5,b5,db6,f6] ~@2 [ab5,b5,db6,f6] ~@2 [ab5,b5,db6,f6]@2 ~ [ab5,b5,db6] ~@3 c6@2 ab5 ~ ab5 ~@2 c6 ~ ab5!2 c6 db6 d6 eb6 ~@2, ~@11 f6@2 ~@2 b5 ~@16]/2", // Db7
  V: "[bb5,db6,eb6,g6] ~@2 [bb5,db6,eb6,g6] ~@2 [bb5,db6,eb6,g6]@3 ~ [bb5,db6,eb6,g6] ~@2 [bb5,db6,eb6,g6] ~@2", // Eb7
  W: "[ab5,c6,eb6]@3 ~ [ab5,b5,db6]@2 ~@2 [ab5,f6] [ab5,eb6,f6] ~ [ab5,c6,eb6]@3 ~@2, ~@4 b5 ~@3", // Ab Db7 Db Fm7 Ab
  X: "~@2 [ab5,c6,eb6] ~@3 [ab5,c6,eb6] ~@3 [ab5,b5,db6,f6] ~@3 [ab5,b5,db6,f6] ~", // Ab Db7
  Y: "[bb5,d6,f6]@2 [bb5,d6] ~ [bb5,d6] [bb5,d6,f6] ~ [bb5,d6] ~@2 [bb5,d6,f6] ~@5, ~@2 f6@2 ~@3 f6@2 ~@7", // Bb
  Z: "~ [bb5,d6,f6] ~ bb5 [bb5,d6] ~@2 [bb5,d6,f6,ab6] ~ [bb5,d6,f6,ab6] ~ [d6,f6,ab6]@2 bb5 [bb5,d6,f6] ~, ~@4 f6@2 ~@5 bb5 ~@4", // Bb Bb7 Ddim Bb
  AA: "[~@2 [bb5,db6,eb6,g6] ~@2 [bb5,db6,eb6,g6] ~@2 [bb5,db6,eb6,g6]@2 ~ [bb5,db6,eb6] ~@3 d6@2 bb5 ~ bb5 ~@2 d6 ~ bb5!2 d6 eb6 e6 f6 ~@2, ~@11 g6@2 ~@2 db6 ~@16]/2", // Eb7
  AB: "[c6,eb6,f6,a6] ~@2 [c6,eb6,f6,a6] ~@2 [c6,eb6,f6,a6]@3 ~ [c6,eb6,f6,a6] ~@2 [c6,eb6,f6,a6] ~@2", // F7
  AC: "[bb5,d6,f6]@3 ~ [bb5,db6,eb6]@2 ~@2 [bb5,g6] [bb5,f6,g6] ~ [bb5,d6,f6]@3 [db6,d6] d6, ~@4 db6 ~@3", // Bb Eb7 Eb Gm7 Bb Dmaj7
  AD: "d6 ~ d6 ~ d6 ~ [db6,d6] d6 a6 d6 ~ d6@2 ~ [db6,d6] d6", // Dmaj7
  AE: "d6 ~ d6 ~ [db6,d6] d6 ~ d6@3 ~@3 d5@2 ~, ~@7 db6 ~@5 db5 ~@2", // Dmaj7
  AF: "d5 ~ d5 ~ d5@2 db5 d5 a5 [ab5,a5] ~ g5@2 d5@2 ~", AG: "[db5,d5] ~ d5 ~ d5!2 ~ d5@4 [a4,b4,c5] g4 ~@3",
  AH: "~ [d4,g4] [g5,c6,f6] [d4,g4] [g5,c6,f6]!2 ~ [c6,f6]@2 [d4,g4] [g5,c6,f6] [d4,g4] [g5,c6,f6] g5 [d4,g4] [g5,c6,f6], ~@7 g5 ~@8", // G5 Csus4 G5 Csus4 F5 G5 Csus4 G5 …
  AI: "~@2 [d4,g4] ~ [g5,c6,f6]!2 [d4,g4] [g5,c6,f6] ~ [d4,g4] [g5,c6,f6] [d4,g4] [g5,c6,f6]!2 [a5,b5] [d5,e5,f5]", // G5 Csus4 G5 Csus4 G5 Csus4 G5 Csus4 …
  AJ: "[b4,c5] [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4]", // Cmaj7 G5 G G5 G G5 G G5 …
  AK: "~ [d4,g4] [bb4,d5,g5] [d4,g4] ~ [d4,g4] [bb4,d5,g5] [d4,g4] ~ [c4,g4] [c5,e5,g5] [c4,g4] ~ [c4,g4] [c5,e5,g5] [c4,g4]", // G5 Gm G5 Gm G5 C5 C C5 …
  AL: "~ [c4,f4] [a4,c5,f5] [c4,f4] ~ [c4,f4] [a4,c5,f5] [c4,f4] ~ [c4,f4] [a4,c5,f5] [c4,f4] ~ [c4,f4] [a4,c5,f5] [c4,f4]", // F5 F F5 F F5 F F5 F …
  AM: "~ [c4,f4] [ab4,c5,f5] [c4,f4] ~ [c4,f4] [ab4,c5,f5] [c4,f4] ~ [bb3,f4] [ab4,d5,f5] [bb3,f4] ~ [bb3,f4] [ab4,d5,f5] [bb3,f4]", // F5 Fm F5 Fm F5 Bb5 Ddim Bb5 …
  AN: "[g4,bb4,eb5]@3 [gb4,a4,d5]", AO: "[[bb4,d5,g5]@10 ~@2 [a4,d5,a5] a4 [a4,d5,a5] [b4,d5,g5]@8 ~@9]/2",
  AP: "~@2 [g4,c5,e5] ~ [c5,e5,g5]!2 ~ [a4,d5,gb5] ~@8", // C D
  AQ: "~ [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4] ~ [d4,g4] [b4,d5,g5] [d4,g4]", // G5 G G5 G G5 G G5 G …
  AR: "[[g4,bb4,eb5]@9 ~@3 [a4,d5,a5] a4 [a4,d5,a5] [b4,d5,g5]@8 ~@9]/2", // Eb D5 G
  AS: "~@2 [a4,d5,gb5] ~ [c5,e5,g5]!2 ~ [d5,gb5,a5] ~@8", // D C D
  AT: "~@2 [d5,g5,b5] ~@2 [c5,f5,a5] ~@2 [d5,g5,b5] ~@2 [c5,f5] ~ c5 [b3,c4,c5,f5,a5] [d4,e4,f4,g4,a4], ~@11 a5@2 ~@3", // G F G F5 F Dm
  AU: "[b4,c5,d5,e5,f5,g5] [a5,b5,c6,d6,e6] [f6,g6]!10 [d6,e6] [f5,g5,a5,b5,c6] [g4,a4,b4,c5,d5,e5] ~", // Cmaj7 Am Fsus2 Dsus2 F Cmaj7
})).s("gm_percussive_organ").gain(0.32).pan(0.3)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@9 A B C D E F G H A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB Z AC AD AE@3 AF AE@3 AF Z AA AB Z AC AD
  AG AH AI AG AJ AK ~@4 AL@2 AM AN AO AP AQ ~@2 AR AM AN AO AP AQ ~ AS AT@2 AU AV
>`.pickRestart({
  A: "[b3,eb4] ~ [b3,eb4,gb4] ~ b3 [b3,eb4,gb4] ~ [bb3,d4,f4]@2 ~ [bb3,d4,f4] ~ bb3 [bb3,d4,f4] ~@2", // B Bb
  B: "~@2 [bb3,d4,eb4,g4] ~@2 [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ bb3 [bb3,d4,eb4,g4] ~ bb3 [bb3,d4,eb4,g4] ~@2", // Ebmaj7
  C: "[b3,eb4,gb4] ~ [b3,eb4,gb4] ~@2 [b3,eb4,gb4] ~ [bb3,d4,f4]@2 bb3 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2", // B Bb
  D: "[bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~@2 [bb3,d4,eb4,g4] ~ bb3 [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~ [bb3,d4,eb4,g4] ~", // Ebmaj7
  E: "a3@2 [c4,eb4,g4] ~ a3 [a3,c4,eb4] ~ [ab3,b3,eb4,gb4] ~ ab3 [ab3,b3,eb4,gb4] ~ ab3 [ab3,b3,eb4,gb4]@2 ab3, c4 ~@15", // Cm Adim Abm7
  F: "[g3,bb3,d4,f4] ~ [g3,bb3,d4,f4] ~ g3 [g3,bb3,d4,f4] ~@2 f4 ~ e4 eb4@2 ~ d4 ~, ~@8 [gb3,a3,c4]@7 ~", // Gm7 Gbdim
  G: "[f3,ab3,c4,eb4]@3 [f3,ab3,c4,eb4] ~@3 [f3,ab3,bb3,d4]@3 ~ [f3,ab3,bb3,d4] ~@2 [f3,ab3,bb3,d4] ~", // Fm7 Bb7
  H: "~@2 [bb3,eb4,g4] ~@2 [bb3,eb4,g4]@2 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ bb3 [bb3,eb4,g4] ~@2", // Eb
  I: "~@2 [bb3,db4,gb4] ~ bb3 [bb3,db4,gb4] ~ gb4 ~ bb3 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2", // Gb
  J: "~@2 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~@3 bb3 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~ bb3", // Eb
  K: "~ bb3 [bb3,db4,gb4] ~ [bb3,gb4] [bb3,db4,gb4] ~ [bb3,db4,gb4] ~ bb3 [bb3,db4,gb4] ~@2 [bb3,db4,gb4] ~@2", // Gb Ebm Gb
  L: "~@2 [bb3,eb4,g4] ~ bb3 [bb3,eb4,g4] ~@4 [bb3,eb4,g4] ~ bb3 [bb3,eb4,g4] ~@2", // Eb
  M: "[a3,c4,eb4,g4] [ab3,b3,eb4,gb4]", N: "[g3,bb3,d4,f4] [gb3,a3,c4,eb4,f4]",
  O: "[f3,ab3,c4,eb4]@8 [f3,ab3,bb3,d4] ~@7", // Fm7 Bb7
  P: "eb3@2 [g3,bb3,eb4] g3 eb3 [f3,ab3,db4] ~ f3 eb3 [g3,bb3,eb4] ~ [f3,ab3,db4]@2 eb3 [f3,ab3,db4] f3", // Eb Db Eb Db
  Q: "eb3@2 [g3,bb3,eb4] g3 eb3 [f3,ab3,db4] ~ f3 eb3 [g3,bb3,eb4] ~ [f3,ab3,db4] ~ eb3 [f3,ab3,db4] f3", // Eb Db Eb Db
  R: "eb3@2 [g3,bb3,eb4] g3 eb3 [f3,ab3,db4] ~ f3 eb3 [g3,bb3,eb4] ~ [f3,ab3,db4] ab3 eb3 [f3,ab3,db4] f3", // Eb Db Eb Db
  S: "eb3@2 [g3,bb3,eb4] g3 eb3 [f3,ab3,db4] ~ f3 eb3 [g3,bb3,eb4] ~ [g3,bb3,eb4]@2 eb3 [g3,bb3,eb4] ~", // Eb Db Eb
  T: "[ab3,c4,eb4]@7 ~", U: "[ab3,gb4]@15 ~, [c4,eb4]@13 ~@3", V: "[ab3,f4]@15 ~, [b3,db4]@13 ~@3",
  W: "[ab3,c4,eb4]@13 ~@3", X: "[g3,bb3,eb4]@13 ~@3",
  Y: "[ab3,c4,eb4]@3 ~ [ab3,db4,f4]@2 ~@2 [ab3,c4,e4] [ab3,c4,eb4] ~ [ab3,b3,d4]@4 ~", // Ab Db Abaug Ab Abdim
  Z: "~@2 [eb4,ab4,c5,eb5] ~@3 [eb4,ab4,c5,eb5] ~@3 [eb4,ab4,c5,eb5] ~@3 [eb4,ab4,c5,eb5] ~", // Ab
  AA: "~@2 [gb4,ab4,c5,eb5] ~@3 [gb4,ab4,c5,eb5] ~@3 [gb4,ab4,c5,eb5] ~@3 [gb4,ab4,c5,eb5] ~", // Ab7
  AB: "~@2 [f4,ab4,db5,f5] ~@3 [f4,ab4,db5,f5] ~@3 [f4,ab4,db5,f5] ~@3 [f4,ab4,db5,f5] ~", // Db
  AC: "~@2 [eb4,g4,bb4,eb5] ~@3 [eb4,g4,bb4,eb5] ~@3 [eb4,g4,bb4,eb5] ~@3 [eb4,g4,bb4,eb5] ~", // Eb
  AD: "[ab3,c4,eb4]@4 [ab3,b3,db4]@3 ~ [ab3,db4,f4] [db4,eb4] ~ [ab3,c4,eb4]@4 ~", // Ab Db7 Db Dbsus2 Ab
  AE: "~@2 [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@2 [ab3,b3,db4,f4] ~ ab3 [ab3,b3,db4,f4]@2 ab3", // Ab Db7
  AF: "[g3,bb3,eb4]@2 [g3,bb3,eb4]!3 ~ [g3,bb3,eb4]!3 ~ [b3,d4] [bb3,db4]@4 ~, ~@10 g3@5 ~", // Eb Bm Bbm
  AG: "~@2 [f4,bb4,d5,f5] ~@3 [f4,bb4,d5,f5] ~@3 [f4,bb4,d5,f5] ~@3 [f4,bb4,d5,f5] ~", // Bb
  AH: "~@2 [ab4,bb4,d5,f5] ~@3 [ab4,bb4,d5,f5] ~@3 [ab4,bb4,d5,f5] ~@3 [ab4,bb4,d5,f5] ~", // Bb7
  AI: "~@2 [g4,bb4,eb5,g5] ~@3 [g4,bb4,eb5,g5] ~@3 [g4,bb4,eb5,g5] ~@3 [g4,bb4,eb5,g5] ~", // Eb
  AJ: "~@2 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~", // F
  AK: "[bb3,d4,f4]@4 [bb3,db4,eb4]@3 ~ [bb3,eb4,g4] [eb4,f4] ~ [bb3,d4,f4]@4 ~", // Bb Eb7 Eb Ebsus2 Bb
  AL: "~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~", // G
  AM: "~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4]", // G G5 G
  AN: "~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@3 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~@2 [bb3,c4,e4,g4] ~", // Gm C7
  AO: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4]", // F
  AP: "~@2 [ab3,c4,f4] ~@2 [ab3,c4,f4] ~@4 [f3,ab3,bb3,d4] ~@2 [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4]", // Fm Bb7
  AQ: "[g3,eb4]@2 g3 ~ [g3,d4]@2 ~ [g3,c4]@4 ~@5", AR: "~@2 [g4,c5,e5] ~ [c5,e5,g5]!2 ~ [a4,d5,gb5] ~@8",
  AS: "~@2 [gb4,a4,d5] ~ [g4,c5,e5]!2 ~ [a4,d5,gb5] ~@8", // D C D
  AT: "[d4,g4,b4]@3 ~ [c4,f4,a4]@3 ~ [d4,g4,b4]@3 ~ [c4,f4,a4]@3 ~", // G F G F
  AU: "[d4,g4,b4]@3 ~ [c4,f4,a4]@3 ~ [d4,g4,b4]@3 ~ [c4,f4,a4]@2 ~ [d4,g4,b4]", // G F G F G
  AV: "~@4 [c4,f4,a4]@2 ~ [d4,g4,b4]@2 ~@7", // F G
})).s("gm_electric_guitar_jazz").gain(0.26).pan(0.6)

// other · brass section
const brass_section = note(`<
  ~ A B C D E F G H I J I J K L M N O P O P K L M N Q R S T U V W@2 ~@3 X@2 Y X Z AA X@2 Y X Z AB AC@2 AD ~ AD@3 ~ X@2 Y
  X Z AB AE@2 Z AE AF AG ~@10 AH@3 AI ~@4 AJ@2 AK ~@4
>`.pickRestart({
// … 157 more lines