Strudelify
Summer Nights cover art

Summer Nights

Olivia Newton-John

KeyD majorTempo118 bpm
0:00/0:00
// Summer Nights — Olivia Newton-John
// 118 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 82, 4/4 at bar 83, 2/4 at bar 86, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 fretless bass (copy of ch 1 "untitled" fretless bass)
// note: Full arrangement: all 103 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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 · fretless bass · "untitled"
const fretless_bass = note(`<
  A B C D E F G H I J@3 K L M N@2 O P O Q R S T U V W X Y Z AA AB@4 AC AD AE AF AG AH AI@2 AJ AK AL AM AN AO@2 AP@3 AQ
  AR AS AT AU AV AW AX AY AZ BA@2 BB@4 BC@3 BD@2 BE@3 BF@2 BG@3 BH BI@7 BJ@6 BK@6 ~
>`.pickRestart({
  A: "~@10 [d2,d3]@3 ~@3", B: "[d2,d3]@5 [g2,g3]@6 ~@6 [g2,g3]@4 [a2,a3]@6 ~@5",
  C: "~ [a2,a3]@4 ~ [g2,g3]@4 [a2,a3]@8 [g2,g3]@4 [d2,d3]@4 ~@6", // A G A G D
  D: "~@2 [d2,d3]@4 ~ [g2,g3]@6 ~@6 [g2,g3]@4 [a2,a3]@6 ~@3", E: "~ [a2,a3] [g2,g3] [a2,a3]@2 [g2,g3] [d2,d3] ~",
  F: "~@5 [d2,d3]@4 [g2,g3]@4 ~@8 [g2,g3]@4 ~ [a2,a3]@4 ~@2", // D G A
  G: "~@6 [a2,a3]@4 [g2,g3]@4 [a2,a3]@8 [g2,g3]@4 ~ [d2,d3]@4 ~", // A G A G D
  H: "~@7 [d2,d3]@4 [g2,g3]@4 ~@9 g2@4 [a2,a3]@4, ~@23 g3@4 ~@5", // D G A
  I: "~@8 [a2,a3]@4 ~ g2@3 [a2,a3]@8 ~ [g2,g3]@4 [d2,d3]@3, ~@3 g3 ~@4", // A G D
  J: "[~@9 d3@4 [g2,g3]@4 ~@9 [g2,g3]@4 [a2,a3]@4 ~@8 [a2,a3]@4 ~ b3@4 b2@4 [c#2,c#3]@4 [d#2,d#3]@4 [e2,e3]@4 ~@8 [e2,e3]@4 ~ [a2,a3]@4 ~@8 [a2,a3]@4, ~@9 d2@2 ~@36 b2@2 ~@2 b1@2 ~@43]/3", // G A C# D# E A
  K: "e3 [f#2,f#3] [g#2,g#3] a3@2 [a2,a3] [b2,b3] [c#3,c#4], e2 ~@5 a2@2 ~@8", // F# G# A B C#
  L: "d3@5 ~@3 f#3@2 ~@2 d3@4 ~@4 g3@4 ~@4 g2@3 ~, d4@3 ~@5 [a3,d4]@8 g2@8 [b3,d4]@7 ~", M: "~ c#4 ~ [f#3,b3,d#4]@4 ~",
  N: "[~@4 e3 ~@3 [b3,e4]@5 ~@7 c#4@4 ~@4 [f#3,d4]@7 ~@29, ~@4 g3 ~@5 a3 ~@21]/2", // E5 D
  O: "~@2 [f#3,a3,d4] ~@3 [g3,b3,d4] ~", P: "~@2 [g3,b3,d4] ~ [g3,a3,c#4]!2 ~ [f#3,a3,d4]",
  Q: "~@8 [g3,b3,d4]@4 ~@4 [g3,a3,c#4]@4 [g3,a3,c#4]@3 ~@5 [f#3,a3,d4]@4", // G A7 D
  R: "~@4 [f#3,a3,d4] ~@3 [f#3,a3,d4]@3 ~@9 [g3,b3,d4]@4 [g3,b3,d4]@4 ~@4", // D G
  S: "~@8 [g3,a3,c#4]@5 ~@11 [g3,b3,d4]@4 ~@4", T: "~@8 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@4",
  U: "~@4 [g3,a3]@2 ~@6 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 [g3,b3] ~@3, ~@4 c#4@4 ~@19 d4@3 ~@2", // Gsus2 G
  V: "[f#3,a3,d4] ~ [f#3,a3,d4] ~@3 [g3,b3,d4] ~", // D G
  W: "~@4 [g3,a3,c#4]@4 ~@4 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 [b3,d4]@2 ~@2, ~@28 g3 ~@3", // A7 G Bm
  X: "[f#3,a3,d4]@3 ~@5 [f#3,a3,d4]@6 ~@10 [g3,b3,d4]@4 ~@4", // D G
  Y: "~@4 [g3,a3,c#4]@3 ~@5 [g3,a3,c#4]@2 ~@2 [f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@3 ~", // A7 B
  Z: "~@8 [g#3,b3,e4]@5 ~@12 [c#4,e4]@4 ~@3, ~@25 a3@2 ~@5", // E C#m
  AA: "~ [g#3,b3,d4]@3 ~ g#3@3 [g#3,b3,d4]@2 ~@2 [g3,a3,c#4,e4]@5 ~@3 [g3,a3,c#4,e4]@3 ~ [g3,a3,c#4,e4]@2 ~@2 [g3,a3,c#4,e4,e5]@3 ~, ~@4 [b3,e4]@3 ~@13 c#5@4 d5@4 ~@4", // G#dim A7 E5
  AB: "[[f#4,a4,d5]@5 ~@3 [f#4,a4,d5]@4 d4@2 ~@2 [g4,b4,d5]@6 ~@2 [b4,d5]@4 ~@4 [a4,c#5]@4 [g4,a4,c#5]@3 ~@5 [b4,d#5]@8 ~@4 [b4,d#5]@3 f#4@3 ~@2 b4@3 ~@4 [b4,e5]@4 ~@4 a4@3 ~ a4@3 ~ [g4,a4]@3 ~@5 [f#4,a4,d5]@4 ~@29, ~@24 g4@2 ~@2 g4@8 ~@8 f#4@12 ~@3 b3 ~@3 g4@6 ~@2 g4@2 ~@2 g4@11 ~@42, ~@63 e5@3 ~@13 c#5@11 ~@38]/4", // D G Bm A A7 B E5 Gsus2 …
  AC: "~@6 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@6", // D G
  AD: "~@6 [g3,b3,d4]@4 ~@4 [g3,c#4]@4 a3@2 ~@5 [f#3,a3,d4]@4 ~@3, ~@14 a3@3 ~@15", // G Gdim D
  AE: "~@5 [f#3,a3,d4]@4 ~@12 [g3,b3,d4]@4 ~@7", // D G
  AF: "~@5 [g3,b3,d4]@3 ~@4 [g3,a3,c#4]@3 ~ [g3,a3,c#4]@3 ~@5 [f#3,a3,d4]@3 ~@5", // G A7 D
  AG: "[f#3,a3,d4]@3 ~ [f#3,a3,d4]@3 ~@9 [g3,b3,d4] ~@3 [g3,b3,d4]@4 ~@8", // D G
  AH: "~@3 [a3,c#4,e4]@5 ~@11 [g3,b3,d4]@7 ~@6", // A G
  AI: "[~@3 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@7 [g3,a3]@2 ~@6 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 [g3,b3] ~@3 [f#3,a3,d4]@4 ~@2, ~@30 c#4@4 ~@20 d4@3 ~@7]/2", // D G Gsus2 G D
  AJ: "~@2 [f#3,a3,d4]@4 ~@12 [g3,b3,d4]@4 ~@7 [g3,a3,c#4]@3", // D G A7
  AK: "~@5 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 [b3,d4]@2 ~@2 [f#3,a3,d4]@3 ~@4, ~@21 g3 ~@10", // G Bm D
  AL: "~ [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@7 [g3,a3,c#4]@3 ~", // D G A7
  AM: "~@4 [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@3 ~@9", // B
  AN: "[g#3,b3,e4]@5 ~@11 [c#4,e4]@4 ~@4 [g#3,b3,d4]@3 ~ [g#3,b3,e4]@3 ~, ~@8 a3 ~@7", // E C#m G#dim E
  AO: "[[g#3,b3,d4]@2 ~@2 [g3,a3,c#4,e4]@5 ~@3 [a3,c#5]@3 ~ [g3,a3,c#4]@2 ~ [g3,a3,c#4,e4,e5]@3 ~ [f#4,a4,d5]@5 ~@3 [f#4,a4,d5]@4 d4@2 ~@2 [g4,b4,d5]@6 ~@2 [b4,d5]@4 ~@4 [a4,c#5]@4 [g4,a4,c#5]@3 ~@2, ~@11 e4@3 ~ e4@2 ~@30 g4@2 ~@2 g4@8 ~@5, ~@12 [g3,c#4]@2 ~@2 d5@3 ~@45]/2", // G#dim A7 A A7 D G Bm A …
  AP: "[~@3 [b4,d#5]@8 ~@4 [b4,d#5]@3 f#4@3 ~ [b4,e5]@3 ~@5 [b4,e5]@4 ~@4 a4@3 ~ a4@3 ~ [g4,a4]@3 ~@5 [c5,d5,f5]@31 ~@8 [g3,a#3,d#4]@3, ~@3 f#4@12 ~@7 g4@6 ~@2 g4@2 ~@2 g4@11 ~@51, ~@38 c#5@11 ~@47]/3", // B E5 Gsus2 Dm7 D#
  AQ: "~@13 [g#3,c4,d#4]@4 ~@12 [g#3,c4,d#4]@3", // G#
  AR: "~@4 [g#3,a#3,d4]@3 ~ [g#3,a#3,d4]@3 ~@5 [g3,a#3]@3 ~ [g3,a#3,d#4]@4 ~@4 [g3,a#3,d#4]@4, ~@15 d#4@3 ~@14", // A#7 Gm D#
  AS: "~@12 d#4@3 ~@12 [g#3,c4,d#4]@3 ~@2, ~@11 [g#3,c4]@4 ~@17", // G#
  AT: "~@2 [g#3,a#3,d4]@3 ~@2 [g#3,a#3,d4]@4 ~@3 [g3,d#4]@2 ~@2 [a#3,d#4] ~@3 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4]@5 ~, ~@14 a#3 ~@3 g3@2 ~@12", // A#7 Cm D#5 D#
  AU: "~@5 [g#3,c4] d#4 ~@3 [g#3,c4,d#4]@4 ~@12 d4@4 ~@2, ~@25 [a#3,f4]@4 ~@3", // G# A#5
  AV: "~@9 [g#3,c4,d#4]@4 ~@11 [g3,a#3,d#4]@5 ~@3", AW: "~@8 [g#3,c4,d#4]@3 ~@9 [a#3,d4,f4]@3 ~@4 [g#3,c4,d#4]@4 ~",
  AX: "~@3 [g#3,c4,d#4]@5 ~@3 [g#3,c4,d#4]@3 ~ [g3,a#3,d#4]@4 ~@3 [g3,a#3,d#4]@4 ~@6", // G# D#
  AY: "~@6 [g#3,c4,d#4]@3 ~@9 [a#3,d4,f4]@3 ~@4 [g#3,c4,d#4]@5 ~@2", // G# A# G#
  AZ: "~ [g#3,c4,d#4]@4 ~@4 [g#3,c4,d#4]@3 ~ a#3@3 ~@4 [g3,a#3,d#4]@5 ~@7, ~@3 [g3,d#4] ~@4", // G# D# Cm
  BA: "[~@4 [g#3,c4,d#4]@3 ~@8 [a#3,d4,f4]@3 ~@5 [c4,e4,g4]@7 ~ [c4,e4,g4]@6 ~ [c4,e4,g4]@4 ~@9 a3@3 ~@10, ~@25 [c4,f4]@2 ~@5]/2", // G# A# C F5
  BB: "[~@2 [a#3,d4,f4]@4 ~@3 [a3,c4,d#4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4] ~@3 [a#3,d4]@5 ~@3 [a#3,d4]@3 ~ [a#3,d4]@2 ~ [a#3,d4,f4,d5]@3 ~ [g4,a#4,d#5]@5 ~@3 [a#3,d#4,a#4,d#5]@4 g4@2 ~@2 [g#4,c5,d#5]@4 ~@3 [c4,g#4,c5,d#5]@4 g#4@3 ~ [g#4,a#4,d5]@3 ~ [g#4,a#4,d5]@4 d4 ~@2 [c4,g4]@11 ~ [g4,e5]@4 c4 ~@3 [g#4,c5,d#5,f5]@4 ~@3 [g#4,c5,d#5,f5]@3 ~ g#4@3 ~ [g#4,a#4,d5]@3 ~ [g#4,d5]@3 ~@4, ~@17 d#4@2 ~@2 f4@2 ~@5 f4@3 ~ f4@2 ~@14 g4@2 ~@78, ~@29 a#4@4 c5@3 ~@46 [c5,e5]@8 ~@4 c5@3 ~@24 a#4@5 ~@2]/4", // A# Adim F Am A# D# D#5 G# …
  BC: "[~ g#4 ~@3 [f#4,b4,d#5]@35 ~@11 [g#4,b4,e5]@6 ~@3 b3 ~@4 a4 ~@4 [a3,a4]@8 ~ c#4@5 ~@5 [e4,a4,c#5,e5]@4 [c#4,a4]@3, ~@10 e4@3 ~@3, ~@70 [c#5,e5]@5 ~@21, ~@35 c#4 ~@12]/3", // B E A F#m C#m
  BD: "[~@2 [b3,b4,d#5]@4 [b4,d#5]@4 ~ b3@4 [g#4,b4,e5]@4 ~ [g#4,b4,e5]@5 ~@4 [b3,g#4,b4,e5]@5 ~@13 [e4,a4,c#5,e5]@5 ~@12, ~@2 [d#4,a4]@10 ~@17 e4@10 ~@8 [a3,c#4]@3 ~@14]/2", // B E A D#dim A
  BE: "[~ [c#4,c#5,e5]@4 a4@4 ~ [a4,b4,d#5]@4 [a4,b4,d#5]@4 ~ b3 ~@3 d#5@4 ~ [g#4,b4]@13 [e2,e3]@4 [a2,a3]@4 ~@9 [a2,a3]@4 [d2,d3]@5 ~@8 [d2,d3]@4 [g2,g3]@5 ~@8 [g2,g3]@4, ~ [e4,a4]@2 ~@7 d#4@2 ~@11 b4@2 ~@71, ~@10 b3 ~@12 a4 ~@4 [e2,e3]@4 ~@64]/3", // C#m B7 G#m E A D G A5 …
  BF: "[[a2,a3]@4 ~@9 [a2,a3]@4 [g2,g3]@6 [a2,a3]@7 [g2,g3]@4 [d2,d3]@5 ~@9 [d2,d3]@4 ~ [g2,g3]@5 ~@6]/2", // A G A G D G
  BG: "[~@3 [g2,g3]@5 [a2,a3]@5 ~@10 [a2,a3]@5 [g2,g3]@7 [a2,a3]@7 ~ [g2,g3]@5 [d2,d3]@5 ~@9 [d2,d3]@4 ~ [g2,g3]@6 ~@9 [g2,g3]@5 [a2,a3]@6 ~@3]/3", // G A G A G D G A
  BH: "~@6 [a2,a3]@5 ~ [b2,b3]@10 c#2@5 d#2@5", // A B
  BI: "[~@6 [g#4,b4,e5]@3 ~@2 [b4,e5]@6 e2@5 [a4,c#5,e5]@2 ~@15 a2@5 e2@6 ~@6 f#2@5 ~ g#2@6 [a2,a4]@4 ~@2 [a2,a4]@6 [b2,b4]@6 [c#3,c#5]@6 [f#4,a4,d5]@11 ~ [f#4,a4,d5]@4 ~@2 [a4,d5]@6 [g4,b4,d5]@21 ~@5 [g4,a4,c#5]@19 ~@7 [f#4,b4,d#5]@47 ~@9, e2@11 g#4@11 a2@14 ~@56 d3@25 ~@107, ~@28 [a4,c#5,e5]@16 ~@6 [g#4,b4,e5]@12 ~@6 [g4,c#5]@13 ~@29 f#4@2 ~@4 g2@26 a2@25 ~ b2@56]/7", // E E5 A B C# D D5 G …
  BJ: "[~@29 [g4,b4,d5,e5]@48 ~@12 [a2,g4,a4,c#5,e5]@90 ~@13, ~@29 e3@60 ~@103]/6", // Em7 A7
  BK: "[~@10 [a4,d5]@26 ~@17 [f#4,a4,d5]@17 ~@6 [g4,b4,d5]@17 ~@6 [g4,b4,d5]@17 ~@8 [d2,d3,f#4,a4,d5]@53 ~@6 [d2,d3,f#4,a4,d5]@6 ~@3, ~@10 [d2,d3]@67 ~@115, ~@10 f#4@29 ~@37 g2@48 ~@68]/6", // D5 D G D
})).s("gm_fretless_bass").gain(0.64).pan(0)

