Strudelify

My Special Angel

Bobby Vinton

KeyD♭ majorTempo74 bpm
0:00/0:00
// My Special Angel — Bobby Vinton
// 74 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/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 B A B A C D E F G H I A C D E F G J K L M L N O P Q R A C D E F G J K L M L N O P Q S T U V W X Y Z AA AB AC AD@2
  AE@2 ~
>`.pickRestart({
  A: "[ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~", // Db Bbm
  B: "[bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~ [bb4,eb5,gb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Ebm Ab
  C: "[ab4,c5] ~ [ab4,c5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~ [ab4,c5,f5] ~", // Ab Fm
  D: "[gb4,bb4,db5,eb5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Ebm7 Gb Ab
  E: "[ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,d5,f5] ~ [ab4,d5,f5] ~ [ab4,d5,f5] ~ [ab4,d5,f5] ~ [ab4,d5,f5] ~ [ab4,d5,f5] ~", // Db Ddim
  F: "[gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [gb4,bb4,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Ebm Ab
  G: "[f4,ab4] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~", // Fm Db Bbm
  H: "[g4,bb4,db5,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb7 Eb
  I: "[ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [gb4,c5,eb5] ~ [gb4,c5,eb5] ~ [gb4,c5,eb5] ~ [gb4,c5,eb5] ~ [gb4,c5,eb5] ~ [gb4,c5,eb5] ~", // Ab Cdim
  J: "[g4,bb4,db5,eb5]@2 [g4,bb4,db5,eb5] ~ [g4,bb4,db5,eb5] ~ [g4,bb4,db5,eb5] ~ [g4,bb4,db5,eb5]@2 [g4,bb4,db5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~ [ab4,c5,eb5] ~", // Eb7 Ab
  K: "[f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~", // Db
  L: "[bb3,eb4,gb4] ~@5 [bb3,eb4,gb4] ~ [bb3,eb4,gb4] ~ [bb3,eb4,gb4] ~ [ab3,c4,eb4] ~@5 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~", // Ebm Ab
  M: "[ab3,db4,f4] ~@5 [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [bb3,db4,f4] ~@5 [bb3,db4,f4] ~ [bb3,db4,f4] ~ [bb3,db4,f4] ~", // Db Bbm
  N: "[ab3,db4,f4] ~@2 [ab3,db4,f4]!9", // Db
  O: "[f3,ab3,c4] ~@5 [f3,ab3,c4]@2 [f3,ab3,c4]@4 [bb2,e3,g3] ~@5 [bb2,e3,g3]@2 [bb2,e3,g3]@2 [bb2,e3,g3]@2", // Fm Edim
  P: "[eb3,f3,ab3,c4] ~@5 [f3,ab3,c4]@2 [f3,ab3,c4]@4 [bb2,e3,g3] ~@5 [bb2,e3,g3]@2 [bb2,e3,g3]@2 [bb2,e3,g3] ~", // Fm7 Fm Edim
  Q: "[db3,g3,bb3]@2 ~@8 [db3,g3,bb3] ~ [db3,g3,bb3] ~@9 [db3,g3,bb3] ~", // Gdim
  R: "~@2 ab3 ~ ab3@2 ab3@2 [ab3,eb4]@2 [ab3,eb4]@2 [ab2,ab3,eb4]@2 [ab2,ab3,eb4,ab4]@2 [ab2,ab3,eb4,ab4]@2 [ab2,ab3,eb4,ab4]@2 [ab2,ab3,eb4,ab4] ~ [ab2,ab3,eb4,ab4] ~, ab2 ~", // Ab5
  S: "[ab1,ab2,c3,eb3] ~ [ab1,ab2,c3,eb3] ~ [ab1,ab2,c3,eb3] ~ [ab1,eb3]@2 [ab2,c3,eb3] ~ [ab2,c3,eb3]@2 a1@2 [a2,db3,e3] ~ [a2,db3,e3]@2 a1@2 [a2,db3,e3]@2 a1 ~, ~@6 [ab2,c3] ~ ab1@4 ~@12", // Ab Ab5 Ab A Ab
  T: "[a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [b4,d5,gb5] ~ [b4,d5,gb5] ~ [b4,d5,gb5] ~ [b4,d5,gb5] ~ [b4,d5,gb5] ~ [b4,d5,gb5] ~", // D Bm
  U: "[a4,db5] ~ [a4,db5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~ [a4,db5,gb5] ~", // A Gbm
  V: "[g4,b4,d5,e5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~", // Em7 G A
  W: "[a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,d5,gb5] ~ [a4,eb5,gb5] ~ [a4,eb5,gb5] ~ [a4,eb5,gb5] ~ [a4,eb5,gb5] ~ [a4,eb5,gb5] ~ [a4,eb5,gb5] ~", // D Ebdim
  X: "[g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [g4,b4,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~", // Em A
  Y: "[gb4,a4] ~ [gb4,a4,d5] ~ [gb4,a4,d5] ~ [gb4,a4,d5] ~ [gb4,a4,d5] ~ [gb4,a4,d5] ~ [gb4,b4,d5] ~ [gb4,b4,d5] ~ [gb4,b4,d5] ~ [gb4,b4,d5] ~ [gb4,b4,d5] ~ [gb4,b4,d5] ~", // Gbm D Bm
  Z: "[ab4,b4,d5,e5]@2 [ab4,b4,d5,e5] ~ [ab4,b4,d5,e5] ~ [ab4,b4,d5,e5] ~ [ab4,b4,d5,e5]@2 [ab4,b4,d5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~ [a4,db5,e5] ~", // E7 A
  AA: "[gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5] ~ [gb4,bb4,db5]@2 [gb4,b4] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5]@2", // Gb B5 B
  AB: "[d4,ab4,b4] ~ [d4,ab4,b4] ~ [d4,ab4,b4] ~ [d4,ab4,b4] ~ [d4,ab4,b4] ~ [d4,ab4,b4]@2 [e4,a4] ~ [e4,a4]@2 [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~", // Abdim A5
  AC: "[d4,gb4,a4] ~ [d4,gb4,a4] ~ [d4,gb4,a4] ~ [d4,gb4,a4] ~ [d4,gb4,a4] ~ [d4,gb4,a4] ~ [d4,gb4,b4] ~ [d4,gb4,b4] ~ [d4,gb4,b4] ~ [d4,gb4,b4] ~ [d4,gb4,b4]@2 [d4,gb4,b4] ~", // D Bm
  AD: "[~ b2@11 ~@15 db4@21, [e2,g2,d3,g3,b3] a2@3, ~ db3@2, ~@19 e3@28 ~, ~@23 a3@25]/2", // Em7
  AE: "[[d1,gb3,a3], d3@23 ~]/2", // D
})).s("gm_piano").gain(0.31)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A B C D E F G H I J K L E F G M I J N O P Q P R S T U V E F G H I J N O P Q P R S T U W X Y Z AA AB AC AD AE AF AG
  AH@2 AI@3
>`.pickRestart({
  A: "db2@7 ~ db2@2 c2@2 bb1@9 ~ ab1@2", B: "eb1@8 eb2@2 eb1@2 ab1@7 ~ bb1@2 c2 ~", C: "db2@9 ~ c2@2 bb1@9 ~ bb1@2",
  D: "eb1@4 eb2 eb1 ab1@3 bb1@2 c2", E: "db2@8 ~@2 db2@2 bb1@9 ~ bb1@2", F: "f1@9 ~ f1@2 f2@4 c2@2 f2@4 c2@2",
  G: "gb1@9 ~ gb1@2 ab1@8 ~@2 ab1@2", H: "db2@8 ~@2 db2@2 d2@5 ~ d2@4 ~@2", I: "eb2@9 ~ eb2@2 ab1@5 ~ ab1@5 ~",
  J: "db2@8 ~@2 db2@2 bb1@5 ~ bb1@4 ~@2", K: "eb2@8 ~@2 eb2@2 bb1@5 ~ eb2@4 bb1@2",
  L: "ab1@7 ~ ab1@2 eb2@2 ab2@4 eb2@2 ab1@4 ~@2", M: "db2@8 ~@2 db2@2 d2@5 ~ d2@4 ~@2, gb8 ~@23",
  N: "eb2@9 ~ eb2@2 ab1@6 ab2@2 eb2@2 ab1@2", O: "db2@9 ~ ab1@2 db2@6 f2@4 ~@2",
  P: "eb2@2 ~@4 eb2 ~ eb2 ~ eb2@2 ab1@3 ~@3 ab1 ~ ab1 ~ ab1@2",
  Q: "db2@2 ~@4 db2 ~ db2@2 c2@2 bb1@3 ~@3 bb1 ~ bb1 ~ bb1@2",
  R: "db2@2 ~@4 db2 ~ db2@2 ab1@2 db2 ~ db2@2 db2@2 db2 ~ db2 ~ db2 ~", S: "f1 ~@2 f1 f2 f1 c2 ~@2 c2 g1 c2",
  T: "f1@2 ~ f2 f1 f2 c2 ~@2 c2 g1 c2", U: "eb2@6 ~@2 eb2 ~ eb2 ~ eb2@6 ~@2 eb2@2 bb1@2",
  V: "ab1@7 ~@3 ab1@2 ~@2 ab2@2 eb2@2 ab2@2 eb2@2 ab1@2",
  W: "ab1@6 ab2@2 ~@2 ab2@2 ~@2 a2@2 a1@2 a2@2 a1@2 a2 ~, ~@2 ab1 a1 ~@2", X: "d2@8 ~@2 d2@2 b1@9 ~ b1@2",
  Y: "gb1@9 ~ gb1@2 gb2@4 db2@2 gb2@4 db2@2", Z: "g1@9 ~ g1@2 a1@8 ~@2 a1@2", AA: "d2@8 ~@2 d2@2 eb2@5 ~ eb2@4 ~@2",
  AB: "e2@9 ~ e2@2 a1@5 ~ a1@5 ~", AC: "d2@8 ~@2 d2@2 b1@5 ~ b1@4 ~@2", AD: "e2@9 ~ e2@2 a1@6 a2@2 e2@2 a1@2",
  AE: "gb1@6 gb2@2 db2@2 gb1@2 b1@5 ~ b1@4 ~@2", AF: "e2@7 ~ e2@2 b1@2 a1@6 a2@2 e2@2 a1@2",
  AG: "d2@9 ~ d2@2 b1@8 ~@2 b1@2", AH: "[e2 a1@3]/2", AI: "[d2@49 ~@23]/3",
})).s("gm_acoustic_bass").gain(0.36)

