Strudelify

Bluebird

Paul McCartney

KeyE♭ majorTempo88 bpm
0:00/0:00
// Bluebird — Paul McCartney
// 88 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F D G H I@2 J K L M N O P Q R S T U V W X@2 Y Z AA AB AC AD AE AF T AG T AH AI AJ AK@2 AL AM AN AO AP AQ
  AR AS AT AU AT AV AW AX AY@2 AZ BA BB BC BD BE BF AT BG AT BH BI@3
>`.pickRestart({
  A: "~@2 db4 [a3,db4,gb4]!4 ~, ~ e3@4 e3@2 ~", // Gbm
  B: "[g3,b3] [g3,b3,e4]@2 [b3,e4]@2 [b3,e4] [d3,g3,b3,e4] ~, ~@3 g3@3 ~@2", // G Em E5 Em7
  C: "a3 [a3,db4,e4]@2 [a3,db4,e4]@2 [a3,db4,e4] [e3,a3,db4,e4] ~", // A
  D: "[g3,b3] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 ~, ~@3 d3@4 ~", // G Em
  E: "db4 [e3,a3,db4]@2 [a3,db4]@2 [a3,db4] [e3,a3,db4,e4] ~, ~@3 e3@3 ~@2, ~@6 e4 ~@9", // A
  F: "db4 [gb3,a3,db4,gb4]@2 [d3,gb3,a3,db4,gb4]@2 [a3,db4,gb4] [gb3,a3,db4,gb4] ~", // Gbm Dmaj7 Gbm
  G: "[d3,a3,db4,gb4] [a3,db4,gb4]@2 [a3,db4,gb4]@2 [a3,db4,gb4] [gb3,a3,db4,gb4] ~, gb3@3 gb3@3 ~@2, ~ d3@4 ~@3", // Dmaj7 Gbm
  H: "~ [d3,g3,b3]@2 [g3,b3,e4]@2 [g3,b3] [g3,b3,e4] ~, ~@3 d3@4 ~", // G Em G Em
  I: "[~@4 [e3,a3,db4] [e3,a3,db4,gb4]@2 [a3,db4,gb4]@4 [db4,gb4] [e3,a3,db4,gb4] [a3,db4,gb4] [e3,a3,db4,gb4] ~]/2", // A Gbm7 Gbm Gb5 Gbm7 Gbm Gbm7
  J: "~ [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4] [d3,g3,b3,e4] ~", // Em Em7
  K: "e3 [e3,a3,db4]@2 [e3,a3,db4]@2 [a3,db4]!2 ~, ~@5 e3@2 ~", // A
  L: "[g3,b3] [g3,b3,e4]@2 [b3,e4]@2 [b3,e4] [d3,g3,b3,e4] ~, ~@3 [d3,g3]@3 ~@2", // G Em E5 Em7 G5
  M: "[e3,a3,db4] [a3,db4]@2 [a3,db4,e4]@2 [a3,db4,e4] [e3,a3,db4,e4] ~, ~@3 e3@3 ~@2", // A
  N: "[a3,db4,gb4] [gb3,a3,db4,gb4]@2 [gb3,db4,gb4]@2 [gb3,db4,gb4] [d3,gb3,a3,db4,gb4] ~, ~@3 [d3,a3]@3 ~@2", // Gbm Gb5 Dmaj7 D5
  O: "[g3,b3] [d3,g3,b3,e4]@2 [d3,g3,b3,e4]@2 [g3,b3,e4] [d3,g3,b3,e4] ~", // G Em7 Em Em7
  P: "[a3,db4,gb4] [gb3,a3,db4]@2 [gb3,a3,db4,gb4]@2 [gb3,a3,db4] [gb3,a3,db4,gb4] ~", // Gbm
  Q: "[d3,g3,b3] [g3,b3,e4]@2 ~@3 [g3,b3,e4] ~, ~@3 [g3,b3,e4]@3 ~@2, ~@5 d3@2 ~", // G Em
  R: "~@2 b3 d4 ~@2 b3 d4, b2@6 ~@2 a2@7 ~, ~@2 gb3@5 ~@3 gb3@4 ~@2",
  S: "~@6 e3 bb3, db3@10 db3@5 ~, ~ e3@4 ~@3, ~ bb3@2 ~, ~@3 db4@4 ~",
  T: "~@2 b3 d4 ~@2 b3 d4, b2@6 ~@2 a2@7 ~, ~@2 gb3@5 ~@3 gb3@5 ~",
  U: "~@4 bb3@2 ~@6 e3@2 bb3 ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@6 db4@9 ~, ~@3 bb3@3 ~@2",
  V: "b3 ~@2 [d3,g3]@2 ~ [g3,b3,e4] ~, d3@3 ~@5, ~ b3@5 ~@2, ~ e4@3 ~@4", W: "~ [db4,gb4]@15, [d3,gb3,a3]",
  X: "[~@8 [a3,db4,gb4]@2 db4@4 [db4,gb4]@4 ~@2 [e3,db4]@2 [a3,db4]@2 [e3,a3,db4,gb4]@2 [e3,a3,db4,gb4]@2 [e3,a3,db4,gb4]@2 [e3,a3,db4,gb4] ~, ~@4 e3@3 ~@9, ~@5 a3@4 ~@7, ~@5 gb4 ~@10]/2", // Gbm Gb5 Dbm A Gbm7
  Y: "[g3,b3]@2 [g3,b3,e4]@4 [g3,b3,e4]@4 [g3,b3,e4]@2 [g3,b3,e4] ~@3, ~@2 d3@11 ~@3", // G Em
  Z: "[a3,db4] [e3,a3,db4]@2 [a3,db4]@2 [a3,db4] [e3,a3,db4] ~, ~@3 e3@3 ~@2", // A
  AA: "g3 [g3,b3,e4]@2 [g3,b3,e4]@2 ~ [d3,g3,b3,e4] ~", // Em Em7
  AB: "[a3,db4] [e3,a3,db4]@2 [e3,a3,db4]@2 [e3,a3] [e3,a3,db4] ~", // A A5 A
  AC: "[gb3,a3,db4,gb4] [gb3,a3,db4,gb4]@2 [gb3,a3,db4,gb4]@2 [gb3,a3,db4,gb4]!2 ~, ~@3 d3@4 ~", // Gbm
  AD: "[g3,b3,e4]@2 [g3,b3,e4]@4 [g3,b3,e4]@5 ~ [d3,g3,b3,e4]@2 ~@2", // Em Em7
  AE: "[gb3,a3,db4,gb4] [gb3,a3,gb4]@2 [gb3,a3,db4]@2 ~ [d3,a3,db4,gb4] ~, ~@3 gb4@3 ~@2, ~@5 gb3@2 ~", // Gbm Dmaj7
  AF: "[d3,g3,b3] [d3,g3,b3,e4]@2 [d3,g3]@2 d3 [d3,g3,b3,e4] ~, ~@3 [b3,e4]@3 ~@2", // G Em7 G5 Em7 E5
  AG: "~@6 e3 bb3, db3@5 db3@3, ~ e3@4 ~@3, ~ bb3@2 ~, ~@3 db4@4 ~",
  AH: "~@12 e3@2 bb3 ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@2 bb3@3 ~@3, ~@3 db4@4 ~",
  AI: "[d3,g3] [b3,e4]@2 b3@2 [b3,e4] [d3,g3,b3] ~", AJ: "~ gb4@15, [gb3,a3,db4]@15 ~",
  AK: "[~@8 db4@2 [a3,db4,gb4]@4 a3@4 db4@2 [a3,db4]@2 [a3,db4,gb4]@2 [e3,a3,db4,gb4]@2 [e3,a3,db4,gb4]@2 [a3,db4,gb4]@2 [e3,a3,db4,gb4] ~, ~@7 db4 ~@8]/2", // Gbm A Gbm Gbm7 Gbm Gbm7
  AL: "[g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 ~", AM: "e3 [e3,a3,db4]@2 [e3,a3,db4]@2 [a3,db4]!2 ~",
  AN: "[g3,b3,e4] [g3,b3]@2 [d3,b3,e4]@2 [b3,e4] [g3,b3,e4] ~, ~@3 g3@3 ~@2", // Em G E7 E5 Em
  AO: "[a3,db4] [e3,a3,db4]@2 [e3,a3,db4]@2 [e3,a3,db4]!2 ~", // A
  AP: "a3 [gb3,a3,db4,gb4]@2 [db4,gb4]@2 [db4,gb4] [gb3,a3,db4,gb4] ~, ~@3 [gb3,a3]@3 ~@2", // Gbm Gb5 Gbm
  AQ: "[g3,b3] [g3,b3]@2 [b3,e4]@2 [b3,e4] [d3,g3,b3,e4] ~, ~@3 g3@3 ~@2", // G E5 Em7
  AR: "[a3,db4] [gb3,a3,db4,gb4]@2 [db4,gb4]@2 [db4,gb4] [gb3,a3,db4,gb4] ~, ~@3 [gb3,a3]@3 ~@2", // A Gbm Gb5 Gbm
  AS: "~@2 [g3,b3,e4]@4 [d3,g3,b3,e4]@4 [d3,g3,b3]@2 [d3,g3,b3,e4]@2 [g3,b3,e4] ~", // Em Em7 G Em7 Em
  AT: "~@2 b3 d4 ~@2 b3 d4, b2@7 ~ a2@7 ~, ~@2 gb3@5 ~@3 gb3@5 ~",
  AU: "~@6 e3 bb3, db3@5 db3@3, ~ e3@4 ~@3, ~ bb3@2 ~, ~@6 db4@9 ~",
  AV: "~@2 bb3 bb3@2 ~ e3 bb3, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@6 db4@9 ~",
  AW: "~ [d3,g3] g3 ~ [g3,b3] [d3,g3,b3,e4]!2 b3", AX: "~ gb4@15, [d3,gb3,a3,db4]@15 ~",
  AY: "[~@8 db4@2 db4@4 [db4,gb4]@6 db4@2 [a3,db4,gb4]@2 [a3,db4,gb4]@2 [a3,db4,gb4]@2 [a3,db4,gb4]@2 [e3,a3,db4,gb4] ~, ~@5 a3@4 ~@4 e3@2 ~]/2", // Gb5 Gbm Gbm7
  AZ: "g3 [d3,g3,b3]@2 b3@2 [b3,e4] [g3,b3,e4] ~, ~ e4@4 ~@3, ~@3 d3@4 ~, ~@3 g3@3 ~@2", // G E5 Em
  BA: "e3 [a3,db4]@2 [e3,a3]@2 ~ [e3,a3,db4] ~, ~@3 db4@3 ~@2", // A A5 A
  BB: "~ [g3,b3,e4]@2 g3@2 d3 [d3,g3,b3,e4] ~, ~@3 [b3,e4]@3 ~@2", // Em Em7 E5
  BC: "a3 a3@2 [e3,a3]@2 ~ [e3,a3,db4,e4] ~, ~@3 db4@3 ~@2", // A5 A
  BD: "[gb3,a3] [gb3,a3,db4,gb4]@2 gb4!2 [a3,db4,gb4]!2 ~, ~@3 [d3,gb3,a3,db4]@2 gb3@2 ~", // Gbm Dmaj7
  BE: "[gb3,b3]@2 [gb3,b3,d4,gb4]@2 ~@2 [d3,g3,b3,e4]@9 ~", BF: "[b2,d3] [bb2,db3] [g2,b2] [gb2,bb2]",
  BG: "~ e3@2 bb3@2 ~ e3 bb3, db3@5 db3@3, ~@6 db4@9 ~", BH: "~@2 bb3 [bb3,db4]@2 ~ e3 bb3, db3@5 db3@3, ~ e3@4 ~@3",
  BI: "[db3 ~@11 [g3,b3]@2 ~@2 [a3,db4,gb4]@17 ~@15, ~@2 d3@8 d3@4 ~ [d3,gb3]@18 ~@15, ~@3 e4@4 ~@17, ~ b3 ~@6]/3", // G Gbm D
})).s("gm_acoustic_guitar_nylon").gain(0.27).pan(0.3)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~ A B C D E F G H I J@2 K L G M N O P Q ~@4 R ~ S T U V W X Y Z AA AB ~@4 AC ~ AD@2 AE AF AG V AH AI AJ AK ~@4 AL ~
  AM@2 AN AO AP AQ AR AS ~@2 AT ~@2 AU ~@2
>`.pickRestart({
  A: "~ [a3,db4] [a3,gb4] ~@5", B: "d3@3 ~, e4 ~@7", C: "e3@3 e3@3 ~@2, db4 ~@7", D: "e4 d3@2 ~@5", E: "[e3,a3] ~@7",
  F: "[gb3,a3] ~@4 d3@2 ~, d3@3 ~@2 gb3 ~@2", G: "[d3,e4] d3@2 ~@5", H: "~@5 d3 ~@2", I: "[d3,g3,b3] e4@2 ~@2 e4 ~@2",
  J: "[~@4 gb4 ~@6 a3 ~ e3 ~@2, ~@7 e3@5 ~@4]/2", K: "[g3,b3] ~@2 d3@3 ~@2, d3@3 ~@5", L: "[a3,db4] ~@7",
  M: "~ e3@2 ~@5", N: "gb3 ~@7", O: "[d3,e4] ~@4 d3 ~@2", P: "gb3 d3@4 d3!2 ~, ~@2 gb4@3 ~@11", Q: "e4 d3@4 ~@3",
  R: "g3 g3@2 ~@2 d3!2 ~", S: "~@6 gb4 ~", T: "~@2 [a3,gb4] [e3,gb4] ~@4", U: "[d3,e4] ~@7", V: "e3 ~@7",
  W: "[d3,b3] d3@4 [d3,g3] ~@2", X: "~ e3 ~@8 db4@2 ~@4", Y: "d3@3 ~@5", Z: "d3@3 ~@2 [g3,b3] ~@2, ~@3 d3@3 ~@2",
  AA: "~ db4@2 ~@2 a3 ~@2, ~@3 d3@3 ~@2", AB: "e4 ~@7", AC: "~ g3@2 [g3,e4]@2 g3 e4 ~, ~ d3@5 ~@2",
  AD: "[~@4 [a3,gb4] ~@2 gb4 [db4,gb4] [a3,gb4] gb4 e3 ~@4, ~@4 e3@5 e3@2 ~@5]/2", AE: "~ d3@6 ~",
  AF: "[a3,db4] ~@4 e3 ~@2", AG: "~ [d3,e4]@2 ~@2 d3 ~@2", AH: "[gb3,db4,gb4] d3@4 d3 ~@2",
  AI: "e4 e4@2 d3@3 ~@2, d3@3 ~@5", AJ: "[gb3,gb4] ~@7, d3@7 ~", AK: "[d3,g3,b3] d3@2 ~@2 e4 ~@2",
  AL: "~@3 [g3,b3] e4 ~@3", AM: "[~@4 [a3,gb4] gb4@2 ~@3 [e3,a3,gb4] e3!2 ~@3, ~@2 e3@3 ~@3]/2", AN: "[d3,b3,e4] ~@7",
  AO: "a3@2 e3@4 ~@4 [e3,a3]@2 e4@2 [e3,a3] ~", AP: "[e3,g3] ~ d3@4 d3@4 ~@6",
  AQ: "e3 [e3,db4]@2 ~@2 [e3,a3] ~@2, ~@3 e4@3 ~@2", AR: "d3 d3@2 ~@2 d3@2 ~", AS: "b2@4 ~@2 a2@9 ~", AT: "~@2 bb3 ~@5",
  AU: "~@4 g3@2 g3@5 ~@5",
})).s("gm_acoustic_guitar_nylon").gain(0.11).pan(0.3)

