Strudelify
I'm Into Something Good cover art

Something Good

I'm Into Something Good

Herman's Hermits

KeyC majorTempo132 bpm
0:00/0:00
// I'm Into Something Good — Herman's Hermits
// 132 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 39, 4/4 at bar 40) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 89 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B@2 C A B C D E F G H I J K L A B C D E F G H I J K L M N O P M N Q R S T U V W X Y Z AA AB AC AD U AE U AF AG AH
  AI AJ AK AL AI AM AN AO U V W X Y Z AA AB AC AD U AF AC AD U AF AC AD U AF AC AD U AP@3
>`.pickRestart({
  A: "c2@6 ~@4 c2@2 f1@5 ~ f2@5 ~", B: "c2@7 ~@3 c2@2 f1@5 ~ f2@4 ~@2", C: "c2@6 ~@4 c2@2 f1@5 ~ f2@4 ~@2",
  D: "c2@6 ~@4 c2 ~ d2@4 ~@2 e2@4 ~@2", E: "f2@6 a2@5 ~ c3@5 ~ a2@5 ~", F: "f2@6 a2@5 ~ c3@5 ~ a2@4 ~@2",
  G: "c2@5 ~ e2@5 ~ f1@5 ~ f2@5 ~", H: "c2@5 ~ g1@6 c2@5 ~ e2@4 ~@2", I: "g1@6 b1@5 ~ d2@5 ~ b1@5 ~",
  J: "f1@6 a1@6 c2@5 ~ a1@4 ~@2", K: "c2@7 ~@3 c2@2 f1@5 ~ f2@5 ~", L: "c2@7 ~@3 c2@2 f1@5 ~ f2@3 ~@3",
  M: "g1@2 ~@2 g1@2 g2@4 g1 ~ f2@4 g1 ~ e2@3 ~ d2@2", N: "g1@3 ~ g1@2 g2@4 g1 ~ f2@4 g1 ~ e2@4 g1 ~",
  O: "c2@5 ~ c2@5 ~ f1@3 ~ f1 ~ f2@4 f1 ~", P: "c2@5 ~ g1@5 ~ c2@5 ~ e2@3 ~@3", Q: "d2@5 ~ d2@5 ~ b1@5 ~ a1@4 ~@2",
  R: "a1@5 ~ a2@5 ~ g1@4 ~@2 g1@4 ~@2", S: "g1@5 ~ g2@5 ~ d2@5 ~ d2@5 ~", T: "g2@5 ~ g1@4 ~@2 c2@6 ~@4 c2@2",
  U: "f1@5 ~ f2@5 ~ c2@7 ~@3 c2@2", V: "f1@5 ~ f2@4 ~@2 c2@6 ~@4 c2@2", W: "f1@5 ~ f2@4 ~@2 c2@6 ~@4 c2 ~",
  X: "d2@4 ~@2 e2@4 ~@2 f2@6 a2@5 ~", Y: "c3@5 ~ a2@5 ~ f2@6 a2@5 ~", Z: "c3@5 ~ a2@4 ~@2 c2@5 ~ e2@5 ~",
  AA: "f1@5 ~ f2@5 ~ c2@5 ~ g1@6", AB: "c2@5 ~ e2@4 ~@2 g1@6 b1@5 ~", AC: "d2@5 ~ b1@5 ~ f1@6 a1@6",
  AD: "c2@5 ~ a1@4 ~@2 c2@7 ~@3 c2@2", AE: "f1@5 ~ f2@3 ~@3 c2@7 ~@3 c2@2", AF: "f1@5 ~ f2@3 ~@3 g1@6 b1@5 ~",
  AG: "d2@5 ~ b1@6 g1@5 ~ b1@5 ~", AH: "d2@5 ~ b1@3 ~@3 g1@2 ~@2 g1@2 g2@4 g1 ~",
  AI: "f2@4 g1 ~ e2@3 ~ d2@2 g1@3 ~ g1@2 g2@4 g1 ~", AJ: "f2@4 g1 ~ e2@4 g1 ~ c2@5 ~ c2@5 ~",
  AK: "f1@3 ~ f1 ~ f2@4 f1 ~ c2@5 ~ g1@5 ~", AL: "c2@5 ~ e2@3 ~@3 g1@2 ~@2 g1@2 g2@4 g1 ~",
  AM: "f2@4 g1 ~ e2@4 g1 ~ d2@5 ~ d2@5 ~", AN: "b1@5 ~ a1@4 ~@2 a1@5 ~ a2@5 ~", AO: "g1@2 ~ g1@2 ~ c2@3 ~@2 c2",
  AP: "[f1@5 ~ f2@3 ~@3 c2@49 ~@11]/3",
})).s("gm_acoustic_bass").gain(0.64)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B C D E F G H I@2 E J K@2 L@2 E F G H I@2 E J K@2 L@2 M@2 N O P Q R S T@2 U V@2 W@3 X Y@2 Z AA AB AA AC AD AE AF@2
  AG@2 AH@2 AI@2 U AJ@2 W@3 X Y@2 Z AA AK@2 Z AA AK@2 Z AA AK@2 Z AA AL@3
>`.pickRestart({
  A: "[c4,e4]@6 [c4,e4]@4 c3 ~ [f3,a3,c4]@6 [f3,a3,c4]@6, [c3,g3]@11 ~@13", // C F C5
  B: "[c4,e4]@6 [c4,e4]@4 c3 ~ [f3,a3,c4]@4 ~@2 [f3,a3,c4]@4 [c3,g3] ~, [c3,g3]@11 ~@5 f2@7 ~", // C F C5
  C: "[c4,e4]@6 [c4,e4]@5 ~ [f3,a3,c4]@6 [f3,a3,c4]@5 ~, ~@12 f2@11 ~", // C F
  D: "[c4,e4]@4 ~@2 [c4,e4]@4 f2 ~ [f3,a3,c4]@5 ~ [f3,a3,c4]@3 ~@3, [c3,g3]@11 ~@13", // C F C5
  E: "[c4,e4]@6 [c4,e4]@4 f2 ~ [f3,a3,c4]@6 [f3,a3,c4]@5 ~, [c3,g3]@11 ~@13", // C F C5
  F: "[c4,e4]@6 [c4,e4]@4 c3 ~@7 [f3,a3,c4]@5 ~, c3@5 ~ [f3,a3,c4]@3 ~@3, ~@16 f2@7 ~", // C F
  G: "[c4,e4]@6 [c4,e4]@2 ~@4 [f3,a3,c4]@6 [f3,a3,c4]@5 ~, [c3,g3]@8 ~@2 f2@13 ~", // C F C5
  H: "[c4,e4]@4 ~@6 [c3,g3]@2 [c4,e4]@4 [c3,g3] ~ [c4,e4]@5 ~, [c3,g3]@5 ~@7, ~ [c4,e4] ~@2", // C C5 C C5 C C5 C
  I: "[~@6 [f3,a3,c4]@3 ~ c3 ~ [f3,a3,c4]@4 c3 ~ [f3,a3,c4]@2 ~@2 [f3,a3,c4]@6 c3 ~ [f3,a3,c4]@4 c3 ~@5 c3@2 [f3,a3,c4]@3 ~@3, f2@15 ~, ~@6 [f3,a3,c4] ~]/2", // F
  J: "[c4,e4]@4 ~@6 [c3,g3]@2 c4 ~ [c3,g3] ~@5 c4@3 ~, [c3,g3]@10 ~@8 [c3,g3]@5 ~, ~@3 [c4,e4]@3 ~@2 c4@2 ~@2", // C C5 C
  K: "[[g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 g2@4 [f3,a3,c4]@5 ~@3 f2@4 [f3,a3,c4] ~@7 [f3,a3,c4]@4 ~@2, g2@3 ~@2 g2@3 [g3,b3,d4]@3 ~@3 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~@3, ~@20 f2@3 ~]/2", // G F G F
  L: "[[g3,c4,e4]@4 ~@2 [c4,e4]@5 ~ [f3,a3,c4]@6 [f3,a3,c4]@4 g3@4 ~@4 [c4,e4]@4 f2@2 [f3,a3,c4]@4 f2@2 [f3,a3,c4]@2 ~@4, c3@11 ~@11 c3@12 ~@14, ~@14 g3@3 ~@7]/2", // C F C F
  M: "[[g3,d4,f4]@4 g2 ~ [g3,c4,e4]@4 g2 ~ [g3,b3,d4]@4 g2@2 g3@2 ~@2 [g3,d4,f4]@6 g2 ~ [g3,c4,e4]@4 g2 ~ [g3,b3,d4]@4 g2 ~ g3@4 c3@2, g2 ~@15]/2", // G7 C G G7 C G
  N: "[c4,e4]@4 ~@2 [c4,e4]@5 ~ [f3,c4,f4]@5 ~ [c4,f4]@4 c3 ~", // C F5
  O: "[c4,e4]@4 c3 ~@13 [c4,e4]@4 ~@2, ~ [c4,e4]@2 ~, ~@5 c3@6 ~", // C
  P: "[g3,d4,f4]@4 ~@2 [g3,c4,e4]@4 g2 ~ [g3,b3,d4]@4 g2@2 g3@4 g2@2, g2@5 ~@7", // G7 C G
  Q: "[g3,d4,f4]@4 g2 ~ [g3,c4,e4]@4 [g3,b3,d4]@6 g2 ~ [g3,b3,d4]@2 ~@4, g4 ~@23", // G7 C G
  R: "d3@4 ~@2 [f#3,a3,d4]@4 d3 ~@5 d3@2 f#4@2 ~@4, [f#3,a3,d4] ~ e4 ~, ~@2 d3@3 ~@7", // D
  S: "[f3,a3,d4]@4 ~@2 [f3,a3,d4]@5 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 g2 ~, d3@11 ~ g2@10 ~@2", // Dm G
  T: "[[g3,b3,d4]@4 g2 ~ [g3,b3,d4]@5 ~ [f#3,a3,d4]@4 d3 ~ [f#3,a3,d4]@3 ~ [g3,b3,d4]@6 g2@2 [g3,b3] ~@5 [c4,e4]@6 [c4,e4]@4 f2 ~, ~@30 d4@2 ~@4 [c3,g3]@11 ~]/2", // G D G C C5
  U: "[f3,a3,c4]@6 [f3,a3,c4]@5 ~ [c4,e4]@6 [c4,e4]@4 c3 ~, ~@6 c3@5 ~", // F C
  V: "[~@6 [f3,a3,c4]@5 ~ [c4,e4]@6 [c4,e4]@2 ~@4 [f3,a3,c4]@6 [f3,a3,c4]@5 ~ [c4,e4]@4 ~@6 [c3,g3]@2, [f3,a3,c4]@3 ~@3 [c3,g3]@4 ~@8 [c3,g3]@5 ~, ~@4 f2@7 ~@11 f2@13 ~@7 [c4,e4]@6]/2", // F C F C C5 F C5 C
  W: "[[c4,e4]@4 [c3,g3] ~ [c4,e4]@5 ~@7 [f3,a3,c4]@3 ~ c3 ~ [f3,a3,c4]@4 c3 ~ [f3,a3,c4]@2 ~@2 [f3,a3,c4]@6 c3 ~ [f3,a3,c4]@4 c3 ~@5 c3@2 [f3,a3,c4]@3 ~@3 [c4,e4]@6 [c4,e4]@4 f2 ~, ~@4 f2@15 ~@5, ~@48 [f3,a3,c4]@6 ~@6 [c3,g3]@11 ~]/3", // C C5 C F C F C5
  X: "[f3,a3,c4]@6 [f3,a3,c4]@5 ~ [c4,e4]@4 ~@6 [c3,g3]@2, ~@6 [c3,g3]@5 ~, ~@3 [c4,e4]", // F C C5 C
  Y: "[c4 ~ [c3,g3] ~@5 c4@3 ~ [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 g2@4 [f3,a3,c4]@5 ~@3 f2@4 [f3,a3,c4] ~, ~@2 c4@2 ~@10 [g3,b3,d4]@3 ~@3 [f3,a3,c4]@3 ~, ~@6 [c3,g3]@5 ~ g2@6 ~@4 g2@6 ~@20]/2", // C5 G F G F C5
  Z: "~@6 [f3,a3,c4]@4 ~@2 [g3,c4,e4]@4 ~@2 [c4,e4]@5 ~, [f3,a3,c4]@6 ~@6 c3@11 ~, ~@2 f2@3 ~@7", // F C F
  AA: "[f3,a3,c4]@3 [f3,a3,c4]@2 g3@2 ~@2 [c4,e4]@2 f2, ~@5 c3@6 ~, ~@8 g3@3 ~", // F C
  AB: "[f3,a3,c4]@4 f2@2 [f3,a3,c4]@2 ~@4 [g3,c4,e4]@4 ~@2 [c4,e4]@5 ~, ~@12 c3@11 ~", // F C
  AC: "[f3,a3,c4]@4 f2@2 [f3,a3,c4]@2 ~@4 [g3,b3,d4]@4 g2 ~ [g3,c4,e4]@4 g2 ~", // F G C
  AD: "[g3,b3,d4]@4 g2 ~ [g3,c4,e4]@4 g2 ~ [g3,b3,d4]@4 g2 ~ [g3,c4,e4]@4 g2 ~", // G C G C
  AE: "[g3,b3,d4]@4 g2@2 [g3,c4,e4]@3 ~@7 g4@2 [d5,f5]@4 g4 ~", // G C Dm
  AF: "[[c5,e5]@2 ~@2 [b4,d5]@6 g4 ~ [g4,d5,f5]@3 ~ g4 ~ [g4,c5,e5] ~@3 [g4,b4,d5]@9 ~@5 c3@4 g3 ~ [c4,e4]@2 ~@4, g4 ~@3 g4@4 ~@40]/2", // C Bm G7 C G C
  AG: "[[f3,a3,c4]@5 ~ [f3,a3,c4]@3 ~@7 g3 ~ [c4,e4] ~@3 [c4,e4]@6 c3 ~ [c4,e4] ~@9 g4@2 [d5,f5]@4 g4 ~, ~@2 c3 ~@5]/2", // F C Dm
  AH: "[[c5,e5]@2 ~@2 [b4,d5]@6 g4 ~ [g4,d5,f5]@3 ~ g4 ~ [g4,c5,e5] ~@3 [g4,b4,d5]@9 ~@9 f#3 ~ [f#3,a3,d4]@4 d3 ~, g4 ~@3 g4@4 ~@28 d3@6 ~@6]/2", // C Bm G7 C G D
  AI: "[[f#3,a3,d4]@4 d3 ~ [f#3,a3] ~@5 [d3,f3,a3,d4] ~@3 [d3,f3,a3]@2 ~@4 [g3,b3,d4]@9 ~@5 [c4,e4]@6 [c4,e4]@4 f2 ~, ~@6 d4@2 ~@8 d4 ~@19 [c3,g3]@11 ~]/2", // D F#m Dm G C C5
  AJ: "[f3 ~@5 [f3,a3,c4]@5 ~ [c4,e4]@6 [c4,e4]@2 ~@4 [f3,a3,c4]@6 [f3,a3,c4]@5 ~ [c4,e4]@4 ~@6 [c3,g3]@2, [a3,c4] ~@6 [c4,e4], ~@4 f2@7 ~ [c3,g3]@8 ~@2 f2@13 ~ [c3,g3]@10 ~@2]/2", // F C F C C5 Am C C5
  AK: "[[f3,a3,c4]@4 f2@2 [f3,a3,c4]@2 ~@4 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@4 ~@2 g2@4 [f3,a3,c4]@5 ~@3 f2@4 [f3,a3,c4] ~, ~@6 g2@3 ~@2 g2@3 [g3,b3,d4]@3 ~@3 [f3,a3,c4]@3 ~]/2", // F G F G F
  AL: "[[f3,a3,c4]@2 f2 [f3,a3,c4] ~@2 [c3,g3,c4,e4]@25 ~@5]/3", // F C
})).s("gm_epiano2").gain(0.56)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I@2 J K L@2 M N E F G H I@2 J K L@2 M N O@2 P Q R@2 S T U V W X Y Z@3 AA@4 AB AC AB AD@5 AE@5 AF W X
  Y Z@3 AA@4 AB AG@3 AB AG@3 AB AG@3 AB AH@3
