Strudelify

Where the Boys Are

Francis Connie

KeyG majorTempo72 bpm
0:00/0:00
// Where the Boys Are — Connie Francis
// 72 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 electric guitar muted (copy of ch 2 acoustic bass)
// note: Full arrangement: all 48 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · piano
const piano = note(`<
  A@3 B C D E F G H I J C D E K C L M N O P Q N R S I J C T U J V W X Y Z AA AB Y AC@2 ~ AD AE AF AG@2
>`.pickRestart({
  A: "[~@14 [f#5,a5,d6] ~ [f#5,a5,d6] ~ [f#5,a5] d6 ~ [d3,f#5,a5,d6] ~ [f#5,a5,d6] ~@2 [f#5,a5,d6] ~@2 [d3,f#5,a5,d6]@2 ~ [d3,f#5,a5,d6]@3 ~@2 [f#5,a5]@11 [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~, ~@14 d2@35 ~@23, ~@23 d3@2 ~ d3@2 ~@8 [d3,d6]@12 ~@24]/3", // D F#m D F#m G Em D
  B: "[f#5,b5,d6] ~ [b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~ [f#5,b5,d6] ~", // Bm
  C: "[c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~", // C D
  D: "[d6,g6,b6] ~ [d6,g6,b6] ~ [d6,g6,b6] ~ [d6,g6,b6] ~ [d6,g6,b6] ~ [d6,g6,b6] ~ [d6,g#6,b6] ~ [d6,g#6,b6] ~ [d6,g#6,b6] ~ [d6,g#6,b6] ~ [d6,g#6,b6] ~ [d6,g#6,b6] ~", // G G#dim
  E: "[e6,g6,c7] ~ [e6,g6,c7] ~ [e6,g6,c7] ~ [e6,g6,c7] ~ [e6,g6,c7] ~ [e6,g6,c7] ~ [f#6,a6,c7] ~ [f#6,a6,c7] ~ [f#6,a6,c7] ~ [f#6,a6,c7] ~ [f#6,a6,c7] ~ [f#6,a6,c7] ~", // C F#dim
  F: "[g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~", // G Em
  G: "[e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,a6,b6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~ [c#6,f#6,a#6] ~", // Em Esus4 F#
  H: "[b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [b5,d#6,f#6] ~ [a5,d6,f#6] ~ [a5,d6,f#6] ~ [a5,d6,f#6] ~ [g5,c6,e6] ~ [a5,c6,e6] ~ [a5,c6,e6] ~", // B D C Am
  I: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~ [g5,b5,e6] ~", // G Em
  J: "[b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~ [b5,d6,f#6] ~", // Bm
  K: "[g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [g6,b6,d7] ~ [b6,d7] ~ [g6,b6,d7] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~ [e6,g6,b6] ~", // G Bm G Em
  L: "[b5,d6,g6] ~ [b5,d6,g6] ~ [b5,d6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [b5,d6,g6] ~@11", // G C G
  M: "~ e6 c6 g6 e6 c6 f#6 d6 c6 f#6 d6 c6, g6 ~@5", N: "f#6 d6 b5 f#6 d6 b5 e6 b5 g5 e6 b5 g5",
  O: "e6 c6 g5 e6 c6 g5 d6 c6 f#5 d6 c6 f#5", P: "d6 b5 g5 d6 b5 g5 f6 d6 b5 g#6 f6 d6",
  Q: "g6 e6 c6 g6 e6 c6 f#6 d6 c6 f#6 d6 c6", R: "e6 c#6 a5 e6 c#6 a5 f#6 c#6 a5 g6 c#6 a5",
  S: "[c6,e6] ~@4 d5 [a4,f#5,a5,d6]@5 ~ d7@7 ~@5, ~ a6@6 ~@4 f#6@3 ~@10, ~@5 d4@7 a6@3 ~@9", // C D
  T: "[d6,f6,a6] ~ [d6,f6,a6] ~ [d6,f6,a6] ~ [d6,f6,a6] ~ [d6,f6,a6] ~ [d6,f6,a6] ~ [d6,e6,g#6,b6] ~ [d6,e6,g#6,b6] ~ [d6,e6,g#6,b6] ~ [d6,e6,g#6,b6] ~ [d6,e6,g#6,b6] ~ [d6,e6,g#6,b6] ~", // Dm E7
  U: "[c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~ [c6,e6,a6] ~", // Am
  V: "[c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [c6,e6,g6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~", // C D
  W: "[b5,d6,g6] ~ [b5,d6,g6] ~ [b5,d6,g6] ~ [b5,d6,g6] ~ [b5,d6,g6] ~ [b5,d6,g6] ~ [a#5,c#6,g6] ~ g6 ~ [a#5,g6] ~ [d#5,d#6] ~ [f5,f6] ~ [g5,g6] ~", // G Gdim D# F G
  X: "[c6,d#6,g#6] ~ [d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~", // G# G#5 G# Fm
  Y: "[c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~ [c6,d#6,g6] ~", // Cm
  Z: "[c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6] ~ [d#6,g6,a#6] ~ [d#6,g6,a#6] ~ [d#6,g6,a#6] ~ [d#6,g6,a#6] ~ [d#6,g6,a#6] ~ [d#6,g6,a#6] ~", // C# D#
  AA: "[d#6,f#6,a#6] ~ [d#6,f#6,a#6] ~ [d#6,f#6,a#6] ~ [d#6,f#6,a#6] ~ [d#6,f#6,a#6] ~ [d#6,f#6,a#6] ~ [d#6,f6,a6,c7] ~ [d#6,f6,a6,c7] ~ [d#6,f6,a6,c7] ~ [d#6,f6,a6,c7] ~ [d#6,f6,a6,c7] ~ [d#6,f6,a6,c7] ~", // D#m F7
  AB: "[a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~ [a#5,c#6,f6] ~", // A#m
  AC: "[~ g#6@8 ~@7, a#4@2 [c#6,f6]@25 ~@21, ~ a#5@25 ~@22, ~ f5@2 ~@45]/2", AD: "~@21 [c6,d#6,g#6] ~ [c6,d#6,g#6]",
  AE: "~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,d#6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~ [c6,f6,g#6] ~@2 [c6,f6,g#6] ~ [c#6,f6,g#6] ~", // G# Fm C#
  AF: "g#6 [c#6,f6] ~ [c#6,f6,g#6] ~ [c#6,f6,g#6]@2 ~ [c#6,f6,g#6]@2 [c#6,f6,g#6]@2 ~ [c#6,f6,g#6]@2 ~ [c#6,f6,g#6]@2 ~ [c#6,f6,g#6]@2 ~ [c#6,f6,g#6]@2", // C#
  AG: "[~@2 [c#6,f6,g#6]@3 ~ [c#6,f6,g#6]@4 ~@2 g#6@23 ~@13, ~@11 [c6,d#6]@24 ~@13]/2", // C# Cm
})).s("gm_piano").gain(0.15)

