Strudelify

Sunglasses At Night

Corey Hart

KeyC majorTempo120 bpm
0:00/0:00
// Sunglasses At Night — Corey Hart
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 147 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · fretless bass · "Syn.Bass 4"
const bass = note(`<
  ~@2 A B C D E F G H A B I J E K G L A B I D E M N O P Q R@6 S@2 T U V@4 W@2 X@2 Y@4 Z AA AB@2 AC K AD AE A AA AB AF AC
  AG AH AI AJ AK AL@8 AM@2 AN@6 AO AP AQ@5 AR AS AT@6 AU AV@6 AW AX AY@8 AZ BA BB@4 W@2 BC@2 BD@2 BE@2 BF AA I AB AC BG
  N O A AA I AB AC K AH H ~
>`.pickRestart({
  A: "e2 ~@3", B: "e2@3 ~ e2@4 ~@24", C: "~ f#2@3 f#2@3 ~@25", D: "f#2@3 ~@2 f#2@3 ~@24", E: "f2@3 ~ f2@4 ~@24",
  F: "g2@3 ~ g2@4 ~@24", G: "a2@3 ~ a2@4 ~@24", H: "a2@3 ~ a2@3 ~@9 a2@3 ~ g#2 g2@2 f#2@2 f2 ~ e2@2 d#2@3",
  I: "~ f#2@3 f#2@4 ~@24", J: "f#2@3 ~ f#2@3 ~@25", K: "~ g2@3 g2@4 ~@24",
  L: "a2@4 a2@3 ~@9 a2@3 ~ g#2 g2@2 f#2@2 f2@2 e2@2 d#2@3", M: "~ g2@3 g2@3 ~@25", N: "a2@3 ~ a2@3 ~@25",
  O: "a2@3 ~ a2@3 ~@9 a2@4 g#2 g2@2 f#2@2 f2@2 e2@2 d#2@3",
  P: "[f2,f3]@7 ~ f2@3 ~ f3@7 ~@4 f3@4 ~ f2 f#2@2 ~, ~@20 f2@5 ~@7", Q: "g3@7 ~ g2@4 g3@8 g2@4 g3@4 g2@3 e3",
  R: "[~@8 f2@3 f3@7 ~ f2@4 f3@3 ~ f2@2 ~@2 f#3@5 ~@3 g2@5 g3@7 g2@4 g3@4 g2@3 f3@8 ~ f2@4 f3@8 f2@3 ~@4 f2@4 f3 ~ f#3 [g2,g3]@6 g2 ~@2 g3@8 ~ g2@4 g3@3 ~ g2@2 ~ f3@8 ~ f2@4 [d#2,f3]@8 f2@3 ~ f2@2 f#2 ~ g3@23 ~ g3 ~@2 c4 ~@4 g3@4 ~, ~@30 f#2@2 ~@54 f3@7 ~@2 f#2@2 ~@58 g2 ~@25 g3@3 g#2@7 ~]/6", // G D#sus2
  S: "[a2@3 ~ a2@3 ~ d#3@4 a2@7 ~ a2@7 ~ a3@10 ~ g3@4 ~@2 a#3 ~@9 e3@8 ~, ~@44 f3@9 ~@11]/2",
  T: "f2@3 ~ f2@4 f3@3 ~ f2@7 ~ f2@4 f3@3 f2@5", U: "~@4 f2@3 f3@7 ~@2 f2@3 f3@3 f#3 g2@3 ~ g3@2 f#3 f3 ~",
  V: "[a2@2 ~ g2 a2@4 e3@3 ~ a2@7 e3@4 ~ a2@3 a3@12 ~ g3@3 f3@11 ~ e3@8 f2@3 ~ f2@3 ~ f3@3 ~ f2@7 ~@2 f2@3 f3@3 ~@2 f2@8 ~@3 f3@7 ~@3 f#2@2 [g2,f#3] g3 [g#2,g#3] a2 ~@2 b2 c3 c#3 d3 [d#3,e3] ~ [f3,f#3], g#2 ~@11 d#2 ~@87 f2@11 ~ [f2,f3]@3 ~@13]/4", // Gmaj7 G# Emaj7 F#maj7 F
  W: "[a2@3 ~ a2@3 ~ d#3@4 a2@7 ~ a2@7 ~ a3@10 ~ g3@4 ~@2 a#3 ~@9 e3@8 ~, g3 ~@43 f3@9 ~@11]/2",
  X: "[f2@3 ~ f2@4 f3@3 ~ f2@7 ~ f2@4 f3@3 ~ f2@7 ~ f2@3 ~ f3@7 ~ f2@3 f3@3 f#3 ~@4 g3@3 [f3,f#3] ~]/2", // F#maj7
  Y: "[g#2 a2@2 g2 a2@4 e3@3 ~ a2@7 e3@4 ~ a2@3 a3@12 ~ g3@3 f3@11 ~ e3@8 f2@3 ~@2 f2@3 f3@4 ~ f2@7 ~ f2@3 f3@3 ~@2 f2@8 ~@3 f3@7 ~@2 [f2,f3]@2 ~ [g2,f#3] g3 [g#2,g#3] a2@2 ~ b2 c3 c#3 ~@2 [d#3,e3] [f3,f#3], ~@12 d#2 ~@87 f2@11 ~@3 f#2@2 ~@4 a#2@2 ~@6]/4", // F Gmaj7 G# Emaj7 F#maj7
  Z: "e2@9 ~@23, g3 ~@31", AA: "~ e2@3 e2@4 ~@24", AB: "~ f#2@3 ~ f#2@3 ~@24", AC: "f2@3 ~@2 f2@4 ~@23",
  AD: "~ a2@3 a2@4 ~@24", AE: "a2@3 ~ a2@3 ~@9 a2@3 ~ g#2 g2@2 f#2 ~ f2@2 e2@2 d#2@3", AF: "~ f#2@3 ~ f#2@4 ~@23",
  AG: "~ g2@3 ~ g2@4 ~@23", AH: "~ a2@3 a2@3 ~@25",
  AI: "a2@3 ~ a2@3 ~@10 a2@3 ~ g2@2 f#2@2 f2@2 e2@2 d#2@3, ~@10 g#2 ~@5",
  AJ: "[f2,f3]@8 ~ f2@3 ~ f3@7 f2@4 f3@4 f2 f#2@2 ~", AK: "g3@7 ~ g2@4 g3@7 ~ g2@4 g3@4 g2@3 e3",
  AL: "[~@8 f2@4 f3@7 f2@4 ~ f3@3 f2@3 ~ f#3@5 ~@3 g2@5 g3@7 g2@4 g3@4 g2@3 f3@8 ~ f2@4 f3@8 f2@4 ~@3 f2@5 ~ f#3 ~ [g2,g3]@5 g2 ~@2 g3@9 g2@4 g3@3 ~ g2@2 ~@2 f3@8 f2@4 ~ d#2@7 f2@3 ~ f2@2 ~ f#2 g3@23 ~@2 g3 ~ c4 ~@5 g3@3 a2@4 ~ a2@3 ~ d#3@4 a2@7 ~ a2@7 ~ a3@10 ~@2 g3@3 ~@2 a#3 ~@10 e3@8, ~@30 f#2@2 ~@55 f3@7 ~ [f#2,f3]@2 ~@42 f3@8 ~@8 g2 ~@26 g3@4 ~@50 f3@9 ~@11, ~@184 g#2@7 ~@65]/8", // G F#maj7
  AM: "[f2@3 ~ f2@4 f3@3 ~ f2@7 ~ f2@3 ~ f3@3 ~ f2@7 ~ f2@4 f3@7 ~ f2@4 f3@2 f#3 ~ g2@3 g3@3 [f3,f#3] ~]/2", // F#maj7
  AN: "[[g#2,a2] ~@2 g2 a2@4 e3@3 a2@8 e3@3 ~@2 a2@3 a3@12 g3@3 ~ f3@11 ~ e3@7 ~ f2@3 ~ f2@3 ~ f3@3 ~ f2@8 f2@4 f3@3 ~ f2@8 ~@4 f3@7 ~@3 f#2@2 [g2,f#3] [g#2,g3] g#3 a2@2 a#2 b2 c3 c#3 d3 [d#3,e3] f3 [f#3,g3] ~@4 a2@3 d#3@4 a2@7 ~ a2@7 ~@2 a3@10 ~ g3@3 ~@3 a#3 ~@9 e3@7 ~@2, ~@11 d#2 ~@88 f2@11 ~ [f2,f3]@3 ~@12 a2@3 ~@41 f3@9 ~@12]/6", // Amaj7 Gmaj7 G#maj7 Emaj7 Gmaj7 F
  AO: "f2@3 f2@4 f3@3 ~ f2@7 ~@2 f2@3 f3@3 ~ f2@5", AP: "~@4 f2@3 f3@7 ~ f2@4 f3@3 f#3 g2@4 g3@2 f#3 f3 g#2",
  AQ: "[a2 ~@2 a2@4 e3@3 ~ a2@8 e3@4 a2@4 a3@12 g3@3 ~ f3@11 ~ e3@8 f2@3 ~ f2@3 ~ f3@4 f2@8 f2@4 f3@3 ~ f2@8 ~@4 f3@7 ~ [f2,f3]@2 ~ f#3 g2 [g#2,g3] a2@2 a#2 ~ b2 c3 [c#3,d3] ~@2 [e3,f3] [f#3,g3] ~@11 e3@3 ~@6 e3@2 ~@2 [g2,c3]@2 ~ f2@2 ~@3, ~@3 g2 ~@7 d#2 ~@88 f2@11 ~@2 f#2@2 ~@2 g#3 ~@5 d#3@3 ~ e3@9 ~@24]/5", // F G#maj7 Dmaj7 Fmaj7 Gmaj7 C5
  AR: "e3@7 ~@5 e3@3 ~@5 e3@4 c3@3 ~ d3@3 ~", AS: "f#3@8 ~@3 f#3@3 ~@6 f#3@3 ~ c3@3 d3@4 ~",
  AT: "[f#3@7 ~@4 f#3@3 ~@5 f#3@3 ~ c3@4 d3@3 ~ f3@8 ~@4 f3@2 ~@6 f3@3 ~ c3@3 ~ d3@3 ~ g3@7 ~@5 g3@2 ~@6 g3@3 ~ c3@3 ~ d3@4 e3@9 ~@3 e3@2 ~@6 e3@3 ~ c3@3 ~ d3@4 e3@8 ~@5 e3@5 ~@2 a2@2 b2@2 c3@4 e3@4 e3@10 ~@3 e3@2 ~@6 e3@3 ~ c3@3 ~@5, ~@55 f#2 ~@136]/6",
  AU: "e3@9 ~@2 e3@3 ~@6 e3@3 c3@3 ~ d3@3 ~@2",
  AV: "[f#3@8 ~@4 f#3@2 ~@5 f#3@3 ~ c3@3 ~ d3@3 ~ f#3@10 ~@2 f#3@2 ~@6 f#3@3 ~ c3@4 d3@3 ~ f3@9 ~@3 f3@2 ~@6 f3@3 ~ c3@3 ~ d3@3 ~ g3@8 ~@4 g3@2 ~@6 g3@2 ~@2 c3@3 ~ d3@4 e3@2 ~@10 e3@2 ~@6 e3@3 ~ c3@3 ~ d3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~ e3@3 ~ a2@3 ~@2 f#2@4 ~@4, ~@91 b2 ~@4, ~@183 c3@4 ~@5]/6",
  AW: "[f2,f3]@8 ~ f2@3 f3@7 ~ f2@4 f3@4 f2 f#2@2 ~", AX: "g3@7 ~ g2@4 g3@7 ~ g2@4 g3@4 g2@3 ~",
  AY: "[~@8 f2@3 f3@7 ~ f2@4 f3@4 f2@2 ~@2 f#3@5 ~@3 g2@5 g3@7 g2@4 g3@4 g2@3 f3@8 ~@4 f3@8 ~ f2@3 ~@4 f2@4 ~@2 f#3 [g2,g3]@6 g2@2 ~ g3@8 ~ g2@4 g3@3 ~ g2 ~@2 f3@8 ~ f2@4 [d#2,f3]@8 f2@3 ~ f2@2 f#2 ~ g3@23 ~@2 g3 ~ c4 ~@4 g3@3 ~ a2@4 ~ a2@3 ~ d#3@4 a2@7 ~ a2@7 ~ a3@11 g3@4 ~@2 a#3 ~@9 e3@8 ~, ~@30 f#2@2 ~@39 f2@5 ~@10 f3@7 ~ f3@2 ~@85 g3@4 ~@50 f3@9 ~@12, ~@95 f#2@2 ~@58 g2 ~@28 g#2@7 ~@65]/8", // G D#sus2
  AZ: "f2@3 ~ f2@3 f3@3 ~@2 f2@7 ~ f2@3 f3@3 ~ f2@5", BA: "~@4 f2@3 f3@7 ~ f2@4 f3@3 f#3 g2@4 g3@3 [f3,f#3] ~",
  BB: "[g#2 a2 ~ g2 a2@4 e3@3 ~ a2@7 e3@4 ~ a2@3 a3@12 ~ g3@3 f3@11 ~ e3@8 f2@3 ~ f2@3 ~ f3@4 f2@8 ~ f2@3 f3@3 ~@2 f2@8 ~@3 f3@7 ~ f2@2 f#2@2 [g2,f#3] g3 [g#2,g#3] a2@2 a#2 b2 c3 c#3 d3 d#3 e3 [f3,f#3], ~@12 d#2 ~@87 f2@11 f3@4 ~@13]/4", // Gmaj7 G# F#maj7
  BC: "[f2@3 ~ f2@3 f3@3 ~@2 f2@7 ~ f2@3 f3@3 ~@2 f2@7 ~ f2@3 ~ f3@7 ~ f2@3 f3@3 f#3 ~ g2@3 g3@2 ~ [f3,f#3] ~]/2", // F#maj7
  BD: "[g#2 a2 ~ g2 a2@4 e3@3 ~ a2@8 e3@4 a2@3 a3@12 ~ g3@3 f3@11 ~ e3@7 ~@2, ~@12 d#2 ~@51]/2",
  BE: "[f2@3 ~ f2@3 f3@3 ~ f2@8 ~ f2@4 f3@3 ~ f2@8 ~@4 f3@7 ~@2 f#2@2 [g2,f#3] g3 [g#2,g#3] a2 ~ a#2 b2 c3 c#3 d#3@2 e3 [f3,f#3], ~@37 f2@11 [f2,f3]@3 ~@9 d3 ~@3]/2", // Gmaj7 G# F#maj7 F
  BF: "e2 ~@3, g3 ~@31", BG: "~ g2@3 ~ g2@3 ~@24",
})).s("gm_fretless_bass").gain(0.46)