// bass · acoustic bass
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V U V W X Y Z AA AB AC AD AE AF AG AH U AI U AJ AK AL AM AN AA AO AP AQ AR
  AS AT AU U AJ U AV W X AW AX AY AZ BA BB BC BD BE U AV U AV BF BG ~
>`.pickRestart({
  A: "gb1 ~ gb1 ~ gb1 ~ gb1@2 gb1 ~ gb1 a1 b1 c2 db2@2", B: "gb2@2 gb2@2 gb2@2 gb2@2 gb2 ~ gb2@2 b1 e2 gb2 ~",
  C: "e2@3 ~ b1@3 ~", D: "a1@2 a1@2 a1 ~ a1 ~ a1 ~ a1 ~ b1 e2 gb2 ~", E: "e2@5 ~ e2@2 e2@6 b1@2",
  F: "a1@5 ~ a1 ~ a1@6 db2@2", G: "d2@6 d2 ~ d2@8", H: "g1@3 g1 g1@4", I: "d2@5 ~ d2@2 d2@8",
  J: "g1@6 g1@2 g1@4 g1@3 ~", K: "gb1@4 gb1@2 gb1@2 gb1@2 a1 b1 c2 db2 e2@2", L: "gb2!6 ~ gb2",
  M: "e2@4 ~@2 e2@2 e1@2 e2@2 b1@2 e2 ~", N: "a1@5 ~ a1 ~ a1 ~ a1@2 a1 b1 gb2@2", O: "e2@2 ~ e2 e1 e2 b1@2",
  P: "a1@5 ~ a1@2 a1@4 a1@4", Q: "d1@5 ~ d1@6 d1@4", R: "g1 ~ g1@4 g1@2 g1@3 ~ g1@3 ~", S: "d1@6 d1@5 ~ d1@4",
  T: "g1 ~ g1@3 ~ g1 ~ g1@3 ~ g1@3 ~", U: "b1@4 a1@3 d2", V: "db2@4 gb1@2 gb1!2", W: "g1@6 g1@2 g1 ~ g1 ~ g1@2 db2@2",
  X: "[d1,d2]@15 ~", Y: "gb1@4 gb1 ~ gb1@2 gb1@2 a1 b1 c2 db2 e2@2", Z: "gb2@4 gb2@2 gb2@2 gb2 ~ gb2@2 gb2 b1 e2 gb2",
  AA: "e2@5 ~ e2@2 e2@4 b1@4", AB: "a1@4 a2@2 a1@2 a1@4 a1@3 ~", AC: "e1 ~ e1@2 b1@2 e2@8 a2@2",
  AD: "a1 ~ a1 ~ a1 ~ a1@5 ~ a1@2 ~@2", AE: "d1@3 d1@3 d2@2", AF: "g2@4 gb2@3 ~ e2@4 g2@4", AG: "d2@3 d2@4 d1",
  AH: "g1@5 ~ g1 ~ g1@3 ~ g1@3 ~", AI: "db2@4 gb1 gb1@3", AJ: "db2 gb1", AK: "g1@6 g1@2 g1@2 g1@2 g1 ~ g1@2",
  AL: "d1@7 ~", AM: "gb1@3 ~ gb1@2 gb1@2 gb1 ~ gb1 a1 b1 db2 e2@2", AN: "gb2@3 ~ gb2@2 gb2@2 gb2@2 gb2@2 b1 db2 e2 gb2",
  AO: "a1@3 a1 a1@3 a2", AP: "e2@3 e2!2 e1@2 b1", AQ: "a1@3 a1 a1@4", AR: "d2@3 d2 d2@4", AS: "g1@6 g1@2 g1@7 ~",
  AT: "d2@3 d2!2 d2@2 d2", AU: "g1 ~ g1@4 g1 ~ g1 ~ g1@5 ~", AV: "db2@8 gb1@2 gb2@3 ~ gb2@2",
  AW: "gb1@6 gb1@2 gb1@4 a1 b1 db2@2", AX: "gb2@5 ~ gb2@2 gb2@2 gb2@2 gb2@4", AY: "e2@2 ~@4 e2 ~ e2@3 ~ b1@2 ~@2",
  AZ: "a1@5 ~ a1 ~ a1@4 gb2@2 ~@2", BA: "e2@4 ~@2 e2 ~ e2@3 ~ b1@3 ~", BB: "a1@4 ~@2 a2@2 a2@3 ~@5",
  BC: "d2@5 ~ d2@6 d1@3 ~", BD: "b1@5 ~ g1@7 ~@3", BE: "d2@4 db2@4 b1@4 bb1@3 ~", BF: "g1@6 g1@2 g1@7 g1", BG: "d1",
})).s("gm_acoustic_bass").gain(0.38).pan(0.6)

// other · glockenspiel
const glockenspiel = note(`<
  A B ~@4 C ~ D ~@2 E ~@4 F ~ G ~@7 H I ~@4 J ~ K ~@7 L M ~@4 N ~ O ~@7 P Q ~@4 R ~@9
