Strudelify

King Midas in Reverse

The Hollies

KeyG majorTempo96 bpm
0:00/0:00
// King Midas in Reverse — The Hollies
// 96 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "CLEAN GTR" electric guitar clean (copy of ch 2 "ACOU BASS" acoustic bass)
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C D E F G H I J C D E F G H I J K L M K@2 L M K N M K O K P Q R S@3 T S@3 U K L M K@2 L M K N M K O K P Q R K
  L M K@2 L M K@2 L M K@2 L M K@2 L M V ~
>`.pickRestart({
  A: "[~ [d3,d4] ~ [d3,d4] ~ [d3,d4] [g2,g3] ~ [g2,g3] [f#2,f#3]@2 [g2,g3]@2 [a2,a3] [b2,b3] [g2,g3], [c3,c4] b3 ~@2, ~@2 g3@3 ~@11, ~@2 g2@2 b2@3 [d3,d4]@9]/2", // D G F# G A B G C …
  B: "[~ [d3,d4] ~ [d3,d4] ~ [d3,d4] [g2,g3] ~ [g2,g3] [f#2,f#3]@2 [g2,g3]@2 [a2,a3] [b2,b3] [a2,a3], [c3,c4]@7 ~ b3@8 ~@16, ~@2 [g2,g3]@2 b2@3 [d3,d4]@9]/2", // D G F# G A B A C …
  C: "[g2,b2,d3,g3,b3] [g2,b2,d3,g3,b3,g4]!7", D: "[e2,c3,e3,g3,c4,e4]!7 [e2,e3,g3,c4,e4]", E: "[g2,b2,d3,g3,b3,g4]!8",
  F: "[e2,c3,e3,g3,c4,e4]!2 [c3,e3,g3,c4,e4] [f2,c3,f3,a3,c4,f4] c3 [e2,c3,e3,g3,c4] c3 [e2,c3,e3,g3,c4], ~@5 e4@2 ~", // C F C
  G: "[g2,b2,d3,g3,b3,g4] [g2,d3,g3,b3,g4] [g2,b2,d3,g3,b3,g4]!5 [g2,d3,g3,b3,g4]", // G
  H: "[e2,c3,e3,g3,c4,e4]!7 [e3,g3,e4]", I: "[f#2,b2,f#3,a3,f#4]!2 [f#2,b2,f#3,a3,d#4,f#4]!6",
  J: "[f#2,b2,f#3,a3,d#4,f#4]!8", K: "[d3,g3,b3,g4]!8", L: "[f3,a3,c4,f4]!8", M: "[e3,g3,c4,e4]!8",
  N: "[d3,g3,b3] [d3,g3,b3,g4]!7", O: "[e3,g3,c4,e4]!3 [f3,a3,c4,f4] ~ [e3,g3,c4] ~ [e3,g3,c4], ~@5 e4@2 ~",
  P: "[e3,g3,c4,e4]!7 [e3,g3,e4]", Q: "[f#3,a3,f#4]!2 [f#3,a3,d#4,f#4]!6", R: "[f#3,a3,d#4,f#4]!8",
  S: "[~@23 d4, f#3 b3 f#3 b3 f#3 b3 f#3 b3 f#3 b3 f#3 b3, ~ d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 ~]/3",
  T: "[d3,g#3,b3,e4] [d3,g#3,e4] [d3,g#3,b3,e4]!6", U: "[e2,d3,g#3,b3,e4]!8", V: "[d3,g3,b3,g4]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.33)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@11 A B C D E F G H I J K L M N O L M B C D E F G H I P@3 Q P@3 R J K L M N O L M B C D E F G H I J K L M N O L M J K
  L M N O L M J K L S ~
>`.pickRestart({
  A: "a#2 b2 f2 f#2 d2 d#2 a#1 b1", B: "g2@4 ~@2 g2@2 g2@5 ~ g2@2", C: "c2@5 ~ c2 ~ c2 ~ c2@4 d2@2",
  D: "g2@5 ~ g2 ~ g2@5 ~ g2 ~", E: "c2@2 ~ f2@2 c2 ~ c2", F: "g2@5 ~ g2 ~ g2@5 ~ g2@2", G: "c2@4 ~@2 c2 ~ c2@5 ~ c2@2",
  H: "b1 ~ b1 ~ b1@2 b2@2 f2@2 f#2@2 d2@2 d#2@2", I: "b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 b1@2",
  J: "g2 ~ g2@2 g2 ~ g2 ~ g2!2 ~ g2 d3@2 g2@2", K: "f2 ~ f2 ~ f2 ~ f2 ~ f2!2 ~ f2 c3@2 f2@2",
  L: "e2 ~ e2 ~ e2 ~ e2 ~ e2!2 ~ e2 c3@2 e2@2", M: "d2 ~ d2 ~ d2 ~ d2 ~ d2!2 ~ d2!2 ~ d2@2",
  N: "g2 ~ g2 ~ g2 ~ g2 ~ g2 d3@2 g2 d3@2 g2@2", O: "f2 ~ f2 ~ f2 ~ f2 ~ f2 c3@2 f2 c3@2 f2@2",
  P: "b2 d3 b2 d3 b2 d3 b2 d3", Q: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2",
  R: "e2@2 ~ e2 e2@2 ~ e2 e2@2 ~ e2!2 ~ e2@2", S: "g1",
})).s("gm_acoustic_bass").gain(0.44)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@4 A B C D E@3 F G H I J G K L@2 M N O P M N O Q G R G J S T U V W X Y Z AA AB AC AD ~@8 G AE G J AF AG ~@23
>`.pickRestart({
  A: "~@6 d4@2 c4@2 b3 a3@3 g3@2", B: "g3@3 c4@6 a3 g3@5 ~", C: "~@5 g3 d4!2 c4@2 b3 a3@2 g3@2 f3",
  D: "g3@6 a3@3 g3@3 g3@4", E: "[~@6 d4@2 c4 b3@2 a3@3 g3 g3@3 c4@7 a3 g3@9 ~ g3 a3@3 b3@2 b3 b3@2 a3 g3 a3]/3",
  F: "b3@13 ~@3", G: "~@6 g4@2 e4@2 d4 c4@3 b3@2", H: "c4@3 e4@6 d4 c4@6", I: "~@5 d4 g4@2 e4@2 d4 c4@3 b3@2",
  J: "c4@3 d4@2 c4@3", K: "c4@4 e4@3 d4 c4@7 ~", L: "[~ d#4, ~ b3@3]/2", M: "d4@2 b4 a4@2 g4 e4 d4",
  N: "[c4,e4] [d4,f4] [c4,e4] [d4,f4] [c4,e4]@9 ~@3", O: "e4@2 b4 a4@2 g4 e4 d4",
  P: "[d4,g4]@2 [d4,g4]@2 [d4,g4]@9 ~@3", Q: "[d4,g4]@2 [d4,g4]@2 [d4,g4]@11 ~", R: "c4@3 e4@6 d4 c4@5 ~",
  S: "~@6 g4@2 e4 d4@3 c4 b3@3", T: "c4@4 e4@3 d4 c4@4 ~@4", U: "~@2 b3!2", V: "[b3,d#4]@7 [b3,d4]",
  W: "[b3,d4]@2 [b3,d4] [b3,d4]@2 ~ [b3,d4] [c#4,e4]@2 [b3,d4]@3 [b3,d4]@3 ~", // Bm C#m Bm
  X: "[b3,d4]@2 [b3,d4] [b3,d4]@2 [b3,d4]@3 [c#4,e4]@2 [d4,f#4]@2 [c#4,e4]@3 [b3,d4]", // Bm C#m D C#m Bm
  Y: "[b3,d4]@9 ~@3 [d4,f#4] [d4,f#4]@3", Z: "[b3,d4]@13 ~@3",
  AA: "[b3,d4] [b3,d4]@3 [b3,d4]@2 [b3,d4]@2 [c#4,e4] [b3,d4]@2 [b3,d4]@3 ~ [b3,d4]", // Bm C#m Bm
  AB: "[b3,d4]@2 [b3,d4]@2 [b3,d4]@2 [b3,d4] [c#4,e4]@3 [d4,f#4]@2 [c#4,e4] [d4,f#4] [c#4,e4] [d4,f#4]", // Bm C#m D C#m D C#m D
  AC: "[c#4,e4]@2 [b3,d4]@7 ~@3 [c#4,e4] [d4,f#4]@3", AD: "[b3,d4]", AE: "c4@4 e4@5 d4 c4@6",
  AF: "~@6 g4 e4@3 d4@2 c4@2 b3@2", AG: "c4@4 e4@2 d4@2 c4@7 ~",
})).s("gm_epiano1").gain(0.32)

// other · piccolo
const piccolo = note("<~@36 A B C D A B C E F G H I J G K I ~@29>".pickRestart({
  A: "~@4 [b5,c6,c#6] d6@2 ~@4 [d#6,e6] f#6@2 ~@2, ~@12 f6 ~@3", // Emaj7
  B: "~@3 [g#6,a6] b6@3 ~@4 [b6,c7] d7@2 ~@2, ~@4 a#6 ~@7 c#7 ~@3", // Amaj7 Cmaj7
  C: "~@4 f#7@3 [b6,d7,e7] f#6 [f#6,g6]!5 f#6 [f#6,g6], ~@4 e7 ~@11", D: "f#6 ~ b5!2 d6 c#6 b5 d6 ~ b5 ~ c#6 d6 ~@3",
  E: "[d6,f#6] [d6,e6]!7 d6 [d6,e6]!3 d6 [d6,e6]!3", F: "e6 ~@13 g6@2", G: "c7@2 d7@2 e7@2 f7@3 e7 d7 c7 f7 e7 d7 c7",
  H: "g7@15 ~", I: "g6@3 [a6,b6] d7@12, ~@4 c7 ~@11", J: "~@7 g6", K: "g7@7 ~",
})).s("gm_piccolo").gain(0.25).pan(0.4)

// other · flute
const flute = note("<~@36 A B C D A B C E F G H ~ I G H ~@9 I G H ~ I G H ~ I G H ~ I G H ~ I G J@2 ~>".pickRestart({
  A: "~@3 b4 [c5,c#5] ~@6 [d#5,e5] f#5@2 ~@2, ~@4 d5@2 ~@6 f5 ~@3", // C#maj7 Emaj7
  B: "~@3 [g#5,a5] b5@2 ~@5 [b5,c6] d6@3 ~, ~@4 a#5 ~@7 c#6 ~@3", // Amaj7 Cmaj7
  C: "~@4 d6@3 [a5,b5] [d5,f#5] [d5,e5] e5 [d5,e5]!2 d5 e5 [d5,e5]", D: "d5 ~ d5!2 f#5 e5 d5 f#5 ~ d5 ~ e5 f#5 ~@3",
  E: "f#5 [f#5,g#5] g#5 [f#5,g#5] f#5 [f#5,g#5] g#5 [f#5,g#5] f#5 [f#5,g#5] g#5 [f#5,g#5] f#5 [f#5,g#5] g#5 [f#5,g#5]", // F#sus2
  F: "f#5 ~@13 g5@2", G: "c6@2 d6@2 e6@2 f6@3 e6 d6 c6 f6 e6 d6 c6", H: "g6", I: "~@7 g5", J: "g6/2",
})).s("gm_flute").gain(0.3).pan(0.4)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~@46
  [c5@2 g5 f5@2 e5 c5 a4]
  [g4@2 b4 c5 d5@12]
  [g4@2 g5 f5@2 d5 c5 b4]
  [c5@2 d5@2 e5@2 f5@3 e5 d5 c5 f5 e5 d5 c5]
  [c5@4 g5@2 f5@4 e5@2 c5@2 a4 ~]
  [g4@2 b4 c5 d5@12]
  ~@29
>`).s("gm_brass_section").gain(0.49).pan(0.6)