// bass · synth bass 1
const bass = note(`<
  ~@12 A B C D E F G H I J K L M N O P Q R S T U@3 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN@5 AO@3 AP AQ@2
  AR AS AT@3 AU AV@2 AW AX ~@21 AY@6 ~
>`.pickRestart({
  A: "~@5 a1 b1 c#2", B: "d2@5 ~@11 g2@7 ~ g2@4 g#2@4", C: "a2@3 ~ a2@3 ~@5 b2@8 a2@4 g2@4 f#2@4",
  D: "e2@3 ~ e2@3 ~@5 a2@8 g2@4 f#2@4 e2@4", E: "d2@4 ~@4 a1@3 ~ a1@4 b1@2 ~@2 b1@3 ~ c#2@3 ~ c#2@4",
  F: "d2@3 ~ d2@3 ~@5 d2@4 g2@2 ~@2 g2@4 ~@4 g2@4", G: "e2@3 ~ e2@3 ~@5 e2@4 a2@4 a1@4 b1@4 c#2@4",
  H: "d2@3 ~ d2@3 ~@5 d2@4 g2@3 ~ g2@2 ~@6 g2@4", I: "e2@3 ~ e2@3 ~@5 e2@4 a2@7 ~@5 a2@4",
  J: "d2@4 ~@2 d2@2 g2@3 ~@3 g2@2", K: "a2@5 ~@7 a2@4 g2@7 ~@5 g2@4", L: "d2@7 ~@5 d2@4 g2@5 ~@7 g2@4",
  M: "a2@3 ~@3 a2@2 g2@4 ~@2 g2 ~", N: "d2@5 ~@7 d2@4 g2@4 ~@8 g2@4", O: "a2 ~@2 a2 g2 ~@2 g2",
  P: "d2 ~@2 d2 g2 ~@2 g2", Q: "a2@2 ~@4 a2@2 b2 ~ b2@2 a2@2 b2@2", R: "e2@6 ~@6 e2@4 a2@5 ~@7 a2@4",
  S: "b2 e2 b2 a2@2 a1 b1 c#2", T: "d2@3 ~ d2@3 ~@9 g2@4 ~@4 g2@4 g#2@4",
  U: "[a2@3 ~ a2@3 ~@5 b2@7 a2@4 g2@4 f#2@4 e2@3 ~ e2@3 ~@5 a2@8 b2@4 a2@5 ~@3 d2@5 ~@3 a1@3 a1@4 ~ b1@2 ~ b1@4 c#2@3 ~ c#2@4 d2@2]/3",
  V: "~@2 d2@3 ~@5 d2@4 g2@3 ~ g2@3 ~@5 g2@4 e2@2", W: "~@2 e2@2 ~@6 e2@4 a2@3 b2@4 a2@2 ~@2 a2@4 d2@3",
  X: "~ d2@2 ~@6 d2@4 g2@2 ~@2 g2@2 ~@6 g2@4 e2@2 ~", Y: "~ e2@2 ~@6 e2@3 a2@4 b2@4 a2@2 ~@2 a2@4 d2@4",
  Z: "~@8 d2@4 g2@5 ~@7 g2@4 a2@4", AA: "~@7 a2@4 g2@4 ~@8 g2@3 ~ d2@5", AB: "~@7 d2@4 g2@5 ~@7 g2@4 a2@5",
  AC: "~@6 a2@4 g2@8 ~@4 g2@2 ~@2 d2@5 ~", AD: "~@6 d2@4 g2@4 ~@7 g2@4 a2@4 ~@3", AE: "~@5 a2@4 g2@4 ~@8 g2@4 d2@4 ~@3",
  AF: "~@5 d2@4 g2@4 ~@7 g2@4 a2@4 ~@4", AG: "~@2 a2@2 b2 ~ b2@2 a2@2 b2@2 e2@3 ~",
  AH: "~@4 e2@4 a2@5 ~@7 a2@4 b2@4 e2@4", AI: "b2@4 a2@7 a1@4 b1@4 c#2@4 d2@3 ~ d2@3 ~@2",
  AJ: "~@7 g2@4 ~@4 g2@4 g#2@4 a2@3 ~ a2@3 ~@2", AK: "~@2 b2@8 a2@4 g2@4 f#2@4 e2@3 ~ e2@3 ~@3",
  AL: "[~@2 a2@8 b2@4 a2@5 ~@3 a#2@31 d#2@3 ~ d#2@3 ~@4]/2", AM: "~ d#2@4 g#2@3 ~ g#2@3 ~@5 g#2@4 f2@3 f2@3 ~@5",
  AN: "[f2@4 a#1@6 ~@6 a#1@4 d#2@3 ~ d#2@3 ~@4 d#2@4 g#2@3 ~ g#2@4 ~@4 g#2@4 f2@3 ~ f2@3 ~@5 f2@4 a#1@9 ~@6 d#2@6 ~@6 d#2@4 g#2@5 ~@6 g#2@4 a#2@5 ~@7 a#2@4 g#2@5 ~@7 g#2@3 d#2@6 ~@6 d#2@4]/5",
  AO: "[g#2@5 ~@7 g#2@4 a#2@4 ~@7 a#2@4 g#2@5 ~@7 g#2@4 d#2@5 ~@6 d#2@4 g#2@4 ~@8 g#2@4 a#2@4 ~@7 a#2@4 g#2@3]/3",
  AP: "~@9 g#2@3 d#2@5 ~@7 d#2@4 g#2@4", AQ: "[~@8 g#2@3 a#2@5 ~@7 a#2@4 c3@3 ~ c3@4 a#2@4 g2@3 f2@5 ~@7 f2@4 a#1@6]/2",
  AR: "~@5 a#1@4 f2@6 ~@6 f2@4 a#1@5 ~@2", AS: "~@4 c#2@2 d2@2 d#2@5 ~@6 d#2@4 g#2@7 ~@2",
  AT: "[~@3 g#2@4 a#2@6 ~@5 a#2@2 b2@2 c3@3 ~ c3@4 a#2@4 g2@3 f2@5 ~@7 f2@4 a#2@7 a#1@9 b1@7 ~@2 b1@7 ~@2 b1@6 ~@3]/3",
  AU: "b1@7 ~@3 e2@4 e2@4 ~@6 e2@4 a2@4",
  AV: "[~ a2@3 ~@6 a2@5 f#2@3 ~@2 f#2@4 ~@5 f#2@5 b2@3 ~ b2@3 ~@7 b2@4 e2@3 ~@2 e2@3 ~@4]/2",
  AW: "~ e2@4 ~ a2@3 ~@2 a2@3 ~@6 a2@4 f#2@2 ~@3 f#2@3", AX: "~@5 f#2@4 ~ b2@3 ~ b2@3 ~@6 b2@3 ~@6",
  AY: "[~@10 d2@65 ~ g2@49 d2@51 ~@8 d2@7 ~]/6",
})).s("gm_synth_bass_1").gain(0.8)

