Strudelify
Bluebird cover art

Band On The Run

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, A@4 for four bars: 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 R T U V W@2 X Y Z AA AB AC AD AE R S R AF AG AH AI@2 AJ AK AL AM AN AO AP
  AQ R S R T AR AS AT@2 AU AV AW AX AY AZ BA R BB R BC BD@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@7 ~ a2@7 ~, ~@2 gb3@5 ~@3 gb3@5 ~",
  S: "~@6 e3 bb3, db3@10 db3@5 ~, ~ e3@4 ~@3, ~ bb3@2 ~, ~@3 db4@4 ~",
  T: "~@4 bb3@2 ~@6 e3@2 bb3 ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@6 db4@9 ~, ~@3 bb3@3 ~@2",
  U: "b3 ~@2 [d3,g3]@2 ~ [g3,b3,e4] ~, d3@3 ~@5, ~ b3@5 ~@2, ~ e4@3 ~@4", V: "~ [db4,gb4]@15, [d3,gb3,a3]",
  W: "[~@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
  X: "[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
  Y: "[a3,db4] [e3,a3,db4]@2 [a3,db4]@2 [a3,db4] [e3,a3,db4] ~, ~@3 e3@3 ~@2", // A
  Z: "g3 [g3,b3,e4]@2 [g3,b3,e4]@2 ~ [d3,g3,b3,e4] ~", AA: "[a3,db4] [e3,a3,db4]@2 [e3,a3,db4]@2 [e3,a3] [e3,a3,db4] ~",
  AB: "[gb3,a3,db4,gb4] [gb3,a3,db4,gb4]@2 [gb3,a3,db4,gb4]@2 [gb3,a3,db4,gb4]!2 ~, ~@3 d3@4 ~", // Gbm
  AC: "[g3,b3,e4]@2 [g3,b3,e4]@4 [g3,b3,e4]@5 ~ [d3,g3,b3,e4]@2 ~@2", // Em Em7
  AD: "[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
  AE: "[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
  AF: "~@12 e3@2 bb3 ~, db3@10 db3@5 ~, ~ e3@4 ~@3, ~@2 bb3@3 ~@3, ~@3 db4@4 ~",
  AG: "[d3,g3] [b3,e4]@2 b3@2 [b3,e4] [d3,g3,b3] ~", AH: "~ gb4@15, [gb3,a3,db4]@15 ~",
  AI: "[~@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
  AJ: "[g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]!2 ~", AK: "e3 [e3,a3,db4]@2 [e3,a3,db4]@2 [a3,db4]!2 ~",
  AL: "[g3,b3,e4] [g3,b3]@2 [d3,b3,e4]@2 [b3,e4] [g3,b3,e4] ~, ~@3 g3@3 ~@2", // Em G E7 E5 Em
  AM: "[a3,db4] [e3,a3,db4]@2 [e3,a3,db4]@2 [e3,a3,db4]!2 ~", // A
  AN: "a3 [gb3,a3,db4,gb4]@2 [db4,gb4]@2 [db4,gb4] [gb3,a3,db4,gb4] ~, ~@3 [gb3,a3]@3 ~@2", // Gbm Gb5 Gbm
  AO: "[g3,b3] [g3,b3]@2 [b3,e4]@2 [b3,e4] [d3,g3,b3,e4] ~, ~@3 g3@3 ~@2", // G E5 Em7
  AP: "[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
  AQ: "~@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
  AR: "~ [d3,g3] g3 ~ [g3,b3] [d3,g3,b3,e4]!2 b3", AS: "~ gb4@15, [d3,gb3,a3,db4]@15 ~",
  AT: "[~@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
  AU: "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
  AV: "e3 [a3,db4]@2 [e3,a3]@2 ~ [e3,a3,db4] ~, ~@3 db4@3 ~@2", // A A5 A
  AW: "~ [g3,b3,e4]@2 g3@2 d3 [d3,g3,b3,e4] ~, ~@3 [b3,e4]@3 ~@2", // Em Em7 E5
  AX: "a3 a3@2 [e3,a3]@2 ~ [e3,a3,db4,e4] ~, ~@3 db4@3 ~@2", // A5 A
  AY: "[gb3,a3] [gb3,a3,db4,gb4]@2 gb4!2 [a3,db4,gb4]!2 ~, ~@3 [d3,gb3,a3,db4]@2 gb3@2 ~", // Gbm Dmaj7
  AZ: "[gb3,b3]@2 [gb3,b3,d4,gb4]@2 ~@2 [d3,g3,b3,e4]@9 ~", BA: "[b2,d3] [bb2,db3] [g2,b2] [gb2,bb2]",
  BB: "~ e3@2 bb3@2 ~ e3 bb3, db3@5 db3@3, ~@6 db4@9 ~", BC: "~@2 bb3 [bb3,db4]@2 ~ e3 bb3, db3@5 db3@3, ~ e3@4 ~@3",
  BD: "[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 G I J K L M N O P Q P Q R S R S T U J V W X Y Z AA AB AC I R AD R AE AF AG AH AI W AJ AK AL G H AM AN
  R AE R AO T U AP AQ AR AS AT AU AV AW AX R AO R AO AY AZ ~