// chords · electric guitar clean · "Lead Guitar"
const electric_guitar_clean = note(`<
  A B C D E F G H I E J K E F G H I E L M ~@6 N O E F G H I E L M ~@6 N P Q R S T U Q V W X Y ~@5
>`.pickRestart({
  A: "~@5 f4 ~@3 bb3@3, db3 bb2, ~ ab3@5 ~@2 f3@4, ~ db4@2 ~@3, ~ eb4 ~@2",
  B: "~@4 f4 gb4 ~@2 ab4 ~@2 ab4, ~@2 eb3@9 ~@7 bb4@6, ~@4 bb3@7 ~ ab3@12, ~@6 eb4@5 ~@3 eb4@5 ~@5",
  C: "~@4 db4@2 ~@4 eb4@2 ~@4 f3@2 bb3@5 ~, db3@4 bb2@3 ~, ~ ab3@5 ~@6, ~@6 eb4@4 ~@2 db4@7 ~@5, ~@2 f4 ~@3",
  D: "~@5 bb4 ~@3 ab4@2 ~, ~ eb3@5 ~@6, ~@4 bb3@8 ab3@9 ~@3, ~@6 eb4@6 ~@2 c4@7 ~@3, ~@8 gb4@4 ~@4 eb4@5 ~@3",
  E: "~@6 [db4,f4,ab4] ~@11 [bb3,db4,f4] ~@5", F: "~@6 [ab3,c4,f4] ~@11 [ab3,c4,f4] ~@5",
  G: "~@6 [gb3,bb3,db4] ~@11 [ab3,c4,eb4] ~@5", H: "~@6 [ab3,db4,f4] ~@11 [ab3,d4,f4] ~@5",
  I: "~@6 [eb4,gb4,bb4] ~@11 [ab3,c4,eb4] ~@5", J: "~@6 [bb3,eb4,g4] ~@11 [bb3,eb4,g4] ~@5",
  K: "ab4@3 gb4@3 f4@3 eb4@2 ~", L: "~@6 [db5,g5,bb5] ~@9 c5@2 eb5 ~@5, ~@14 ab4@5 ~@5",
  M: "~@6 [db4,f4,ab4] ~@7 db4@2 ~@2 f4@2 eb4@2 db4 ~, ~@4 eb4 ~", // Db
  N: "~@5 bb3, eb3@6 bb3 eb5 bb3 g5@3, ~ bb3@4 g4@7, ~ db4@5, ~@3 g4 bb4@8", O: "~ ab3 ab4 gb3 gb4@2 f3 f4@2 eb3 eb4 ~",
  P: "~@8 bb4@2 ab4 ~@9 a4@2 ~@2, ~@2 ab3@9 ~@3 a3@8 ~@2, ~@4 eb4@7 ~@7 db5@4 ~@2, ~@3 ab4@2 ~@3 a4@2 ~@2",
  Q: "~@6 [d4,gb4,a4] ~@11 [b3,d4,gb4] ~@5", R: "~@6 [a3,db4,gb4] ~@11 [a3,db4,gb4] ~@5",
  S: "~@6 [g3,b3,d4] ~@11 [a3,db4,e4] ~@5", T: "~@6 [a3,d4,gb4] ~@11 [a3,eb4,gb4] ~@5",
  U: "~@6 [e4,g4,b4] ~@11 [a3,db4,e4] ~@5", V: "~@6 [d5,ab5,b5] ~@9 db5@2 e5 ~@5, ~@14 a4@5 ~@5",
  W: "~@3 gb4 ~ gb4 ~@5 a3, ~ gb3@5 ~@3 gb4@3, ~@2 bb3@4 ~ a3@4 ~, ~@2 bb4 ~ eb4!2",
  X: "e3@6 [b3,e4,ab4] ~@15 a3@2, ~@7 a2@5, ~@8 a3@3 ~, ~@3 e4, ~@5 db4", // E
  Y: "d3@6 [d4,gb4,a4] ~@11 [d4,gb4]@2 ~@4, ~@7 b2@3 ~@2, ~@4 b3 ~", // D
})).s("gm_electric_guitar_clean").gain(0.36)