>`.pickRestart({
  A: "db8 ~ gb7 [gb7,b7] b7 gb7!2 [db7,gb7,db8] db8 [db7,e8] [gb7,e8]!2 [e7,gb7] [db7,gb7,db8] [db7,e7,gb7,db8] b7", // B5 Gb5 Dbm Gb7 Esus2 Gb5 Gb7
  B: "gb7 [gb7,a7] [db7,a7] [db7,gb7,db8] [gb7,b7] [db7,gb7] [db7,e7,gb7,a7] [db7,a7] [gb7,db8]!2 gb7 [gb6,gb7,b7] [gb6,a7] [b6,gb7] [gb6,a6,e8] ~", // Gbm Gb5 B5 Gb5 Gbm7 Gbm Gb5 B5 …
  C: "~ a7 [db7,gb7] db7 [db7,gb7] ~ db7!2 ~@8", D: "db8 [gb7,b7] gb7 [gb7,b7] [gb7,a7] ~@11",
  E: "gb7 ~ [gb7,db8] gb7 db8 gb7 [gb7,b7] gb7 b7!2 gb7 [gb7,b7]!2 a7 gb7 ~", F: "db8 [db7,db8]!4 db7 ~@10",
  G: "[gb7,a7,db8] db7!2 [db7,db8] db8 db7 ~@10", H: "~@10 [db7,db8] db7 [db7,a7] a7 [db7,a7] ~",
  I: "~@2 db7!2 a7 db7 [db7,a7] a7 [db7,a7] db7 [db7,a7] gb7 [db7,gb7] ~@3", J: "~ gb7 [gb7,db8] a7 [gb7,a7] ~@11",
  K: "gb7!2 [gb7,a7,db8] a7 [gb7,a7] ~ db7 ~@9", L: "~@10 [gb7,db8] gb7 [gb7,a7] ~ gb7 ~",
  M: "gb7 ~ [gb7,db8] gb7!2 a7 ~@2 db7!2 a7 [db7,a7] [db7,gb7] ~@3", N: "~ [gb7,db8] gb7 [gb7,a7,db8]!2 db8 ~@10",
  O: "db7 db8 [db7,db8] [db7,a7]!2 a7 ~@10", P: "~@7 [gb7,db8]!2 a7 [gb7,a7] ~@4 [db7,a7]",
  Q: "[db7,a7] [gb7,a7] ~@6 db7 [db7,db8] [db7,a7,db8] db8 [db7,gb7,a7] [db7,a7] ~@2", // Gbm Db Gbm
  R: "[db7,a7] db7 [db7,a7] gb7 db7 ~ [db7,a7] a7 db7 ~@7", // Gbm
})).s("gm_glockenspiel").gain(0.16).pan(0.2)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<A ~@5 B ~@9 C ~ D ~@7 E ~@5 F ~ F ~@7 G H ~@4 I ~@9 J K ~@4 L ~@9>".pickRestart({
  A: "~ gb7 ~@3 a7 ~@4 e7 ~@4 gb7", B: "db7 ~@4 e7!2 ~@9", C: "a7!2 ~ a7!2 ~@11, ~ gb7@2 ~@5",
  D: "~ db8 gb7 [gb7,a7]!2 ~@11", E: "~@9 db8 ~@2 db8 ~@3", F: "db8 ~@15", G: "~@9 gb7 ~@3 a7 ~@2", H: "~@3 a7 ~@12",
  I: "~@5 a7 ~@10", J: "~@6 gb7 ~@7 db7 ~", K: "~@2 db7 ~@2 a7 db7 ~@2 a7 ~ a7 ~@4", L: "~@5 gb7 ~@10",
})).s("gm_glockenspiel").gain(0.05).pan(0.2)

// chords · pan flute
const pan_flute = note(`<
  ~@5 A B A C ~@6 A D A D ~ E@2 F@2 G@2 ~@5 A B A D ~ E@4 H@2 ~@3 I J@2 K@2 L@2 E@4 M@2 ~@4 N@2 O ~@2 P@4 Q@2 ~
