Strudelify
All Through The Night cover art

1984 · She's So Unusual

All Through The Night

Cyndi Lauper

KeyA♭ majorTempo95 bpm
0:00/0:00
// All Through The Night — Cyndi Lauper
// 95 bpm, 4/4, key Ab major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 9 "Pan Flute" named as a pipe, played on pan flute (its lead 4 chiff patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(95/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 · synth brass 2 · "Cyndi"
const synth_brass_2 = note(`<
  A@2 B C D E F G H I J K L@4 M@4 N@4 O P@2 Q R S@2 Q T@5 U V@3 W@3 X Y@4 ~@8 H Z@2 AA AB@2 AC@2 AD AE@4 AF@4 AG AH@3
  AI@4 V@3 ~@8
>`.pickRestart({
  A: "[eb4@9 ~ db4@2 c4@3 bb3@14 ~@3]/2", B: "bb3@4 ~ c4 db4 eb4@7 bb3@2", C: "bb3@3 c4@2 ~ db4 ~ eb4@5 ~@3",
  D: "eb4@8 db4@2 ~ c4@3 bb3 ~", E: "bb3@13 ~@3", F: "bb3@3 c4@3 db4 ~ eb4@7 ~", G: "bb3@3 c4@3 db4@2 eb4@5 ~@3",
  H: "eb4@15 ~", I: "eb4@3 f4@3 g4@2 ab4@6 eb4@2", J: "eb4@5 ~@3", K: "eb4@4 f4@2 g4@2 ab4@4 c4@2 eb4 ~",
  L: "[eb4@6 db4@5 c4@2 bb3@10 ~@5 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,db5]@3 ~@3 [ab4,db5]@2 [ab4,db5]@2]/4", // Ab Fm Ab Fm Db5
  M: "[~@2 [ab3,f4]@3 ~ [ab3,f4]@3 ~ [bb3,g4] ~ [c4,ab4]@2 db5@4 [eb4,ab4,c5]@4 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5]@5 ~ [eb4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 ~ ab4@2 ~@3 [ab4,db5]@2 [ab4,db5]@2, ~@14 f4@2 ~@38 db5@3 ~@7]/4", // Db Eb Fm Ab Ab5 Ab Fm Db5
  N: "[~@2 [db4,f4]@3 ~ [db4,f4]@3 ~ [eb4,g4] ~ [f4,ab4]@2 db5@4 [ab4,c5]@4 [ab4,c5]@4 ~@2 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@3 ~ f4@8, ~@14 ab4@2 ~@39 ab4@9]/4", // Db Eb Fm Ab Fm Ab Fm
  O: "[eb4,g4]@7 ~@9", P: "[eb4@3 db4@2 ~ c4@4 bb3@12 ~@2 bb3@3 c4@3 db4@2]/2", Q: "eb4@8 bb3@3 c4@3 db4 ~",
  R: "eb4@5 ~@3 eb4@8", S: "[db4@3 c4@3 bb3@4 ~ bb3@12 ~ bb3@3 c4@3 db4@2]/2",
  T: "[eb4@5 ~@3 eb4@15 ~ eb4@2 f4@2 g4@2 ab4@5 c4@3 eb4@2 eb4@10 ~@6 eb4@2 f4@2 g4@2 ab4@5 c4@3 eb4 ~ eb4@6 db4@2]/5",
  U: "db4@3 c4@2 bb3@11",
  V: "[~@4 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,db5]@4 ~@2 [ab4,db5]@2 [ab4,db5]@3 ~ [ab3,f4]@3 ~ [ab3,f4]@2]/3", // Ab Fm Ab Fm Db5 Db
  W: "[~@2 [bb3,g4] ~ [c4,ab4]@2 db5@4 [eb4,ab4,c5]@4 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5]@5 ~ [eb4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,db5]@2, ~@3 f4 ~@20]/3", // Eb Fm Ab Ab5 Ab Fm Db5
  X: "~@4 [ab4,db5]@2 [ab4,db5]@3 ~ [db4,f4]@3 ~ [db4,f4]@2", // Db5 Db
  Y: "[~@2 [eb4,g4] ~ [f4,ab4]@2 db5@4 [ab4,c5]@4 [ab4,c5]@4 ~@2 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@3 ~ f4@8 [eb4,g4]@7 ~, ~@6 ab4@2 ~@39 ab4@9 ~@8]/4", // Eb Fm Ab Fm Ab Fm Eb
  Z: "[eb4@2 f4@2 g4@2 ab4@5 c4@3 eb4@4 eb4@10 ~@4]/2", AA: "eb4@2 f4@2 g4@2 ab4@5 c4@3 eb4@2",
  AB: "[eb4@5 ~ db4@5 c4@3 ~ bb3@11 ~@6]/2",
  AC: "[~@4 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,db5]@2]/2", // Ab Fm Ab Fm Db5
  AD: "~@4 [ab4,db5]@2 [ab4,db5]@3 ~ [ab3,f4]@3 ~ [ab3,f4]@2", // Db5 Db
  AE: "[~@2 [bb3,g4] ~ [c4,ab4]@2 db5@4 [eb4,ab4,c5]@4 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5]@5 ~ [eb4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 ~ ab4@2 ~@3 [ab4,db5]@2 [ab4,db5]@3 ~ [db4,f4]@3 ~ [db4,f4]@2, ~@6 f4@2 ~@38 db5@3 ~@15]/4", // Eb Fm Ab Ab5 Ab Fm Db5 Db
  AF: "[~@2 [eb4,g4] ~ [f4,ab4]@2 db5@4 [ab4,c5]@4 [ab4,c5]@4 ~@2 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 ~@5 db5@3 [ab4,db5]@3 ~ [db4,f4]@3 ~ [db4,f4]@2, ~@6 ab4@2 ~@38 db5@5 ~@13, ~@24 ab4@3 ~@5]/4", // Eb Fm Ab Fm Ab Fm Db5 Db
  AG: "~ [eb4,g4] [f4,ab4] [ab4,db5]@2 [ab4,c5]@2 c5", // Eb Fm Db5 Ab
  AH: "[~@4 [ab4,c5] ~ [ab4,c5]@4 c5@2 [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 ~@5 db5@3 [ab4,db5]@3 ~ [db4,f4]@3 ~ [db4,f4]@2, ~@30 db5@5 ~@13, ~@16 ab4@3 ~@5]/3", // Ab Fm Ab Fm Db5 Db
  AI: "[~@2 [eb4,g4] ~ [f4,ab4]@2 db5@4 [ab4,c5]@4 [ab4,c5]@4 ~@2 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@3 ~ f4@16, ~@6 ab4@2 ~@39 ab4@17]/4", // Eb Fm Ab Fm Ab Fm
})).s("gm_synth_brass_2").gain(0.56)