>`.pickRestart({
  A: "[g3,c4,e4]@3 ~@2 c3 [a3,c4,f4]@3 [a3,c4,f4]@3, c3@5 ~@7, ~ [g3,c4,e4] ~@2", // C F C
  B: "[g3,c4,e4]@3 [g3,c4,e4]@2 f2 [a3,c4,f4]@3 [a3,c4,f4]@3, c3@11 ~@13", // C F
  C: "[g3,e4]@2 ~@3 f2 [a3,c4,f4]@3 [a3,c4,f4]@3, c3 ~, c4 [g3,c4,e4] ~@2", // C F C
  D: "[g3,c4,e4]@6 [g3,c4,e4]@4 f2@2 [a3,c4,f4]@4 ~@2 [a3,c4,f4]@3 ~@3, c3@11 ~@13", // C F
  E: "[g3,c4,e4]@6 [g3,c4,e4]@4 c3 ~ [a3,c4,f4]@6 [a3,c4,f4]@6", // C F
  F: "[g3,c4,e4]@6 [g3,c4,e4]@4 f2@2 [a3,c4,f4]@6 [a3,c4,f4]@5 ~, c3@5 ~@7", // C F
  G: "[g3,c4,e4]@6 [g3,c4,e4]@4 f2 ~ [a3,c4,f4]@6 [a3,c4,f4]@5 ~, c3@11 ~@13", // C F
  H: "[g3,c4,e4]@3 ~@2 c3 [g3,c4,e4]@2 ~ [g3,c4,e4]@3, c3@5 ~@3 c3@4, ~ [g3,c4,e4] ~@2", // C
  I: "[[f3,a3,c4]@2 ~@4 [f3,a3,c4]@2 ~@3 [f3,a3,c4] ~@6 [f3,a3,c4]@3 [f3,a3,c4]@3, f2@5 f2@4 f2@5 f2@3 f2@7, ~@3 [f3,a3,c4]@3 ~@2 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 [f3,a3,c4]@3 ~@6]/2", // F
  J: "[g3,c4,e4]@6 [g3,c4,e4]@6 [a3,c4,f4]@6 [a3,c4,f4]@5 ~, c3 ~", // C F
  K: "[g3,c4,e4]@6 ~@12 [g3,c4,e4]@5 ~, ~ [g3,c4,e4]!2 ~, ~@10 c3@6 c3@7 ~", // C
  L: "[[g3,b3,d4]@6 ~@12 [g3,b3,d4]@4 [f3,a3,c4]@6 ~@6 [f3,a3,c4]@2 ~@6 [f3,a3,c4]@5 ~, g2@10 g2@6 g2@6 f2 ~@7 f2@10 f2@7 ~, ~@3 [g3,b3,d4]@3 [g3,b3,d4]@3 ~@5 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~@3]/2", // G F G F
  M: "[g3,c4]@6 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@6 [a3,c4,f4]@5 ~, a3@5 ~@7, [e4,f4] ~@23", // C5 C F Fmaj7
  N: "[g3,c4,e4]@6 [g3,c4,e4]@5 ~ [f3,a3,c4,f4]@6 [a3,c4,f4]@4 ~@2", // C F
  O: "[[g3,b3,d4]@3 ~@6 [g3,b3,d4]@2 ~ g2@2 ~@4 [g3,b3,d4]@3 [g3,b3,d4]@3, g2@5 g2@3 g2@4 ~@2 g2@3 g2@7, ~@3 [g3,b3,d4]@3 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@4 [g3,b3,d4]@3 ~@6]/2", // G
  P: "[c3,e3,g3,c4]!2 [f3,a3,c4]!2", // C F
  Q: "[c3,e3,g3]@2 ~@16 c4@5 ~, c4!3 ~, ~@4 [c3,e3,g3]@6 [c3,e3,g3]@6 [c3,e3,g3]@7 ~", // C
  R: "[[g3,b3,d4]@4 g2 ~@13 [g3,b3,d4]@4 ~@20 [g3,b3,d4]@4 g2 ~, ~ [g3,b3,d4]!2 ~ [g3,b3,d4]!3 ~, ~@5 g2@3 g2@2 ~ g2@3 g2@3 g2@3 g2@3 ~]/2", // G
  S: "[f#3,a3,d4]@4 d3 ~@13 [f#3,a3,d4]@6, d3 ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 ~@2, ~@5 d3@3 d3@4", // D
  T: "[d3,f3,a3]@2 ~ [f3,a3]@3 g3@3 ~@2 [g2,d3], ~@6 [g2,d3]@5 ~, ~@3 g3", U: "g3 ~@11",
  V: "~@4 g2@2 ~@2 g2@2 [g3,b3,d4] ~ [g3,c4,e4]@6 [g3,c4,e4]@4 c3 ~, ~@3 [g3,b3,d4]@2 ~@7", // G C G
  W: "[a3,c4,f4]@3 [a3,c4,f4]@3 [g3,c4,e4]@3 [g3,c4,e4]@2 f2, ~@6 c3@5 ~", // F C
  X: "[a3,c4,f4]@6 [a3,c4,f4]@5 ~ [g3,c4,e4]@6 [g3,c4,e4]@4 f2 ~, ~@12 c3@11 ~", // F C
  Y: "[a3,c4,f4]@6 [a3,c4,f4]@5 ~ [g3,c4,e4]@6 ~@4 c3@2, ~@6 c3@5 ~, ~@3 [g3,c4,e4]", // F C
  Z: "[[g3,c4,e4]@2 ~ [g3,c4,e4]@3 [f3,a3,c4]@2 ~@4 [f3,a3,c4]@2 ~@3 [f3,a3,c4] ~@6 [f3,a3,c4]@3 [f3,a3,c4]@3 [g3,c4,e4]@3 [g3,c4,e4]@3, ~@2 c3@4 f2@5 f2@4 f2@5 f2@3 f2@7 ~@6, ~@9 [f3,a3,c4]@3 ~@2 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 [f3,a3,c4]@3 ~@6 c3@6]/3", // C F C F
  AA: "[[a3,c4,f4]@6 [a3,c4,f4]@5 ~ [g3,c4,e4]@6 ~@12 [g3,c4,e4]@5 ~ [g3,b3,d4]@6 ~@12 [g3,b3,d4]@4 [f3,a3,c4]@6 ~@6 [f3,a3,c4]@2 ~@6 [f3,a3,c4]@5 ~ [g3,c4]@6 [g3,c4,e4]@4 ~@2, ~@9 [g3,c4,e4]@3 [g3,c4,e4]@3 ~@6 [g3,b3,d4]@3 [g3,b3,d4]@3 ~@5 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~@3 a3@5 ~, ~@22 c3@6 c3@7 ~ g2@10 g2@6 g2@6 f2 ~@7 f2@10 f2@7 ~ [e4,f4] ~@11]/4", // F C G F C5 C G F …
  AB: "[a3,c4,f4]@6 [a3,c4,f4]@5 ~ [g3,c4,e4]@6 [g3,c4,e4]@5 ~", // F C
  AC: "[f3,a3,c4,f4]@3 [a3,c4,f4]@2 ~ [g3,c4]@3 [g3,c4,e4]@2 ~, ~@6 a3@5 ~, ~@12 [e4,f4] ~@11", // F C5 C Fmaj7
  AD: "[[f3,a3,c4,f4]@6 [a3,c4,f4]@4 ~@2 g2@4 ~@2 [g3,b3,d4]@4 ~@20 [g3,b3,d4]@4 ~@8 [g3,b3,d4]@2 ~@16 [g3,b3]@4 ~@6 [g3,b3,d4]@2 ~@12 [g3,b3,d4]@6 [g3,b3,d4]@5 ~@5 e4@6 d#4@2, ~@6 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@4 [b3,d4]@6 ~@12 d4@5 ~@22, ~@16 g2@12 g2@6 g2@6 g2@12 g2@4 ~@8 g2@6 g2@8 g2@10 g2@6 g2@13 ~@13, ~@15 g3@3 g3@3 ~@2 [g3,b3,d4]@4 ~@3 [g3,b3,d4]@3 [g3,b3]@3 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 [g3,b3,d4]@3 ~@12]/5", // F G Bm G
  AE: "[e4@3 ~ d#4@2 c4@3 ~ c4@6 a#3@2 c4@11 ~@7 [g3,b3,d4]@6 ~@6 [g3,b3,d4]@4 ~@6 [g3,b3,d4]@2 ~@6 [g3,b3,d4]@4 ~@6 [g3,b3,d4]@2 [g3,b3,d4]@5 ~ [f#3,a3,d4]@6 ~@12 [f#3,a3,d4]@4 ~@2 [d3,f3,a3,d4]@6 [d3,f3,a3,d4]@5 ~, ~@36 g2@10 g2@8 g2@10 g2@8 g2@11 ~@7 [f#3,a3,d4]@6 [f#3,a3,d4]@6 ~@18, ~@21 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~@2 [g3,b3,d4]@3 ~@4 d3@5 d3@3 d3@3 ~@7]/5", // G D Dm D G
  AF: "~@8 g2@2 [g3,b3,d4] ~ [g3,c4,e4]@6 [g3,c4,e4]@4 c3 ~, [g3,b3,d4]@3 [g3,b3,d4]@2 ~@7, ~ g2 ~@4", // G C G
  AG: "[[f3,a3,c4,f4]@6 [a3,c4,f4]@4 ~@2 [g3,b3,d4]@6 ~@12 [g3,b3,d4]@4 [f3,a3,c4]@6 ~@6 [f3,a3,c4]@2 ~@6 [f3,a3,c4]@5 ~ [g3,c4]@6 [g3,c4,e4]@4 ~@2, ~@12 g2@10 g2@6 g2@6 f2 ~@7 f2@10 f2@7 ~ [e4,f4] ~@11, ~@9 [g3,b3,d4]@3 [g3,b3,d4]@3 ~@5 [f3,a3,c4]@3 ~ [f3,a3,c4]@3 ~@3 a3@5 ~]/3", // F G F C5 C Fmaj7 G F
  AH: "[[f3,a3,c4,f4]@6 [a3,c4,f4]@4 ~@2 [c3,e3,g3,c4]@43 ~@17]/3", // F C
})).s("gm_acoustic_guitar_nylon").gain(0.56)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A B@2 C ~@6 D E F G H@2 I J K L ~@2 D E F G H@2 ~@9 M N@2 O@2 ~ P Q@4 R S R T@3 ~@7 M N@2 O@2 ~ P Q@4 R U@3 R U@3 R
  U@3 R V@3
>`.pickRestart({
  A: "~@6 c6@4 g5 ~ c6@4 ~@2 c6@3 ~ d6@2", B: "[e6@4 c6 ~@5 c6@18 ~@2 c6@4 g5 ~ c6@5 ~ c6@3 ~ d6@2]/2",
  C: "e6@4 c6 ~@5 c6@12 ~@2",
  D: "~@4 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~", // C
  E: "[c5,d5,g5]@2 ~@2 [c5,e5,g5]@2 ~@12 a6@5 ~, ~@10 [c5,e5,g5]@13 ~", F: "[b5,d6,g6]@23 ~", G: "[a5,c6,f6]@7 ~",
  H: "[[g5,c6,e6]@3 ~@3 [g5,c6,e6]@4 ~@2 [a5,c6,f6]@4 ~@2 [a5,c6,f6]@2 ~@2 [g5,c6,e6]@4 ~@2 [g5,c6,e6]@4 ~@2 [g5,c6,e6] ~ [a5,c6,f6]@4 ~@2 [a5,c6,f6]@3 ~@3]/2", // C F C F
  I: "[e5,g5,c6]@11 ~ [f5,a5,c6]@11 ~", J: "[e5,g5]@11 ~ [f5,a5]@10 ~@2, c6@23 ~",
  K: "[e5,g5,c6]@11 ~ [f5,a5,c6]@10 ~@2", L: "[e5,g5,c6]@11 ~", M: "~@12 [e5,g5,c6]@11 ~",
  N: "[[f5,a5,c6]@11 ~ [e5,g5]@11 ~ [f5,a5]@10 ~@2 [e5,g5,c6]@11 ~, ~@12 c6@23 ~@13]/2", // F Em F C
  O: "[[f5,a5,c6]@5 ~ [e5,g5,c6]@11 ~@7]/2", P: "~@16 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~",
  Q: "[[c5,e5,g5]@2 ~@2 [c5,e5,g5] ~ [c5,e5,g5]@2 ~@2 [c5,e5,g5] ~ [c5,d5,g5]@2 ~@2 [c5,e5,g5]@2 ~@12 a6@5 ~ [b5,d6,g6]@23 ~ [a5,c6,f6]@21 ~@3 [g5,c6,e6]@3 ~@3 [g5,c6,e6]@4 ~@2, ~@22 [c5,e5,g5]@13 ~@61]/4", // C Csus2 C G F C
  R: "[a5,c6,f6]@4 ~@2 [a5,c6,f6]@2 ~@2 [g5,c6,e6]@4 ~@2 [g5,c6,e6]@4 ~@2 [g5,c6,e6] ~", // F C
  S: "[a5,c6,f6]@4 ~@2 [a5,c6,f6]@3 ~@3 [g5,c6,e6]@3 ~@3 [g5,c6,e6]@4 ~@2", // F C
  T: "[[a5,c6,f6]@4 ~@2 [a5,c6,f6]@3 ~@3 [g5,b5,d6]@46 ~@14]/3", // F G
  U: "[[a5,c6,f6]@4 ~@2 [a5,c6,f6]@3 ~@3 [b5,d6,g6]@23 ~ [a5,c6,f6]@21 ~@3 [g5,c6,e6]@3 ~@3 [g5,c6,e6]@4 ~@2]/3", // F G F C
  V: "[[a5,c6,f6]@4 ~@2 [a5,c6,f6]@3 ~@3 [c5,e5,g5]@49 ~@11]/3", // F C
})).s("gm_rock_organ").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~ A@37 B C@13 D A B C@19 D A@3 B C@7 E ~@2>".pickRestart({
  A: "x ~@4 x!2 ~ x ~@2 x", B: "x ~@4 x!2 ~@4 x", C: "x ~ x ~@2 x!2 ~@4 x", D: "x ~ x ~@2 x!2 ~ x ~@2 x",
  E: "x ~ x ~@2 x!2 ~@5",
})).gain(0.78)

