Strudelify

Driftveil City - From Pokemon Black and White - Jazz Band

Junichi Masuda

KeyF majorTempo136 bpm
0:00/0:00
// Driftveil City - From Pokemon Black and White - Jazz Band — Junichi Masuda
// 136 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "Trumpet" named as a brass, played on trumpet (its slap bass 1 patch is not one); ch 6 "Trombone 2" named as a brass, played on trombone (its distortion guitar patch is not one); ch 14 "Bass" named as a bass, played on electric bass finger (its vibraphone patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5932111; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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 · alto sax · "Trumpet 2"
const alto_sax = note(`<
  ~ A B C ~@6 D E F G H I J K L M N O P O Q ~@4 R S T U V W X Y Z AA ~@7 AB AC AD AE AF AG AH AI AJ AK AL AM AN AO@3
  AP@2 ~
>`.pickRestart({
  A: "~ f4 ~@2", B: "c4@2 g4@2 gb4@2 [f4,gb4] f4 eb4@2 bb3@2 c4@2 bb3@2", C: "c4!3 ~@5",
  D: "[f4,bb4]@2 [f4,bb4]@2 ~ g4 bb4 g4", E: "[f4,bb4] c5@7, ~ g4@5 ~@2", F: "~@5 c4 bb3 eb4",
  G: "bb3 ~ d4@2 g3@2 bb3@2 ~@2 c4@2 g3@2 bb3@2, d4 ~@7, ~ c4@3 ~@12",
  H: "~ d4 g3 bb3 ~ g3 bb3 g3, d4 ~@7, ~ eb4@3 ~@12",
  I: "bb3 ~ eb4@2 g3@2 bb3@2 f4@2 [eb4,f4]@2 g3@2 bb3 g3, eb4 ~@7, ~ c4@3 ~@12", J: "[bb3,d4] c4@5 ~@2, ~ d4 ~@6",
  K: "eb4!2 ~@6", L: "eb4!2 ~@3 bb3 c4 eb4", M: "f4@3 eb4 f4@2 g4@2 eb4@2 d4@2 c4@2 eb4@2, ab4",
  N: "~@2 [f4,bb4]@2 ~ g4 bb4 g4", O: "[c4,f4]@2 ~@2 gb4@2 f4 [f4,g4] eb4@2 bb3@2 c4@2 bb3@2, ~@2 g4@5 ~@9",
  P: "g4@3 gb4 ~@2 f4@2 ~ e4 g4@2 bb4@2 g4@2, ~@3 eb4", Q: "g4 ~ g4 ~ c4@2 ~@10, c4@4 g4 ~@11", R: "~@3 c4 d4 a3 c4 a3",
  S: "c4 ~@3 f4@2 f4@2 e4@2 f4@2 a3@2 c4@2, ~ d4@5 ~@8 f4 ~", T: "d4@4 c4 d4 ~ c4 a3@3 c4@2 a3@3",
  U: "c4 ~@3 f4@2 f4@2 e4@2 f4@2 g4@2 a4@2, ~ d4@5 ~@8 f4 ~", V: "c4 d4 d4@2 c4@2 d4@2 e4@2 f4@2 [d4,ab4]@4, ~@2 a4 ~",
  W: "~ [f4,bb4] ~ [f4,a4]@5", X: "~@2 [f4,bb4]@2 ~@2 [f4,a4]@6 a4 bb4 ~ b4",
  Y: "[g4,bb4]@2 [g4,bb4]@2 ~ a4 [a4,c5] [g4,a4]", Z: "g4 a4@5 [d4,f4] [e4,g4]",
  AA: "[f4,ab4] [e4,g4] [c4,f4] [a3,d4] ~@4", AB: "~@5 f4 eb4 ab4",
  AC: "eb4 f4@3 c4@2 [eb4,ab4]@2 ~@2 f4@2 c4@2 eb4@2, ab4 ~@3", // Ab5
  AD: "[g4,ab4] ab4@3 c4@2 [eb4,ab4]@2 ~@2 c4@2 eb4@2 c4@2", // Abmaj7 Ab5
  AE: "eb4 f4@3 c4@2 [eb4,ab4]@2 ~@2 ab4@2 c4@2 eb4 c4, ab4 ~@3", // Ab5
  AF: "eb4@2 c5!2 bb4@2 ab4@2 bb4@2 ab4@2 [eb4,g4]@2 [f4,ab4]@2, ~ f4@5 ~@2", // Eb Fm
  AG: "eb4 f4@3 c4@2 eb4@2 ~@2 eb4@2 ab4@2 ~@2, ab4@4 ~@2 ab4 ~@9",
  AH: "eb4 f4 g4@2 f4@2 ab4@2 ~@2 g4@2 ab4@2 bb4@2, ab4 ~@3", AI: "[g4,bb4] [ab4,c5]@7 [e4,ab4]@4 [c4,e4]@4",
  AJ: "[eb4,g4]@6 [f4,ab4] [eb4,g4] [c4,f4]@4 ~@4", // Eb Fm Eb F5
  AK: "[f3,bb3]@2 [db4,f4]@2 [c4,e4]@2 [ab3,bb3,eb4,f4] [ab3,eb4] [bb3,db4]@2 [f3,eb4]@2 [ab3,f4]@2 [a3,eb4]@2", // Bb5 Db C Absus2 Ab5 Bbm F7 Db …
  AL: "bb3!3 ~@5, db4 ~ db4 ~ db4 ~@11",
  AM: "[c4,f4]@2 [ab4,c5]@2 [g4,b4]@2 [gb4,ab4,bb4,b4] [gb4,bb4] [f4,ab4]@2 [c4,eb4]@2 [bb3,f4]@2 [b3,eb4]@2", // F5 Ab G Abm7 Gb Fm Cm Bb5 …
  AN: "f4!3 ~@5, c4 ~ c4 ~ c4 ~@11", AO: "[~@7 [e4,g4]@7 [e4,ab4]@6 [e4,g4]@7 [bb4,eb5]@2 f5@13 ~@6, ~@29 c5@10 ~@9]/3",
  AP: "[~@4 [ab4,c5]@2 [bb4,eb5]@2 [ab4,c5]@2 [bb4,eb5]@2 f5@13 ~@4 [ab4,c5]@3, ~@6 c5@5 ~@5]/2", // Ab Eb5 Ab Eb5 Ab
})).s("gm_alto_sax").gain(0.52).pan(0.4)