// other · piccolo
const piccolo = note(`<
  ~@19 A B C D E F G H I D J K ~@3 L@3 ~ M N O P Q R S T U V W ~@5 X@3 Y Z AA AB AC AD AE@2 AF@2 ~@2 AG AH AI@2 ~@4 AJ
  ~@19 AK@5 ~
>`.pickRestart({
  A: "~@8 [a5,a6] ~@3 [a5,a6] ~@3 [b5,b6]@7 ~ b6 ~@3 [b5,b6] ~@3", // A B
  B: "[b5,b6]@7 ~ b6 ~@3 [b5,b6] ~@3 [a5,a6]@4 b6@4 [a5,a6]@4 [f#5,f#6]@4", // B A F#
  C: "~@8 [a5,f#6]@5 ~@11 [b5,d6,g6]@4 ~@4, ~@8 d6@3 ~@21", D: "~@4 e6 ~@3 [c#6,e6,a6]@4 ~@20",
  E: "~@4 [d6,f#6] ~@3 [a5,d6,f#6]@4 ~@12 [b5,d6,g6]@4 ~@4", F: "~@4 e6 ~@3 [c#6,e6,a6]@5 ~@19",
  G: "~@4 [d6,f#6] ~@3 [a5,d6,f#6]@5 ~@7 d6 ~@3 [b5,d6,g6]@4 ~@4", H: "~@4 [c#6,e6] ~@3 [c#6,e6,a6]@4 ~@20",
  I: "~@4 d6 ~@3 [a5,d6,f#6]@4 ~@8 [b5,d6] ~@3 [b5,d6,g6]@3 ~@5", J: "~@8 g#5@2 ~@2 g#5@4 a5@2 ~@3 a5 ~@3 a5@3 ~@4",
  K: "~@8 g#5 ~@3 g#5@4 a5 ~@3 a5 ~@3 a5@2 ~@6",
  L: "[~@7 a5 ~@3 a5@3 b5@2 ~@2 b5@4 c#6@2 ~@2 c#6@4 d6@4 ~@4 a6@2 ~@2 a6@2 ~@2 b6@7 ~ b6 ~@3 b6 ~@3 b6@6 ~@2 b6 ~@2 b6@2 ~@2 a6@4 b6@4 a6@4 f#6@4 ~@3]/3",
  M: "~@7 a5", N: "~@4 a5 ~@3 a5@4 b5@5 ~@3 b5 ~@3 b5@4 c#6@4", O: "~@4 c#6 ~@2 c#6@4 b5@3 ~ c#6@4 b5@4 c#6@4 a5@4 ~",
  P: "~@3 a5 ~@3 a5@4 b5@4 ~@4 b5 ~@3 b5@3 c#6@5 ~", Q: "~@2 c#6 ~@3 c#6@4 b5@4 c#6@4 b5@4 c#6@4 a5@4 ~@2",
  R: "~@2 a5 ~@3 a5@4 b5@4 ~@4 b5 ~@2 b5@4 c#6@5 ~@2", S: "~ c#6 ~@3 c#6@4 b5@4 c#6@4 b5@3 ~ c#6@3 ~ a5@4 ~@3",
  T: "~ a5 ~@3 a5@4 b5@4 ~@4 b5 ~@2 b5@3 ~ c#6@4 ~@4", U: "c#6 ~@3 c#6@4 d#6@15 ~ e6@3 ~ e6 ~@3",
  V: "e6@4 c#6@16 ~@4 e6 ~@3 e6 ~@3", W: "e6@4 c#6@19 d6@5 ~@4",
  X: "[~@28 a#5 ~@2 a#5@4 c6@5 ~@3 c6 ~@3 c6 ~@3 c6@5 ~@3 c6 ~@3 c6@4 a#5@3 c6@4 a#5@4 d#6@4 g5 ~ g5 ~ g5@2 ~@2 g5@3 ~@3]/3",
  Y: "~@2 g#5 ~ g#5@2 g#5@2 ~@2 g#5@4 ~@3 a#5 ~ a#5 ~ a#5@2 ~@2 a#5@4 ~@3",
  Z: "~ g#5 ~ g#5 ~ g#5@2 ~@2 g#5@4 ~@4 g5 g5@2 g5 ~@3 g5@4 ~@4",
  AA: "g#5 ~@3 g#5@2 ~@2 g#5@3 ~@5 a#5 ~@3 a#5@2 ~ a#5@3 ~@5 g#5",
  AB: "~@3 g#5@2 ~@2 g#5@3 ~@5 g5 ~ g5 g5@2 ~@2 g5@3 ~@5 g#5 ~",
  AC: "~@2 g#5@2 ~@2 g#5@3 ~@5 a#5 ~ a#5!2 ~@3 a#5@3 ~@5 g#5 ~ g#5",
  AD: "~ g#5@2 ~@2 g#5@3 ~@5 g5 g5@2 g5 ~@3 g5@3 ~@5 g#5 ~ g#5 ~",
  AE: "[g#5 ~@3 g#5@3 ~@4 a#5 ~ a#5 ~ a#5 ~@3 a#5@3 ~@5 c6@12 ~@3 f6@2 ~@2 f6@8 d6@10]/2",
  AF: "[~@2 d6 ~@2 d6@4 f6 ~@3 f6@7 ~ d6@19 d#6@5 ~@19]/2", AG: "~@14 d#6@9 c#6@8 ~", AH: "b5@11 ~@8 b5 ~@4 b5@4 c#6@4",
  AI: "[~@6 c#6@2 ~@2 c#6@2 ~@3 c#6@6 ~@4 c#6@2 ~@2 c#6@5 b5@4 c#6@5 b5@3 ~@2 e6@6 ~@10]/2", AJ: "~@12 c#6@5 ~@15",
  AK: "[~@15 a4 ~ [c5,d5] e5 [f5,g5] [a5,b5] [f#6,a6]@20 ~@2 [g5,b5]@40 ~@9 [a5,d6]@54 ~@6 [d5,f#5,a5,d6,f#6,a6]@8, ~@12 e4@2 g4@2 b4@2 ~@3 d6@36 ~@103, ~@13 f4@2 ~@145]/5", // Csus2 Fsus2 Asus2 F#m G D5 D
})).s("gm_piccolo").gain(0.42)

