Strudelify

Say Say Say

McCartney

KeyA minorTempo112 bpm
0:00/0:00
// Say Say Say — McCartney
// 112 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 guitar muted · "BASS GTR"
const bass = note(`<
  ~@7 A B@2 C@2 D@2 E@2 F G H I J K L M N@2 O@2 P@2 C@2 D@2 Q@2 R S T U V W X Y Z AA AB AC Z AA AB AD AE AF AE AG AH AI
  AJ@2 B@2 C@2 D@2 Q@2 R AK AL AM AN W X Y Z AA AB AC Z AA AB AC Z AA AB AC Z AA AB AO Z AA AB AC Z AA AB AC Z AA AB AC
  Z AA AB AC Z AA AP ~@7
>`.pickRestart({
  A: "~@2 [c#2,d2,c#3,d3] [c2,c3] [a1,a2] ~@3", B: "[a1@4 ~@2 a1@4 ~@2 a1@7 ~ a1@2 c2@2 d2@6 ~@2]/2",
  C: "[d2@2 ~ d2@2 ~ d2@3 ~ d2 c2 a1@3 ~]/2", D: "[a1@4 ~@2 a1@5 ~ a1@6 ~@2 a1@2 c2@2 d2@5 ~@3]/2",
  E: "[d2@5 ~ d2@5 ~ d2@7 ~ d2@2 c2@2 a1@6 ~@2]/2", F: "d2@5 ~ d2@5 ~ d2@2 g1@2", G: "f1@6 c2@2 f2@3 f1 g1@2 g#1@2",
  H: "a1@5 ~ g1 ~ a1@6 g1 ~", I: "a1@5 ~ g1 ~ a1@2 ~ a1 c2@2 c#2@2", J: "d2@3 d1@3 d2 g1", K: "f1@5 ~ c2 ~ g2@4 f2@4",
  L: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", M: "e1 ~@15", N: "[a1@5 ~ a1@4 ~@2 a1@6 ~ a1 a1@2 c2@2 d2@5 ~@3]/2",
  O: "[d2@4 ~@2 d2@4 ~@2 d2@6 ~@2 [c#2,d2,c#3,d3] ~ [c2,c3]@2 [a1,a2]@2 ~@6]/2", // Dmaj7 C A
  P: "[a1@4 ~@2 a1@5 ~ a1@7 ~ a1@2 c2@2 d2@6 ~@2]/2", Q: "[d2@4 ~@2 d2@5 ~ d2@7 ~ d2@2 c2@2 a1@6 ~@2]/2",
  R: "d1@6 d2@2 d2@4 d1 ~ d#1 e1", S: "f1@6 c2@2 f2@2 ~ f1 g1@2 g#1@2", T: "a1@6 g1 ~ a1@5 ~ g2 g#2",
  U: "a2@6 g2 ~ g2@4 c2@2 c#2@2", V: "d1@3 d2@4 g1", W: "f1@6 c2 ~ f2@3 ~ f2@4",
  X: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ c#2@2", Y: "d2 ~@7", Z: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  AA: "a1 ~ a1 ~ a1 ~ c2 ~ d2 ~ d2 ~ d2 ~ d2 ~", AB: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AC: "d2 ~ d2 ~ d2 ~ c2 ~ a1 ~ a1 ~ a1 ~ a1 ~", AD: "d2 ~ d2 ~ d2 ~ c2 ~ a1 ~ a1 ~ a1@4", AE: "g1@6 c2@2 g2@3 ~@5",
  AF: "g2@6 g2 ~ g2@2 ~ d2 g1@4", AG: "a2@5 ~ a#2@2 a2@2 g2@2 d2@2 g1@2", AH: "g1@6 c2@2 g2@3 ~ g2@3 ~",
  AI: "g2@6 g2 ~ g2@4 e2@2 a1@2", AJ: "[e1,e2] ~@7", AK: "f1@6 f2 ~ f2@3 f1 g1@2 g#1@2", AL: "g1@5 ~ g1 ~ g1@5 ~ g1 ~",
  AM: "g1@2 g2 g#2 a2 e2 a1 e2", AN: "d2@3 d1@4 g1", AO: "d2 ~ d2 ~ d2 ~ c2 ~ a1 ~ g2 g#2 a2 g2 e2 c2",
  AP: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@3",
})).s("gm_electric_guitar_muted").gain(0.74)

