Strudelify
Summer Nights cover art

Summer Nights

Marianne Faithfull

KeyD majorTempo118 bpm
0:00/0:00
// Summer Nights — Marianne Faithfull
// 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 88, 4/4 at bar 90, 2/4 at bar 93, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 101 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, A@4 for four bars: edit a riff to change every repeat.

// chords · epiano1 · "tk1"
const epiano1 = note(`<
  A@2 B C@3 D E F G H I@2 J K L ~ M N M N O P M Q R S T U V W X@2 Y Z M AA M AB AC AD AE AF AG AH AI@2 AJ AK AL AM AN@2
  AO AP@2 AQ@4 AR AS@2 AT@2 AU AV@6 AW@2 AX AY AZ BA BB BC BD@2 BE BF@6 BG@6 BH@6
>`.pickRestart({
  A: "[~@14 [d2,d3]@6 ~@6 [d2,d3]@5 [g2,g3]@6 ~@6 [g2,g3]@4 [a2,a3]@6 ~@6 [a2,a3]@4 ~]/2", // D G A
  B: "[g2,g3]@4 [a2,a3]@8 [g2,g3]@4 [d2,d3]@4 ~@9 [d2,d3]@3", // G A G D
  C: "[~ [g2,g3]@6 ~@6 [g2,g3]@4 [a2,a3]@6 ~@7 [a2,a3]@4 [g2,g3]@4 [a2,a3]@8 [g2,g3]@4 ~ [d2,d3]@4 ~@8 [d2,d3]@4 [g2,g3]@4 ~@8 [g2,g3]@4 ~ [a2,a3]@4 ~@8]/3", // G A G A G D G A
  D: "[a2,a3]@4 [g2,g3]@4 [a2,a3]@8 [g2,g3]@4 ~ [d2,d3]@4 ~@7", E: "~ [d2,d3]@4 [g2,g3]@4 ~@9 [g2,g3]@4 [a2,a3]@4 ~@6",
  F: "~@2 [a2,a3]@4 ~ [g2,g3]@4 [a2,a3]@8 [g2,g3]@4 [d2,d3]@4 ~@5", // A G A G D
  G: "~@3 d3@4 ~ g2@4 ~@8 [g2,g3]@4 [a2,a3]@4 ~@4, ~@3 d2@2 ~@2 g3@4 ~@21", // G A
  H: "~@4 [a2,a3]@4 ~ b3@4 b2@4 [c#2,c#3]@4 [d#2,d#3]@4 [e2,e3]@4 ~@3, ~@9 b2@2 ~@2 b1@2 ~@17", // A C# D# E
  I: "[~@6 [e2,e3]@4 [a2,a3]@4 ~@8 [a2,a3]@4 e3@4 [f#2,f#3]@4 ~ [g#2,g#3]@4 a3@8 [a2,a3]@4 [b2,b3]@4 [c#3,c#4]@5 [d3,d4]@4, ~@26 e2@2 ~@11 a2@4 ~@21]/2", // E A F# G# A B C# D
  J: "~@4 f#3@2 ~@2 d3@4 ~@12 g2@3 ~@5, ~ [a3,d4]@2 g2@2 [b3,d4]@2 ~, ~@16 g3@7 ~@9", // D5 Bm
  K: "~ c#4@4 ~@4 [f#3,b3,d#4]@16 ~@7", L: "~@2 e3 ~@3 [b3,e4]@5 ~@7 c#4@4 ~@5 [f#3,d4]@5, ~@3 g3 ~@5 a3 ~@6",
  M: "~@2 [f#3,a3,d4] ~@3 [g3,b3,d4] ~", N: "~@8 [g3,b3,d4]@4 ~@4 [g3,a3,c#4]@4 [g3,a3,c#4]@3 ~@5 [f#3,a3,d4]@4",
  O: "~@4 [f#3,a3,d4] ~@3 [f#3,a3,d4]@3 ~@9 [g3,b3,d4]@4 [g3,b3,d4]@4 ~@4", // D G
  P: "~@8 [g3,a3,c#4]@5 ~@11 [g3,b3,d4]@4 ~@4", // A7 G
  Q: "~@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
  R: "[f#3,a3,d4] ~ [f#3,a3,d4] ~@3 [g3,b3,d4] ~", // D G
  S: "~@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
  T: "[f#3,a3,d4]@3 ~@5 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@4", // D G
  U: "~@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
  V: "~@8 [g#3,b3,e4]@5 ~@11 [c#4,e4]@4 ~@4, ~@12 a3 ~@3", // E C#m
  W: "[g#3,b3,d4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,d4]@2 ~@2 [g3,a3,c#4,e4]@5 ~@3 [g3,a3,c#4,e4]@3 ~ [g3,a3,c#4]@2 ~@2 [g3,a3,c#4,e4,e5]@3 ~, ~@5 c#5 [e4,d5] ~", // G#dim E G#dim A7 E7
  X: "[[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]@4 f#4@3 ~, ~@24 g4@2 ~@2 g4@8 ~@8 f#4@12 ~@4 b3 ~@3]/2", // D G Bm A A7 B
  Y: "[b4,e5]@3 ~@5 [b4,e5]@4 ~@4 a4@3 ~ a4@3 ~ [g4,a4]@3 ~@5, g4@3 ~ g4 ~ g4@6 ~@4, ~@4 c#5@3 ~", // E5 Gsus2
  Z: "[f#4,a4,d5]@5 ~@27", AA: "~@4 [g3,b3,d4]@2 ~@2 [g3,c#4]@2 a3 ~@3 [f#3,a3,d4]@2, ~@16 a3@3 ~@13",
  AB: "~@7 [g3,b3,d4]@3 ~@5 [g3,a3,c#4]@3 ~ [g3,a3,c#4]@3 ~@5 [f#3,a3,d4]@3 ~@2", // G A7 D
  AC: "~@3 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@3 ~@9 [g3,b3,d4] ~@2 [g3,b3,d4]@4 ~@6", // D G
  AD: "~@6 [a3,c#4,e4]@5 ~@11 [g3,b3,d4]@7 ~@3", AE: "~@6 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@6",
  AF: "~ [g3,a3]@2 ~@6 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 [g3,b3] ~@3 [f#3,a3]@3, ~ c#4@4 ~@19 d4@3 ~ d4@4", // Gsus2 G F#m
  AG: "~@5 [f#3,a3,d4]@4 ~@11 [g3,b3,d4]@4 ~@8", // D G
  AH: "[g3,a3,c#4]@4 ~@4 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@5 ~@3 g3 ~@3 f#3@2 ~@2, ~@23 [b3,d4]@2 ~@2 [a3,d4]@3 ~@2", // A7 G Bm D5
  AI: "[~@4 [f#3,a3,d4]@5 ~@11 [g3,b3,d4]@4 ~@7 [g3,a3,c#4]@3 ~@5 [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@3 ~@6]/2", // D G A7 B
  AJ: "~@3 [g#3,b3,e4]@5 ~@10 [c#4,e4]@4 ~@4 [g#3,b3,d4]@3 ~ [g#3,b3,e4]@2, ~@9 a3 ~@6", // E C#m G#dim E
  AK: "~@2 [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 ~ [f#4,a4,d5]@5 ~, ~@7 c#5@2 d5@2 ~@5", // G#dim A7 D
  AL: "~@2 [f#4,a4,d5]@3 d4@2 ~@2 [g4,b4,d5]@5 ~@3 [b4,d5]@4 ~@4 [a4,c#5]@4 [g4,a4,c#5]@3, ~@17 g4@2 ~@2 g4@8 ~@3", // D G Bm A A7
  AM: "~@5 [b4,d#5]@8 ~@4 [b4,d#5]@4 f#4@3 ~ [b4,e5]@3 ~@4, ~@5 f#4@12 ~@8 g4@6 ~", // B E5
  AN: "[~ [g4,b4]@3 ~@4 a4@3 ~ a4@3 ~ [g4,a4]@3 ~@5 [c5,d5,f5]@32 ~@8, e5@4 g4@11 ~@49, ~@8 c#5@11 ~@45]/2", // G Gsus2 Dm7
  AO: "[g3,d#4] ~@3 [g#3,c4,d#4] ~@3, a#3 ~@15", // Cm G#
  AP: "[[g#3,c4,d#4]@3 ~@4 [g#3,a#3,d4]@3 ~ [g#3,a#3,d4]@3 ~@5 [g3,a#3,d#4]@3 ~ [g3,a#3,d#4]@4 ~@4 [g3,a#3,d#4]@4 ~@12 [g#3,c4,d#4]@4 ~@11 [g#3,c4,d#4]@2]/2", // G# A#7 D# G#
  AQ: "[~@6 [g#3,a#3,d4]@3 ~ [g#3,a#3,d4]@4 ~@4 [g3,d#4]@2 ~@2 [a#3,d#4] ~@3 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4]@5 ~@6 [g#3,c4,d#4] ~@4 [g#3,c4,d#4]@4 ~@12 d4@4 ~@11 [g#3,c4,d#4]@4 ~@12 [g3,a#3]@5 ~@10 [g#3,c4,d#4]@3 ~@9 [a#3,d4,f4]@3 ~@5, ~@18 a#3 ~@3 g3@2 ~@37 [a#3,f4]@5 ~@27 d#4@3 ~@32]/4", // A#7 Cm D#5 D# G# Gm G# A# …
  AR: "[g#3,c4,d#4]@4 ~@4 [g#3,d#4]@4 ~@3 [g#3,c4,d#4]@3 ~ [g3,a#3,d#4]@4 ~@4 [g3,a#3,d#4]@4 ~, ~@7 c4@5 ~@20", // G# G#5 G# D#
  AS: "[~@11 [g#3,c4,d#4]@3 ~@8 [a#3,d4,f4]@3 ~@5 [g#3,c4,d#4]@5 ~@3 [g#3,c4,d#4]@4 ~@4 [g#3,c4,d#4]@3 ~ a#3@3 ~@5 [g3,a#3,d#4]@5 ~, ~@49 [g3,d#4]@4 ~@11]/2", // G# A# G# D# Cm
  AT: "[~@9 [g#3,c4,d#4]@3 ~@9 [a#3,d4]@3 ~@5 c4@7 [c4,e4,g4]@6 ~@2 [c4,e4,g4]@4 ~@8 [a3,c4,f4]@4 ~@4, ~@20 f4@2 ~@6 [e4,g4]@7 ~@29]/2", // G# A# C F Em
  AU: "~@7 [a#3,d4,f4]@4 ~@4 [a3,c4,d#4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4] ~@3 [a#3,d4]@5, ~@23 d#4@2 ~ f4@2 ~@4", // A# Adim F Am A#
  AV: "[~@7 c5@3 [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 ~@3 g4@11 [g4,e5]@4 c4 ~@3 [g#4,c5,d#5,f5]@4 ~@4 [g#4,c5,d#5,f5]@3 g#4@3 ~ [g#4,a#4,d5]@3 ~ [g#4,d5]@3 ~@5 g#4 ~@3 [f#4,b4,d#5]@30 ~@9 [g#4,b4,e5]@5 ~@2 b3 ~@3 a4 ~@3 [a3,a4]@7 ~ c#4@4 ~@3 [e4,a4,c#5,e5]@4 [c#4,a4]@3 ~ [b3,b4,d#5]@3 ~ [b4,d#5]@4, ~@2 [a#3,d4,f4]@3 ~ [a#3,d4,f4]@2 ~@48 c4@11 ~@86 e4@15 ~@16 [d#4,a4]@8, ~@3 a#4@5 ~@14 g4@2 ~@32 c5@8 ~@4 c5@3 ~@24 a#4@5 ~@61 [c#5,e5]@4 ~@27, ~@57 e5@8 ~@96 c#4@2 ~@29]/6", // A# D# D#5 G# A#7 C Fm7 A#7 …
  AW: "[b3@3 [g#4,b4,e5]@3 ~ [g#4,b4,e5]@4 ~@4 [b3,g#4,b4,e5]@4 ~@11 [e4,a4,c#5,e5]@5 ~@11 [c#4,c#5,e5]@3 a4@3 ~ [d#4,a4,b4,d#5]@3 ~ [a4,b4,d#5]@3 ~ b3 ~@2, ~@15 e4@9 ~@6 [a3,c#4]@2 ~@14 [e4,a4]@2 ~@5 b3 ~@10]/2", // E A C#m B7 A A5
  AX: "~ [b4,d#5]@3 ~ e3@4 ~@9 [e2,e3]@4 [a2,a3]@5 ~@5, ~ a4 ~@2 [g#4,b4]@13 ~@15, ~@4 e2@5 ~@23", // B E A G#m
  AY: "~@4 [a2,a3]@4 [d2,d3]@6 ~@8 [d2,d3]@4 ~ [g2,g3]@5", AZ: "~@9 [g2,g3]@5 [a2,a3]@5 ~@9 [a2,a3]@4",
  BA: "[g2,g3]@6 ~ [a2,a3]@7 [g2,g3]@5 [d2,d3]@5 ~@8", BB: "[d2,d3]@4 ~ [g2,g3]@5 ~@9 [g2,g3]@4 [a2,a3]@5 ~@4",
  BC: "~@4 [a2,a3]@4 ~ [g2,g3]@7 [a2,a3]@6 [g2,g3]@5 [d2,d3]@4 ~", // A G A G D
  BD: "[~@8 [d2,d3]@4 [g2,g3]@5 ~@8 [g2,g3]@5 [a2,a3]@5 ~@8 [a2,a3]@4 [b2,b3]@8 c#2@5 d#2@4]/2", // D G A B
  BE: "~@4 [g#4,b4]@2 ~@2 [b4,e5]@4 e2@4 [a4,c#5,e5] ~@12 a2@3, e2@9 ~@7 a2@10 ~@6, ~@4 e5 ~@3 g#4@9 ~@4 [a4,c#5,e5]@11", // G#m E5 A
  BF: "[~ e2@5 ~@4 f#2@4 ~ g#2@5 [a2,a4]@4 ~ [a2,a4]@6 [b2,b4]@6 [c#3,c#5]@6 [f#4,a4,d5]@12 ~@2 [f#4,a4,d5]@5 ~@2 [a4,d5]@7 [g4,d5]@28 ~@6 [a4,c#5]@26 ~@6 [f#4,b4,d#5]@46 ~@9, ~@6 [g#4,b4,e5]@10 ~@4 [g4,c#5]@12 ~@11 d3@28 g2@34 a2@32 b2@52 ~@3, ~@64 f#4@3 ~@4 b4@25 ~@9 g4@23 ~@64]/6", // A B C# D D5 G5 A B …
  BG: "[~@21 [g4,b4,d5]@46 ~@12 [a2,g4,a4,c#5,e5]@90 ~@23, ~@10 e3@29 ~@57, ~@20 e5@47 ~@125]/6", // G A7
  BH: "[[a4,d5]@26 ~@16 [f#4,a4,d5]@17 ~@7 [g4,b4,d5]@17 ~@5 [g4,b4,d5]@17 ~@9 [d2,d3,f#4,a4,d5]@53 ~@6 [d2,d3,f#4,a4,d5]@6 ~@13, [d2,d3]@67 ~@125, f#4@29 ~@37 g2@48 ~@78]/6", // D5 D G D
})).s("gm_epiano1").gain(0.36).pan(0.4)

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