// chords · baritone sax · "Alto Sax 2"
const baritone_sax = note(`<
  ~ A B C ~@6 D E F G H I J K L M N O P O Q R S T U V W X Y Z AA AB AC AD AE ~@3 AF AG AH AI AJ AK@2 AL AM AN@2 AO AP AQ
  AR AS AT AU@3 AV@2 ~
>`.pickRestart({
  A: "~ b3 ~@2, ~@2 eb4 ~@5", B: "c4@2 g4@2 gb4@2 [f4,gb4] f4 eb4@2 bb3@2 c4@2 [f3,bb3]@2",
  C: "g3!3 ~@5, c4 ~ c4 ~ c4 ~@11", D: "[b3,f4]@2 [b3,f4]@2 ~ eb4!3",
  E: "c3!2 eb3@2 f3@2 g3@2 c3@4 c3@2 bb2@2, d4 eb4@7", F: "c3!3 ~@2 c4 bb3 eb4",
  G: "bb3 ~ d4@2 g3@2 bb3@2 ~@2 c4@2 g3@2 bb3@2, d4 ~@7, ~ c4@3 ~@12",
  H: "~ d4 g3 bb3 ~ g3 bb3 g3, d4 ~@7, ~ eb4@3 ~@12",
  I: "bb3 ~ eb4@2 g3@2 bb3@2 eb4@2 eb4@2 g3@2 bb3 g3, eb4 ~@7, ~ c4@3 ~@12", J: "[bb3,d4] c4@4 c4 bb3 g3, ~ d4 ~@6",
  K: "bb3!2 eb4 c4 ~ eb4 c4 ~, c4 ~@3", L: "[bb3,eb4] [bb3,c4] ~ bb3 c4@2 eb4@2", M: "f4 gb4, c4",
  N: "~@2 [b3,f4]@2 ~ g3 bb3 g3", O: "[bb3,c4]@2 g4@2 gb4@2 f4 [f4,g4] eb4@2 bb3@2 c4@2 bb3@2, ~ c4@5 ~@2",
  P: "eb4@3 d4 ~@2 db4@2 ~ c4 g3@2 bb3@2 g3@2, ~@3 b3", Q: "g3!2 [g3,c4] ~@5, c4 ~@3",
  R: "bb2 c3@5 eb3@2 d3@2 eb3@2 g2@2 bb2@2", S: "bb2 c3@3 bb2@2 c3@2 ~@2 bb2@2 g2@2 bb2@2",
  T: "bb2 c3@5 eb3@2 d3@2 eb3@2 f3@2 g3@2", U: "bb2 c3@3 bb2@2 c3@2 d3@2 eb3@2 bb2@2 b2@2", V: "c3 ~@2 c4 d4 a3 c4 a3",
  W: "c4 d4@5 f4@2 e4@2 f4@2 a3@2 c4@2", X: "d4@4 c4 d4 ~ c4 [a3,c4]@3 ~@2 a3@3, ~@11 c4@3 ~@2, ~@3 b3",
  Y: "c4 d4@5 f4@2 e4@2 f4@2 g4@2 a4@2, bb3 ~@3", Z: "c4 d4 d4@2 c4@2 d4@2 [c3,e4]@2 [d3,f4]@2 e3@2 f3@2, ~@3 d4",
  AA: "f3 ~ f4@2 g3@2 a3@2 e3 f3@3 d3@2 f3@2, ~ g3@3 ~@2 f4@10",
  AB: "f3 ~ f4@2 g3@2 a3@2 f3@3 d3@2 f3@3, ~ g3@3 ~@2 f4@10", AC: "[a3,f4]@2 [a3,f4]@2 ~ f4!3",
  AD: "e4 a3 g3 f3 g3 f3 [d3,d4] [c3,e4], ~ f4@5 ~@2", AE: "f4 e4 c4 a3 ~@4, d3!2 ~@2", AF: "~@5 f3 eb3 ab3",
  AG: "eb3 f3@3 c3@2 eb3@2 ~@2 c3@2 f3@2 ~@2", AH: "c3 eb3 ~ c3 f3 eb3 f3 ab3", AI: "bb3 ab3 bb3 c4 ab3 g3 f3 ab3",
  AJ: "g3!2 ~@6", AK: "[c4,ab4]@2 ~ [c4,ab4] ~@4", AL: "[db4,ab4]@2 ~ [bb3,ab4] ~@4",
  AM: "~@2 [c4,c5]!2 [bb3,bb4]@2 [ab3,ab4]@2 [bb3,bb4]@2 [ab3,ab4]@2 [g3,g4]@2 [eb3,f4]@2", // C Bb Ab Bb Ab G Ebsus2
  AN: "[c4,ab4]@4 ~@2 [c4,ab4] ~@9", AO: "g4 ~@5 bb3 ~ e4@4 c4@4, db4 ~@3, ~ ab4@7 ~@8",
  AP: "~@2 c4!2 bb3@2 f4 eb4 bb3@2 ab3@2 g3@2 eb3@2, eb4@3 ab3 c4@2 ~@2",
  AQ: "f3@2 db4@2 c4@2 [ab3,bb3] ab3 bb3@2 f3@2 ab3@2 [ab3,a3]@2, bb2 ~@3", AR: "bb3!3 ~@5",
  AS: "c4@2 ab4@2 g4@2 [gb4,ab4] gb4 f4@2 c4@2 bb3@2 [bb3,b3]@2, f3 ~@3", AT: "c4!3 ~@5",
  AU: "[~@7 [c4,e4]@7 [eb4,e4]@6 [c4,e4]@7 f3!2 ab3@2 bb3@2 c4@2 f3@4 f3@2 ~ f3@3 e3 ~@2, ~@27 g4@2 ab4@12 eb3@2 ~@5]/3", // C Emaj7 C
  AV: "[eb3@2 ~ d3 ab4@2 bb4@2 ab4@2 f3!2 ~ bb3@2 c4@2 f3@4 f3@2 eb3@2 ~@4 [c4,ab4]@3, ~@6 db3@4 g4@2 ab4@13 ~@7, ~@6 ab3 ~@9]/2", // Fm
})).s("gm_baritone_sax").gain(0.52).pan(0.6)