// bass · electric guitar muted · "BASS GTR" · soft notes
const bass_soft = note("<~@52 A ~ A B ~@54 C D E F G H ~@2>".pickRestart({
  A: "~@12 g2@3 ~", B: "~@3 a#3 a3 g3 ~@2", C: "~@14 d2 ~", D: "d2 ~ d2 ~ d2 ~ c2 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", F: "a1 ~ a1 ~ a1 ~ c2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  G: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", H: "d2 ~ d2 ~ d2 ~ c2 ~ a1 ~ a1 ~@5",
})).s("gm_electric_guitar_muted").gain(0.3)

// other · pad new age · "PRG.CHANGE" · A
const pad_new_age = note("<~@4 [~@2 [a4,a5,a6] ~ [a4,a5] ~ [a4,a5] ~@9] ~@113>").s("gm_pad_new_age").gain(0.32)

// other · blown bottle · "PRG.CHANGE" · Csus2
const blown_bottle = note("<~@7 [~@4 [c3,d3] ~ c3 ~ a2@2 ~@6] ~@19 [~@4 c3 ~ c3 ~ a2@2 ~@6, ~@5 d3@2 ~@9] ~@90>")
  .s("gm_blown_bottle").gain(0.6)

// chords · electric guitar muted · "PRG.CHANGE"
const electric_guitar_muted = note("<~@7 A ~@19 A ~@25 B C ~@2 B D E ~@58>".pickRestart({
  A: "~@12 g4@3 ~", B: "~@2 e4 ~ b4@4 a4@2 e4 ~ [e5,a5,c6]@3 ~", C: "[b4,d5,g5]", D: "[g#4,d5,g5] ~@15",
  E: "[e4,b4,e5] ~@15", // E5
})).s("gm_electric_guitar_muted").gain(0.55)

// chords · clavinet · "PRG.CHANGE"
const clavinet = note("<~@16 A B C@2 A B D E ~@12 A B C ~ A B D E ~@24 A B F@2 A B D E ~@42>".pickRestart({
  A: "[a4,c5,f5]@5 ~@2 [a4,c5,f5,a5] ~@3 [a4,c5,f5,a5] ~@4", // F
  B: "[c5,f5,a5]@3 [c5,f5,a5] ~@3 [c5,f5,a5] ~@3 [c5,f5,a5] ~@4", C: "[a4,c5,e5,a5] ~",
  D: "[e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~ [e2,b2,e4,b4] ~", // E5
  E: "[e2,b2,e4,b4] ~@15", F: "a5 ~",
})).s("gm_clavinet").gain(0.24)

// chords · clavinet · "PRG.CHANGE" · soft notes
const clavinet_soft = note("<~@16 A B ~@2 A B ~@14 A B ~ C A B ~@26 A B D@2 A B ~@44>".pickRestart({
  A: "~@6 [a4,c5,f5,a5] ~@3 [a4,c5,f5,a5] ~@2 [a4,c5,f5,a5] ~@2", // F
  B: "~@6 [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~@3", C: "[a4,c5,e5,a5] ~", D: "[a4,c5,e5] ~",
})).s("gm_clavinet").gain(0.12)

// chords · harmonica · "PRG.CHANGE"
const harmonica = note(`<
  ~@24 A B ~@17 C D@2 ~@29 E@3 F G@3 ~ H I@3 J K ~ I L@3 I M@3 I N@2 ~ I J K ~ I@2 ~@10
>`.pickRestart({
  A: "~@2 g4 ~@2 g4@2 ~ g4@2 ~ g4@2 ~ g4@2", B: "~ g4@14 ~", C: "~@10 g4 ~@2 g4@2 ~",
  D: "[g4@2 ~ g4@2 ~ g4@2 ~ g4@21 ~@2]/2", E: "[~@12 d5@21 c5 a4 ~ a4@2 ~@8 d5@2]/3", F: "~ c5 ~@14",
  G: "[c5 a4 ~ a4 ~@10 d5@19 c5 a4 ~@11 d5@2]/3", H: "c5 a4 ~ a4 ~@12", I: "[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~@7",
  J: "[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~ e5@3 e5@3", K: "e5@6 ~ e5!7 d5@2",
  L: "[[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~@4 a5@16 d6@16 ~@3]/3", M: "[[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~@4 e5@34 ~]/3",
  N: "[[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~@4 e5@18 ~]/2", // Cmaj7
})).s("gm_harmonica").gain(0.39)

