Strudelify

Green Shirt

Elvis Costello

KeyC majorTempo90 bpm
0:00/0:00
// Green Shirt — Elvis Costello
// 90 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · drawbar organ · "Organ"
const drawbar_organ = note("<~ A@2 B@2 C@2 ~@2 D E@3 F@8 G@6 H@8 ~@4 I@4 J K@4 L@2 M@8>".pickRestart({
  A: "g3/2", B: "f3/2", C: "[g3@95 ~]/2", D: "g3@12 f3@11 ~",
  E: "[a#3@5 ~ a3@6 g3@6 ~@24 a#3@11 ~ a3@12 g3@6, f3@24 ~@12 f3@95 ~@13]/3",
  F: "[~@36 a#3@23 ~ a3@23 ~ g3@48 a#3@22 ~@2 a3@24 g3@144 f3@60, ~@36 f3@47 ~@49 f3@48 d3@47 ~@157]/8",
  G: "[~@36 g3@96 f3@96 g3@24 ~@24 a#3@11 ~, ~@7 f3]/6",
  H: "[a3@11 ~ g3@12 ~@48 a#3@24 a3@24 [c3,g3]@43 ~@5 [a#3,d4]@23 ~ [a3,c4]@24 [a#3,d4]@23 ~ c4@24 [a#3,d4]@24 [a3,c4]@22 ~@2 [e4,g4]@23 ~ [f4,a4]@18 ~@30, ~@24 f3@96 ~@48 f4@143 ~@73, ~@120 a3@11 ~@25 c4@21 ~@15]/8", // C5 A# Am A# Am Em F
  I: "[~@25 [d4,a#4]@22 ~@2 a4@24 g4@24 [f4,a4]@6 ~@3 g4@3 a4@3 ~@3 g4@2 ~ a4@2 ~ [d4,a#4]@21 ~@3 a4@24 [e4,g4]@23, ~@25 f4@45 ~@3 e4@21 ~@9 f4@5 ~@4 f4@7 ~@2 f4@45 ~@26, ~@49 c4@70 ~@26 c4@47]/4", // Gm F Gm Em
  J: "~ [f4,a4]@3 [e4,g4]@3 [f4,a4]@3 [e4,g4]@3 [f4,a4]@5 ~@7 [c4,e4,g4]@23", // F Em F Em F C
  K: "[~ a4@22 ~@2 [d4,a#4]@11 ~ a4@10 ~@2 [e4,g4]@11 ~ a3@45 ~@3 [a#3,d4]@24 a4@23 ~ [e4,g4]@35, ~ f4@47 ~@13 f4@95 ~@36, ~@37 c4@71 ~@25 c4@59]/4", // Gm Em A# Em
  L: "[~@13 [a#3,d4]@23 ~ a4@23 ~ [e4,g4]@35, ~@13 f4@47 ~@36, ~@37 c4@59]/2", // A# Em
  M: "[~@13 [a#3,d4,f4]@24 [f4,a4]@22 ~@140 e5@142 ~@2 e6@6 ~@35, ~@37 c4@111 ~@3 c5@142 ~@91, ~@61 g4@185 ~@138, ~@61 e4@138 ~@185]/8", // A# F
})).s("gm_drawbar_organ").gain(0.18).pan(0.7)

// chords · drawbar organ · "Organ" · soft notes
const drawbar_organ_soft = note("<~ A@8 ~ B@2 C@4 ~ D@8 ~@2 E@2 ~@26 F@3>".pickRestart({
  A: "[~@3 f3, c3]/8", B: "[~@24 c3@59 ~@13]/2", C: "[~@3 c3@4 ~]/2", D: "[~@3 c3@29]/8", E: "[~@12 c3@59 ~@25]/2",
  F: "[~@55 c6@54 ~@35, ~@7 g5@102 ~@35]/3",
})).s("gm_drawbar_organ").gain(0.09).pan(0.7)