// bass · fretless bass · "Syn.Bass 4" · soft notes
const bass_soft = note(`<
  ~@26 A B C D ~ E F ~ G H ~ I J K@2 L G H M N O K@2 P ~@16 A B Q D ~ R F ~ G H S T O K@2 P U V M W X Y@2 Z AA AB ~@3 AC
  AD AE AF AG ~@2 AH ~ AI AJ A B AK D ~ E ~@2 G H M AL O K@2 P G H M AM O K@2 P ~@17
>`.pickRestart({
  A: "~@28 d#3 ~@3", B: "~@25 g#2@3 d3 ~@3", C: "f3@6 ~@2 a#2@3 ~@16 d#3 ~@4", D: "~@4 g3@3 ~@25",
  E: "~@19 b2@2 c3@2 ~@5 b2 ~@3", F: "~@7 e3 ~@15 a#2@2 ~@7", G: "~@4 d3 ~@5 d3 ~@17 d3 ~@3", H: "~@21 e3 ~@10",
  I: "~@4 a2@2 ~@17 c3@5 g#2@3 e3", J: "[e2,d#3] ~@11 e2@3 ~@9 d3 ~@7, ~@12 d3 ~@19",
  K: "[~@22 e3 ~@8 a#2@2 ~@12 a2@11 ~@8, ~@31 d3 ~@32]/2", L: "~@22 a3 a#3@2 b3 c4 c#4 d4 ~@3", M: "~@11 a#2@12 ~@9",
  N: "~@4 a2 ~@19 c3@4 g#2@3 e3", O: "[e2,d#3] ~@11 e2@4 ~@8 d3 ~@7, ~@12 d3 ~@19", P: "~@23 a3 a#3 b3 c4 c#4 d4 ~@3",
  Q: "~ f3@7 a#2@4 ~@15 d#3 ~@4", R: "~@19 b2@3 c3@2 ~@4 b2 ~@3", S: "~@3 a#2@3 ~@2", T: "~@4 a2@2 ~@18 c3@4 g#2@3 e3",
  U: "~@4 d3 ~@4 d3 ~@18 d3 ~@3", V: "~@20 e3 ~@11", W: "~@4 a2 ~@18 c3@5 g#2@2 ~ [e2,d#3,e3]",
  X: "~@11 e2@4 ~@8 d3 ~@8, ~@11 d3 ~@20", Y: "[~@22 e3 ~@8 a#2@2 ~@11 a2@11 ~@9, ~@31 d3 ~@32]/2",
  Z: "~@22 a3 a#3 ~ b3 c4 [c#4,d4] ~@4", AA: "~@22 e3@2 ~@3 d3@4 ~", AB: "~@24 g2@3 ~@5", AC: "~@6 f#3 ~@16 d#3 ~@8",
  AD: "~@14 e3 ~@17", AE: "~@17 e3@6 ~@9", AF: "~@27 d3@3 ~@2", AG: "~@25 f#2@3 ~@4", AH: "~@22 f#2@3 ~@2 e2@2 ~@3",
  AI: "~@13 e3@6 ~@13", AJ: "~@28 e2@3 ~", AK: "f3@7 ~ a#2@4 ~@15 d#3 ~@4", AL: "~@4 a2 ~@18 c3@5 g#2@2 ~ e3",
  AM: "~@4 a2@2 ~@18 c3@4 g#2@2 ~ e3",
})).s("gm_fretless_bass").gain(0.2)