// other · piccolo · soft notes
const piccolo_soft = note("<~@19 A B C D E D F G H D ~@30 I J K ~@13 L@2 M@2 N@4 ~@14 O ~ P@3 ~>".pickRestart({
  A: "~@24 b5 ~@7", B: "~@8 b5 ~@11 b5@4 ~@8", C: "~@4 [a5,d6,f#6] ~@15 [b5,d6,g6] ~@11", D: "~@4 [c#6,a6] ~@27",
  E: "~@4 a5 ~@15 [b5,d6,g6] ~@11", F: "~@4 a5 ~@15 [b5,g6] ~@11", G: "~@4 a6 ~@27", H: "~@4 [a5,f#6] ~@15 g6 ~@11",
  I: "~@2 g#5 ~@15 a#5 ~@13", J: "~ g#5 ~@30", K: "g#5 ~@31",
  L: "[~@30 [f#5,a5]@5 ~@8 [f#5,a5]@4 [g5,b5]@5 ~@8 [g5,b5]@4]/2", // F#m G
  M: "[[a5,c#6]@5 ~@8 a5@4 [g5,b5]@6 [a5,c#6]@6 ~ [g5,b5]@4 [f#5,a5]@5 ~@9 [f#5,a5]@5 [g5,b5]@5 ~@6]/2", // A G A G F#m G
  N: "[~@3 [g5,b5]@5 [a5,c#6]@6 ~@9 [a5,c#6]@5 [g5,b5]@7 [a5,c#6]@8 [g5,b5]@5 [f#5,a5]@5 ~@9 [f#5,a5]@5 [g5,b5]@5 ~@10 [g5,b5]@5 a5@7 ~ g5@7 a5@6 [f#5,d#6]@20, ~@87 c#6@21 ~@20]/4", // G A G A G F#m G D#m
  O: "~@6 g3@2 ~@2 c4 d4@2 ~@8 c6 ~@10, ~@4 a3 ~@11, ~@9 b3@2 ~@21", P: "[~@28 f#5@53 ~@15]/3",
})).s("gm_piccolo").gain(0.18)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@7 A B ~@2 C D E F G H I J ~@6 K L ~@2 M N O P@2 Q ~@2 R@2 ~@4 S@2 ~@2 T U@3 V@2 W X ~@5 Y@3 ~ Z AA@4 AB@2 ~ AC AD
  AE@2 ~@2 AF AG@2 ~@2 AH@3 AI@3 AJ@6 AK@7 ~