// chords · reed organ · "Farfisa Organ"
const reed_organ = note("<~@7 A@3 B@6 C@6 ~ D@8 ~@12 E@2 F G@4 H@8>".pickRestart({
  A: "[[f4,a4]@95 ~ [e4,g4]@24 [f4,a4]@24, c4@47 ~]/3", // F Em F
  B: "[[a#4,d5]@10 ~@2 [a4,c5]@12 [e4,g4,c5]@12 [c4,a4]@46 ~@2 [d4,a#4]@24 a4@23 ~ [e4,g4]@48 [d4,a#4]@24 a4@24 [e4,g4]@48 [d4,f4,a#4]@12, ~@36 f4@95 ~@49 f4@47 ~@61, ~@54 c4@35 ~@13 c4@35 ~@7]/6", // A# Am C F Gm Em Gm Em …
  C: "[~@12 [c4,a4]@24 [b3,d4,g4]@48 [e4,g4]@96 [c3,f4]@97 ~@11]/6", // F G Em F5
  D: "[~@36 [f4,a4]@96 [e4,g4]@23 ~ a4@24 [a#4,d5]@11 ~ a4@11 ~ [e4,g4]@12 a4@46 ~@2 [d4,a#4]@24 a4@23 ~ [e4,g4]@47 ~@25, ~@132 c4@45 ~@15 c5@67 ~@29 c4@70 ~@26, ~@52 f4@16 ~@4 f4@31 ~@25]/8", // F Em A# Em Gm Em
  E: "[~@25 [e4,g4]@23 ~ [f4,a4]@20 ~@4 [f4,a#4,d5]@12 [f4,a4,c5]@11, ~@25 c4@42 ~@29]/2", // Em F A# F
  F: "~ [e4,g4,c5]@10 ~@2 [c4,f4,a4]@35", // C F
  G: "[~@13 [a#3,d4]@24 a4@18 ~@6 g4@48 [a#3,d4,f4]@23 ~ [f4,a4]@24 [e4,g4]@35, ~@13 f4@43 ~@5 e4@43 ~@88, ~@37 c4@67 ~@29 c4@59]/4", // A# F Em
  H: "[~@13 [a#3,d4,f4]@24 [f4,a4]@23 ~@145 c4@34 ~@50 e5@10 ~@2 e4@48 ~@35, ~@37 c4@167 ~@37 c5@108 ~@35, ~@61 g4@288 ~@35, ~@61 e4@230 ~@93]/8", // A# F
})).s("gm_reed_organ").gain(0.13).pan(0.3)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@32 A@8 B C D E ~@14>".pickRestart({
  A: "[~@133 a#5@12 ~@12 f5@13 ~ d5@12 [a4,c5]@13 [a#4,e5]@13 ~@6 a#3@6 ~ [a3,a4]@6 ~ [g3,g4]@6 [f3,f4,a4]@6 ~ [c3,c4,g4]@7 [a#2,a3]@6 [a2,c4,a4]@7 [a#2,d4,a#4]@26 c4@12 ~ [f4,c5]@11 ~ [c3,c4,e4,g4]@12 [e3,e4,g4]@12 [g3,g4]@12 [c4,g5]@12 [a#4,d5,f5]@18 g5@5, ~@39 c6@116 ~@16 f5@25 g4 ~@12 [f4,f5]@16 ~@3 a#4@7 ~@53 [f3,a4]@25 ~@48 a#2@23, ~@121 c3@62 ~@26 a4@12 ~ c5@24 ~@79 c5@36 ~@23, ~@145 a5@26 a4 ~@11 c4@31 ~@27 e4@7 ~ f4@11 ~@2 f4@37 ~@38 e5@24 ~@23]/8", // Am A#dim A G F C5 A#maj7 Am …
  B: "~ f3@17 ~ e3@3 d3@2 ~ [c3,c5,e5]@12 [e3,c6]@6 g3@5, ~ [c5,f5,a5]@23 ~ g5@23, ~@37 e5@11, ~@43 a#5@3 ~@2", // C F
  C: "~ [c5,f5,a5]@6 [a4,f5]@3 [a#4,g5]@3 c5@3 [a4,f5]@3 a#4@3 [c5,a5]@3 [a#3,d5,f5,a#5]@11 ~ f5@5 ~ [a#5,d6]@5, ~ f3@12 [g3,a5]@5 ~ [a3,g5]@5 ~@13 [a#3,a#4,d5]@11", // F Dm D# Dm F A# Gsus2 A7 …
  D: "~ a3@11 ~ [c4,f6]@11 ~ [g3,g5,c6,e6]@12 [c3,e5,c6]@6 [g5,e6]@5, ~ [f5,a5,c6]@22 ~@25", // F5 C F
  E: "~ [a3,a5,c6,f6]@3 [g3,g5,e6]@3 [a3,a5,c6,f6]@3 [g3,g5,e6]@3 [a3,a5,c6]@4 ~@31, ~@13 f6@2 ~@33", // F C F C Am
})).s("gm_string_ensemble_1").gain(0.33).pan(0.3)