// other · tenor sax
const tenor_sax = note(`<
  ~ A B C ~@6 D E F G H I J K@2 L A B M B C ~@4 N O P Q R S@2 T U V ~@6 W ~ X@2 Y Z AA@2 AB Z AC AD AE AF AG@3 AH@2 ~
>`.pickRestart({
  A: "~ eb4 ~@2", B: "c4@2 g4@2 gb4@2 f4 [f4,g4] eb4@2 bb3@2 c4@2 bb3@2", C: "g3!3 ~@5", D: "eb4@2 eb4@2 ~ g3 bb3 g3",
  E: "bb3 c4@7", F: "~@5 c4 bb3 eb4", G: "bb3 c4@3 g3@2 bb3@2 ~@2 c4@2 g3@2 bb3@2",
  H: "d4 eb4@3 g3@2 bb3@2 ~@2 g3@2 bb3@2 g3@2", I: "bb3 c4@3 g3@2 bb3@2 ~@2 eb4@2 g3@2 bb3 g3", J: "bb3 c4@5 ~@2",
  K: "bb3!2 ~@6", L: "c4", M: "bb3@3 a3 ~@2 ab3@2 ~ g3 ~@2 gb3@4", N: "~@3 c4 d4 a3 c4 a3",
  O: "a3 bb3@5 d4@2 db4@2 d4@2 f3@2 g3@2", P: "a3@4 a3 ab3 ~ a3 a3@3 c4@2 a3@3",
  Q: "a3 bb3@5 d4@2 db4@2 d4@2 e4@2 f4@2", R: "g3 a3 a3@2 g3@2 a3@2 c4@2 d4@2 a3@4", S: "~ d4 ~ c4@5",
  T: "db4@2 db4@2 ~ a3 c4 a3", U: "c4 d4@5 d4 e4", V: "f4 e4 c4 a3 ~@4", W: "ab3", X: "eb4@2 ~ eb4 ~@4",
  Y: "f4@2 ~ e4 ~@4", Z: "~@2 ab4!2 g4@2 f4@2 g4@2 f4@2 eb4@2 c4@2", AA: "eb4@4 ~@2 eb4 ~@9", AB: "f4@4 ~@2 e4 ~@9",
  AC: "f3@2 db4@2 c4@2 [ab3,bb3] ab3 bb3@2 f3@2 ab3@2 a3@2", AD: "bb3!3 ~@5",
  AE: "c4@2 ab4@2 g4@2 [gb4,ab4] gb4 f4@2 c4@2 bb3@2 b3@2", AF: "c4!3 ~@5",
  AG: "[~@7 e4@7 e4@6 e4@7 eb4@2 f4@13 ~@6]/3", AH: "[~@4 c4@2 eb4@2 c4@2 eb4@2 f4@13 ~@4 c4@3]/2",
})).s("gm_tenor_sax").gain(0.49).pan(0.4)