// chords · synth brass 2 · "Cyndi" · soft notes
const synth_brass_2_soft = note("<~@85 A@3 B C@4>".pickRestart({
  A: "[~@2 [bb3,g4] ~ [c4,ab4]@2 db5@4 [eb4,ab4,c5]@4 [eb4,ab4,c5]@4 ~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5]@5 ~ [eb4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,db5]@2, ~@3 f4 ~@20]/3", // Eb Fm Ab Ab5 Ab Fm Db5
  B: "~@4 [ab4,db5]@2 [ab4,db5]@3 ~ [db4,f4]@3 ~ [db4,f4]@2", // Db5 Db
  C: "[~@2 [eb4,g4] ~ [f4,ab4]@2 db5@4 [ab4,c5]@4 [ab4,c5]@4 ~@2 [ab4,c5] ~ [ab4,c5]@5 ~ [f4,ab4]@2 [ab4,c5]@5 ~ [ab4,c5]@2 [ab4,c5]@5 ~ [f4,ab4]@3 ~ eb4@8 eb4@7 ~, ~@6 ab4@2 ~@39 ab4@16 ~]/4", // Eb Fm Ab Fm Ab Fm
})).s("gm_synth_brass_2").gain(0.24)

// chords · pad choir · "chords"
const pad_choir = note(`<
  ~@8 A@2 B@3 C@8 D@4 ~@7 E@6 F@2 G@2 F@2 G@2 F@2 H ~@8 A@2 I@4 F@2 G@2 F@2 G@2 F@2 G J F@2 K G F@2 L F@2 G ~@8
>`.pickRestart({
  A: "[f5,ab5]/2", B: "[eb5@31 ~ [db5,f5]@14 ab4@2, g5@41 ~@7]/3",
  C: "[[db5,f5]@8 [eb4,ab4,c5]@15 ~ [eb4,ab4,c5]@15 ~ [f4,ab4,db5]@15 ~ [f4,ab4,db5]@15 ~ [eb4,ab4,c5]@15 ~ [eb4,ab4,c5]@15 ~ [f4,ab4,db5]@15 ~ [f4,ab4,db5]@8]/8", // Db Ab Db Ab Db
  D: "[~@8 [eb4,ab4,c5]@15 ~ [eb4,ab4,c5]@15 ~ [f4,ab4]@8 [eb4,g4]@8 ~@8, ~@40 c5@15 ~@9]/4", // Ab Fm Eb
  E: "[~@8 [f5,ab5]@32 eb5@31 ~ [db5,f5]@14 ~@2 [db5,f5]@8, ~@40 g5@41 ~@5 ab4@10]/6", F: "[eb4,ab4,c5]@15 ~",
  G: "[f4,ab4,db5]@15 ~", H: "[f4,ab4] g4, c5@15 ~",
  I: "[eb5@31 ~ [db5,f5]@14 ~@2 [db5,f5]@8 [bb4,eb5]@8, g5@41 ~@5 ab4@18]/4", J: "[f4,ab4,db5] [g4,bb4,eb5]",
  K: "[f4,ab4,db5]", L: "[f4,ab4] ab4, c5@15 ~",
})).s("gm_pad_choir").gain(0.25).pan(0.6)