// bass · acoustic bass
const bass = note(`<
  ~@2 A B C D E F G H A B C I E F J K L M N O P Q R S A B T U V W X Y Z AA AB AC AD AE AF@2 ~ AG@5
>`.pickRestart({
  A: "g2@8 ~@2 f#2@2 e2@9 ~ e2@2", B: "b1@9 ~ b1@2 d2@6 f#2@6", C: "c2@9 ~ c2@2 d2@5 ~ d2@4 a2@2",
  D: "g2@9 ~ b2@2 e2@6 g#2@4 b2@2", E: "c3@6 ~@4 e3@2 d3@5 ~ d2@2 e2@2 f#2@2", F: "g2@2 ~@3 f#2 e2@3 g2@2 b2",
  G: "c#3@6 c#3@4 c#3@2 f#2@5 ~ a#2@4 c#3@2", H: "b2@5 ~ b2@4 b2@2 d3@6 d2@2 e2@2 f#2@2",
  I: "g2@2 ~@3 b2 e2@3 g#2@2 b2", J: "a2@6 a2@4 e3@2 d3@5 ~ d2@2 e2@2 f#2@2", K: "g2@6 c3@6 g2@5 ~ g3@2 d3@2 g2@2",
  L: "a2@6 ~@4 e3@2 d3@5 ~ d2@2 e2@2 f#2@2", M: "g2@8 ~@2 b2@2 e2@5 ~ e2@2 g2@2 b2@2", N: "a2@3 a2@2 e3 d3@3 d3@2 d2",
  O: "g2@2 ~@3 g2 g#2@3 b2@3", P: "a2@4 ~@6 e3@2 d3@5 ~ d2@2 e2@2 f#2@2", Q: "g2@5 ~@5 b2@2 e2@5 ~ e2@2 g2@2 b2@2",
  R: "a2@2 ~@3 a2 c#3@3 e3@3", S: "a2 ~@5 d2@11 ~ d2@2 d2@2 d2@2", T: "c2@5 ~@5 c2@2 d2@5 ~ d2@4 a2@2",
  U: "b2@6 b2@4 f2@2 e2@5 ~ e2@2 g#2@2 b2@2", V: "a2@3 ~@2 a2 c3@3 e3@3", W: "b2@2 ~@3 b2 d3@3 f#3@3",
  X: "c3@3 ~@2 e3 d3@3 d2@3", Y: "g2@6 g2@2 f#2@2 e2@2 d#2@2 d#2!2 d#2@2 d#2@2 f2@2 g2@2",
  Z: "g#2@5 ~ g#2@4 g2@2 f2@6 f2@6", AA: "c2@3 c2@2 c2 d#2@3 g2@3", AB: "c#2@4 ~@6 f2@2 d#2@5 ~ d#2@4 a#2@2",
  AC: "c3@3 c2@2 f#2 f2@3 f2 a2 c3", AD: "a#2@2 ~@3 a#1 c#2@3 f2@3", AE: "c3@9 ~ c2@2 d#2@6 g2@6",
  AF: "[~ a#1@31 ~@16]/2", AG: "[~@21 g#2@6 ~@4 g2@2 f2@6 c2@7 c#2@7 c#2@5 f2@3 f#2@8 ~ f#2@12 g#2@30 ~@8]/5",
})).s("gm_acoustic_bass").gain(0.41)