>`.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: "g1@6 g1@2 g1@4 g1@3 ~",
  J: "gb1@4 gb1@2 gb1@2 gb1@2 a1 b1 c2 db2 e2@2", K: "gb2!6 ~ gb2", L: "e2@4 ~@2 e2@2 e1@2 e2@2 b1@2 e2 ~",
  M: "a1@5 ~ a1 ~ a1 ~ a1@2 a1 b1 gb2@2", N: "e2@2 ~ e2 e1 e2 b1@2", O: "a1@5 ~ a1@2 a1@4 a1@4", P: "d1@5 ~ d1@6 d1@4",
  Q: "g1 ~ g1@4 g1@2 g1@3 ~ g1@3 ~", R: "b1@4 a1@3 d2", S: "db2@4 gb1@2 gb1!2", T: "g1@6 g1@2 g1 ~ g1 ~ g1@2 db2@2",
  U: "[d1,d2]@15 ~", V: "gb2@4 gb2@2 gb2@2 gb2 ~ gb2@2 gb2 b1 e2 gb2", W: "e2@5 ~ e2@2 e2@4 b1@4",
  X: "a1@4 a2@2 a1@2 a1@4 a1@3 ~", Y: "e1 ~ e1@2 b1@2 e2@8 a2@2", Z: "a1 ~ a1 ~ a1 ~ a1@5 ~ a1@2 ~@2",
  AA: "d1@3 d1@3 d2@2", AB: "g2@4 gb2@3 ~ e2@4 g2@4", AC: "d2@3 d2@4 d1", AD: "db2@4 gb1 gb1@3", AE: "db2 gb1",
  AF: "g1@6 g1@2 g1@2 g1@2 g1 ~ g1@2", AG: "d1@7 ~", AH: "gb1@3 ~ gb1@2 gb1@2 gb1 ~ gb1 a1 b1 db2 e2@2",
  AI: "gb2@3 ~ gb2@2 gb2@2 gb2@2 gb2@2 b1 db2 e2 gb2", AJ: "a1@3 a1 a1@3 a2", AK: "e2@3 e2!2 e1@2 b1",
  AL: "a1@3 a1 a1@4", AM: "d2@3 d2!2 d2@2 d2", AN: "g1 ~ g1@4 g1 ~ g1 ~ g1@5 ~", AO: "db2@8 gb1@2 gb2@3 ~ gb2@2",
  AP: "gb1@6 gb1@2 gb1@4 a1 b1 db2@2", AQ: "gb2@5 ~ gb2@2 gb2@2 gb2@2 gb2@4", AR: "e2@2 ~@4 e2 ~ e2@3 ~ b1@2 ~@2",
  AS: "a1@5 ~ a1 ~ a1@4 gb2@2 ~@2", AT: "e2@4 ~@2 e2 ~ e2@3 ~ b1@3 ~", AU: "a1@4 ~@2 a2@2 a2@3 ~@5",
  AV: "d2@5 ~ d2@6 d1@3 ~", AW: "b1@5 ~ g1@7 ~@3", AX: "d2@4 db2@4 b1@4 bb1@3 ~", AY: "g1@6 g1@2 g1@7 g1", AZ: "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 B ~@6 A B A B ~ C@4 D@2 ~@5 A B A B ~ C@4 E@2 ~@3 F G@2 H@2 I@2 C@4 J@2 ~@4 K@2 L ~@2 M@4 N@2 ~
>`.pickRestart({
  A: "~@14 a3 b3", B: "db4 ~ a3@2 a3 b3 db4 ~ a3@2 a3 db4 d4 ~ b3@2",
  C: "[~@3 d4 ~@8 bb3 ~@3, ~ b3@2 ~, ~@8 e3@5 ~@3]/2",
  D: "[~@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
  E: "[gb4@2 d4@9 db4 d4@2 d4@2 [gb3,a3,db4]@11 ~@5, [g3,b3] ~, ~ d3@13 ~@2, ~@14 db4 ~@17]/2", F: "~@7 [a3,db4]",
  G: "[[b3,d4]@4 [b3,d4]@4 [gb3,a3,db4]@2 [g3,b3,d4]@4 [e3,a3,db4]@13 ~@5]/2", // Bm Gbm G A
  H: "[[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
  I: "[[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
  J: "[[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
  K: "[gb4@4 d4@4 db4@2 d4@4 a3@4 ~@12 [a3,db4] [b3,d4]]/2", // A Bm
  L: "[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
  M: "[~@3 d4 ~@2 a4 ~@5 bb3 ~@3, ~ b3@2 ~, ~@7 gb4@5 ~@4, ~@8 e3@5 ~@3]/2",
  N: "[~@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 D G H E F ~@10 I J K L E F ~@7 M N O D P Q R@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 [bb3,db4]@3 [db3,e3,bb3]@2, db3@3 ~, ~ e3@5 ~@2", // Bbm Bbdim
  I: "~@4 b3@2 b2@2 ~@4 b3 ~ d3 ~, b2@6 ~@2 a2@5 ~@3, ~ gb3@2 ~@2 gb3@2 ~",
  J: "~@12 [e3,bb3]@3 ~, db3@5 db3@2 ~, ~ e3@4 ~@3, ~ bb3@2 ~, ~@3 db4@3 ~@2", // Edim
  K: "~@2 b3 b2 ~@2 [b3,d4] d3, b2@3 ~ a2@3 ~, ~ gb3@2 ~@2 gb3@2 ~", // Bm
  L: "~@4 bb3@2 ~@6 [e3,bb3,db4]@3 ~, db3@10 db3@5 ~, ~@3 [bb3,db4]@3 ~@2", // Bbdim Bbm
  M: "[gb3,b3,d4]@2 ~@2 [gb3,b3,d4] ~ [g3,b3,d4]@8 ~@2", N: "d3@4 db3@3 ~ b2@3 ~ bb2@3 ~",
  O: "~@4 b3@2 b2@2 ~@4 b3@2 d3 ~, b2@6 ~@2 a2@5 ~@3, ~ gb3@2 ~@2 gb3@2 ~",
  P: "~@3 b2 ~@2 [b3,d4] d3, ~@2 [b2,gb3]@4 ~@2 a2@5 ~@3, ~@2 b3@2 ~ gb3@2 ~", // Bm B5
  Q: "~ e3@2 [e3,bb3]@3 [db3,e3,bb3] ~, db3@3 ~, ~@3 db4 ~@4", // Edim Bbdim
  R: "[[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)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B C D E F ~@2 F G E F E G E H E I J K E ~@3 E G E G E G E G F J A L E ~@3 E@3 G E G E M N O P O G ~@3 G Q F G E
  R M H J@2 S G T ~
>`.pickRestart({
  A: "x!5 ~ x!2", B: "x ~ x!3 ~ x ~", C: "~ x!3 ~ x!3", D: "x ~ x!2 ~ x!3", E: "x!8", F: "x ~ x!5 ~", G: "x!7 ~",
  H: "x!4 ~ x!2 ~", I: "x!3 ~ x ~ x ~", J: "x!3 ~ x!4", K: "x!2 ~ x!4 ~", L: "x!3 ~ x!3 ~", M: "x!5 ~@3", N: "x!6 ~@2",
  O: "~ x!4 ~@3", P: "~ x!2 ~ x!4", Q: "x ~ x!6", R: "~@2 x ~@4 x", S: "x!2 ~ x!2 ~@3", T: "x",
})).gain(0.38)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
// … 71 more lines

More by Paul McCartney