// chords · epiano1 · "E.Piano 5"
const epiano1 = note("<~@26 A@8 B@8 C@8 ~@16 D E@8 F@3 G@8 H@6 I@8 J@3 K@2 L@8 M@2 N O P@8 Q@2 R@8 ~@12>".pickRestart({
  A: "[f2@6 b2 ~@5 [f2,c3,a3]@16 ~@4 [g2,d3]@8 ~@4 [g2,d3,g3,b3]@16 ~@3 d#2 f2@7 ~@4 [f2,c3,f3,a3]@16 ~@4 [g2,d3,g3,b3]@8 ~@4 [g2,d3,b3]@16 ~@3 d#2 f2@8 ~@4 [f2,c3,f3,a3]@17 ~@2 [g2,d3,b3]@10 ~@3 [g2,d3,g3,b3]@16 ~@4 f2@8 ~@4 [f2,c3,f3,a3]@17 ~@3 f#2 g2@8 ~@4 [g2,d3,g3,b3]@14 ~@5 f3, ~@31 [g3,b3]@8 ~@24 [c3,f3]@8 ~@55 [c3,f3]@9 ~@23 g3 ~@31 [c3,f3,a3]@8 ~@25 [d3,g3,b3]@9 ~@24]/8", // F G5 G F G F G F …
  B: "[[f2,c3] ~@10 [c4,e4]@9 ~ c#4 ~@3 g3 ~@2 d4@11 ~@5 [g3,c4,f4]@10 ~ c4@2 ~@3 [c3,f3,a3,c4]@7 ~@5 [f3,a3,c4]@11 f2@16 ~@5 [f3,a3,c4]@11 ~@5 g#3@3 ~ f#3 g3 ~@2 e4@3 ~@9 [c4,e4]@8 e3@4 a3 g3 ~@2 d4@10 d3 ~@4 [g3,c4,f4]@10 ~@2 [c3,g3,e4]@3 ~@2 [c3,c5]@7 e3 ~@3 [f3,a3,c4]@11 ~@6 [a3,c4]@11 ~@4 f3@4 a3@4 ~@8 [b3,d4]@8 ~, e3@12 ~@8 e3@5 ~@43 f2@13 ~@19 f2@14 ~ f2@7 ~@73 f2@12 ~@4 f2@13 ~@3 [f2,c3]@11 ~@18, a3@4 a2@7 ~@57 c3@56 ~@8 a2@9 ~@115, c4@3 ~@5 a3@13 ~@7 g4 ~@26 e4 ~@63 f3@5 ~@63 [f3,a3]@8 ~@20 f3@12 ~@12 d3@17, ~@119 c4@3 ~@5 [a3,c4]@4 ~@4 a3@13 ~@8 g4@3 ~@24 c#4 ~@51 c4@2 ~@6 g3@13]/8", // F5 C Csus4 F C Csus4 C F …
  C: "[a3@4 ~@7 [c4,e4]@9 ~ c#4 ~@3 g3 ~@2 d4@11 ~@5 [g3,c4,f4]@11 [c4,e4]@2 ~@3 [c3,f3,a3,c4]@7 ~@5 [f3,a3,c4]@11 ~@5 [f3,a3,c4]@11 ~@5 [f3,a3,c4]@10 ~@6 g#3@3 ~ f#3 g3 ~@2 e4@3 ~@9 [c4,e4]@8 e3@4 a3 g3 ~@2 d4@10 d3 ~@4 [g3,c4,f4]@10 ~@2 [c3,g3,e4]@2 ~@3 [c3,f3,a3,c5]@8 e3 ~@2 [f3,a3,c4]@11 ~@6 [f3,a3,c4]@12 ~@7 c4@2 ~@11 [b3,d4]@8, e3@12 ~@8 e3@5 ~@43 f2@13 ~@2 f2@16 ~ f2@14 ~ f2@8 ~@9 a2@8 ~@56 f2@12 ~@3 f2@13 ~@4 [f2,c3]@10 ~@18, c4@3 ~ a2@7 ~@57 c3@56 ~@3 [a3,c4]@4 ~@4 a3@13 ~@35 c#4 ~@47 f3@6 ~@2 d3@16 ~, ~@8 a3@13 ~@7 g4 ~@127 g4@3 ~@75 a3@4 ~@5 g3@13]/8", // C Csus4 C F C Csus4 C F …
  D: "f2@7 b2 ~@4 [f2,c3,a3]@16 ~@4", // F
  E: "[[g2,d3,g3,b3]@9 ~@3 [g2,d3,g3,b3]@16 ~@3 [f2,c3,f3]@8 ~@5 [f2,c3,f3,a3]@16 ~@3 [g2,d3,g3,b3]@9 ~@4 g2@16 ~@2 d#2 ~ f2@7 ~@4 [f2,c3,f3,a3]@17 ~@3 [g2,d3,b3]@10 ~@2 [g2,d3,g3,b3]@16 ~@4 [f2,c3,f3,a3]@9 ~@3 [f2,c3,f3,a3]@17 ~@4 [g2,d3]@9 ~@3 [g2,d3,g3,b3]@15 ~@4 [f2,c3,f3] ~@12 [c4,e4]@8 ~ c#4 ~@3 g3 ~@2 d4@4, ~@31 d#2 ~@43 [d3,b3]@16 ~@3 [c3,f3]@9 ~@24 g3 ~@63 [g3,b3]@9 ~@23 e3@13 ~@8 e3@4 ~@8, ~@192 f#2 ~@30 [a3,c4]@5 a2@7 ~@21, ~@232 a3@13 ~@7 g4 ~@3]/8", // G F5 F G F G F G5 …
  F: "[~@12 [g3,c4,f4]@11 [c4,e4]@2 ~@3 [c3,f3,a3,c4]@7 ~@5 [f3,a3,c4]@11 ~@5 [f3,a3,c4]@12 ~@4 [f3,a3,c4]@11 ~@5 f3@4 f#3 g3 ~ [a3,c4], ~@9 c3@14 ~, ~@36 f2@13 ~@2 f2@16 ~ f2@14 ~@2 f2@7 ~@5]/3", // Csus4 C F Am
  G: "[e4@2 ~@9 [c4,e4]@9 e3@3 a3 ~ g3 ~@2 d4@10 d3 ~@4 [g3,c4,f4]@10 ~@2 [c3,g3,e4]@2 ~@3 c5@7 e3 ~@3 [f3,a3,c4]@11 ~@6 c4@10 ~@5 f3@4 a3@4 ~@9 d4@7 a3@4 ~@8 [c4,e4]@9 e3@4 ~ g3 ~@2 d4@11 ~@4 [g3,c4,f4]@10 ~@2 c4@2 ~@3 [c3,f3,a3,c4]@7 ~@4 [f3,a3,c4]@11 ~@5 [f3,a3,c4]@11 ~@6 [f3,a3]@11 ~@4 [f3,g#3]@5 f#3 g3 [a3,c4]@2, ~@4 a2@8 ~@47 [c3,f3,a3]@7 ~ f2@12 ~@4 f2@13 ~@3 [f2,c3]@10 ~@2 d3@16 e3@12 ~@56 f2@14 ~@2 f2@16 ~ f2@14 ~ f2@8 ~@5, ~@7 a3@13 ~@8 g4@3 ~@24 c#4 ~@31 [f3,a3]@12 ~@8 c4@2 ~@6 g3@12 ~@4 a2@7 ~@57 c3@57 ~@4, ~@119 b3@8 c4@3 ~@5 a3@13 c#4 ~@7 g4 ~@26 e4 ~@47 c4@10 ~@6 c4@3 ~@6]/8", // C Csus4 C F C Csus4 F Fm …
  H: "[e4@3 ~@8 [c4,e4]@8 e3@4 a3 g3 ~@2 d4@11 d3 ~@4 [g3,c4,f4]@10 ~ c#4 c3@2 ~@3 c5@7 e3 ~@3 [f3,a3,c4]@11 ~@6 c4@10 ~@9 c4 ~@11 [b3,d4]@8 ~ a4@45 ~@11 e4@4 [d4,g4]@3 ~, ~@3 a2@8 ~@43 [g3,e4]@2 ~@3 [c3,f3,a3]@8 f2@12 ~@4 f2@13 ~@3 [f2,c3]@11 ~@17 e5@47 ~@18, ~@7 a3@13 ~@7 g4@3 ~@57 [f3,a3]@12 ~@4 f3@6 ~@2 d3@17 ~@64, ~@106 a3@4 ~@5 g3@13 ~@51 a3@11 ~@2]/6", // C Csus4 F Bm G5 C F F5 …
  I: "[e4@3 c#5@2 ~@45 b3@3 ~@6 [a4,c5] ~ g4@2 [d4,a4,f5]@27 ~@5 [g4,b4,d5,g5,b5]@25 ~@7 e4@36 ~@28 [a3,a4,c5,e5]@49 ~@8 e4@3 c5@2 d4@2 ~, [d4,g5]@46 ~@8 a#3@8 ~@65 [a4,e5]@41 e4@23 e4@52 ~ a3@10 ~@2, d5 ~@54 e4@7 ~ c5@10 ~@54 c5@45 a4@19 ~@60 a4 ~ g4 ~@2, ~@127 a3@33 ~@4 a3@16 e5@4 a5@64 ~@8, ~@88 c5@7 ~@33]/8", // Am Dm G Am G5 A5
  J: "[[d4,g4,d5,g5]@47 ~@9 e4@3 a4 [d4,g4] ~@2 c4@2 d4@19 ~@7 [a4,c5] ~ g4@2 ~, ~@52 a3@10 ~@23 a3@9 ~@2, ~@59 c5@3 ~ [a4,c5,f5]@21 ~@4 d4@5 ~@3]/3", // G5 Am F
  K: "[~@2 g3@9 ~@16 [g4,d5]@2 ~@2 [a3,e4,a4]@33, [d4,d5,g5]@20 a3@7 f4 ~@3 c5@2 ~@31, ~@12 d4@3 ~@17]/2", // G5 A5 G5
  L: "[~@23 a5@8 ~ [f2,c3]@6 b2 ~@5 [f2,c3,a3]@16 ~@4 [g2,d3]@8 ~@4 [g2,d3,g3,b3]@16 ~@3 [f2,c3,f3]@8 ~@4 [f2,c3,f3,a3]@16 ~@4 [g2,d3,g3,b3]@9 ~@3 [g2,d3,b3]@16 ~@3 d#2 f2@8 ~@3 [f2,c3,f3,a3]@18 ~@2 g3 g2@10 ~@2 [g2,d3,g3,b3]@16 ~@3 [f2,c3,f3,a3]@9 ~@4 [f2,c3,f3,a3]@17 ~@3 [f#2,d3,g3,b3], ~@4 a3@15 e5@12 ~@225, ~@8 e4@23 ~@32 [g3,b3]@8 ~@24 d#2 ~@62 [c3,f3]@9 ~@23 [d3,b3]@9 ~@57, ~@3 a4@5 ~@56, ~@15 c5@241]/8", // F5 F G5 G F5 F G F …
  M: "[g2@8 ~@4 g2@13 ~@6 [f2,c3,f3] ~@3 a2@5 ~@3 [c4,e4]@9 e3@5 g3 ~@2 d4@4, ~@11 [d3,g3,b3]@15 ~@5 e3@13 ~@20, ~@31 a3@4 ~@5 a3@13 ~@11, ~@31 c4@3 ~@18 c#4 ~@7 g4 ~@3]/2", // F5 C G
  N: "~@11 [g3,c4,f4]@11 ~ [c4,e4] ~@4 [c3,f3,a3,c4]@4", // Csus4 C F
  O: "~@8 [f3,c4]@11 ~@5 f3@8, ~ c3@7, ~@4 f2@13 ~@2 f2@13, ~@7 a3@11 ~@5 [a3,c4]@9", // F5 Am
  P: "[~@8 [f3,a3,c4]@11 ~@4 [f3,g#3]@5 ~ [f#3,g3] ~@2 e4@3 ~@9 [c4,e4]@8 e3@3 a3 ~ g3 ~ d4@11 d3 ~@4 [g3,c4,f4]@10 ~@2 [c3,g3,e4]@3 ~@2 [c3,f3,a3]@7 e3 ~@3 [f3,a3,c4]@11 ~@6 [a3,c4]@11 ~@4 f3@4 a3@4 ~@9 [b3,d4]@8 c4@3 a2@5 ~@4 [c4,e4]@8 ~ c#4 ~@3 g3 ~@2 d4@11 ~@5 [g3,c4,f4]@11 c4@2 ~@3 [c3,f3,a3,c4]@7 ~@4 [f3,a3,c4]@11 ~@6 f3@8, ~@4 f2@14 ~ f2@8 ~@3 [a3,c4]@5 ~ a2@8 ~@55 f2@12 ~@4 f2@13 ~@3 [f2,c3]@10 ~@2 d3@17 e3@12 ~@8 e3@5 ~@43 c3@19 [a3,c4]@9, ~@23 c-1@233, ~@39 a3@13 ~@7 g4@3 ~@25 c#4 ~@4 c5@164, ~@119 f3@12 ~@8 c4@2 ~@6 g3@12 ~ a3@5 ~@3 a3@13 ~@7 g4 ~@26 e4 ~@12 f2@13 ~@2 f2@13]/8", // F Fm Gmaj7 C Csus4 C F Am …
  Q: "[~@8 [f3,a3,c4]@11 ~@5 [f3,g#3]@5 [f#3,g3] ~@2 e4@3 ~@9 [c4,e4]@8 e3@4 a3 g3 ~@2 [d4,g4]@4, ~@4 f2@14 ~ f2@8 ~@9 a2@8 ~@20, ~@24 c4@3 ~@4 [a3,c4]@5 ~@4 a3@12 ~@12]/2", // F Fm Gmaj7 C G5 Am
  R: "[~@6 d3 ~@4 [g3,c4,f4]@10 ~@2 [c3,g3,e4]@2 ~@3 [c3,f3,a3]@7 ~ e3 ~@2 [f3,a3,c4]@11 ~@6 [f3,a3,c4]@12 ~@3 f3@4 a3@4 ~@9 [b3,d4]@8 ~@160, ~@23 c#4 ~@4 c5@228, ~@35 f2@12 ~@4 f2@13 ~@4 [f2,c3]@10 ~@2 d3@16 ~@160, ~@75 c4@2 ~@6 g3@13 ~@160]/8", // Csus4 C F Bm F5
})).s("gm_epiano1").gain(0.31)