// chords · string ensemble 1
const string_ensemble_1 = note("<A@2 ~@7 B C D E F@2 G ~@10 H I J K ~@3 L M N O P ~@2 Q@8>".pickRestart({
  A: "[~@14 [a4,b4] d5@5 b4 [c5,d5] ~@6 [f#5,g5,a5] [b5,c6,d6,e6] [a5,f#6]@18, ~@15 c5 ~@5 e5@6 ~@21]/2", // Asus2 Csus2 F#m Cmaj7 D
  B: "~@2 b4 a4", C: "g4", D: "~@3 f#6", E: "g6@5 ~@3",
  F: "[~@4 b5 [c5,c6] [d5,d6]@3 ~@3 c6@3 [b5,b6]@3 [a5,a6]@5 g6, ~@3 [e5,e6]@2 ~@3]/2", // C D B A E
  G: "[f#5,f#6]@12 [g5,g6]@2 f6 e6@9", H: "~@2 d5 g5 b5 d6 e6@3 g6@3", I: "f#6@2 b6@3 f#6 d6 b5", J: "[c6,e6]",
  K: "~@2 [d5,f5]@2 [e5,g5]@2 [f5,a5]@2 [g5,b5]@2 [f5,a5]@2 [g#5,b5]@9 ~@3", L: "~@18 d#6 ~ f6 ~ g6 ~",
  M: "d#6 f6, g#6", N: "[d#6,g6] [g6,c7] [d#6,g6] [c6,d#6]", O: "[f6,g#6]@6 [d#6,g6]@2 [c6,d#6]@3 [c#6,f6]",
  P: "[c6,d#6] [c#6,f6] [d#6,f#6] [c6,d#6] [a#5,c#6] [f#5,a#5] [a5,c6]@4 ~@2", // Cm C# D#m Cm A#m F# Am
  Q: "[~ [g#4,c5]@66 [g4,a#4]@26 d#4@25 ~@15 c#4@22 [c4,d#4]@29 ~@8, ~@93 g#4@91 ~@8, ~@93 c4@41 ~@58, ~@59 f4@19 ~@18]/8", // G# Gm Cm
})).s("gm_string_ensemble_1").gain(0.23).pan(0.6)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@13 A B C ~@2 D@2 E@2 ~@26>".pickRestart({
  A: "~@4 b4 ~@7", B: "~@11 g5", C: "~@13 [f#5,f#6] f5 e5@9", D: "d5/2", E: "[c5 d5@3]/2",
})).s("gm_string_ensemble_1").gain(0.14).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1_2 = note("<A@2 ~@7 B C@2 D E@2 F@2 ~ G H@2 I J K@3 L@4 ~@3 M N@2 O P Q@2 R@8>".pickRestart({
  A: "[~@14 [d3,a3,f#4]@7 [d3,a3,f#4]@8 [d3,a3,f#4]@19]/2", B: "~@2 [b3,d4] [a3,c4]",
  C: "[[g3,b3]@12 e3@11 f#3@24 ~]/2", D: "[e3,g3,c4] [f#3,a3,d4]",
  E: "[[g3,b3]@12 [e3,g#3]@11 ~ [c3,e3]@12 [d3,f#3,a3]@12, ~@23 g3@12 ~@13]/2", // G E C D
  F: "[[d3,g3,b3]@11 ~ [e3,g3]@24 [d3,f#3]@12]/2", G: "g3@11 f#3@13, [a3,c4]",
  H: "[[b3,d4]@24 ~@11 f#3@13, g3@3 ~, ~ [a3,c4]]/2", I: "g3 [f3,g#3], [b3,d4]", J: "g3@11 f#3@12 ~, [a3,c4]",
  K: "[[b3,d4]@12 [c#4,e4]@12 [c4,d4] ~@2 d3@9, g3@2 ~, ~@12 a3@13 ~@11]/3", // Bm C#m Csus2
  L: "[~@4 d4@2 g4@2 b4@2 d5@2 e5@6 g5@6 f#5@6 b5@9 f#5@3 d5@3 b4@3 [e3,g3]@12 f#3@12 f3@12 [e3,g#3]@12, b3@49 ~@11 a3@24 ~@12, [d2,d3]@12 e3@12 f#3@25 ~@47]/4", // Em E D
  M: "~@3 g3 f#3 e3 [d#3,g3,a#3]@6, ~ [b3,d4] ~@2", // D# Bm
  N: "[d#3@12 f3@11 ~ c4@17 ~ c4@6, [g#3,c4]@23 [d#3,g3]@18 [d#3,g3]@6 ~]/2", O: "[f3,g#3,c#4] [d#3,g3,a#3]",
  P: "[d#3,f#3,a#3]@11 [f3,a3,c4]@12 ~", Q: "[[f3,a#3,c#4]@23 ~ [g3,c4]@24, ~@23 d#4@25]/2",
  R: "[~ a#2@31 [d#2,d#3,c#4]@34 ~ [d#2,d#3,c#4,e4]@26 g#2@12 f2@13 c#3@15 f#2@22 g#2@29 ~@8, [f3,c#4] ~@5, ~ f4@66 ~@125]/8", // D#7 C#m C#
})).s("gm_string_ensemble_1").gain(0.21)