// other · rock organ · "tk3"
const rock_organ = note(`<
  ~@19 A B C D E D F G H D I J ~@3 K L M ~ N@5 O P Q R S T ~@5 U V W X Y Z AA AB AC AD AE@3 ~@2 AF AG AH AI ~@3 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]@6 ~@2 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", // D G
  F: "~@4 [d6,f#6] ~@3 [a5,d6,f#6]@5 ~@7 d6 ~@3 [b5,d6,g6]@4 ~@4", G: "~@4 [c#6,e6] ~@3 [c#6,e6,a6]@4 ~@20",
  H: "~@4 d6 ~@3 [a5,d6,f#6]@4 ~@8 [b5,d6] ~@3 [b5,d6,g6]@3 ~@5", I: "~@8 g#5@2 ~@2 g#5@4 a5@2 ~@2 a5 ~@3 a5@3 ~@5",
  J: "~@8 g#5 ~@3 g#5@4 a5 ~@3 a5 ~@3 a5@2 ~@6", K: "~@8 a5 ~@3 a5@4 b5@2 ~@2 b5@4 c#6@2 ~@2 c#6@4",
  L: "d6@4 ~@4 a6@2 ~@2 a6@2 ~@2 b6@7 ~ b6 ~@3 b6 ~@3", M: "b6@6 ~@2 b6 ~@3 b6@2 ~@2 a6@4 b6@4 a6@4 f#6@4",
  N: "[~@31 a5@6 ~@2 a5 ~@3 a5@4 b5@5 ~@3 b5 ~@2 b5@4 c#6@5 ~@3 c#6 ~@3 c#6@4 b5@3 ~ c#6@4 b5@4 c#6@4 a5@4 ~@4 a5 ~@3 a5@4 b5@4 ~@3 b5 ~@3 b5@3 ~ c#6@5 ~@3 c#6 ~@3 c#6@4 b5@4 c#6@4 b5@4 c#6@4 a5@3]/5",
  O: "~@5 a5 ~@3 a5@4 b5@4 ~@3 b5 ~@3 b5@4 c#6@4", P: "~@4 c#6 ~@3 c#6@4 b5@4 c#6@4 b5@3 ~ c#6@3 ~ a5@4",
  Q: "~@4 a5 ~@2 a5@4 b5@4 ~@4 b5 ~@3 b5@3 ~ c#6@4 ~", R: "~@3 c#6 ~@3 c#6@4 d#6@15 ~ e6@3 e6 ~",
  S: "~@2 e6@4 c#6@16 ~@4 e6 ~@3 e6 ~", T: "~@2 e6@4 c#6@19 ~ d6@5 ~", U: "~@31 a#5",
  V: "~@3 a#5@4 c6@5 ~@3 c6 ~@2 c6 ~@3 c6@5 ~@3 c6 ~", W: "~@2 c6@4 a#5@4 c6@4 a#5@4 d#6@4 g5 ~ g5 ~ g5@2 ~@2 g5@2",
  X: "~@6 g#5 g#5@2 g#5@2 ~@2 g#5@4 ~@4 a#5 ~ a#5 ~ a#5@2 ~@2 a#5@3",
  Y: "~@5 g#5 ~ g#5 ~ g#5@2 ~@2 g#5@4 ~@4 g5 ~ g5@2 g5 ~@3 g5@3",
  Z: "~@4 g#5 ~@3 g#5@2 ~@2 g#5@3 ~@5 a#5 ~@3 a#5@2 ~@2 a#5@3 ~",
  AA: "~@4 g#5 ~@2 g#5@2 ~@2 g#5@3 ~@5 g5 ~ g5 ~ g5@2 ~@2 g5@3 ~@2",
  AB: "~@3 g#5 ~@3 g#5@2 ~@2 g#5@3 ~@4 a#5 ~ a#5 ~ a#5 ~@3 a#5@3 ~@3",
  AC: "~@2 g#5 ~ g#5 ~ g#5@2 ~@2 g#5@3 ~@5 g5 ~ g5!2 ~@3 g5@3 ~@4",
  AD: "~ g#5 ~ g#5 ~ g#5 ~@3 g#5@3 ~@5 a#5 ~ a#5 ~ a#5 ~@3 a#5@3 ~@4",
  AE: "[~ c6@12 ~@3 f6@2 ~@2 f6@8 d6@10 ~ d6 ~@3 d6@4 f6 ~@3 f6@7 ~ d6@19 d#6@5 ~@13]/3", AF: "~@19 d#6@7 c#6@6",
  AG: "~@2 b5@9 ~@6 b5 ~@3 b5@4 c#6@3 ~@4", AH: "~ c#6@2 ~@2 c#6 ~@2 c#6@5 ~@3 c#6 ~@3 c#6@4 b5@4 c#6@4",
  AI: "b5@2 ~ e6@5 ~@24", AJ: "~@7 c#6",
  AK: "[~@3 g4@2 a4 c5 [d5,e5] f5 [g5,a5] b5 [f#6,a6]@20 ~@2 [g5,b5]@40 ~@9 [a5,d6]@54 ~@5 [d5,f#5,a5,d6,f#6,a6]@9 ~@10, ~@2 [e4,f4]@2 ~ b4@2 ~@4 d6@36 ~@113]/5", // Dsus2 Gsus2 F#m G D5 D Fmaj7
})).s("gm_rock_organ").gain(0.31).pan(0.8)

// other · rock organ · "tk3" · soft notes
const rock_organ_soft = note("<~@19 A B C D E D F G H D ~@30 I J@2 ~@13 K L M N O P@2 ~@13 Q R ~ S@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: "~@6 g#5 ~@15 a#5 ~@9", J: "~@5 g#5 ~@26", K: "~@8 [f#5,a5]@6 ~@8 [f#5,a5]@5 [g5,b5]@5",
  L: "~@9 [g5,b5]@5 [a5,c#6]@5 ~@9 a5@4", M: "~ [g5,b5]@6 [a5,c#6]@7 [g5,b5]@5 [f#5,a5]@5 ~@8",
  N: "[f#5,a5]@5 [g5,b5]@4 ~@10 [g5,b5]@4 [a5,c#6]@5 ~@4", // F#m G A
  O: "~@4 [a5,c#6]@5 [g5,b5]@6 ~ [a5,c#6]@6 [g5,b5]@5 [f#5,a5]@4 ~", // A G A G F#m
  P: "[~@8 [f#5,a5]@4 [g5,b5]@4 ~@9 [g5,b5]@5 a5@6 g5@6 ~ a5@4 [f#5,d#6]@17, ~@30 c#6@17 ~@17]/2", // F#m G D#m
  Q: "~@15 b3, ~@14 g3 ~, ~@29 a3@2 ~", R: "c4 d4@2 ~@8 c6 ~@20", S: "[~@18 f#5@53 ~@25]/3",
})).s("gm_rock_organ").gain(0.13).pan(0.8)

// other · trombone · "tk6"
const trombone = note(`<
  ~@16 A B C ~@2 D E F E F E G H I@2 ~@6 J@2 K@5 L M@2 N O ~@3 P Q R ~ S T U V W X Y Z AA@3 ~@5 AB AC@2 ~@21 AD AE@4
>`.pickRestart({
  A: "~@7 a2@2 ~@2 a2@5 b2@2 ~ b2@4 ~ c#3@2 ~@2 c#3@4", 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@4 ~@8 a2 ~@3 g2@6 a2@6 g2@4", F: "d2@2 ~@6 g2@2 ~@4 g2 ~", G: "d2@2 ~@6 g2 ~@5 g2 ~",
  H: "a2@3 ~@3 a2@2 b2@7 ~", I: "~@8 e3 ~@3 e3@4 c#3@2 ~@2 c#3@2 ~@2 c#3@3 ~@5",
  J: "[~@8 [a2,a3] ~@3 [a2,a3]@2 ~@2 [b2,b3]@6 ~ b2 b3 ~@2 [b2,b3] ~@3 [b2,b3]@7 ~ [b2,b3] ~@3 [b2,b3] ~@3 [a2,a3]@4 [b2,b3]@4 a3@4 [d3,d4]@5]/2", // A B A B D
  K: "[~@11 d3@4 g3@5 ~@6 g3@4 a3@4 ~@8 a3@4 g3@6 a3@5 ~ g3@4 d3@6 ~@6 d3@4 g3@4 ~@7 g3@4 a3@5 ~@7 a3@4 g3@6 a3@4 g3@5 ~ d3@5 ~@7 d3@4 g3@4 ~@7 g3@4 a3@4]/5",
  L: "~@8 a3@4 g3@6 a3@4 g3@5 ~ d3@4", M: "[~@7 d3@4 g3@4 ~@8 g3@4 a3@4 g3@4 a3@4 f#3@19 ~ e3 ~@2 e3 ~]/2",
  N: "~@2 e3@4 c#3@15 ~@5 e3 ~@3 e3 ~", O: "~@2 e3@4 c#3@19 d3@6 ~", P: "c4@7 ~ c4@7 ~ a#3@7 ~@9",
  Q: "[a#2,a#3] ~@3 [a#2,a#3]@4 [c3,c4]@5 ~@3 [c3,c4] ~@2 [c3,c4] ~@3 [c3,c4]@6 ~@2 [c3,c4]", // A# C
  R: "~@3 [c3,c4]@4 a#3@3 ~ [c3,c4]@4 [a#2,a#3]@4 [d#3,d#4]@5 ~@8", S: "~@22 g3 ~ g3 ~ g3 ~@3 g3@2",
  T: "~@6 g#3!2 ~ g#3 ~@4 g#3@3 ~@4 a#3 ~ a#3 ~ a#3 ~@3 a#3@3",
  U: "~@5 g#3 ~ g#3 ~ g#3 ~@3 g#3@4 ~@4 g3 ~ g3 ~ g3 ~@3 g3@2 ~",
  V: "g3 ~@3 g#3 ~ g#3 ~ g#3 ~@3 g#3@2 ~@6 a#3 ~ a#3 ~ a#3 ~@3 a#3@2 ~@2",
  W: "~@4 g#3!2 ~ g#3 ~@3 g#3@3 ~@5 g3 ~ g3 ~ g3 ~@3 g3@2 ~@3",
  X: "~@3 g#3 ~ g#3 ~ g#3 ~@3 g#3@2 ~@5 a#3 ~ a#3 ~ a#3 ~@3 a#3@3 ~@3",
  Y: "~@2 g#3 ~ g#3 ~ g#3 ~@3 g#3@3 ~@5 g3 ~ g3!2 ~@4 g3@3 ~@3",
  Z: "~ g#3 ~ g#3 ~ g#3 ~@3 g#3@2 ~@6 a#3 ~ a#3 ~ a#3 ~@3 a#3@3 ~@4",
  AA: "[~ c4@15 f4@2 ~@2 f4@8 d4@15 ~@4 f4 ~@3 f4@8 d4@19 d#4@6 ~@12]/3", AB: "~@15 b3 ~@3 b3@4 c#4@6 ~ c#4 ~",
  AC: "[~@2 c#4 ~@3 c#4@6 ~ c#4 ~@3 c#4@4 b3@4 c#4@4 b3@8 e4@7 ~@20]/2",
  AD: "~@11 [f#4,a4]@8 ~@3 [f#4,a4]@10, ~@5 d2@11", // F#m
  AE: "[~@2 g1@18 ~@5 [g4,b4]@7 ~@5 [g4,b4]@13 [a4,d5]@52 ~@7 [d2,f#4,a4,d5]@8 ~@11, ~ [g4,b4]@15 ~@8 g1@26 d2@55 ~@23]/4", // G D5 D G
})).s("gm_trombone").gain(0.29).pan(0)

// other · trombone · "tk6" · soft notes
const trombone_soft = note("<~@23 A ~ B ~ B C ~@9 D ~@15 E ~@20 F G H I J K@2 ~@16 L@3>".pickRestart({
  A: "~@3 d2 ~@4", B: "~@6 d2 ~@9", C: "~@3 f#2@3 ~@10", D: "~@23 a2@4 ~@5", E: "~@7 a#2@4 ~@21",
  F: "~@8 [f#3,a3]@6 ~@8 [f#3,a3]@5 [g3,b3]@5", G: "~@9 [g3,b3]@5 [a3,c#4]@6 ~@8 [a3,c#4]@4",
  H: "[g3,b3]@7 [a3,c#4]@7 [g3,b3]@5 [f#3,a3]@4 ~@9", I: "[f#3,a3]@5 [g3,b3]@5 ~@9 [g3,b3]@4 [a3,c#4]@4 ~@5",
  J: "~@4 [a3,c#4]@5 [g3,b3]@6 ~ [a3,c#4]@6 [g3,b3]@4 ~ [f#3,a3]@4 ~", // A G A G F#m
  K: "[~@8 [f#3,a3]@4 [g3,b3]@4 ~@10 b3@4 a3@6 g3@6 ~ [a3,c#4]@4 [f#3,d#4]@17, ~@25 g3@5 c#4@10 ~@24]/2", // F#m G A D#m
  L: "[~@9 f#4@26 ~@13]/3",
})).s("gm_trombone").gain(0.18).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@12 A B C D E F@4 G H G@8 F I F J K L M N O P Q R S T U V W X Y R Z AA AB AC AD AE AF AG F AH AI AJ AK G AL AM AN AO
  AP AQ AR AS AT AU ~@26
>`.pickRestart({
  A: "~@7 x", B: "~@12 x ~@16 x ~@2", C: "~@13 x ~@16 x ~", D: "~@14 x ~@16 x", E: "~@15 x ~@16", F: "x!2 ~@2 x!2 ~@2",
  G: "x ~@2 x!2 ~@2 x", H: "x ~@2 x!2 ~@3", I: "x ~@3 x!2 ~@2", J: "x ~@3 x ~@2 x",
  K: "~ x ~@3 x ~@6 x ~@3 x ~@3 x ~@7 x ~@3", L: "x!2 ~ x!3 ~ x", M: "x ~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@2 x",
  N: "~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@3 x", O: "~@11 x ~@3 x ~@10 x ~@3 x ~", P: "~@5 x ~ x ~ x ~@3 x ~ x",
  Q: "~@10 x ~@3 x ~@10 x ~@3 x ~@2", R: "~@9 x ~@3 x ~@11 x ~@3 x ~@2", S: "~@9 x ~@3 x ~@10 x ~@3 x ~@3",
  T: "~@2 x!2 ~@2 x!2", U: "~@8 x ~@2 x ~@11 x ~@3 x ~@4", V: "~@7 x ~@3 x ~@11 x ~@3 x ~@4",
  W: "~@3 x ~ x ~@5 x ~ x ~@2", X: "~@3 x ~ x ~@5 x ~ x ~ x", Y: "~@9 x ~@3 x ~@11 x ~@6", Z: "~@2 x!2 ~@2 x ~",
  AA: "~@5 x!3", AB: "~@4 x ~@3 x ~@3 x ~@7 x ~@2 x ~@3 x ~@4", AC: "~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@4",
  AD: "~@3 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@5", AE: "~ x ~ x ~ x ~@3 x ~ x ~@4", AF: "~@2 x ~@3 x ~@10 x ~@3 x ~@10",
  AG: "~ x ~@3 x ~@3 x ~@7 x ~@3 x ~@10", AH: "x ~@3 x ~@10 x ~@3 x ~@11 x", AI: "~@3 x ~@11 x ~@2 x ~@11 x ~",
  AJ: "~@2 x ~@11 x ~@3 x ~@10 x ~@2", AK: "~ x ~@11 x ~@3 x ~@11 x ~@2", AL: "x ~@10 x ~@3 x ~@11 x ~@2 x ~",
// … 209 more lines