// chords · acoustic guitar nylon · "Ac. Guitar"
const acoustic_guitar_nylon = note(`<
  A B A B C D E F G H I J C D E F G K L M N O N P Q R S T C D E U G K L M N O N P Q R V@2 W X Y Z AA AB AC AD AE AF AG@2
  AH@2 ~
>`.pickRestart({
  A: "~@6 [db4,f4,ab4] ~@11 [bb3,db4,f4]@2 ~@4", B: "~@3 [bb3,eb4,gb4] ~@5 [ab3,c4,eb4] ~@2",
  C: "~@5 f4 ~@5 db4, db3@13 ~@5 db4@4 ~@2, ~@2 ab3@11 ~ f3@10, ~@4 db4@4 db4@5 ~@3 bb3@4 bb3@4, ~@3 f4@2 ~ bb2@6",
  D: "~@11 f4, f3@3 f4@2 c4 f4 c4@3 ab4@2, ~ ab3@11, ~@2 c4 ab4@5 f4 f3@3, ~ c5@3",
  E: "~@5 gb3 ~@5 c4, gb2 ab2, ~ gb3@4 ~@2 eb3@5, ~ bb3!2 ~ ab3@2, ~@3 db4@3 ~@3 c4 eb4@2",
  F: "~@10 f4@2 ~@8 f4@2 d4 ~, db3@12 d3@11 ~, ~@2 ab3@10 ~@6 bb4@5 ~, ~@2 db4@4 ~ d4@4 ~, ~@3 f4 ab4@2 ~@2 f4@2 ~@2",
  G: "~@10 bb4@2 gb3 ~@5 ab4@6, eb3 ab3, ~@2 gb3@6 gb4@5 ~@11, ~@4 bb3@9 ~ c4@10, ~@6 eb4@7 ~@3 eb4@8",
  H: "~ ab3 ~@3 c3 ~@5 bb3, db3@13 ~@3 db4@4 db4@4, ~@4 db4@4 db4@5 ~ bb3@8 ~@2, ~ f4 bb2@2, ~@3 f4",
  I: "~@2 bb3!2 ~@7 bb3, eb3@2 eb3!2, ~ g3@4 g3@2 g3@5, ~@3 eb4@7 eb4@2, ~@4 bb3@4 bb3@3 ~",
  J: "~@4 ab3@2 gb3@2 ~@2 gb3@2 f3@2 ~@2 f3@2 eb3@2 eb4@2 eb3 ~, ab3 ~@5, ~@2 ab4@5 ~ gb4@5 ~ f4@5 ~@5",
  K: "~@2 ab3@2 ~@6 c3@2 ~@8 db4@2 bb3 ~, db3@12 bb2@11 ~, ~@4 db4@4 db4@5 ~ bb3@8 ~@2, ~@6 f4@7 ~@3 db4@4 ~@4, ~@18 f4@5 ~",
  L: "~@5 db4 ~ eb4 ~@3 eb4, eb3 ab3, ~ db4@4 ~@7, ~ g4!2 ~ ab4!2, ~ bb4 ~ c5",
  M: "~@10 db4@2 ~@2 db4@2 ~@2 ab4@2 f4@2 db4 ~, db3@12 db3@11 ~, ~ db4@4 ~@7, ~ f4!2 ~ f4 ~, ~ ab4 ~@2",
  N: "[eb4,gb4,bb4]@2 ~@4 [eb4,gb4,bb4] ~ [eb4,gb4,bb4] ~ [eb4,gb4,bb4] ~ [eb4,ab4,c5] ~@5 [eb4,ab4,c5]@2 [eb4,ab4,c5]@2 [eb4,ab4,c5]@2", // Ebm Ab
  O: "[db4,f4,ab4] ~@5 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [f4,ab4] ~@5 [db4,f4,bb4]@2 [db4,f4,bb4]@2 [db4,f4,bb4]@2", // Db Fm Bbm
  P: "[db4,f4,ab4] ~@2 [db4,f4,ab4]!6 [db4,f4,ab4]@3", // Db
  Q: "[f4,ab4,c5] ~@7 [f4,ab4,c5]@4 [e4,g4] ~@7 [e4,g4]@2 [e4,g4]@2", // Fm Em
  R: "[f4,ab4,c5] ~@7 [f4,ab4,c5]@4 [e4,g4] ~@7 [e4,g4]@2 [e4,g4] ~", // Fm Em
  S: "[bb3,eb4,g4] ~@7 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@7 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2", // Eb
  T: "~@2 ab3@2 ~@10 gb3@2 [gb3,c4,eb4]@2 [gb3,c4,eb4]@2 [gb3,c4,eb4]@2 [gb3,c4,eb4] ~, ab2@12 ab2@11 ~, ~@4 ab3@4 ab3@15 ~, ~@3 [c4,eb4]@2 [c4,eb4]@3 ~@4", // Cdim Cm
  U: "gb9 ~@9 f4@2 ~@8 f4@2 d4 ~, db3@12 d3@11 ~, ~@2 ab3@10 ~@6 bb4@5 ~, ~@2 db4@4 ~ d4@4 ~, ~@3 f4 ab4@2 ~@2 f4@2 ~@2",
  V: "[[bb3,eb4,g4] ~@7 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@7 [bb3,eb4,g4]@2 ~@12 ab4@2 a3@2 ~@6 a3@2 a4 ~, ~@11 [bb3,eb4,g4]@7 ~@2 a3@2 ~@2, ~@13 ab3@2 ab3@3 ~@6, ~@14 ab4@3 ~@2 a4@2 a4@2 ~, ~@8 c5 ~@3]/2", // Eb
  W: "~@5 gb4 ~@5 d4, d3@13 ~@5 d4@4 ~@2, ~@2 a3@11 ~ gb3@10, ~@4 d4@4 d4@5 ~@3 b3@4 b3@4, ~@3 gb4@2 ~ b2@6",
  X: "~@11 gb4, gb3@3 gb4@2 db4 gb4 db4@3 a4@2, ~ a3@11, ~@2 db4 a4@5 gb4 gb3@3, ~ db5@3",
  Y: "~@5 g3 ~@5 db4, g2 a2, ~ g3@4 ~@2 e3@5, ~ b3!2 ~ a3@2, ~@3 d4@3 ~@3 db4 e4@2",
  Z: "~@10 gb4@2 ~@8 gb4@2 eb4 ~, d3@12 eb3@11 ~, ~@2 a3@10 ~@6 b4@5 ~, ~@2 d4@4 ~ eb4@4 ~, ~@3 gb4 a4@2 ~@2 gb4@2 ~@2",
  AA: "~@10 b4@2 g3 ~@5 a4@6, e3 a3, ~@2 g3@6 g4@5 ~@11, ~@4 b3@9 ~ db4@10, ~@6 e4@7 ~@3 e4@8",
  AB: "~@2 a3@2 ~@6 db3@2 ~@8 d4@2 b3 ~, d3@12 b2@11 ~, ~@4 d4@4 d4@5 ~ b3@8 ~@2, ~@6 gb4@7 ~@3 d4@4 ~@4, ~@18 gb4@5 ~",
  AC: "~@5 d4 ~ e4 ~@3 e4, e3 a3, ~ d4@4 ~@7, ~ ab4!2 ~ a4!2, ~ b4 ~ db5",
  AD: "~@5 bb4 ~@5 b4, gb3 b3, ~@2 db4@11 ~ eb4@10, ~@4 gb4@9 ~@3 gb4@8, ~@6 bb4@2 db5@5 ~@5 b4@2 eb5@4",
  AE: "~@5 ab4 ~@3 e4@3, e3 a3, ~@2 d4 ~ a4@2",
  AF: "~@10 gb4@2 ~@8 gb4@2 d4 ~, d3@12 b2@11 ~, ~@2 a3@10 ~@6 b4@5 ~, ~@2 d4@4 ~ d4@4 ~, ~@3 gb4 a4@2 ~@2 gb4@2 ~@2",
  AG: "[~ b3@2 a3@9, e3 ~@3, ~ g3@5 ~@18]/2",
  AH: "[~@18 a4@23 ~@7, d2@41 ~@7, ~@4 d4@37 ~@7, ~@4 e4@17 ~@3, ~@12 gb4@29 ~@7]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.31)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  A B A C D E F G H D I J D E F G H D K L ~@6 M N D E F G H D K L O P O Q ~@2 M R S T U V W S X Y Z AA AB@2 AC@2 ~
>`.pickRestart({
  A: "[ab4,db5,f5]@3 ~ [ab4,db5,f5]@8 [bb4,db5,f5]@2 ~@2 [bb4,db5,f5]@8", B: "~@3 gb5 ab5 gb5 ab5@3 gb5@3",
  C: "~@3 gb5 ab5 gb5 ab5@3 gb5@2 ~", D: "[ab4,db5,f5] [bb4,db5,f5]", E: "[ab4,c5]", F: "[gb4,bb4,db5] [ab4,c5,eb5]",
  G: "[ab4,db5,f5]@6 [ab4,d5,f5]@5 ~", H: "[eb4,gb4,bb4] [ab4,c5]", I: "~@12 eb5@11 ~, [g4,bb4]@23 ~",
  J: "[ab4,c5,eb5]@11 ~", K: "[db5,g5,bb5] [eb5,ab5,c6]", L: "[ab4,db5,f5]@11 ~", M: "~ eb5, g4, ~ bb4@3",
  N: "~@10 ab5@13 ~, ab4@23 ~, ~@4 c5@19 ~, ~@6 eb5@17 ~", O: "eb5@7 ~ eb5 ~ eb5@2 bb5@8 ab5@2 bb5@2",
  P: "c6@4 ab5 f5 ab5@4 ~@2", Q: "f5@8 ~@3 bb5", R: "[ab4,c5,eb5]@12 [a4,db5,e5]@11 ~", S: "[a4,d5,gb5] [b4,d5,gb5]",
  T: "[a4,db5]", U: "[g4,b4,d5] [a4,db5,e5]", V: "[a4,d5,gb5]@6 [a4,eb5,gb5]@5 ~", W: "[e4,g4,b4] [a4,db5]",
  X: "[d5,ab5,b5] [e5,a5,db6]", Y: "[e4,bb4,db5] [bb4,gb5] [eb5,gb5] [eb5,gb5,b5], ~@6 db5@3 ~@3 a4@2 ~@10",
  Z: "[d5,ab5]@6 [a4,db5,e5]@5 ~", AA: "[d5,gb5,a5]@4 [d5,gb5,a5]@8 [d5,gb5,b5]@3 ~ [d5,gb5,b5]@6 ~@2",
  AB: "[~@6 [e5,g5,b5] ~ [gb5,a5,db6] ~ [e5,g5,b5] ~@2 [gb5,a5,db6]@4 ~@2 g5@26 ~@3, ~@6 [e5,b5]@9 ~]/2", // Em Gbm Em Gbm E5
  AC: "[[d4,d5,gb5]@7 ~]/2", // D
})).s("gm_drawbar_organ").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B C@8 A B A B A B A B C@8 A B A B A B A B A B D ~@4
>`.pickRestart({
  A: "x ~@4 x!2 ~ x ~@2 x", B: "x ~@5 x ~ x ~@2 x", C: "x ~@4 x!2 ~@4 x", D: "x",
})).gain(0.51)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@20 [~@2 x ~@2 x]!8 ~@8 [~@2 x ~@2 x]!8 ~@15>").gain(0.15)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!27 [~ x ~@2] [~ x ~ x]!15 [~ x ~@2] [~ x ~ x]!10 ~@5>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@27 [~@7 x!5] ~@15 [~@7 x!5] ~@15>").gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<A@11 B A@7 B C@8 A@7 B C@8 A@7 B A B ~@5>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~@2 x ~ x!2 ~ x", C: "~ x!5 ~ x!5",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A ~@7 A B@8 ~@7 A B@8 ~@7 A ~ A ~@5>".pickRestart({
  A: "~@5 x ~@6", B: "x!2",
})).gain(0.51)

// drums · ride
const ride = s("rd").struct("<A@4 ~@7 B ~@7 B C ~ C ~ C ~ C D ~@7 B C ~ C ~ C ~ C D ~@7 B ~ B C ~@4>".pickRestart({
  A: "x!4", B: "~@10 x!2", C: "x", D: "~@3 x",
})).gain(0.51)

stack(
  piano, bass, electric_guitar_clean, acoustic_guitar_nylon, drawbar_organ, kick, kick_soft, rim, snare, hihat,
  open_hat, ride
)

More by Bobby Vinton