>`.pickRestart({
  A: "~@14 a3 b3", B: "db4 ~ a3@2 a3 b3 db4 ~ a3@2 a3 db4 d4@2 b3@2", C: "db4 ~ a3@2 a3 b3 db4 ~ a3@2 a3 db4 d4 ~ b3 ~",
  D: "db4 ~ a3@2 a3 b3 db4 ~ a3@2 a3 db4 d4 ~ b3@2", E: "[~@3 d4 ~@8 bb3 ~@3, ~ b3@2 ~, ~@8 e3@5 ~@3]/2",
  F: "[~@6 d4@2 ~@16 bb3@3 ~@5, ~ b3@2 ~, ~@16 e3@11 ~@5]/2",
  G: "[~@4 gb4@2 d4@5 db4 d4@2 d4@2 [gb3,a3,db4]@11 ~@5, ~@4 [g3,b3]@10 db4 ~@17, ~@6 d3@21 ~@5]/2", // Gbm G
  H: "[gb4@2 d4@9 db4 d4@2 d4@2 [gb3,a3,db4]@11 ~@5, [g3,b3] ~, ~ d3@13 ~@2, ~@14 db4 ~@17]/2", I: "~@7 [a3,db4]",
  J: "[[b3,d4]@4 [b3,d4]@4 [gb3,a3,db4]@2 [g3,b3,d4]@4 [e3,a3,db4]@13 ~@5]/2", // Bm Gbm G A
  K: "[[gb3,a3,db4,e4]@4 [d3,gb3,a3,db4]@4 [d3,gb3,a3,db4] ~ [gb3,a3,db4,e4]@4 [d3,g3,b3,d4]@14 ~@2 [d3,gb3,a3,db4] ~]/2", // Gbm7 Dmaj7 Gbm7 G Dmaj7
  L: "[[gb3,a3,db4,e4]@3 ~ [d3,gb3,a3,db4]@3 ~ [d3,gb3,a3,db4] ~ [gb3,a3,db4,e4]@3 ~ [d3,g3,b3,d4]@14 ~@4]/2", // Gbm7 Dmaj7 Gbm7 G
  M: "[[g3,b3,gb4]@2 d4@5 db4 d4@3 d4@2 db4 d4@2 [gb3,a3,db4]@11 ~@5, ~@2 d3@25 ~@5, ~ [g3,b3]@7 ~@8, ~@11 db4 ~@20]/2", // Gmaj7 Gbm G
  N: "[gb4@4 d4@4 db4@2 d4@4 a3@4 ~@12 [a3,db4] [b3,d4]]/2", // A Bm
  O: "[db4,e4] ~ [a3,db4]@2 [a3,db4] [b3,d4] [db4,e4] ~ [a3,db4]@2 [a3,db4] [b3,d4] [db4,e4] ~ [b3,d4]@2", // Dbm A Bm Dbm A Bm Dbm Bm
  P: "[~@3 d4 ~@2 a4 ~@5 bb3 ~@3, ~ b3@2 ~, ~@7 gb4@5 ~@4, ~@8 e3@5 ~@3]/2",
  Q: "[~@4 gb4@2 d4@2 [d4,a4]@2 ~ d4@3 [d4,gb4]@2 [gb3,a3,db4,e4]@15 ~, ~ [g3,b3]@3 ~@4, ~@6 d3@25 ~, ~@8 db4 ~ gb4@4 ~@18, ~@11 db4 ~@2 db4 ~@17]/2", // D5 D Gbm7 G
})).s("gm_pan_flute").gain(0.38)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@20 A B C D E F ~@10 G H I J E F ~@10 K L M N E F ~@7 O P Q R S T U@3
>`.pickRestart({
  A: "~@2 b3 b2 ~@2 b3 d3, b2@3 ~@5, ~ gb3@2 ~@2 gb3@2 ~",
  B: "~@4 bb3@2 ~@6 [bb3,db4]@3 ~, db3@9 ~ db3@6, ~ e3@4 ~@3, ~@3 [bb3,db4]@3 ~@2", // Bbm
  C: "~@2 b3 b2 ~@2 b3 d3, b2@3 ~ a2@2 ~@2, ~ gb3@2 ~@2 gb3@2 ~",
  D: "~@2 bb3 ~@3 [e3,bb3] ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@3 [bb3,db4]@3 ~@2", E: "~ [g3,b3]@7", F: "gb3@15 ~",
  G: "~ gb3 b3 b2 ~@2 b3 d3, b2@6 ~@2 a2@5 ~@3, ~@5 gb3@2 ~",
  H: "~@2 bb3 ~@3 [e3,bb3] ~, db3@9 ~ db3@4 ~@2, ~ e3@4 ~@3, ~@3 [bb3,db4]@3 ~@2", // Edim Bbm
  I: "~@2 b3 b2 ~@2 b3 d3, b2@6 ~@2 a2@5 ~@3, ~ gb3@2 ~@2 gb3@2 ~",
  J: "~@2 bb3 [bb3,db4]@3 [db3,e3,bb3]@2, db3@3 ~, ~ e3@5 ~@2", // Bbm Bbdim
  K: "~@4 b3@2 b2@2 ~@4 b3 ~ d3 ~, b2@6 ~@2 a2@5 ~@3, ~ gb3@2 ~@2 gb3@2 ~",
  L: "~@12 [e3,bb3]@3 ~, db3@5 db3@2 ~, ~ e3@4 ~@3, ~ bb3@2 ~, ~@3 db4@3 ~@2", // Edim
  M: "~@2 b3 b2 ~@2 [b3,d4] d3, b2@3 ~ a2@3 ~, ~ gb3@2 ~@2 gb3@2 ~", // Bm
  N: "~@4 bb3@2 ~@6 [e3,bb3,db4]@3 ~, db3@10 db3@5 ~, ~@3 [bb3,db4]@3 ~@2", // Bbdim Bbm
  O: "[gb3,b3,d4]@2 ~@2 [gb3,b3,d4] ~ [g3,b3,d4]@8 ~@2", P: "d3@4 db3@3 ~ b2@3 ~ bb2@3 ~",
  Q: "~@4 b3@2 b2@2 ~@4 b3@2 d3 ~, b2@6 ~@2 a2@5 ~@3, ~ gb3@2 ~@2 gb3@2 ~",
  R: "~@4 bb3@2 ~@6 [e3,bb3]@3 ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@3 [bb3,db4]@3 ~@2", // Edim Bbm
  S: "~@3 b2 ~@2 [b3,d4] d3, ~@2 [b2,gb3]@4 ~@2 a2@5 ~@3, ~@2 b3@2 ~ gb3@2 ~", // Bm B5
  T: "~ e3@2 [e3,bb3]@3 [db3,e3,bb3] ~, db3@3 ~, ~@3 db4 ~@4", // Edim Bbdim
  U: "[[d3,g3]@13 ~@3 a3@18 ~@14, ~@5 d3@6 ~@5, ~ gb3 ~]/3", // G5
})).s("gm_electric_guitar_jazz").gain(0.38).pan(0.6)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@20 A B ~ C ~ D ~@15 D ~@15 D ~@12 E F G ~>".pickRestart({
  A: "~@2 a2 ~", B: "~@12 e3@3 ~", C: "~@6 db4 ~", D: "a3@15 ~", E: "~@4 bb3@2 ~@3 db4@4 ~@3", F: "~ b3@12 ~@3",
  G: "db4",
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A@9 B A@10 C D C D A C A@10 C D C D A B A@10 C@4 A C A@7 E F C D C D A D ~>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x ~@6 x", D: "x", E: "x ~@2 x ~@4", F: "x!4",
})).gain(0.49)

// drums · rim
const rim = s("rim").struct("<~@4 A@6 ~@2 A@8 B@4 C ~@3 A@8 B@4 A ~@3 A@3 D A@4 B@4 A ~@3 A@7 B@4 A ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x", C: "~@2 x ~@4 x", D: "~@4 x ~@4 x ~@2 x ~@2 x",
})).gain(0.49)

// … 83 more lines

More by Paul McCartney