// drums · snare
const snare = s("sd").struct("<A B@3 C B@11 C B@11 C B@21 D B D B@21 D B@2 E B@4 D B@3 F ~@2>".pickRestart({
  A: "~@10 x!2", B: "~ x ~ x", C: "~@3 x ~@5 x ~ x", D: "~@3 x ~ x ~@3 x ~@2", E: "~@3 x ~@6 x!2", F: "~@3 x ~ x ~@6",
})).gain(0.78)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@3 B ~@11 B ~@11 B ~@21 C ~ C ~@21 C ~@2 A ~@4 C ~@3 C ~@2>".pickRestart({
  A: "~@6 x!4 ~@2", B: "~@16 x!2 ~@6", C: "~@4 x!2 ~@18",
})).gain(0.23)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!85 [~ x ~@2] ~@2>").gain(0.78)

// drums · hihat
const hihat = s("hh").struct("<~ [x!4]!85 [x!2 ~@2] ~@2>").gain(0.78)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A@3 C A C A C A C A C A C A C B A@2 C A C A
  C A C A C A C A C A C A C A C B A B A@2 C A C A C A D ~@2
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x", B: "~@2 x ~@2 x ~@2 x ~@3", C: "~@2 x ~@5 x ~@2 x", D: "~ x ~@4",
})).gain(0.23)

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

// drums · crash
const crash = s("cr").struct("<~ A ~@3 A ~@11 A ~@11 A ~@8 B ~@15 B ~@7 B ~@15 A ~@7 B ~@2>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.78)

// drums · ride
const ride = s("rd").struct("<~@29 [x!4]!9 [x!2 ~@2] ~@13 [~@2 x!2] [x!4]!9 [x!2 ~@2] ~@26>").gain(0.78)

stack(
  bass, epiano2, acoustic_guitar_nylon, rock_organ, kick, snare, snare_soft, clap, hihat, hihat_soft, open_hat, crash,
  ride
)

More by Herman's Hermits