// bass · slap bass 1 · "Bass"
const bass = note(`<
  ~ A@2 B ~ C@2 D ~ E F@4 G@2 H@5 I@4 J K L@2 M@2 N O P Q ~@4 R S T U V W X@2 Y Z AA@2 AB AC AD AE@3 AF
>`.pickRestart({
  A: "c2/2", B: "f2@34 ~@2 f1@2 ~ f1@2 ~ f1@2 ~ f1@3", C: "[c2@95 ~]/2", D: "f1@30 ~@6 f1 ~@2 f1@2 ~ f1 ~@2 f1@2 ~",
  E: "g1@11 ~ a1@3 c2@3 e2@3 g2@2 ~ a2@23 ~", F: "[a#2@11 ~ a2@12 g2@12 f2@41 ~@7 a#1@23 ~ f2@23 ~ c2@42 ~@6 a#2@12]/4",
  G: "[a2@6 g2@5 ~ f2@21 ~@3 c2@46 ~@2 a#1@12]/2",
  H: "[~@6 a1@2 ~ g1@2 ~ f1@10 ~@2 f1@11 ~ g1@36 a1@6 b1@5 ~ c2@96 f2@36 f1@2 ~ f1@2 ~ f1@2 ~ f1@3 ~@12]/5",
  I: "[~@36 c2@90 g1@5 ~ f1@36 f2 ~@2 f2 ~@2 f2@2 ~ f2@3 ~@12]/4", J: "~@33 a1@2 ~ g1@12",
  K: "a1@3 c2@3 e2@2 ~ g2@2 ~ a2@14 ~@4 g2@2 ~ a2@2 ~ a#2@12",
  L: "[a2@11 ~ g2@11 ~ f2@37 ~@5 c2@3 f1@3 a#1@16 ~@2 a#1@5 ~]/2", M: "[f2@18 e2@3 d2@2 ~ c2@44 ~@4 a#1@24]/2",
  N: "f2@19 ~@5 a#1@18 g1@6", O: "f1@15 ~@3 a1@6 a#1@13 ~@5 c2@3 d2@2 ~", P: "f2@10 ~@2 c2@5 ~ c2@3 e2@3",
  Q: "f2@5 ~@11", R: "~@25 a#1@16 ~@2 a#1@5", S: "~ f2@10 ~@2 f2@11 ~ c2@10 ~@2 c2@6 g2@3 c2@2",
  T: "~ f2@12 c2@5 ~ a1@6 a#1@11 ~ c2@5 ~ d2@4 ~", U: "~ f2@11 ~ c2@10 ~@2 c2@12 g2@11",
  V: "~ f2@15 ~@9 g1@10 ~@2 a1@3 c2@2 ~ e2@3 g2@2", W: "~ a2@12 f2@6 g2@2 ~ a2@3 a#2@11 ~ a2@11",
  X: "[~ g2@12 f2@39 ~@9 a#1@15 ~@3 c2@2 ~ d2@2 ~ f2@11]/2", Y: "~ f2@10 ~@2 e3@10 ~@2 c3@22 ~",
  Z: "~@7 d2@3 c2@2 ~ a#1@17 ~ a#1@5 ~ f2@10 ~", AA: "[~ f1@6 a1@5 ~ e2@11 ~ c2@31 ~@5 a#2@17 ~ a2@3 g2@2 ~ f2@10 ~]/2",
  AB: "~ f2@11 ~ e3@11 ~ c3@23", AC: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@4 ~@34", AD: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@3 ~@35",
  AE: "~ c2 ~@2 c2 ~@2 c2 ~@2 c2@2 ~@36", AF: "~ c2 ~@2 c2 ~@2 c2 ~@2 c2 ~@37",
})).s("gm_slap_bass_1").gain(0.5)