// other · tuba
const tuba = note("<~@46 A B C D A B ~@10 E B C D F G H ~ A I@2 D A J@2 ~ A K ~>".pickRestart({
  A: "c5@4 g5@2 f5@4 e5@2 c5@2 a4 ~", B: "g4 ~ b4 c5 d5@12", C: "g4@4 g5@2 f5@3 ~ d5@2 c5@2 b4@2",
  D: "c5@2 d5@2 e5 ~ f5@3 e5 d5 c5 f5 e5 d5 c5", E: "c5@2 g5 f5@2 e5 c5 a#4", F: "c5@4 g5@2 f5@4 e5@2 c5@2 a#4 ~",
  G: "g4 ~ b4 c5 ~@6 b4!2 d5 ~ b4 d5, ~@4 d5@8 ~ d5@2 ~", H: "g5@3 ~",
  I: "[g4 ~ b4 c5 d5@2 d5 ~ g5!2 ~ g5 ~@4 g4@4 g5@2 f5@3 ~ d5@2 c5@2 b4@2, ~@7 d5@3 d5@6 ~@16, ~@3 b5@2 ~@3]/2",
  J: "[g4 ~ b4 c5 d5@3 b4 d5 ~ b4 ~ g5@8 ~@12, ~@9 d5@2 d5@5 ~@16]/2", K: "g4",
})).s("gm_tuba").gain(0.49).pan(0.6)