>`.pickRestart({
  A: "~@3 f#4@3 d4@5 g4@4 e4@3 ~@9 a4@5", B: "f#4 a4 g4@3 ~@3", C: "~@7 g#4@4 e4@2 ~@3 e4@4 a4@5 ~@3 e4@2 ~@2",
  D: "g#4@4 e4@4 g#4@4 a4@15 ~@5", E: "~@8 d5@4 a4@4 b4@13 ~@3", F: "a4@4 b4@4 a4@4 f#4@5 ~@7 a4@8",
  G: "g4 ~ e4 b4 a4 b4 a4 d4", H: "~@8 a3@2 ~@2 a3@4 b3@2 ~@2 b3@3 ~ c#4@2 ~@2 c#4@4",
  I: "d4@4 ~@4 a4 ~@3 a4 ~@3 b4@7 ~ b4 ~@3 b4 ~@3", J: "b4@7 ~ b4 ~@3 b4 ~@3 a4@4 b4@4 a4@4 f#4@4",
  K: "~@4 f#4@8 d4@4 g4@4 e4@2 ~@6 e4 ~@3", L: "a4@4 f#4@4 a4@2 ~@2 a4@8 g4@5 ~@7",
  M: "~@4 g#4@8 e4@2 ~@2 e4@4 a4@5 ~@7", N: "g#4@4 e4@4 g#4@4 a4@9 ~@11", O: "~@4 d5@2 a4@2 b4@5 ~@3",
  P: "[a4@4 b4@4 a4@4 f#4@4 ~@3 a4@12 g4@4 ~@4 e4@4 b4@4 a4@4 b4@4 a4@4 d4@4 ~]/2",
  Q: "~@7 a3@2 ~@2 a3@4 b3 ~@2 b3@3 ~ c#4@2 ~@2 c#4@4 d4@2",
  R: "[~@5 a4 ~@3 a4@2 ~@2 b4@6 ~@2 b4 ~@3 b4 ~@3 b4@5 ~@3 b4 ~@2 b4@2 ~@2 a4@4 b4@4 a4@4 d5@6 ~@2]/2",
  S: "[~@2 f#4@4 d4@4 g4@4 e4@3 ~@8 a4@4 f#4@4 a4@2 ~@2 a4@8 g4@7 ~@12]/2",
  T: "g#4@4 e4@2 ~@2 e4@4 a4@5 ~@7 g#4@4 e4@4",
  U: "[g#4@4 a4@11 ~@16 d5@4 a4@4 b4@13 ~@3 a4@4 b4@4 a4@4 f#4@9 ~@2 b4@4 a4@4 g4@4 ~@4 e4@2]/3",
  V: "[~@2 b4@4 a4@4 b4@4 a4@3 ~ a4@4 d5@23 ~@16 a#4 ~@2]/2", W: "~ a#4@4 c5@6 ~@2 c5 ~@3 c5 ~@3 c5@7 c5 ~@3",
  X: "c5@2 a#4@2 c5@2 a#4@2 d#5@3 ~@5",
  Y: "[~@22 g4@4 d#4@4 g#4@4 f4@3 ~@5 a#4@6 ~@2 a#4 ~@2 a#4@4 g#4@6 f4@2 d#4@7 ~@24]/3",
  Z: "~@14 f4 ~@3 a4@4 f4@3 ~ f4@6",
  AA: "[~@5 f4@4 a4@4 f4@2 ~@2 f4@4 d#4@8 f4@9 ~@10 d#5@4 a#4@4 c5@15 a#4@3 c5@4 a#4@4 g4@11 ~ c5@4 a#4@4 g#4@3 ~@4 f4@2 ~@2 c5@4 a#4@4 c5@4 a#4@3]/4",
  AB: "[~ a#4@5 d#5@33 ~@25]/2", AC: "~@29 b4@2 ~", AD: "~@2 b4@4 c#5@7 ~@2 c#5 ~@4 c#5 ~@3 c#5@6 ~@2",
  AE: "[~ c#5@2 ~@2 c#5@5 b4@5 c#5@4 b4@7 ~@2 e5@8 ~@28]/2", AF: "~@12 f#4@4 d4@5 g4@5 e4@2 ~@4",
  AG: "[~@8 a4@5 f#4@4 ~ a4@2 ~@3 g4@8 e4@2 d4@8 ~@23]/2",
  AH: "[~@11 g#4@5 ~ e4@3 ~@2 e4@6 a4@9 ~@7 g#4@6 e4@6 g#4@6 a4@20 ~@14]/3",
  AI: "[~@8 d5@6 a4@6 b4@20 ~@6 a4@6 ~ b4@6 a4@13 f#4@24]/3",
  AJ: "[~@30 b4@15 a4@15 g4@30 ~ e4@15 [d4,b4]@15 [c#4,a4]@12 ~@13 [c#4,a4]@36 ~@10, ~@134 [d4,b4]@15 ~@43]/6", // G F#m G
  AK: "[~@18 [f4,c#5]@24 ~@43 a4@8 ~@4 a4@11 b4@17 ~@6 b4@8 ~@5 b4@12 ~ a4@51 ~@16, ~@43 [f#4,d5]@165 ~@16]/7", // C# D
})).s("gm_overdriven_guitar").gain(0.4).pan(0)

// other · baritone sax
const baritone_sax = note(`<
  ~@16 A B C ~@2 D E D F G E H I J@2 ~@6 K@2 L M N O P Q R S T U ~@2 V@2 W X ~ Y Z AA AB AC AD AE AF@4 ~@5 AG AH AI AJ@2
  AK@2 AL@4 ~@14 AM@2 AN@3 ~