// chords · harmonica · "PRG.CHANGE" · soft notes
const harmonica_soft = note("<~@77 A B C D ~ E ~@5 F G ~@6 H@2 ~ I@3 ~@2 J G ~ K@3 L M N G L@2 ~@2>".pickRestart({
  A: "~@6 a4 ~@9", B: "~ a4@3 ~@4", C: "~@3 a4 ~@4", D: "f5@7 ~", E: "c5 ~@15", F: "~@6 d#5 ~ d#5!5 ~ d#5 ~, g5@7 ~",
  G: "~ c5 a4 ~@13", H: "[g5@31 ~]/2", I: "[~@32 c6@5 d6@9 ~@2, ~@13 a5@33 ~@2]/3", J: "~@6 d#5 ~ d#5!7 ~, g5@7 ~",
  K: "[~@13 a5@16 d6@16 ~@3]/3", L: "[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~@7", M: "[b4,c5] a4 ~ a4 ~@2 g4 ~ a4 ~ e5@3 e5@3",
  N: "e5@6 d#5 e5 [d#5,e5]!4 e5 [d#5,e5] d5@2, g5@14 d#5 ~", // Emaj7
})).s("gm_harmonica").gain(0.13)

// chords · lead 2 sawtooth · "PRG.CHANGE"
const lead_2_sawtooth = note("<~@4 A@2 B@2 C@8 ~@11 D ~@90>".pickRestart({
  A: "[[e4,a4]@6 g4@6 e4@8 a3@2 e4@2 d4@5 ~@3]/2", // A5
  B: "[[d3,d4,f4]@6 [d3,d4,f4]@6 [d3,d4,f4]@8 [c3,d3,c4,d4,c5,d5] ~ [c3,c4,c5]@2 [a2,a3,a4]@2 ~@6]/2", C: "a3/8",
  D: "~@4 [c3,d3,c4,d4] ~ [c3,c4]@2 a2@2 ~@6", // Csus2 C
})).s("gm_lead_2_sawtooth").gain(0.17)

// chords · lead 2 sawtooth · "PRG.CHANGE" · soft notes
const lead_2_sawtooth_soft = note("<~@3 A B@2 ~@21 C ~@90>".pickRestart({
  A: "~@6 [e3,e4] [g3,g4]", B: "[~@6 d4@6 a3@8 ~@4 a4@5 ~@3]/2", C: "~@4 [c5,d5] ~ c5@2 a4@2 ~@6",
})).s("gm_lead_2_sawtooth").gain(0.02)