// other · french horn
const french_horn = note("<A@2 ~@7 B C D E F ~@16 G H I J K L M N ~@10>".pickRestart({
  A: "[~@14 d4@6 ~ e4@8 f#4@16 ~@3]/2", B: "~@2 f#4 e4", C: "d4 e3", D: "f#3", E: "g3 a3", F: "b3", G: "e4", H: "f#4",
  I: "g4@4 a4 ~ a4@2", J: "g4 ~", K: "d#4 f4", L: "g4@12 d#4@5 ~ d#4@6", M: "g#4@12 a#4@11 ~", N: "a#4@11 ~ a4@12",
})).s("gm_french_horn").gain(0.22).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note("<A B ~ C ~ D E F G H I ~@16 J ~@2 K L ~@5 M N O ~@4 P@4>".pickRestart({
  A: "~@14 [f#3,a3,d4] ~ [f#3,a3,d4] ~@2 [f#3,a3,d4] ~ [f#3,a3,e4] ~ [f#3,a3]", // D F#m7 F#m
  B: "e4 f#3 [a3,e4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@3 [a3,f#4]@5 ~@7, ~@12 d4 ~@11", // A5 D
  C: "~@12 [b4,d5]@5 ~ [f#4,b4,d5]@6, ~@11 f#4@5 ~@8", D: "~@2 [e4,g#4,b4,e5] [e4,g#4,b4]",
  E: "~ a4@9 ~@8 [a4,c5,e5]@5 ~, [a3,c4,e4]@10 ~@7 [d4,f#4]@5 ~@2", F: "~ d5@8 ~@9 [b3,e4]@6, [d4,g4,b4]@9 ~@8 g3@6 ~",
  G: "c#4@5 ~@7", H: "~@12 [f#4,b4]@6 ~ [a4,c5]@5, ~@12 d5@3 ~@3 e4@5 ~", I: "~ b4@8 ~@15, [d4,g4]@5 ~@7",
  J: "~@12 [b4,d5]@5 ~ [d4,f#4,b4]@6, ~@11 f#4@5 ~@8", K: "~@11 d#5@2 [c5,e5]@4 [a4,c5]@7, ~@10 b4@3 ~@11",
  L: "~@10 [c#5,f5]@2 ~ [d5,f#5]@4 [b4,d5]@7", M: "~@6 [d#4,f#4,a#4]@5 ~@2 a4@7 ~@4, ~@12 [c4,f4]@7 ~@5",
  N: "~@11 e5@2 [c#5,f5]@4 [a#4,c#5]@7, ~@10 c5@3 ~@11", O: "~@10 [d5,f#5]@2 ~ [d#5,g5]@4 [c5,d#5]@7",
  P: "[~@19 a#4@2 ~@2 c5@6 ~ g#4@7 [a#3,c#4,f4]@8 ~ [f#3,a#3,c#4]@12 ~ [g#3,c4,d#4]@17 ~@20, ~@22 [f4,g#4]@7 [c#4,f4]@7 ~@60]/4", // A#m F# G# Fm C#
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.9)

// other · vibraphone
const vibraphone = note("<~@30 A@2 B C D ~@3 E F ~@4 G@4>".pickRestart({
  A: "[e4 [c4,e4]!2 c4 e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 e4 [c4,e4] c4 [c4,e4] e4 c4 [c4,e4] e4!2 d4 [d4,f#4] f#4 d4 [d4,f#4] f#4 [d4,f#4] d4 [d4,f#4] f#4 d4 [d4,f#4] f#4 d4 [d4,f#4] f#4 d4 [d4,f#4]!2 f#4 d4 [d4,f#4] f#4 d4, ~@23 c4@2 ~@23]/2", // C D
  B: "g4 e4 [e4,g4] g4 e4 [e4,g4] g4 e4 [e4,g4] g4 [e4,g4] e4 [f#4,a4]@2 ~@4 [f#4,a4]@2 ~@4", C: "g4 ~ c#5 a#4",
  D: "c5 ~@2",
  E: "[c#4,f4] c#4 [c#4,f4]!2 f4 [c#4,f4] c#4 [c#4,f4]!2 f4 [c#4,f4] c#4 [c#4,f4] f4 [c#4,f4] c#4 [c#4,f4] f4 [c#4,f4] c#4 [c#4,f4] f4 [c#4,f4] c#4", // C#
  F: "[d#4,g4] g4 [d#4,g4] d#4 [d#4,g4] g4 [d#4,g4] d#4 [d#4,g4] g4 [d#4,g4] d#4 [d#4,g4] g4 [d#4,g4] d#4 [d#4,g4]!2 g4 d#4 [d#4,g4] g4 [d#4,g4] d#4", // D#
  G: "[~@22 [g#5,c6]@7 ~ g#5@7 [c#5,f5]@8 ~ [a#4,c#5]@13 [c5,d#5]@24 ~@13, ~@29 f5@7 ~@60]/4", // G# C# A#m Cm
})).s("gm_vibraphone").gain(0.14).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F E C G H C D E F E C I J K L K M K L N O P Q R S T D R U V W X Y Z AA AB@2 ~ AC AD AE@3
>`.pickRestart({
  A: "~@14 [f#3,a3,d4] ~ [f#3,a3,d4] ~@2 [f#3,a3,d4] ~ [f#3,a3,d4] ~@2", // D
  B: "[f#3,a3,d4] ~ [f#3,a3,d4] ~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@10", // D
  C: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~", // G Em
  D: "[f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~", // Bm
  E: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~", // C D
  F: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~", // G G#dim
  G: "[g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [a#3,c#4,e4] ~ [a#3,c#4,e4] ~ [a#3,c#4,e4] ~ [a#3,c#4,e4] ~ [a#3,c#4,e4] ~ [a#3,c#4,e4] ~", // Em A#dim
  H: "[f#3,b3,d#4] ~ [f#3,b3,d#4]!3 ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [b3,d4,f#4]@2 [b3,d4,f#4] ~ [b3,d4,f#4] ~ [a3,c4,e4]@2 [a3,c4,e4] ~ [a3,c4,e4]@2", // B Bm Am
  I: "[a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~", // Am D
  J: "[g3,b3,d4]@2 [g3,b3,d4]!3 ~ [g3,c4,e4]@2 [g3,c4,e4]!3 ~ [g3,b3,d4]@2 [g3,b3,d4]!3 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G C G
  K: "[a3,c4,e4]@2 [a3,c4,e4]!5 ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [f#3,a3,d4]@2 [f#3,a3,d4]!5 ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~", // Am D
  L: "[g3,b3,d4]@2 [g3,b3,d4]!5 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,e4]@2 [g3,b3,e4]!5 ~ [g3,b3,e4] ~ [g3,b3,e4] ~", // G Em
  M: "[g3,b3,d4] ~ [g3,b3,d4]!5 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4]!5 ~ [g#3,b3,d4]!4", // G G#dim
  N: "[a3,c#4,e4]@2 [a3,c#4,e4]!5 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]!5 ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  O: "[a3,c4,e4] ~@5 [d3,f#3,a3,d4]@9 ~@3 [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~", // Am D
  P: "[g3,b3,d4]@2 [g3,b3,d4]!3 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,e4]@2 [g3,b3,e4]!3 ~ [g3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4] ~", // G Em
  Q: "[f#3,b3,d4]@2 [f#3,b3,d4]!3 ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4]@2 [f#3,b3,d4]!3 ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~ [f#3,b3,d4] ~", // Bm
  R: "[g3,c4,e4]@2 [g3,c4,e4]!3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~ [f#3,a3,d4] ~", // C D
  S: "[f3,a3,d4] ~ [f3,a3,d4]!3 ~ [f3,a3,d4] ~ [f3,a3,d4]!3 ~ [g#3,b3,d4] ~ [g#3,b3,d4]!3 ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~ [g#3,b3,d4] ~", // Dm G#dim
  T: "[a3,c4,e4]@2 [a3,c4,e4]!5 ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~ [a3,c4,e4] ~", // Am
  U: "[g3,b3,d4]@2 [g3,b3,d4]!3 ~ [g3,b3,d4]@2 [g3,b3,d4]!3 ~ [g3,a#3,d#4]@2 [g3,a#3,d#4]!3 ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~", // G D#
  V: "[g#3,c4,d#4]@2 [g#3,c4,d#4]!3 ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,f4]@2 [g#3,c4,f4]!3 ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~", // G# Fm
  W: "[g3,c4,d#4]@2 [g3,c4,d#4]!3 ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4]@2 [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~", // Cm
  X: "[g#3,c#4,f4]@2 [g#3,c#4,f4]!3 ~ [g#3,c#4,f4] ~ [g#3,c#4,f4] ~ [g#3,c#4,f4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~ [g3,a#3,d#4] ~", // C# D#
  Y: "[f#3,a#3,d#4] ~ [f#3,a#3,d#4]!3 ~ [f#3,a#3,d#4] ~ [f#3,a#3,d#4] ~ [f#3,a#3,d#4] ~ [a3,c4,d#4] ~ [a3,c4,d#4]!3 ~ [a3,c4,d#4] ~ [a3,c4,d#4] ~ [a3,c4,d#4] ~", // D#m Adim
  Z: "[a#3,c#4,f4]@2 [a#3,c#4,f4]!5 ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~ [a#3,c#4,f4] ~", // A#m
  AA: "[c4,d#4,g4]@2 [c4,d#4,g4]!5 ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~ [c4,d#4,g4] ~", // Cm
  AB: "[~@2 f4@25 ~@21, a#2@13 ~@11, ~ [g#3,c#4]@26 ~@21]/2", AC: "~@21 [g#3,c4,d#4] ~ [g#3,c4,d#4]",
  AD: "~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~ [g#3,c4,f4] ~@2 [g#3,c4,f4] ~ [f3,g#3,c#4] ~", // G# Fm C#
  AE: "[[f3,g#3,c#4] ~@2 [f3,g#3,c#4] ~ [f3,g#3,c#4] ~@2 [f3,g#3,c#4] ~ [f3,g#3,c#4] ~@2 [f#3,a#3,c#4]@3 ~@6 [a#3,c#4]@4 [f#3,a#3,c#4]@4 [f#3,a#3,c#4]@4 ~ [c4,d#4]@24 ~@13, ~@21 f#3@4 ~@9 [g#2,g#3]@24 ~@14]/3", // C# F# A#m F# Cm G#
})).s("gm_acoustic_guitar_steel").gain(0.11)

// drums · snare
const snare = s("sd").struct(`<
  A B C D E@2 F@2 G@2 H C G@2 I J@2 K L M@2 N M O P Q R@2 S K T U V W X@3 Y Z@2 ~@3 AA AB AC ~@2
>`.pickRestart({
  A: "~@14 x ~ x ~ x ~@2 x ~ x", B: "~@2 x ~@2 x ~@2 x ~@4 x ~@10", C: "x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  D: "x ~ x ~@3 x ~ x ~@3 x ~ x!2 ~@2 x ~ x ~@3", E: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x!2 ~@2 x ~ x ~@3",
  F: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3", G: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~",
  H: "x ~ x!3 ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3", I: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3",
  J: "x ~ x ~@3 x ~ x ~ x ~ x ~ x!2 ~@2 x ~ x ~@3", K: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x ~ x ~@3",
  L: "x ~ x!2 ~@2 x ~ x ~@3 x ~ x!5 ~ x ~@3", M: "x ~ x!5 ~ x ~@3 x ~ x!5 ~ x ~@3", N: "x ~ x!5 ~ x ~@3 x ~ x!5 ~ x!4",
  O: "x ~ x!5 ~ x ~@3 x ~ x!5 ~ x ~ x ~", P: "x ~ x!5 ~ x ~ x ~ x ~ x!5 ~ x ~ x ~", Q: "~@3 x ~@5 x!3",
  R: "x ~ x!2 ~@2 x ~ x ~ x ~ x ~ x!2 ~@2 x ~ x ~ x ~", S: "x ~ x!2 ~@2 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~",
  T: "x ~ x!5 ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~", U: "x ~ x!3 ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~ x ~",
  V: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", W: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x ~ x ~ x ~",
  X: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", Y: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!5 ~ x ~ x ~",
  Z: "x ~ x!5 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~", AA: "~@21 x ~ x",
  AB: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~", AC: "x ~@4 x ~@2 x ~@2 x ~ x ~@10",
})).gain(0.27)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@2 A@4 B@2 C@2 D A C@2 A E@2 F B D@2 G D G ~@2 H@3 F G I ~@13 J ~@2>".pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x", B: "~@2 x ~@2 x ~@5 x", C: "~@2 x ~@2 x ~@6", D: "~@5 x ~@5 x", E: "~@2 x ~@5 x ~@2 x",
  F: "~@11 x", G: "~@5 x ~@6", H: "~ x ~@2 x ~", I: "~@5 x ~@4 x ~@13", J: "~ x ~@6",
})).gain(0.14)

// drums · clap
const clap = s("cp").struct("<A B C@23 D C@7 E C@6 ~@4 F ~@3>".pickRestart({
  A: "~@23 x", B: "~@2 x ~@2 x ~@2 x ~@4 x ~@10", C: "~ x ~ x", D: "x!2 ~ x", E: "x ~@2 x ~@2 x ~@2 x!3",
  F: "~ x ~@3 x ~@2",
})).gain(0.41)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<[~@14 x ~ x ~ x ~@2 x ~@2] ~@24 [~@10 x!2] ~@7 [~@2 x ~@2 x ~@2 x ~@3] ~@14>")
  .gain(0.23)

// drums · open hat
const open_hat = s("oh").struct("<~@46 [~@5 x ~@6] ~>").gain(0.27)

// … 10 more lines

More by Francis Connie