// chords · epiano1 · "E.Piano 5" · soft notes
const epiano1_soft = note(`<
  ~@26 A B@2 C@2 D ~@2 E F G ~ H I ~@2 J K G ~ H I ~@18 A B@2 C@2 D ~@2 L M G ~ N I ~@2 O F P ~ Q R ~@4 S ~ T ~@2 U ~@3
  V ~ W ~@2 X Y@2 C@2 D ~@2 O F Z ~ N I ~@2 L F Z ~ H I ~@19
>`.pickRestart({
  A: "~@12 f3@15 ~@5", B: "[~@27 c#3 ~@3 a3@8 ~@25]/2", C: "[~@11 g3@16 ~@3 a3@9 ~@25]/2", D: "~@26 c#3 ~@5",
  E: "~@12 a4@9 ~@4 d3@2 ~@5", F: "~@22 f#3 [c3,g3]@2 ~@7", G: "~@4 f4@5 ~@7", H: "~@12 a4@8 ~@5 d3@2 ~@5",
  I: "~@6 f4 ~@18 b3 ~@6", J: "~@11 a4@10 ~@4 d3@2 ~@5", K: "~@23 f#3 c3@2 ~@6, ~@23 g3@2 ~@7",
  L: "~@12 a4@9 ~@4 d3@3 ~@4", M: "~@22 f#3 ~ [c3,g3]@2 ~@6", N: "~@11 a4@8 ~@6 d3@2 ~@5", O: "~@11 a4@9 ~@5 d3@3 ~@4",
  P: "~@7 f4@10 ~@15", Q: "~@11 a4@8 ~@5 d3@2 ~@6", R: "~@6 f4 ~@17 b3 ~@7", S: "a4 ~@31",
  T: "~@9 c#5@2 c5@12 ~ c#5 ~@7, ~@9 a3@18 ~@5", U: "~ f5 ~@2", V: "~@14 c5 ~ d#4 e4 ~@12 a5@2",
  W: "~@13 g4@5 ~@14, ~@6 f#4 ~@9", X: "f3@8 ~@4 f3@15 ~@5", Y: "[~@27 c#3@2 ~@2 a3@8 ~@25]/2", Z: "~@7 f4@11 ~@14",
})).s("gm_epiano1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C D A B A B A B C E ~ B A B A B A F ~ B A G H I J K L M L N O P Q R@4 S O T U P R@3 S A G A G A B V B A G A G
  A B V G W I J X L Y Z AA AB U@2 AC R@3 S P R@3 AD AE R S P R AF R@4 AG R@5 AE R AG AH I J K L AI L AA Q R Q R@4 S O T
  U O P R AJ AK A G A G A B V G A B A G A B V G ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@28", C: "x ~@30 x", D: "~ x ~@6", E: "~@4 x ~@26 x", F: "x ~@3 x ~@26 x", G: "x!2 ~@6",
  H: "x ~@15 x ~@2 x ~@9 x ~@2", I: "~@4 x ~@11 x ~@3 x ~@10 x", J: "~@15 x ~@3 x ~@8 x ~@3",
  K: "~@3 x ~@11 x ~@3 x ~@10 x ~", L: "~@15 x ~@3 x ~@7 x ~@4", M: "~ x ~@5 x ~ x ~@5 x",
  N: "~@3 x ~@3 x ~@7 x ~@7 x ~@7 x", O: "x ~@15 x ~@2 x ~@12", P: "x ~@14 x ~@3 x ~@11 x", Q: "~@16 x ~@3 x ~@10 x",
  R: "~@15 x ~@3 x ~@11 x", S: "~ x", T: "x ~@14 x ~@3 x ~@12", U: "x ~@3 x!2 ~@2", V: "~ x ~@30",
  W: "x ~@16 x ~@2 x ~@8 x ~@2", X: "~@4 x ~@10 x ~@3 x ~@10 x ~", Y: "~@2 x ~@12 x ~@3 x ~@11 x",
  Z: "~@15 x ~@4 x ~@7 x ~@3", AA: "~@3 x ~@3 x ~@7 x ~@8 x ~@6 x", AB: "~@4 x!2 ~@2", AC: "x ~@15 x ~@3 x ~@10 x",
  AD: "~@15 x ~@2 x ~@11 x ~", AE: "~@14 x ~@4 x ~@11 x", AF: "~@16 x ~@2 x ~@11 x", AG: "~@16 x ~@14 x",
  AH: "~@16 x ~@2 x ~@9 x ~@2", AI: "~@2 x ~@11 x ~@4 x ~@10 x ~", AJ: "~@15 x ~@3 x ~@12", AK: "x!2",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct(`<
  ~@5 A ~@7 A ~@7 A ~@4 B ~@3 C ~@22 A ~@7 A ~@4 B ~@3 C ~@35 B ~@3 C ~@22 A ~@7 A ~@5
>`.pickRestart({
  A: "~ x ~@6", B: "~@29 x ~@2", C: "~@6 x!2",
})).gain(0.24)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A ~@7 A ~@7 B C D E@2 F G F ~ H I J I E I@2 K H L M N E I@2 O ~@7 A ~@7 B H@2 C E F P E ~ H Q R N E I@2 O E I@3 E
  P@2 S E I@3 E I T U E I@3 E I P V H D E@2 F W E ~ D I@2 X E I@2 O D L I M E I@2 Y ~@7 B ~@7 B ~
>`.pickRestart({
  A: "~@3 x ~@28", B: "~ x ~@6", C: "~@7 x ~@16 x ~@7", D: "~@8 x ~@14 x ~@8", E: "~@7 x ~@15 x ~@8",
  F: "~@6 x ~@16 x ~@8", G: "~@7 x ~@14 x ~@3 x ~@5", H: "~ x ~ x", I: "~@7 x ~@15 x ~@3 x ~@4",
  J: "~@7 x ~@16 x ~@2 x ~@4", K: "~@7 x ~@12 x ~@2 x ~@4 x ~@3", L: "~@7 x ~@15 x ~@4 x ~@3",
  M: "~@8 x ~@15 x ~@2 x ~@4", N: "~@8 x ~@18 x ~@4", O: "~@7 x ~@12 x ~@3 x ~@7", P: "~@7 x ~@14 x ~@4 x ~@4",
  Q: "~@8 x ~@14 x ~@4 x ~@3", R: "~@2 x ~@3 x!2", S: "~@7 x ~@12 x ~@2 x ~@3 x ~@4", T: "~@6 x ~@16 x ~@3 x ~@4",
  U: "~@7 x ~@12 x ~@3 x ~@2 x ~@4", V: "~@7 x ~@11 x ~@3 x ~@4 x ~@3", W: "~@6 x ~@15 x ~@4 x ~@4",
  X: "~@7 x ~@19 x ~@4", Y: "~@2 x ~@2 x!3",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@9 A ~@7 A ~@7 A ~@7 B ~@3 C ~@3 D ~@3 C ~@3 E ~@7 F G ~@6 A ~@7 C ~@3 C ~@3 E ~@3 B ~@3 H ~@3 C ~@3 H ~@3 C ~@3 I
  ~@7 C ~@3 C ~@3 E ~@3 C ~@3 D ~@7 F G ~@6 A ~
>`.pickRestart({
  A: "~@20 x ~ x ~@4 x ~@3 x", B: "~@19 x ~@12", C: "~@5 x ~@2", D: "~@21 x ~@6 x ~@3", E: "~@21 x ~@10",
  F: "~@20 x ~ x ~@4 x ~@4", G: "x", H: "~@20 x ~@6 x ~@4", I: "~@5 x ~ x",
})).gain(0.8)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@7 A ~@7 A ~@7 A ~@6 B ~@24 A ~@7 A ~@6 C ~@39 B ~@24 A ~@7 A ~@3>".pickRestart({
  A: "~@3 x ~@28", B: "~@3 x", C: "~@25 x ~@6",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<A@2 ~@35 B ~@7 B ~@31 B ~@7 C ~@7 B ~@7 B ~@15 B ~@7 B ~@21>".pickRestart({
  A: "x!4", B: "~@23 x ~@8", C: "~@11 x ~@4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@33 A ~@3 B ~@3 C ~@3 B ~@3 C ~@23 B ~@3 B ~@3 D ~@3 B ~@3 E ~@3 B ~@3 F ~@3 B ~@3 F ~@7 A ~@3 B ~@3 D ~@3 B ~@3 D
  ~@17
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@21 x ~@10", C: "~@22 x ~@6 x ~@2", D: "~@11 x ~@2 x ~", E: "~@21 x ~@5 x ~@4",
  F: "~@21 x ~@6 x ~@3",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@9 A ~@7 A ~@7 A ~@7 B ~@3 C ~@3 D ~@3 C ~@3 E ~@7 A ~@7 A ~@7 F ~@3 C ~@3 D ~@3 B ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C ~@7
  B ~@3 C ~@3 E ~@3 C ~@3 E ~@7 A ~@7 A ~