// chords · trombone · "Trombone 2"
const trombone = note(`<
  ~ A B C ~ D ~ E F@2 G H I J@2 K L M N O P Q R S C T U V W X Y Z AA AB AC AD AE AF AG AH@3 AI AJ AK AL AM AN@2 AO AP AQ
  AR AS AP AT AU AV AW AX@3 AY@2 ~
>`.pickRestart({
  A: "~@2 b3 ~@5", B: "~@7 [f3,f4,bb4]", C: "[g4,c5]!3 ~@5, g3 ~ g3 ~ g3 ~@11",
  D: "[bb4,eb5]@2 [c5,f5] ~ [g4,d5]@2 [bb4,eb5] ~ [g4,c5]@2 [f4,bb4] ~ [g4,c5]@2 ~@2", // Eb5 F5 G5 Eb5 C5 Bb5 C5
  E: "[g4,bb4,c5] [g4,c5] [bb4,eb5] ~ [c5,f5]@2 [d5,g5]@2 [g4,c5]@2 ~@2 [g4,c5]@2 ~@2", // C7 C5 Eb5 F5 G5 C5
  F: "~@4 [eb4,ab4] ~ [f4,bb4] ~ [g4,c5]@2 ~@6", G: "g3@4 ~@2 g4!2 f4@2 eb4@2 d4@2 bb3@2, ~ g3 ~@2",
  H: "[c3,c4]!2 [eb3,eb4]@2 [f3,f4]@2 [g3,g4]@2 [c3,c4]@4 [c3,c4]@2 [bb2,bb3]@2", I: "[c3,c4]!3 ~@5",
  J: "[bb3,d4,eb4,g4]!2 ~@6", K: "[ab3,c4,eb4,g4]!2 ~@2 [b3,eb4,f4,ab4]!2 ~@2", L: "[bb3,d4,eb4,g4]!2 ~@3 c4 bb3 g3",
  M: "[bb3,d4,eb4,g4]!2 bb3 c4 ~ bb3 c4 ~, c4 ~@3", N: "[bb3,d4,eb4,g4] [bb3,c4,d4,eb4,g4] ~ bb3 c4@2 bb3@2",
  O: "[c4,eb4,g4] [a3,c4,eb4,gb4], ab3", P: "~@2 b3@2 ~ g3 bb3 g3",
  Q: "[bb3,c4]@2 g4@2 gb4@2 f4 [f4,g4] eb4@2 bb3@2 c4@2 bb3@2, ~ c4@5 ~@2", // Bbsus2 Fsus2
  R: "[eb4,g4]@3 [d4,gb4] ~@2 [db4,f4]@2 ~ [c4,e4] g3@2 bb3@2 g3@2, ~@3 [b3,eb4]", // Eb D Db C B
  S: "[f3,c4]@2 g4@2 gb4@2 f4 [f4,g4] eb4@2 bb4@2 c5@2 bb4@2, ~ g3@5 ~@2", // F5 Fsus2
  T: "[bb2,c3] c3 c3@2 ~@2 eb3@2 d3@2 [c3,eb3]@2 g2@2 bb2@2", // Bbsus2 Cm
  U: "[bb2,c3] c3 c3@2 bb2@2 [c3,eb3]@2 ~@2 [bb2,c3]@2 g2@2 bb2@2", // Bbsus2 Cm Bbsus2
  V: "[bb2,c3] c3 c3@2 ~@2 eb3@2 d3@2 [c3,eb3]@2 f3@2 [bb2,g3]@2", // Bbsus2 Cm Eb
  W: "[bb2,c3] c3 c3@2 bb2@2 [c3,eb3]@2 d3@2 [c3,eb3]@2 bb2@2 [bb2,b2]@2", X: "c3 ~@7",
  Y: "~@2 [f4,bb4,d5]!2 ~ [f4,bb4,db5] ~ [f4,a4,d5]", Z: "~@8 g4 e4 ~ c4 gb4 eb4 ~ b3, ~@2 g3 gb3",
  AA: "f3@2 [f4,bb4,d5]!2 ~ [f4,bb4,db5] ~ [f4,a4,d5]", AB: "~@4 c3 d3 e3 f3",
  AC: "~ g3@3 g3@2 ~@2 e3 f3@3 d3@2 f3@2, [f3,bb3,d4]@3 [a3,c4,f4]@5", // Bb F
  AD: "f3 g3@3 g3@2 a3@2 f3@3 d3@2 f3@3, [d4,f4,bb4]@3 [f4,a4,c5]@5", AE: "[a3,db4,f4,g4,c5]!2 ~@2",
  AF: "~ [a3,a4] [g3,g4] [f3,f4] [g3,g4] [f3,f4] [d3,d4] [c3,c4]", AG: "[d3,d4]!2 ~@2", AH: "[c4,e4,f4,a4]!2 d4!6",
  AI: "[c4,e4,f4,a4]!2 d4!3 [f3,d4] [eb3,d4] [ab3,d4]", // Fmaj7 Dm Ebmaj7 Abdim
  AJ: "eb3 ~ [eb4,g4,ab4,c5]@2 [c3,f4]@2 [eb3,f4]@2 f4@2 [c3,f4]@2 [f3,f4]@2 f4@2, [eb4,g4,ab4,c5] ~@7, ~ f3@3 ~@12", // Abmaj7 F5 Ebsus2 F5 F Abmaj7
  AK: "[c3,eb4,g4,ab4,c5] [eb3,eb4,g4,ab4,c5] f4 [c3,f4] [f3,f4] [eb3,f4] [f3,f4] [ab3,f4]", // Abmaj7 F5 F Ebsus2 F Db
  AL: "[bb3,f4,ab4,bb4,db5] [ab3,f4,ab4,bb4,db5] [bb3,f4] [c4,f4] [ab3,f4,ab4,b4,db5] [g3,f4,ab4,b4,db5] [f3,f4] [ab3,f4]", // Bbm7 Bb5 F5 Db7 F Db
  AM: "g3!2 ~@6, [db4,e4,g4,bb4] ~@3", AN: "[eb4,g4,ab4,c5]@3 [c4,eb4,g4,ab4,c5] ~@4, c4 ~@3",
  AO: "[db4,f4,ab4,c5]!2 ~ bb3 [e4,ab4,bb4,db5]!2 ~@2", // Dbmaj7 Bbm7b5
  AP: "[eb4,g4,ab4,c5]@2 c4!2 bb3@2 ab3@2 bb3@2 ab3@2 g3@2 eb3@2, ~ [eb4,g4,ab4,c5] ~@6", // Abmaj7
  AQ: "[eb4,g4,ab4,c5]@3 [eb4,g4,ab4,c5] ~@4, c4@4 ~@2 c4 ~@9", // Abmaj7
  AR: "[eb4,g4,ab4,c5]@3 [eb4,g4,ab4,c5] ~@2 [eb4,g4,ab4,c5]@2, c4@4 ~@2 c4 ~@9", // Abmaj7
  AS: "[db4,f4,ab4,c5]@2 [db4,f4,ab4,c5]@2 ~@2 bb3 ~ [e4,ab4,bb4,db5]@2 [e4,ab4,bb4,db5]@2 ~@4", // Dbmaj7 Bbm7b5
  AT: "bb2@2 ~@5 [ab3,eb5,ab5]", AU: "[f5,bb5]!3 ~@5, bb3 ~ bb3 ~ bb3 ~@11", AV: "f3@2 ~@5 [bb3,bb4,eb5]",
  AW: "[c5,f5]!3 ~@5, c4 ~ c4 ~ c4 ~@11", // F5
  AX: "[~@7 g3@7 ab3@6 g3@7 [f3,f4]!2 [ab3,ab4]@2 [bb3,bb4]@2 [c4,c5]@2 [f3,f4]@4 [f3,f4]@2 ~ [f3,ab4,c5]@3 [e3,g4,b4] ~@2, ~@41 [eb3,eb4]@2 ~@5]/3", // F Ab Bb C F Fm Em Eb
  AY: "[[eb3,gb4,bb4]@2 ~ [d3,f4,a4] ~@2 [db3,e4,ab4]@4 [f3,f4]!2 ~ [bb3,bb4]@2 [c4,c5]@2 [f3,f4]@4 [f3,f4]@2 [eb3,eb4]@2 ~@4 [f3,f4]@3, ~@6 [ab3,ab4] ~@9]/2", // Ebm Dm Dbm F Bb C F Eb …
})).s("gm_trombone").gain(0.27).pan(0.7)