// other · tuba
const tuba_2 = note("<~@46 A B C D E B ~@10 F B C D E G ~@2 F B C D E G ~@2 H@2 ~>".pickRestart({
  A: "g4@2 c5 a4@2 g4 f4 d4", B: "b3 ~ d4 e4 g4@12", C: "~@2 e5 d5@2 b4 a4 g4",
  D: "a4@2 b4@2 c5@2 d5@3 c5 a#4 a4 d5 c5 a#4 a4", E: "g4@3 ~ c5 ~ a4@4 g4@2 e4@2 d4@2", F: "g4@2 c5 a4@2 g4 e4 d4",
  G: "a#3 ~ d4 e4 g4@12", H: "[g4@2 c5 a4@2 g4 e4 d4@9]/2",
})).s("gm_tuba").gain(0.49).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@20 A B@4 C@3 D E F G H I J@2 ~@8 K L M@2 N L O@2 P E F G H I J@2 K L M@2 N L O@2 K L M@2 N L O@2 K L Q@2 ~
>`.pickRestart({
  A: "[g3,b3,d4]", B: "[[f3,a3] e3 d3 [g3,d4], c4@15 ~ b3@16, ~@16 g3@31 ~@17]/4",
  C: "[[f3,a3]@16 e3@15 ~ [d3,b3]@16, c4@5 ~@3, ~ g3@2]/3", D: "g2@2 d3 c3 b2 ~ d3 ~ g2 ~ d3 c3 b2 ~ d3 ~",
  E: "g2@2 e3 d3 c3 ~ e3 ~ g2 ~ e3 d3 c3 ~ e3 ~", F: "g2@2 d3 c3 b2 ~ d3 ~ g2@2 d3 c3 b2 ~ d3 ~",
  G: "g2@2 e3 d3 c3 ~ f3@4 e3@4 c3 ~", H: "g2 ~ d3 c3 b2 ~ d3 ~ g2@2 d3 c3 b2 ~ d3 ~",
  I: "g2@2 e3 d3 c3 ~ e3 ~ g2@2 e3 d3 c3 ~ e3 ~", J: "[b2@2 d#3 ~ d#3@2 f#3@2 b3@24]/2",
  K: "g2@2 b2 ~ [e5,g5]@2 g3 ~ d3@2 [b4,d5]@2 [a4,c5]@2 [g4,b4]@2, g4@4 d3 ~ [d5,f5]@4 b2 ~ g2 ~ b2 ~", // Em Bm Am G Dm
  L: "f2@2 a2 ~ c3 ~ f3 ~ c3@2 a2 ~ f2@2 a2 ~, [f4,a4]", // F
  M: "[c3 ~ e3 ~ g3 ~ c4 ~ g3@2 e3 ~ c3@2 e3 ~ g2@2 b2 ~ d3 ~ g3 ~ d3@2 b2 ~ g2@2 b2 ~, g4, e4 [d4,b4]]/2", // G
  N: "g2@2 b2 ~ [e5,g5]@2 g3 ~ d3@2 [b4,d5]@2 [g2,a4,c5]@2 [g4,b4]@2, g4@4 d3 ~ [d5,f5]@4 b2 ~@3 b2 ~", // Em Bm Am7 G Dm
  O: "[c3@2 e3 ~ g3 ~ c4 ~ g3@2 e3 ~ c3@2 e3 ~ g2@2 b2 ~ d3 ~ g3 ~ d3@2 b2 ~ g2@2 b2 ~, g4, e4 d4]/2",
  P: "~@2 d3 c3 b2 ~ d3 ~ g2 ~ d3 c3 b2 ~ d3 ~",
  Q: "[c3 ~ e3 ~ g3 ~ c4 ~ g3@2 e3 ~ c3@2 e3 ~ [g2,d4,b4]@16, g4, e4 ~]/2", // G
})).s("gm_string_ensemble_1").gain(0.38)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note(`<
  ~@11 A ~@7 B ~ C ~ D ~ E ~ F ~@15 G ~ C ~ D ~ E ~ F ~@9 C ~ D ~ E ~ F ~ C ~ D ~ E ~ F ~ C ~@3