>`.pickRestart({
  A: "~@4 a2 ~ a2@2 b2 ~ b2@2 c#3 ~ c#3@2", B: "d3@4 ~@4 a3 ~@3 a3@4 b3@7 ~ b3@2 ~@2 b3 ~@3",
  C: "b3@6 ~@2 b3 ~@3 b3@2 ~@2 a3@4 b3@4 a3@4 f#3@4", D: "d2@2 ~@4 d2@2 g2@2 ~@4 g2 ~",
  E: "a2@2 ~@4 a2 ~ g2@3 a2@3 g2@2", F: "a2@3 ~@9 a2@2 ~@2 g2@6 a2@6 g2@4", G: "d2@2 ~@4 d2 ~ g2@2 ~@4 g2 ~",
  H: "d2@4 ~@8 d2 ~@3 g2@2 ~@10 g2@2 ~@2", I: "a2@3 f#2@3 a2@2 b2@7 ~",
  J: "~@8 e3 ~@3 e3@4 c#3@2 ~@2 c#3@2 ~@2 c#3@3 ~@5",
  K: "[~@5 [a2,a3] ~@3 [a2,a3]@2 ~@2 [b2,b3]@6 ~@2 [b2,b3] ~@3 [b2,b3] ~@3 [b2,b3]@7 [b2,b3] ~@3 [b2,b3] ~@3 [a2,a3]@4 [b2,b3]@4 [a2,a3]@4 [d3,d4]@5 ~@3]/2", // A B A B A D
  L: "~@8 d3@4 g3@5 ~@7 g3@4 a3@4", M: "~@7 a3@4 g3@6 a3@5 ~ g3@4 d3@5", N: "~@7 d3@4 g3@4 ~@8 g3@4 a3@5",
  O: "~@6 a3@4 g3@6 a3@4 g3@5 ~ d3@5 ~", P: "~@6 d3@4 g3@4 ~@7 g3@4 a3@5 ~@2", Q: "~@5 a3@4 g3@6 a3@4 g3@5 ~ d3@4 ~@3",
  R: "~@5 d3@4 g3@4 ~@7 g3@4 a3@4 g3@4", S: "a3@4 f#3@19 ~ e3@2 ~@2 e3 ~@3", T: "e3@4 c#3@15 ~@5 e3 ~@3 e3 ~@3",
  U: "e3@4 c#3@19 d3@6 ~@3", V: "[~@30 c4@7 ~ c4@6 ~ a#3@7 ~@9 [a#2,a#3] ~@2]/2",
  W: "~ [a#2,a#3]@4 [c3,c4]@5 ~@3 [c3,c4] ~@3 [c3,c4] ~@3 [c3,c4]@6 ~ [c3,c4] ~@3", // A# C
  X: "[c3,c4]@4 [a#2,a#3]@4 [c3,c4]@4 [a#2,a#3]@4 [d#3,d#4]@5 ~@11", Y: "~@18 g3 ~ g3 ~ g3 ~@3 g3@3 ~@3",
// … 216 more lines

More by Olivia Newton-John