// chords · piano
const piano = note(`<
  ~ A B C D E D E F@2 G H I J@2 K J@3 L M H N H C O@4 P Q R S T U V W X Y Z AA AB AC AD@2 AE AF AG@2 AH AI AG@2 AH AI AJ
  AK AL AM AN AO@2 AP@2 ~
>`.pickRestart({
  A: "~@2 [g1,g2,b3,eb4,f4,bb4]@2 ~ g1 bb1 b1", B: "c2@2 ~@5 [bb1,bb2,f4,bb4]", C: "[c2,c3,eb4,g4,c5]!3 ~@5",
  D: "f1@2 [eb3,f3,ab3,c4] f1 g1@2 [f3,ab3,b3,eb4] g1", E: "c2@2 [eb3,g3,bb3,c4] g1 c2@2 [eb3,g3,bb3,c4] ~, ~@3 g1",
  F: "f1@2 [eb3,ab3,c4] f1 c2@2 [eb3,g3,c4] ~, ~@3 c2", G: "[g2,b3,eb4,f4,bb4] [g2,b3,d4,f4,bb4] ~@2",
  H: "c2@2 g1 bb1 ~ g1 bb1 g1, [bb3,d4,eb4,g4]@6 [bb3,d4,eb4,g4]@9 ~", // Ebmaj7
  I: "c2!2 [c2,bb3,d4,eb4,g4]@2 ~@3 g1, [bb3,d4,eb4,g4] ~@3", J: "[bb3,d4,eb4,g4]!2 ~ c2 ~ g1 bb1 g1, c2 ~@3",
  K: "[ab3,c4,eb4,g4]!2 ~ f1 [b3,eb4,f4,ab4]!2 ~ g1, f1 ~ g1 ~", L: "f1!4 gb1!4, [ab3,c4,eb4,g4] [a3,c4,eb4,gb4]",
  M: "[g1,ab1] [a1,bb1,b1] [c2,db2,d2] [eb2,e2,f2] [g2,g3,g4,g5]@4 ~@8, g2@4 gb2 ~@11", // Abmaj7 G
  N: "[c2,bb3,d4,eb4,g4]@3 [a3,db4,d4,gb4] ~@2 [bb1,ab3,c4,db4,f4]@2 ~ [a1,g3,b3,c4,e4]@3 [ab1,gb3,bb3,b3,eb4]@4, ~@3 b1@3 ~@10", // Cm7 Dmaj7 Bbm7 Am7 Abm7
  O: "c2!2 ~ eb2 ~ c2 ~ bb1", P: "c2 ~@7", Q: "[f3,bb3,d4] [g3,bb3,db4,f4]", R: "[f3,a3,c4,e4]",
  S: "[a3,bb3,d4,f4] [g3,bb3,db4,f4]", T: "[c4,e4,f4,a4]", U: "[f3,bb3,d4]@6 [a3,c4,f4]@9 ~",
  V: "[f3,bb3,d4]@6 [a3,c4,f4]@4 ab4@2 a4 c5 ~ d5", W: "[a2,db4,f4,g4,c5] [a1,db4,f4,g4,c5] ~@2",
  X: "d2@2 a1 c2 ~ a1 c2 a1, [c4,e4,f4,a4]@6 [c4,e4,f4,a4]@9 ~", // Fmaj7
  Y: "d2!2 [d2,c4,e4,f4,a4]@2 ~ [d3,d4] [c3,c4] [f3,f4], [c4,e4,f4,a4] ~@3", // Dm7 D C F Fmaj7
  Z: "[c3,c4] [d3,d4]@3 [a2,a3]@2 [c3,c4]@2 ~@2 [d3,d4]@2 [a2,a3]@2 [c3,c4]@2", // C D A C D A C
  AA: "[e3,e4] [f3,f4]@3 [a2,a3]@2 [c3,c4]@2 ~@2 [a2,a3]@2 [c3,c4]@2 [a2,a3]@2", // E F A C A C A
  AB: "[c3,c4] [d3,d4]@3 [a2,a3]@2 [c3,c4]@2 ~@2 [f3,f4]@2 [a2,a3] [c3,c4] ~ [a2,a3]", AC: "[c3,c4]@2 [d3,d4]@9 ~@5",
  AD: "f2!2 ~@6", AE: "bb1!2 ~@2 b1!2 ~@2", AF: "c2!2 ~@6",
  AG: "[eb4,g4,ab4,c5]@3 [f2,eb4,g4,ab4,c5] ~ c2 eb2 c2, f2 ~@3", // Abmaj7 Fm7
  AH: "[c4,db4,f4,ab4]!2 ~ bb1 [c2,bb3,db4,e4,ab4]@2 ~ c2, bb1 ~@2 [bb3,db4,e4,g4]", // Dbmaj7 Bbm7b5 Bbdim
  AI: "[ab3,c4,eb4,g4]@3 f2 ~ c2 eb2 c2, f2@4 ~@2 [ab3,c4,eb4,g4]@9 ~", AJ: "bb2@2 ~@5 [ab1,eb5,ab5]",
  AK: "[bb1,db5,f5,bb5]!3 ~@5", AL: "f2@2 ~@5 [eb2,eb3,bb4,eb5]", AM: "[f2,f3,ab4,c5,f5]!3 ~@5", AN: "[c2,c3]!16",
  AO: "[[c2,c3]!11 [f2,eb4,g4,ab4,c5]@4 c2@2 eb2@2 ~@2 c2@2 eb2@2 ~ [f2,eb4,g4,ab4,c5]@3 [d4,gb4,g4,b4] ~@2, ~@17 [eb4,g4,ab4,c5]@8 c2@2 ~@2 e2@3]/2", // C Fm7 Gmaj7 Abmaj7
  AP: "[[eb2,db4,f4,gb4,bb4]@2 ~ [d2,c4,e4,f4,a4]@3 [db2,b3,eb4,e4,ab4]@4 ~@3 c2@2 eb2@2 ~@2 c2@2 eb2@2 c2@2 [f1,gb1,g1] [ab1,a1,bb1] [b1,c2,db2] [d2,eb2,e2] f2@3, ~@10 [f2,eb4,g4,ab4,c5]@5 [eb4,g4,ab4,c5]@9 ~@8]/2", // Ebm7 Dm7 Dbm7 Fm7 Abmaj7
})).s("gm_piano").gain(0.35).pan(0.3)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B C D E D F G@2 H I J K L M N O P Q R S T U V W@4 X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO@2 AP AQ
  AO@2 AP AQ AR AS AT AU AV@3 AW@2 ~