// other · synth brass 1 · "Synth"
const synth_brass_1 = note(`<
  ~@52
  [~@16 c4@2 ~ b3 ~@2 c4@2 ~ e4 ~@2 e4@2 ~ d#4@2 ~ e4 ~@2 g4 ~@2 f#4 ~@2 g4@2 ~@3]
  [~@16 e4 ~@2 d#4 ~@2 e4 ~@2 g4 ~@2 g4 ~@2 f#4 ~@2 g4 ~@2 c5 ~@2 b4 ~@2 c5@2 ~@3]
  [~@16 c5 ~@2 b4@2 ~ c5 ~@2 e5 ~@2 c5 ~@2 b4@2 ~ c5 ~@2 g5@2 ~ e5 ~@2 a#5@5]
  [~@16 c5 ~@2 b4@2 ~ c5 ~@2 e5 ~@2 c5 ~@2 b4@2 ~ c5@2 ~ g5 ~@2 e5@2 ~ a#5@3 ~@2]
  [~@16 c5 ~@2 b4@2 ~ c5 ~@2 e5@2 ~ c5 ~@2 g5@2 ~ e5 ~@2 a#5@2 ~ a5@2 ~ a#5@2 ~@3]
  ~
>`).s("gm_synth_brass_1").gain(0.56)