// chords · electric guitar muted · "PRG.CHANGE"
const electric_guitar_muted_2 = note(`<
  ~@19 A B C D E ~ F ~@12 F G B C D H ~@26 F I B C D H J K L M J K L M N O P M J K Q R J K L S J K Q R J T L M J U@7 ~@6
>`.pickRestart({
  A: "a5@10 ~ g4 e5 ~ c5 ~", B: "[a4,d5]", C: "[a4,f5]",
  D: "[e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4] ~", // E5
  E: "g4!2 e4 d4 g4!2 ~@2 g4!2 ~@2 g4@4", F: "~@11 g4 e5 ~ c5 ~", G: "c5@5 ~@7 c5 ~@3",
  H: "g4!2 e4 d4 g4!2 ~@2 g4!2 ~@2 a#4@4", I: "~@2 d5@2 c5 ~ c5 ~@5 a4 c5 ~@2",
  J: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~", // A5
  K: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [g4,c5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // A5 C5 D5
  L: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // D5
  M: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [g4,c5] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~", // D5 C5 A5
  N: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ g5 ~ a5@3 ~", // A5
  O: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [g4,c5] ~ [a4,d5] ~ g5 e5 a5@3 ~", // A5 C5 D5
  P: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ g5 e5 a5@3 ~", // D5
  Q: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ g5 ~ a5@3 ~", // D5
  R: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [g4,c5] ~ [e4,a4] ~ g5 ~ a5@3 ~", // D5 C5 A5
  S: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [g4,c5] ~ [e4,a4] ~@2 g5 e5@2 d5 c5", // D5 C5 A5
  T: "[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [g4,c5] ~ [a4,d5] ~@2 a4 e5@2 d5 c5", // A5 C5 D5
  U: "[[e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [g4,c5] g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 d5 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 d5 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@13]/7", // A5 C5
})).s("gm_electric_guitar_muted").gain(0.43)

// chords · electric guitar muted · "PRG.CHANGE" · soft notes
const electric_guitar_muted_3 = note("<~@23 A ~@15 B ~@3 A ~@31 A ~@8 C ~@5 C@2 ~@6 C@2 ~@11 D@5 ~@2>".pickRestart({
  A: "~@6 e4 d4 ~@2 e4 d4 ~@4", B: "~@11 g4 ~@2 a4 ~", C: "~@11 e5 ~@4",
  D: "[~@7 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@4 g4 d5@3 c5 d5 c5 a4 c5@3 a4 ~@13]/5",
})).s("gm_electric_guitar_muted").gain(0.14)

// other · brass section · "PRG.CHANGE"
const brass_section = note("<~@44 A@2 B C A@2 B C ~@6 D E ~@58>".pickRestart({
  A: "[~@2 [a3,a4,a5] ~ [c4,c5,c6] ~ [d4,d5,d6] [c4,c5,c6]@3 [a3,a4,a5] ~ [c4,c5,c6] ~ [d4,d5,d6] [c4,c5,c6]@3 [a3,a4,a5] ~ [c4,c5,c6] ~ [d4,d5,d6] ~@9]/2", // A C D C A C D C …
  B: "~@2 [a3,a4,a5] ~ [c4,c5,c6] ~ [d4,d5,d6] [c4,c5,c6]@3 [a3,a4,a5] ~ [c4,c5,c6] ~ [d4,d5,d6] ~", // A C D C A C D
  C: "[f4,f5,f6]@2 ~@2 [e4,e5,e6]@2 ~@2 [d4,d5,d6] [c4,c5,c6] [a3,a4,a5] [c4,c5,c6]@3 [a3,a4,a5] ~", // F E D C A C A
  D: "[g#5,d6,g6] ~@15", E: "[e5,b5,e6] ~@15",
})).s("gm_brass_section").gain(0.31)

// chords · french horn · "PRG.CHANGE" · G Am
const french_horn = note("<~@56 [[g4,b4,d5,g5]] [[a4,c5,e5,a5]@15 ~] ~@60>").s("gm_french_horn").gain(0.24)

// chords · epiano1 · "PRG.CHANGE"
const epiano1 = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J K@2 I J L M G@2 N@2 E@2 F@2 G@2 H@2 I J O@8 F@2 E@2 P@2 Q R S T@7 F@2 E@2 P@2 U J
  V@2 ~@46
>`.pickRestart({
  A: "[~@3 [g3,a3,c4]@3 e4@4 e4 g4 [d3,a3,c4,f#4]@4, ~@3 [a2,e3,g3]@3 ~@2, ~@5 c4 ~@2]/2", // Am7 D7 A7
  B: "[[d3,a3,c4,f4]@3 [d3,a3,c4,f4]@3 [d3,a3,c4,f4]@4 [c3,g3,a3,c4]@2 [a2,e3,a3]@2 [e2,e3,a3] [g2,e3,g3]]/2", // Dm7 Am7 A5 C
  C: "[[a2,e3,a3,e4]@3 [g2,g3,a3,c4]@3 [e2,e4]@4 [a2,e4] [c3,g4] [d3,a3,c4,f#4]@4, ~@3 [e3,g3]@3 ~@2, ~@5 c4 ~@2]/2", // A5 Am7 E A5 C5 D7 Em
  D: "[[d3,a3,c4,f4]@6 [d3,a3,c4,f4]@6 [d3,a3,c4,f4]@8 [g3,a3,c4,d4] ~ [g3,c4]@2 [e3,a3]@2 ~@6]/2", // Dm7 Gsus4 C5 A5
  E: "[[e3,a3,e4]@3 [g3,a3,c4]@3 e4@4 e4 g4 [d3,a3,c4,f#4]@4, ~@3 [a2,e3,g3]@3 ~@2, ~@5 c4 ~@2]/2", // A5 Am7 D7 A7
  F: "[[d3,a3,c4,f4]@3 [d3,a3,c4,f4]@3 [d3,a3,f4]@4 [d3,a3,d4] [c3,g3,c4] [a2,e3,a3]@2 [e3,a3] [e3,g3], ~@6 c4@5 ~@5]/2", // Dm7 Dm D5 C5 A5 Em
  G: "[[e3,a3,e4]@3 [g3,a3,c4]@3 e4@4 [a2,e4] [c3,g4] [d3,a3,c4,f#4]@4, ~@3 [e3,g3]@3 ~@2, ~@5 c4 ~@2]/2", // A5 Am7 A5 C5 D7 Em
  H: "[[d3,a3,c4,f4]@3 [d3,a3,c4,f4]@3 [d3,a3,c4,f4]@4 [a3,d4] [g3,c4] [e3,a3]@4]/2", I: "[a3,c4,f4,a4]",
  J: "[a3,c4,f4]@3 [a3,c4,g4]", K: "[[a3,c4,e4]@15 ~ [a4,e5,g5]@16, ~@15 [a5,c6]@17]/2",
  L: "[g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~", // G
  M: "[g#3,d4,g4] ~@15", // G
  N: "[[d3,a3,c4,f4]@6 [d3,a3,c4,f4]@6 [d3,a3,c4,f4]@7 ~ [a3,d4]@2 [g3,c4]@2 [e3,a3]@2 ~@6, ~@20 [g3,c4] ~@11]/2", // Dm7 D5 C5 A5 C5
  O: "[~@7 g4@24 ~@33 [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~ [g#3,d4,g4] ~@15 [e3,a3,e4]@6 [g3,a3,c4]@6 e4@8 e4@2 g4@2 [d3,a3,c4,f#4]@8, [a3,c4,e4]@31 ~@77 [a2,e3,g3]@12 ~@8, ~@6 c5@25 ~@85 c4@4 ~@8, ~@7 a4@121]/8", // G A5 Am7 D7 Am A7
  P: "[[d3,a3,c4,f4]@3 [d3,a3,c4,f4]@3 [d3,a3,c4,f4]@4 [d3,a3,d4] [c3,g3,c4] [a2,e3,a3]@4]/2", // Dm7 D5 C5 A5
  Q: "[g3,d4,g4]@3 [g3,d4]", R: "[a3,c4,e4]", S: "[g3,d4,g4]@3 [g3,d4,g4]",
  T: "[[a3,c4,e4]@12 [a3,c4,e4]@4 [g3,d4,g4]@12 [g3,d4,g4]@4 [a3,c4,e4]@16 [g#3,d4,g4] ~@31 [e3,a3,e4]@6 [g3,a3,c4]@6 e4@8 e4@2 g4@2 [d3,a3,c4,f#4]@8, a4, ~@23 [a2,e3,g3]@3 ~@2, ~@25 c4 ~@2]/7", // Am G5 Am G A5 Am7 D7 A7
  U: "[a3,c4,f4]", V: "[~@7 g4@24 ~, [a3,c4,e4]@31 ~, ~@6 c5@25 ~]/2",
})).s("gm_epiano1").gain(0.22)

// chords · french horn · "PRG.CHANGE" · F E D5 D
const french_horn_2 = note("<~@40 [[f5,f6] [e5,e6], [d4,a4]] [[d5,d6]@8 c6@7 ~, c5@15 ~] ~@76>")
  .s("gm_french_horn").gain(0.03)

// chords · alto sax · "PRG.CHANGE" · F7
const alto_sax = note("<~@59 [[a5,d#6,f6,g#6]] ~@58>").s("gm_alto_sax").gain(0.21)

// chords · brass section · "PRG.CHANGE" · Dm F
const brass_section_2 = note("<~@72 [[a4,d5,f5,d6]] [[c5,f5,a5,f6]] ~@44>").s("gm_brass_section").gain(0.27)

// chords · percussive organ · "PRG.CHANGE"
const percussive_organ = note("<~@76 A@2 B C A@2 B C ~@3 D@5 E@3 F@3 B G@3 B G@3 B G@3 B H@3 ~@4>".pickRestart({
  A: "[~@2 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] ~@7 [a4,a5]@2]/2", // A C D C A C D C …
  B: "~@2 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] ~", // A C D C A C D
  C: "[e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [d5,d6] [c5,c6] [a4,a5] [c5,c6]@3 [a4,a5] ~", // E D C A C A
  D: "[~@13 [d4,d5,d6] [e4,e5,e6] [g4,g5,g6]@23 [a4,a5,a6] ~ [e4,e5,e6] [d4,d5,d6] ~ [c4,c5,c6] ~@2 [a4,a5]@26 ~@3 [c5,c6]@2 [c5,c6] [d5,d6] ~]/5", // D E G A E D C A …
  E: "[c5,c6] [a4,a5] ~ [a4,a5]@2 ~ [g4,g5] ~ [a4,a5] ~ [g4,g5] ~ [a4,a5] ~@3", // C A G A G A
  F: "[[a4,e5,a5,c6,e6]@2 ~@2 [a4,e5,a5,c6,e6]@2 ~@2 [d5,d6] [c5,c6] [a4,a5] [c5,c6]@2 [d5,d6] [a4,e5,a5,e6] ~@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,a5,d6,a6] ~ [e5,e6] [d5,d6] ~ [c5,c6] ~@2 [a4,a5]@2, ~@15 [g5,g6]@23 ~@10]/3", // Am D C A C D A5 A …
  G: "[[e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [d5,d6] [c5,c6] [a4,a5] [c5,c6]@2 [d5,d6] [a4,e5,a5,e6] ~@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,a5,d6,a6] ~ [e5,e6] [d5,d6] ~ [c5,c6] ~@2 [a4,a5]@2, ~@15 [g5,g6]@23 ~@10]/3", // E D C A C D A5 A …
  H: "[[e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [d5,d6] [c5,c6] [a4,a5] [c5,c6]@2 [d5,d6] [a4,e5,a5,e6] ~@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,d6] [c5,c6]@3 [a4,a5] ~ [c5,c6] ~ [d5,a5,d6,a6] ~ [e5,e6] [d5,d6] ~ [c5,c6] ~@2 [a4,a5] ~, ~@15 [g5,g6]@22 ~@11]/3", // E D C A C D A5 A …
})).s("gm_percussive_organ").gain(0.36)

// chords · percussive organ · "PRG.CHANGE" · soft notes
const percussive_organ_soft = note(`<
  ~@76 A@2 B@2 C@2 D@2 C@2 B@2 C@2 D@2 C@2 B@2 C@2 D@2 C@2 B@2 C@2 D@2 C@2 B@2 C@2 E ~@3
>`.pickRestart({
  A: "[~@3 [g2,a2,c3]@3 e3@4 e3 g3 [a2,c3,f#3]@4, ~@3 [e2,g2]@3 ~@2, ~@5 c3 ~@2]/2", // Am7 F#dim Em
  B: "[[a2,c3,f3]@3 [a2,c3,f3]@3 [a2,f3]@4 [d2,a2,d3] [c2,g2,c3] [a1,e2,a2]@2 [e2,a2] [e2,g2], ~@6 c3@5 ~@5]/2", // F Dm D5 C5 A5 Em
  C: "[[e2,a2,e3]@3 [g2,a2,c3]@3 e3@4 e3 g3 [a2,c3,f#3]@4, ~@3 [e2,g2]@3 ~@2, ~@5 c3 ~@2]/2", // A5 Am7 F#dim Em
  D: "[[a2,c3,f3]@3 [a2,c3,f3]@3 [a2,c3,f3]@4 [d2,a2,d3] [c2,g2,c3] [a1,e2,a2]@4]/2", E: "[a2,c3,f3]@3 ~@5",
})).s("gm_percussive_organ").gain(0.22)

// drums · kick
const kick = s("bd").struct(`<
  A@7 B A@15 C A@3 B A@7 D A@7 E A@7 F A@6 G H A@7 D A@6 I J A@7 D A@15 K A@7 D A ~@9
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!3 ~@3", C: "x ~@2 x", D: "~@4 x ~@7 x ~ x!2", E: "x ~@11 x ~@2 x", F: "~@4 x ~@7 x ~@2 x",
// … 75 more lines

More by McCartney