>`.pickRestart({
  A: "~@2 g1@2 ~ g1 bb1 b1", B: "c2@2 ~@5 bb1", C: "c2!3 ~@5", D: "f1@2 ~ f1 g1@2 ~ g1",
  E: "[bb4,eb5]@2 [c5,f5] ~ [g4,d5]@2 [bb4,eb5] ~ [g4,c5]@2 [f4,bb4] ~ [g4,c5]@2 ~@2, c2@2 ~ g1 c2@2 g1@2", // Eb5 F5 G5 Eb5 C5 Bb5 C5
  F: "[g4,bb4,c5] [g4,c5] [bb4,eb5] ~ [c5,f5]@2 [g1,d5,g5]@2 [g4,c5]@2 ~@2 [g4,c5]@2 ~@2, c2 ~ c2 g1", // C7 C5 Eb5 F5 G5 C5
  G: "f1@4 [eb4,ab4] ~ [f4,bb4] ~ [g4,c5]@2 ~@2 c2@4, ~@3 f1 c2@2 ~@2", // Ab5 Bb5 C5
  H: "g1@4 ~@2 g4!2 f4@2 eb4@2 d4@2 bb3@2, ~ g1 ~@2",
  I: "c4!2 eb4@2 [g1,f4]@2 [bb1,g4]@2 ~@2 g1@2 [bb1,c4]@2 [g1,bb3]@2, c2 ~ c4 ~", // G7 Eb Bbsus2 Gm
  J: "[c2,c4]!2 c2@2 ~ c5 bb4 [g1,eb5], ~@2 c4 ~@5", // C Cm
  K: "bb4 c5@3 g4@2 [c2,bb4]@2 ~@2 [g1,c5]@2 [bb1,g4]@2 [g1,bb4]@2, c2 ~@3", // C7 C5 Eb Gm
  L: "d5 eb5@3 g4@2 [c2,bb4]@2 ~@2 [g1,g4]@2 [bb1,bb4]@2 [g1,g4]@2, c2 ~@3", // C7 G Bb G
  M: "bb4 c5@3 g4@2 [f1,bb4]@2 ~@2 eb5@2 g4@2 bb4 g4, f1@2 ~@2 g1@2 ~ g1", // Bb5
  N: "bb4 ~@2 c2 ~ [g1,c5] [bb1,bb4] [g1,eb5], c2 ~@3, ~ c5@3 ~@4", O: "[c2,c5]@2 eb5 [c2,c5] ~ [g1,eb5] [bb1,c5] g1",
  P: "eb5 c5 ~ [c2,bb4] ~ g1 bb1 g1, c2 ~ c5 eb5", Q: "f1!4 gb1!4, [f4,c5]!2 [gb4,c5]!2", R: "g1 [g2,g4,g5] ~@2",
  S: "c4@2 g4@2 [g1,gb4]@2 f4 [f4,g4] eb4@2 [g1,bb3]@2 [bb1,c4]@2 [g1,bb3]@2, c2@2 ~ bb1 ~@4", // Gmaj7 Fsus2 Gm Bbsus2 Gm
  T: "[c2,eb4,g4]@3 [d4,gb4] ~@2 [bb1,db4,f4]@2 ~ [c4,e4] ~@2 [ab1,b3,eb4]@4, ~@3 b1@3 ~@3 a1@3 ~@4", // Cm D Bbm C Abm
  U: "c4@2 g4@2 [g1,gb4]@2 f4 [f4,g4] eb4@2 [g1,bb4]@2 [bb1,c5]@2 [g1,bb4]@2, c2@2 ~ bb1 ~@4", V: "[c2,g4,c5]!3 ~@5",
  W: "c2!2 ~ eb2 ~ c2 ~ bb1", X: "c2 ~@7", Y: "g1 d2 a1 db2", Z: "d2 f2 a2 ab2", AA: "g2 g1 a1 db2", AB: "d2 e2 f2 gb2",
  AC: "g2 c2 d2 a1", AD: "g1 c2 d2 bb1", AE: "a1!2 ~@2", AF: "d2@2 a1 c2 ~ a1 c2 a1", AG: "d2!2 d2@2 ~ d3 c3 f3",
  AH: "c3 d3@3 a2@2 c3@2 ~@2 d3@2 a2@2 c3@2", AI: "e3 f3@3 a2@2 c3@2 ~@2 a2@2 c3@2 a2@2",
  AJ: "c3 d3@3 a2@2 c3@2 ~@2 f3@2 a2 c3 ~ a2", AK: "c3 d3@5 ~@2", AL: "f2!2 ~@6", AM: "bb1!2 ~@2 b1!2 ~@2",
  AN: "c2!2 ~@6", AO: "f1!2 eb2 f2 ~ c2 eb2 c2", AP: "bb1!2 ab2@2 c2!2 bb2@2", AQ: "f2 c2 eb2 g2 f2 c2 eb2 c2",
  AR: "bb4@2 f5@2 e5@2 [eb5,e5] eb5 db5@2 ab4@2 bb4@2 [ab1,ab4]@2, bb2 ~@3", AS: "[bb1,bb4]!3 ~@5", AT: "f2@2 ~@5 eb2",
  AU: "f2!3 ~@5",
  AV: "[c2@2 c2 c2@2 c2@2 c2 c2@2 c2@2 c2 c2@2 c2@2 c2@2 c2 c2@2 c2@2 c2 c2@2 f4!2 ab4@2 [c2,bb4]@2 [eb2,c5]@2 ~@2 c2@2 [eb2,f4]@2 ~ [f2,ab4,c5]@3 [g4,b4] ~@2, ~@27 f1@4 ~@4 f4@4 ~@2 [c2,eb4]@2 ~@2 e2@3]/3", // C7 Cm Ebsus2 Fm G Cm
  AW: "[[eb2,gb4,bb4]@2 ~ [f4,a4] ~@2 [db2,e4,ab4]@4 f4!2 ~ [c2,bb4]@2 [eb2,c5]@2 ~@2 c2@2 [eb2,f4]@2 [c2,eb4]@2 f1@4 [f2,f4,f5]@3, ~@3 d2@3 ~@4 f1@4 ~@18, ~@12 ab4@2 ~@3 f4@4 ~@11]/2", // Ebm F Dbm C7 Cm Ebsus2 Cm F
})).s("gm_electric_bass_finger").gain(0.48).pan(0.8)

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

More by Junichi Masuda