// other · electric guitar muted · "Muted Guitar"
const electric_guitar_muted = note(`<
  ~ A B C D@2 E F G A H I J K L M N O G@2 P Q R S T U G V W X Y Z AA AB AC ~@4 AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS@3 AT
>`.pickRestart({
  A: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2",
  B: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3 ~@2",
  C: "c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2",
  D: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2",
  E: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  F: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  G: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  H: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~",
  I: "c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~",
  J: "a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ f2 ~@2 f2 ~@2 f2 ~@2 f2 ~@2 f2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 [f2,c3] ~@2 c3@2 ~ c3 ~@2 c3 ~@2", // F5
  K: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2 ~",
  L: "a#2@2 ~ a#2 ~@2 a#2 ~@2 a#2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2",
  M: "c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2",
  N: "a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ g2@2 ~ g2@2 ~ g2 ~@2 g2@2 ~",
  O: "g2@2 ~ g2 ~@2 g2 ~@2 g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2@2 ~ g2 ~@2 g2@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2",
  P: "c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2",
  Q: "c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2",
  R: "c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2",
  S: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~",
  T: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  U: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  V: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~",
  W: "c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~",
  X: "f2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2",
  Y: "c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ a#2 ~@2 a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~",
  Z: "f2 ~@2 f2 ~@2 f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ a#2 ~@2 a#2 ~@2 a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~",
  AA: "f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~",
  AB: "f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~",
  AC: "f2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 f2 ~@35", AD: "~@25 a#2@2 ~ a#2 ~@2 a#2@2 ~ a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2",
  AE: "~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3@2",
  AF: "~ f2@2 ~ f2 ~@2 f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ a#2@2 ~ a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~",
  AG: "~ f2@2 ~ f2 ~@2 f2 ~@2 f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3@2",
  AH: "~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ f2@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3@2 ~ c3 ~",
  AI: "~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AJ: "~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AK: "~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ a#2@2 ~ a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~ a#2@2 ~ a#2 ~@2 a#2@2 ~ f2@2 ~ f2 ~@2 f2 ~@2 f2 ~",
  AL: "~ f2 ~@2 f2 ~@2 f2 ~@2 f2@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2",
  AM: "~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2 ~ a#2 ~@2 a#2 ~@2 a#2@2 ~ f2@2 ~ f2 ~@2 f2@2 ~ f2@2",
  AN: "~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AO: "~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ a#2 ~@2 a#2@2 ~ a#2 ~@2 a#2@2 ~ a#2 ~@2 a#2 ~@2 a#2 ~@2 a#2@2 ~ f2@2 ~ f2@2 ~ f2@2 ~ f2@2",
  AP: "~ f2@2 ~ f2@2 ~ f2 ~@2 f2 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AQ: "~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AR: "~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3 ~@2 c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AS: "~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2 ~ c3@2",
  AT: "~ c3@2 ~ c3@2 ~ c3@2 ~@39",
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.6)

// other · harpsichord · "Keys Fill"
const harpsichord = note("<A B ~@3 C D E ~@4 F G F H I J@2 ~@39>".pickRestart({
  A: "[c4,g5,e6]@6 [g3,e5,c6]@6 [e3,c5,g5]@6 [c3,g4,c5,e5]@5 ~, ~@4 g5@3 ~@9", B: "[c3,e4,g4,c5]@19 ~@5",
  C: "a#4@12 a4@12 [g4,a#4]@12 [f4,a4]@11 ~", D: "[e4,g4]@12 [d4,f4]@11 ~ [c4,e4]@11 ~ [e4,g4]@11 ~", E: "[f4,a4]",
  F: "~@39 c5@2 ~ c6@3 b5@3", G: "c6@3 c5@2 ~ c6@3 b5@3 c6@3 c5@2 ~ c6@3 b5@3 c6@3 c5@2 ~ c6@3 b5@3 c6@12",
  H: "c6@3 c5@2 ~ c6@3 b5@3 c6@3 c5@2 ~ c6@3 b5@3 c6@3 c5@2 ~ c6@3 b5@2 ~ c6@8 ~@4", I: "~@13 g4 g5 f#5",
  J: "[g5@3 g4@2 ~ g5@3 f#5@2 ~ g5@3 g4@2 ~ g5@3 f#5@3 g5@3 g4@3 g5@3 f#5@3 c5@23 ~@37]/2",
})).s("gm_harpsichord").gain(0.28).pan(0.7)

// chords · piano · "Keys Fill"
const piano = note("<~@21 A B C@2 ~@33>".pickRestart({
  A: "~@3 a#4", B: "a4 [g4,a#4] [f4,a4] [e4,g4]", C: "[[d4,f4]@11 ~ [c4,e4]@11 ~ [e4,g4]@12 [f4,a4]@52 ~@8]/2",
})).s("gm_piano").gain(0.28).pan(0.7)

// other · drawbar organ · "Keys Fill"
const drawbar_organ_2 = note("<~@30 A B C D E ~@8 F G H I J K L M N O P Q R S T>".pickRestart({
  A: "~@24 a#4 ~@2 a4 ~@2 a#4 ~@2 c5 ~@2 d5 ~@2 a#4 ~@2 a4 ~@2 g4 ~@2",
  B: "a4 ~@2 g#4 ~@2 a4 ~@2 a#4 ~@2 c5@2 ~ a4 ~@2 g4@2 ~ f4 ~@2 a#4@2 ~ a4 ~@2 a#4 ~@2 c5 ~@2 d5 ~@2 a#4 ~@2 a4@2 ~ g4 ~@2",
  C: "a4@2 ~ g#4 ~@2 a4 ~@2 a#4 ~@2 c5@2 ~ a4@2 ~ g4@2 ~ f4 ~@2 a#4 ~@2 a4@2 ~ a#4 ~@2 c5 ~@2 d5@2 ~ a#4@2 ~ a4@2 ~ g4 ~@2",
  D: "a4 ~@2 g#4 ~@2 a4 ~@2 a#4 ~@2 c5 ~@2 a4 ~@2 g4@2 ~ f4 ~@2 e5@2 ~ d5 ~@2 e5@2 ~ f5 ~@2 g5 ~@2 e5 ~@2 d5 ~@2 c5 ~@2",
  E: "f5 ~@15", F: "~@25 c4@2 ~ g3@2 ~ e4@2 ~ g3 ~@2 c4@2 ~ g3@2 ~ e4@2 ~ g3 ~",
  G: "~ c4@2 ~ f3@2 ~ f4@2 ~ f3 ~@2 c4@2 ~ f3@2 ~ f4@2 ~ f3 ~@2 a#4@2 ~ f4@2 ~ d4@2 ~ a#4 ~@2 a4@2 ~ f4@2 ~ c4 ~@2 a4 ~",
  H: "~ g4@2 ~ e4@2 ~ c4@2 ~ g4 ~@2 f4@2 ~ c4@2 ~ a3 ~@2 f4 ~@2 c4@2 ~ a3 ~@2 f4@2 ~ c4 ~@2 a3 ~@2 f4@2 ~ c4 ~@2 a3 ~",
  I: "~ f4@2 ~ c4 ~@2 a3 ~@2 f4@2 ~ f4@2 ~ d4@2 ~ a#3 ~@2 f4@2 ~ d4@2 ~ a#3 ~@2 f4@3 d4 ~@2 f4@2 ~ c4 ~@2 a3 ~@2 f4 ~",
  J: "~ c4@2 ~ a3 ~@2 f4@2 ~ c4 ~@2 c4@2 ~ a#3@2 ~ c4 ~@2 g3 ~@2 c4@2 ~ a#3@2 ~ c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~",
  K: "~ c4@2 ~ a#3@2 ~ c4@2 ~ a#3 ~@2 f4@2 ~ d4 ~@2 a#3 ~@2 f4@2 ~ d4@2 ~ a#3 ~@2 f4@2 ~ d4 ~@2 f4@2 ~ c4 ~@2 a3 ~@2 f4 ~",
  L: "~ c4@2 ~ a3 ~@2 f4@2 ~ c4 ~@2 c4@2 ~ a#3@2 ~ c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~",
  M: "~ c4@2 ~ a#3@2 ~ c4@2 ~ a#3 ~@2 f4@2 ~ d4 ~@2 a#3 ~@2 f4@2 ~ d4@2 ~ a#3 ~@2 f4@2 ~ d4 ~@2 f4@2 ~ c4@2 ~ a3 ~@2 f4@2",
  N: "~ c4@2 ~ a3@2 ~ f4@2 ~ c4 ~@2 c4@2 ~ a#3@2 ~ c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~",
  O: "~ c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3@2 ~ c4@2 ~ g3 ~@2 c4@2 ~ a#3@2 ~ c4 ~@2 g3 ~",
  P: "~ c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 e4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~",
  Q: "~ c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ [g3,a#3] ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 e4@2 ~ g3 ~@2 c4@2 ~ g3 ~", // Gm
  R: "~ a#3@2 ~ c4@2 ~ a#3 ~@2 c4@2 ~ c4@2 ~ a#3 ~@2 c4 ~@2 g3 ~@2 c4@2 ~ a#3 ~@2 c4@2 ~ g3 ~@2 c4@2 ~ a#3@2 ~ c4@2 ~ g3 ~",
  S: "~ e4@2 ~ c4@2 ~ a#3@2 ~ c4@2 ~ g3 ~@2 c4@2 ~ a#3 ~@2 c4 ~@2 g3@2 ~ c4@2 ~ a#3@2 ~ c4@2 ~ g3@2 ~ c4@2 ~ a#3@2 ~ c4@2",
  T: "~ e4@2 ~ c4@2 ~ a#3@2 ~ c4 ~@37",
})).s("gm_drawbar_organ").gain(0.28).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@3 A ~@3 A ~@12 B ~@3 B ~@5 C D@3 E ~@8 F ~@8 G@6>".pickRestart({
  A: "~@12 x!4", B: "~@8 x!4 ~@4", C: "~ x", D: "x!16", E: "x!5 ~@11", F: "~@4 x ~@2 x ~@2 x ~@2 x ~@34",
  G: "~ x ~@2 x ~@2 x ~@2 x ~@37",
})).gain(0.4)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@29 [~@10 x!6] [x!8 ~ x!7] ~@27>").gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@14 A ~ B ~@17 C ~@4 D E F G ~@7 H ~@7>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@4 x!2 ~@2", C: "~@3 x!2 ~@11", D: "~@43 x ~@4", E: "~@19 x ~@14 x ~@2 x ~@10",
  F: "~@13 x ~@29 x ~@4", G: "~@19 x ~@23 x ~@4", H: "~ x ~@46",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[~@47 x] ~@40 [~@25 x ~@22] ~@5 [~@5 x] ~@10>").gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A B ~ C ~@17 D ~@4 E F G H ~@5 I ~ J ~@7>".pickRestart({
  A: "~@15 x", B: "x!2", C: "~@2 x ~@4 x ~@8", D: "~ x ~@6", E: "~@34 x ~@2 x ~@10", F: "~@10 x ~@32 x ~@4",
  G: "~@4 x ~@29 x ~@2 x ~@10", H: "~@10 x ~@2 x ~@20 x ~@2 x ~@10", I: "~ x ~@2 x ~@43", J: "~ x ~@10",
// … 26 more lines

More by Elvis Costello