>`.pickRestart({
  A: "~@3 x", B: "~@22 x ~@4 x ~@4", C: "~@23 x ~@3 x ~@4", D: "~@23 x ~@4 x ~@3", E: "~@6 x!2", F: "~@11 x ~@2 x ~",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct(`<
  ~@26 A B C@2 D E F ~@4 G ~@3 H ~@3 G ~@3 H ~@16 I J K L M E N ~@4 G ~@3 H ~@3 G ~@3 G ~@3 G ~@3 G ~@3 G ~@3 O P B C@2
  D E F ~@4 G ~@3 H ~@3 G ~@3 H ~@17
>`.pickRestart({
  A: "x ~@6 x ~@8 x ~@7 x ~@7", B: "x ~@7 x ~@7 x ~@7 x ~@6 x", C: "~@7 x ~@7 x ~@7 x ~@7 x",
  D: "~@7 x ~@7 x ~@7 x ~@6 x ~", E: "~@7 x ~@7 x ~@6 x ~@7 x ~", F: "~@6 x ~@7 x ~@8 x ~@7 x", G: "~@27 x ~@4",
  H: "~@7 x", I: "x!4", J: "~ x ~@6 x ~@7 x ~@7 x ~@6 x", K: "~@7 x ~@7 x ~@8 x ~@6 x", L: "~@7 x ~@7 x ~@7 x ~@8",
  M: "x ~@6 x ~@7 x ~@7 x ~@7 x", N: "~@6 x ~@8 x ~@7 x ~@7 x", O: "~@27 x ~@3 x", P: "~@7 x ~@8 x ~@7 x ~@7",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@33 [~@25 x ~@6] ~@39 [~@25 x ~@6] ~@39 [~@25 x ~@6] ~@33>").gain(0.24)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@2 A B C A B@3 D A B@6 D A B@6 D ~@24 A B@6 D A B@6 D ~@64 A B@6 D A B@6 D ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~@7 x ~@7 x ~@7 x ~@6 x", D: "x ~@3 x ~@3 x ~@3 x ~@2 x",
// … 6 more lines

More by Corey Hart