>`.pickRestart({
  A: "~@11 e2!2 ~ e2 ~", B: "~@3 e2 e2@2 ~ e2 e2@2 ~ e2!2 ~ e2 ~", C: "~@7 e2!2 ~@2 e2!4 ~", D: "~@8 e2!3 ~ e2!3 ~",
  E: "~@8 e2!2 ~ e2!2 ~ e2 ~", F: "~@8 e2!2 ~ e2!4 ~", G: "d2 ~@2 d2!2 ~@2 d2!2 ~@2 d2!2 ~ d2 ~",
})).s("gm_melodic_tom").gain(0.36).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@12 [x ~@2 x!2 ~@3]!2 [x!2 ~ x!2 ~@3] [x ~@2 x!2 ~@3]!21 ~@8 [x ~@2 x!2 ~@3]!35 x ~>")
  .gain(0.49)

// drums · snare
const snare = s("sd").struct("<~@12 [~ x ~ x]!24 ~@8 [~ x ~ x]!35 ~@2>").gain(0.49)

// drums · hihat
const hihat = s("hh").struct("<~@12 A@8 B@16 ~@6 C D B@35 E ~>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!8", C: "~@5 x!3", D: "x!6 ~ x", E: "x",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<~@12 [~ x ~ x]!8 ~@23 [~@3 x] ~@37>").gain(0.38)

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

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

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [~ x ~ x]!8 ~@8 [x!16]!16 [~@3 x ~@3 x]!8 [x!16]!35 ~@2>").gain(0.27)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@36 [x!4]!8 ~@37>").gain(0.56)

stack(
  acoustic_guitar_steel, bass, epiano1, piccolo, flute, brass_section, tuba, tuba_2, string_ensemble_1, melodic_tom,
  kick, snare, hihat, open_hat, crash, ride, tambourine, woodblocks
)

More by The Hollies