// chords · pad choir · "chords" · soft notes · Db Ab Db Ab Ab5 Ab
const pad_choir_soft = note(`<
  ~@85
  [[f4,ab4,db5]@15 ~]
  [[eb4,ab4,c5]@15 ~]!2
  [[f4,ab4,db5]@15 ~]!2
  [[eb4,ab4,c5]@15 ~]!2
  [[eb4,ab4] [ab3,ab4], c5@15 ~]
>`).s("gm_pad_choir").gain(0.1).pan(0.6)

// bass · electric bass finger · "Bass"
const bass = note("<~@13 A B C D E F C D G H I J@4 K@3 L M N O P Q R S T U V W T X Y Z AA ~@45>".pickRestart({
  A: "~@8 ab1@2 ab2 ab2@4 ab2", B: "ab1@2 ab2 ab2@3 ~ g2 f1@2 f2 f2@4 f2", C: "f1@2 f2 f2@3 ~ eb2 db1@2 db2 db2@4 db2",
  D: "db1@2 db2 db2@3 ~ c2 bb1 ~ bb1 bb1@4 bb1", E: "bb0@2 bb1 eb2@3 ~ eb2 ab1@2 ab2 ab2@4 ab2",
  F: "ab1@2 ab2 ab2@3 g2 ~ f1@2 f2 f2@4 f2", G: "db2@2 eb2 eb2@3 ~ eb2 eb2@3 eb2 ab1@3 ab1",
  H: "ab1@2 ab2 ab2@3 ~ g2 f1@2 f2 f2@4 ~", I: "f2@2 c2!2 f1@2 f2!2 c2@8",
  J: "[c2@8 ab2@12 eb2@4 eb2@12 bb2@2 eb3@2 eb3@18 bb2@3 eb2@3]/4",
  K: "[ab2@2 eb2@2 ab1@6 ab1 eb2 eb2@6 bb2@2 eb3@4]/3", L: "eb3@4 eb3@3 ~ eb3@8",
  M: "ab2@4 g2@4 f2@3 ~ c2@2 eb2@2, ~@12 f2 ~@3", N: "f2@6 c2@2 f2@3 ~ c2@2 eb2@2, ~@12 f2 ~@3",
  O: "f2@2 f2@2 c2@2 g1 bb1, ~@12 c2 ~@3", P: "c2@4 c2@2 g1 bb1, ~@12 c2 ~@3",
  Q: "c2@3 ~ bb1@2 c2@2 db2@8, ~@4 c2 ~@11", R: "~ ab2 db2 c2 bb1@4",
  S: "ab1@2 ab2 ab2@4 ~ ab1@2 ab2 ab2@3 ~ g2, ~@8 ab2 ~@7", T: "f1@2 f2 f2@4 f2 f1@2 f2 f2@3 ~ eb2",
  U: "db1@2 db2 db2@4 ~ db1@2 db2 db2@3 ~ c2, ~@8 db2 ~@7", V: "bb1 ~ bb1 bb1@4 ~ bb0@2 bb1 eb2@3 ~ eb2, ~@8 bb1 ~@7",
  W: "ab1@2 ab2 ab2@4 ab2 ab1@2 ab2 ab2@3 ~ g2", X: "db1@2 db2 db2@4 db2 db1@2 db2 db2@3 ~ c2",
  Y: "bb1 ~ bb1 bb1@4 bb1 db2@2 eb2 eb2@3 ~ eb2", Z: "eb2@3 eb2 ab1@3 ~ ab1@2 ab2 ab2@3 ~ g2",
  AA: "f1@2 f2 f2@4 ~ f2@2 c2!2 f1@2 f2 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// bass · fretless bass · "Bass"
const bass_2 = note(`<
  ~@48 A B C D E F G H I J K L M N O P Q R S P Q T U V W X Y V Z AA AB V AC AD AE Q AF ~@8
>`.pickRestart({
  A: "c2!2", B: "ab1@2 ab2!2 ab2@2 ab2!2 ab1@4 ab1@4", C: "eb2@2 eb3!2 eb3@2 eb3!2 eb2@4 eb2@4",
  D: "eb2@3 eb3 eb3@3 eb3 eb2@4 eb2@4", E: "eb2@3 eb3 eb3@3 eb3 ab1@2 bb2 c3 bb2 ab2 f2 eb2",
  F: "ab1@2 ab2 ab2@3 ab2!2 ab1@3 ~ ab1@4", G: "eb2@2 eb3 eb3@3 eb3!2 eb2@4 eb2@4", H: "eb2@3 eb3@3 eb3!2 eb2@4 eb2@4",
  I: "db2 eb2 eb3!2 eb3@2 eb3!2 ab2@4 g2@4", J: "f2@3 ~ c2@2 eb2@2 f2@6 c2@2, ~@4 f2 ~@11",
  K: "f2@3 ~ c2@2 eb2@2 f2@4 f2@4, ~@4 f2 ~@11", L: "c2@2 g1 bb1 c2@4, ~@4 c2 ~@11",
  M: "c2@4 g1@2 bb1@2 c2@3 ~ bb1@2 c2@2, ~@4 c2 ~@7 c2 ~@3", N: "db2@4 ~ ab2 db2 c2", O: "bb1 eb2",
  P: "ab1@2 ab2 ab2@4 ab2 ab1@2 ab2 ab2@3 ~ g2", Q: "f1@2 f2 f2@4 f2 f1@2 f2 f2@3 ~ eb2",
  R: "db1@2 db2 db2@4 ~ db1@2 db2 db2@3 ~ c2, ~@8 db2 ~@7", S: "bb1 ~ bb1 bb1@4 ~ bb0@2 bb1 eb2@3 ~ eb2, ~@8 bb1 ~@7",
  T: "db1@2 db2 db2@4 db2 db1@2 db2 db2@3 ~ c2", U: "bb1 ~ bb1 bb1@4 bb1 db2@2 eb2 eb2@3 ~ eb2",
  V: "eb2@3 eb2 ab1@3 ~ ab1@2 ab2 ab2@3 ~ g2", W: "f1@2 f2 f2@4 ~ f2@2 c2!2 f1@2 f2 ~",
  X: "db2@2 db3!2 db3@2 db3!2 db2@2 db3!2 c2@2 c3!2, eb2 ~@15",
  Y: "bb1@2 bb2!2 bb2@2 ab2 bb2 eb2@2 eb1@2 eb2 eb1 f2 g2", Z: "f1@2 f2 f2@4 ~ f2@2 c2!2 f1@2 f2 eb2",
  AA: "db2@2 db3!2 db3@2 db3!2 db2@2 db3!2 c2@2 c3!2", AB: "bb1 ~ bb1 bb1@4 ~ db2@2 eb2 eb2@3 ~ eb2, ~@8 bb1 ~@7",
  AC: "f1@2 f2 f2@4 ~ f2@2 c2!2 f1@2 f2!2", AD: "f1!2", AE: "ab1@2 ab2 ab2@4 ~ ab1@2 ab2 ab2@3 ~ g2, ~@8 ab2 ~@7",
  AF: "db1@2 db2 db2@4 ~ db1@2 db2 db2@3 ~@2, ~@8 db2 ~@7",
})).s("gm_fretless_bass").gain(0.64)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note("<~@84 A B C D E F G H I>".pickRestart({
  A: "~@15 c2", B: "bb1 ~ bb1 bb1@4 ~ bb0@2 bb1 eb2@3 ~ eb2, ~@8 bb1 ~@7",
  C: "ab1@2 ab2 ab2@4 ab2 ab1@2 ab2 ab2@3 ~ g2", D: "f1@2 f2 f2@4 f2 f1@2 f2 f2@3 ~ eb2",
  E: "db1@2 db2 db2@4 db2 db1@2 db2 db2@3 ~ c2", F: "bb1 ~ bb1 bb1@4 bb1 db2@2 eb2 eb2@3 ~ eb2",
  G: "eb2@3 eb2 ab1@3 ~ ab1@2 ab2 ab2@3 ~ g2", H: "f1@2 f2 f2@4 ~ f2@2 c2!2 f1@2 f2!2", I: "ab2 ab1",
})).s("gm_fretless_bass").gain(0.24)

// chords · lead 8 bass lead · "Synth Brass"
const lead_8_bass_lead = note(`<
  ~@13 A@2 B@2 A@2 B@2 ~ A ~@15 C@2 D@2 C@2 D@2 ~ C ~@15 C@2 D@2 C@2 D@2 ~ C ~@3 C ~ D ~ C ~ C@2 D ~@8
>`.pickRestart({
  A: "~@10 [ab4,c5] [ab4,c5]@4 ~", B: "~@10 [ab4,db5] [ab4,db5]@4 ~", C: "~@2 [ab4,c5] [ab4,c5]@4 ~@9",
  D: "~@2 [ab4,db5] [ab4,db5]@4 ~@9", // Db5
})).s("gm_lead_8_bass_lead").gain(0.4).pan(0.2)

// chords · lead 8 bass lead · "Synth Brass" · soft notes · Db5 Ab Db5 Ab
const lead_8_bass_lead_soft = note(`<
  ~@85
  [~@2 [ab4,db5] [ab4,db5]@4 ~@9]
  [~@2 [ab4,c5] [ab4,c5]@4 ~@9]!2
  [~@2 [ab4,db5] [ab4,db5]@4 ~@9]!2
  ~
  [~@2 [ab4,c5] [ab4,c5]@4 ~@9]
  ~
>`).s("gm_lead_8_bass_lead").gain(0.2).pan(0.2)

// chords · harpsichord · "Harpsicord"
const harpsichord = note("<~@13 A@2 ~@13 B@2 ~@7 C@2 ~@23 D@3 ~@17 E ~@10>".pickRestart({
  A: "[~@8 [ab5,c6,eb6,ab6]@11 ~@13, ~@3 [ab3,c4]@6 ~@7, ~@7 [eb4,ab4,c5,eb5]@12 ~@13]/2", // Ab
  B: "[~@15 c5@3 ~@6 ab2@4 ~@4, ~@8 ab2@3 eb3@3 eb4@4 [eb5,ab6]@3 c4 eb3 c3@4 ~@5, ~@10 c3@3 c4@4 ~@2 c5@13, ~@12 ab3@4 ~@4 ab4@11 ~, ~@20 eb4 ab3@10 ~]/2", // Ab5
  C: "[~@16 [ab5,c6,eb6,ab6]@11 ~@5, ~@7 [ab3,c4]@6 ~@3, ~@15 [eb4,ab4,c5,eb5]@12 ~@5]/2", // Ab
  D: "[~@17 [c6,eb6,ab6]@10 ab3@10 ~@11, ~@5 [ab3,c4,eb4]@4 ~@7, ~@16 [ab4,c5,eb5,ab5]@11 ~@21]/3", E: "ab6@3 ~@13",
})).s("gm_harpsichord").gain(0.22).pan(0.7)

// chords · lead 2 sawtooth · "Saw wave"
const lead_2_sawtooth = note("<~@49 A B C D E F G@2 ~@36>".pickRestart({
  A: "[ab4,c5,eb5,ab5]@7 [ab4,c5,eb5] [ab4,c5,eb5,ab5]@3 ~ ab4 ab4@3, ~@11 db5@3 ~@2, ~@6 ab5 ~", // Ab
  B: "bb4@6 ab4 bb4 [eb4,g4,eb5]@8, [eb4,g4,eb5,g5]@8 ab4 ~@7", // Eb
  C: "g4 ab4 bb4@2 bb4@4 ~@2 bb4 db5 bb4 ~ bb4 ab4, [eb4,eb5]!2, ~@4 g4@3 ~ g4@6 ~@2", // Eb
  D: "g4 ~@2 g4 ~ g4@2 f4 eb4 [ab4,c5,eb5]@7, eb4@7 ~@9, ~ eb5@7 ~@8", // Ab
  E: "[ab4,c5,eb5,ab5]@8 [ab4,c5,eb5,ab5]@3 f5@3 eb5@2, ~@11 [ab4,c5]@5", // Ab
  F: "[eb5,g5]@2 f5 g5 eb5@2 ~ bb4 [eb5,bb5]@5 ~ [bb4,eb5]!2, [g4,bb4]@3 ~ [eb4,g4]@4, ~@4 f5 ~@11", // Eb Eb5 Gm Eb
  G: "[[eb5,g5,bb5]@2 [eb5,g5,bb5]@4 [bb4,eb5]!2 [eb5,g5,bb5]@2 [eb5,g5,bb5]@4 bb5 [ab5,bb5] ab5@4 bb5@2 ab5@2 [c5,eb5,ab5]@8, ~@14 eb5@5 ~ eb5@4 ~@8]/2", // Eb Eb5 Eb Absus2 Ab
})).s("gm_lead_2_sawtooth").gain(0.52).pan(0.4)

// other · piccolo · "Whistles"
const piccolo = note("<~@57 A@2 B@2 C@2 ~@30>".pickRestart({
  A: "[f6@20 g6 ab6 bb6 c7@7 bb6@2]/2", B: "[c7@6 g6 eb6 c6@24]/2", C: "[db6@22 eb6 f6 eb6@8]/2",
})).s("gm_piccolo").gain(0.52).pan(0.6)

// chords · pan flute
const pan_flute = note(`<
  A@2 B C D E F G H I J K L@4 M@4 N@4 O P@2 Q R S@2 Q T@5 U V@3 W@3 X Y@4 ~@8 H Z@2 AA AB@2 AC@2 AD AE@4 AF@4 ~ AG@3 Y@4
  V@3 ~@8
>`.pickRestart({
  A: "[eb5@9 ~ db5@2 c5@3 bb4@14 ~@3]/2", B: "bb4@4 ~ c5 db5 eb5@7 bb4@2", C: "bb4@3 c5@2 ~ db5 ~ eb5@5 ~@3",
  D: "eb5@8 db5@2 ~ c5@3 bb4 ~", E: "bb4@13 ~@3", F: "bb4@3 c5@3 db5 ~ eb5@7 ~", G: "bb4@3 c5@3 db5@2 eb5@5 ~@3",
  H: "eb5@15 ~", I: "eb5@3 f5@3 g5@2 ab5@6 eb5@2", J: "eb5@5 ~@3", K: "eb5@4 f5@2 g5@2 ab5@4 c5@2 eb5 ~",
  L: "[eb5@6 db5@5 c5@2 bb4@10 ~@5 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,db6]@3 ~@3 [ab5,db6]@2 [ab5,db6]@2]/4", // Ab Fm Ab Fm Db5
  M: "[~@2 [ab4,f5]@3 ~ [ab4,f5]@3 ~ [bb4,g5] ~ [c5,ab5]@2 db6@4 [eb5,ab5,c6]@4 [eb5,ab5,c6]@4 ~@2 [eb5,ab5,c6] ~ [eb5,ab5,c6]@5 ~ [eb5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 ~ ab5@2 ~@3 [ab5,db6]@2 [ab5,db6]@2, ~@14 f5@2 ~@38 db6@3 ~@7]/4", // Db Eb Fm Ab Ab5 Ab Fm Db5
  N: "[~@2 [db5,f5]@3 ~ [db5,f5]@3 ~ [eb5,g5] ~ [f5,ab5]@2 db6@4 [ab5,c6]@4 [ab5,c6]@4 ~@2 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@3 ~ f5@8, ~@14 ab5@2 ~@39 ab5@9]/4", // Db Eb Fm Ab Fm Ab Fm
  O: "[eb5,g5]@7 ~@9", P: "[eb5@3 db5@2 ~ c5@4 bb4@12 ~@2 bb4@3 c5@3 db5@2]/2", Q: "eb5@8 bb4@3 c5@3 db5 ~",
  R: "eb5@5 ~@3 eb5@8", S: "[db5@3 c5@3 bb4@4 ~ bb4@12 ~ bb4@3 c5@3 db5@2]/2",
  T: "[eb5@5 ~@3 eb5@15 ~ eb5@2 f5@2 g5@2 ab5@5 c5@3 eb5@2 eb5@10 ~@6 eb5@2 f5@2 g5@2 ab5@5 c5@3 eb5 ~ eb5@6 db5@2]/5",
  U: "db5@3 c5@2 bb4@11",
  V: "[~@4 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,db6]@4 ~@2 [ab5,db6]@2 [ab5,db6]@3 ~ [ab4,f5]@3 ~ [ab4,f5]@2]/3", // Ab Fm Ab Fm Db5 Db
  W: "[~@2 [bb4,g5] ~ [c5,ab5]@2 db6@4 [eb5,ab5,c6]@4 [eb5,ab5,c6]@4 ~@2 [eb5,ab5,c6] ~ [eb5,ab5,c6]@5 ~ [eb5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,db6]@2, ~@3 f5 ~@20]/3", // Eb Fm Ab Ab5 Ab Fm Db5
  X: "~@4 [ab5,db6]@2 [ab5,db6]@3 ~ [db5,f5]@3 ~ [db5,f5]@2", // Db5 Db
  Y: "[~@2 [eb5,g5] ~ [f5,ab5]@2 db6@4 [ab5,c6]@4 [ab5,c6]@4 ~@2 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@3 ~ f5@8 [eb5,g5]@7 ~, ~@6 ab5@2 ~@39 ab5@9 ~@8]/4", // Eb Fm Ab Fm Ab Fm Eb
  Z: "[eb5@2 f5@2 g5@2 ab5@5 c5@3 eb5@4 eb5@10 ~@4]/2", AA: "eb5@2 f5@2 g5@2 ab5@5 c5@3 eb5@2",
  AB: "[eb5@5 ~ db5@5 c5@3 ~ bb4@11 ~@6]/2",
  AC: "[~@4 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,db6]@2]/2", // Ab Fm Ab Fm Db5
  AD: "~@4 [ab5,db6]@2 [ab5,db6]@3 ~ [ab4,f5]@3 ~ [ab4,f5]@2", // Db5 Db
  AE: "[~@2 [bb4,g5] ~ [c5,ab5]@2 db6@4 [eb5,ab5,c6]@4 [eb5,ab5,c6]@4 ~@2 [eb5,ab5,c6] ~ [eb5,ab5,c6]@5 ~ [eb5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 ~ ab5@2 ~@3 [ab5,db6]@2 [ab5,db6]@3 ~ [db5,f5]@3 ~ [db5,f5]@2, ~@6 f5@2 ~@38 db6@3 ~@15]/4", // Eb Fm Ab Ab5 Ab Fm Db5 Db
  AF: "[~@2 [eb5,g5] ~ [f5,ab5]@2 db6@4 [ab5,c6]@4 [ab5,c6]@4 ~@2 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@3 ~ f5@8 ~@8, ~@6 ab5@2 ~@39 ab5@9 ~@8]/4", // Eb Fm Ab Fm Ab Fm
  AG: "[~@4 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@3 ~ f5@8 ~@8, ~@31 ab5@9 ~@8]/3", // Ab Fm Ab Fm
})).s("gm_pan_flute").gain(0.35).pan(0.4)

// chords · pan flute · soft notes
const pan_flute_soft = note("<~@85 A@3 B C@3 D>".pickRestart({
  A: "[~@2 [bb4,g5] ~ [c5,ab5]@2 db6@4 [eb5,ab5,c6]@4 [eb5,ab5,c6]@4 ~@2 [eb5,ab5,c6] ~ [eb5,ab5,c6]@5 ~ [eb5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,db6]@2, ~@3 f5 ~@20]/3", // Eb Fm Ab Ab5 Ab Fm Db5
  B: "~@4 [ab5,db6]@2 [ab5,db6]@3 ~ [db5,f5]@3 ~ [db5,f5]@2", // Db5 Db
  C: "[~@2 [eb5,g5] ~ [f5,ab5]@2 db6@4 [ab5,c6]@4 [ab5,c6]@4 ~@2 [ab5,c6] ~ [ab5,c6]@5 ~ [f5,ab5]@2 [ab5,c6]@5 ~ [ab5,c6]@2 [ab5,c6]@5 ~ [f5,ab5]@3 ~, ~@3 ab5 ~@20]/3", // Eb Fm Ab Fm Ab Fm
  D: "[eb5,ab5]", // Ab5
})).s("gm_pan_flute").gain(0.15).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@13 A B@10 C ~@3 D E B@48 ~@15>".pickRestart({
// … 51 more lines

More by Cyndi Lauper