Strudelify
Rock Me Amadeus cover art

Rock Me Amadeus 30th Anniversary

Rock Me Amadeus

Falco

KeyA minorTempo88 bpm
0:00/0:00
// Rock Me Amadeus — Falco
// 88 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 6 "Bass" named as a bass, played on electric bass finger (its lead 2 sawtooth patch is not one)
// note: duplicate parts dropped: ch 3 "Strings" string ensemble 1 (copy of ch 2 "Vocals" pan flute)
// note: Full arrangement: all 56 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · clavinet
const clavinet = note(`<
  ~@8 A B C D E F G H I J K L I J K M A B C D E F G H I J K L I J K N O P Q R O P Q R O P Q R O P Q S
>`.pickRestart({
  A: "e4@3 ~ e4@3 ~ e4 ~ e4 e4@2 ~@3", B: "f4@3 ~ f4@3 ~ c4 ~ c4 f4@2 ~@3", C: "f#4@3 ~ f#4@3 ~ d4@3 ~ d4 ~@3",
  D: "e4!2 ~@2 e4 ~@11", E: "e4 ~@2 e4@4 ~ e4 ~@2 e4@2 ~@3", F: "f4 ~@2 f4@3 ~@5 f4@2 ~@3",
  G: "f#4@3 ~ f#4@3 ~ d4@2 ~ d4@2 ~@3", H: "e4@2 ~ e4@2 ~@9 c4!2", I: "c4!4 c5!2 ~@3 c4 ~ c4 c5!2 c4!2",
  J: "c4!4 a4!2 ~@3 c4 ~ c4 a4!2 c4!2", K: "f#4!4 a4!2 ~@3 d4 ~ d4@2 d4!3", L: "e4!2 ~@12 c4!2", M: "c4!2 ~@14",
  N: "c4!2 ~@12 d4!2", O: "d4!4 d5!2 ~@3 d4 ~ d4 d5!2 d4!2", P: "d4!4 b4!2 ~@3 d4 ~ d4 b4!2 d4!2",
  Q: "g#4!4 b4!2 ~@3 e4 ~ e4@2 e4!3", R: "f#4!2 ~@12 d4!2", S: "f#4 f#4@12 ~@3",
})).s("gm_clavinet").gain(0.46).pan(0.1)

// other · clavinet · "Clavinet2"
const clavinet_2 = note(`<
  ~@8 A B C D E F G H I J K L I J K M A B C D E F G H I J K L I J K M N O P Q N O P Q N O P Q N O P R
>`.pickRestart({
  A: "c4@3 ~ c4@3 ~ c4 ~ c4 c4@2 ~@3", B: "c4@3 ~ c4@3 ~@4 c4@2 ~@3", C: "d4@3 ~ d4@3 ~ b3@3 ~ b3 ~@3",
  D: "c4!2 ~@2 c4 ~@11", E: "c4 ~@2 c4@4 ~ c4 ~@2 c4@2 ~@3", F: "c4@2 ~ c4@5 c4@2 c4 c4@2 ~@3",
  G: "d4@3 ~ d4@3 ~ d4@2 ~ d4@2 ~@3", H: "c4@2 ~ c4@2 ~@9 c4!2", I: "~@4 e4!2 ~@6 e4!2 ~@2", J: "~@4 f4!2 ~@6 f4!2 ~@2",
  K: "d4!4 f4!2 ~@3 b3 ~ b3@2 b3!3", L: "c4!2 ~@12 c4!2", M: "e4!2 ~@14", N: "~@4 f#4!2 ~@6 f#4!2 ~@2",
  O: "~@4 g4!2 ~@6 g4!2 ~@2", P: "e4!4 g#4!2 ~@3 c#4 ~ c#4@2 c#4!3", Q: "d4!2 ~@14", R: "d4 d4@12 ~@3",
})).s("gm_clavinet").gain(0.46).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D A B C E F@2 G H I J K L M J N O M J N P F@2 G H I J K L M J N O M J N Q R S T U R S T U R S T U R S T V
>`.pickRestart({
  A: "a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ e3 a2@2 g2", B: "f2 ~ f2 ~ f3 ~@3 f2 ~ f2 ~@3 f2 e2",
  C: "d2!2 c2 ~ d2 ~@3 g2 ~ g2 ~@3 d3 b2", D: "a2!2 g2 ~ a2 ~@3 a2 ~ a2 ~@3 e3 c3",
  E: "a2!2 g2 ~ a2 ~@3 a2 ~ a2 ~ a3@2 ~ e3",
  F: "[a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ e3 a2@2 g2@2 ~ g2 ~ f3 ~@3 f2 ~ f2 ~ c3 f2@2 e2]/2",
  G: "d2 ~ d2 ~ d3 ~@3 g2 ~ g2 ~ d3 ~@2 g2", H: "a2 ~@12 a2 e3 g2", I: "a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ e3 a2 ~ g2",
  J: "f2 ~ f2 ~ f3 ~@3 f2 ~ f2 ~ c3 ~ f2 e2", K: "d2 ~ c2 ~ d3 ~@3 g2 ~ g2 ~ d3 ~@2 g2", L: "a2 ~@13 c3 b2",
  M: "a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ e3 ~ a2 g2", N: "d2 ~ d2 ~ d3 ~@3 g2 ~ g2 ~ d3 ~ g2 d3",
  O: "a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ a3 ~ c3 b2", P: "a2 ~ a2 ~ a3 ~@2 e3 a2 ~ a2 ~@3 a2 e3",
  Q: "a2 ~ a2 ~ a3 ~@3 a2 ~ a2 ~ a3 ~ d3 c#3", R: "b2 ~ b2 ~ b3 ~@3 b2 ~ b2 ~ f#3 ~ b2 a2",
  S: "g2 ~ g2 ~ g3 ~@3 g2 ~ g2 ~ d3 ~ g2 f#2", T: "e2 ~ e2 ~ e3 ~@3 a2 ~ a2 ~ e3 ~ a2 e3",
  U: "b2 ~ b2 ~ b3 ~ b2 b3 b2 ~ b2 ~ b3 ~ d3 c#3", V: "b1, b2@7 ~",
})).s("gm_electric_bass_finger").gain(0.24)

// drums · kick
const kick = s("bd").struct("<~@4 A@3 B A@7 C A@7 B A@7 B A@7 B A@15 D>".pickRestart({
  A: "x!2 ~@2 x!2 ~ x", B: "x!2 ~@6", C: "x ~ x ~@11 x!2", D: "x",
})).gain(0.37)

// drums · snare
const snare = s("sd").struct("<~@3 A B@3 C B@7 D B@7 E B@7 F B@7 G B@15 ~>".pickRestart({
  A: "~@8 x ~ x ~ x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@3 x ~ x ~ x!3 ~", D: "~@4 x ~@3 x ~ x ~ x!2 ~@2",
  E: "~@4 x ~@9 x!2", F: "~@4 x ~@3 x!2 ~ x!5", G: "~@4 x ~@3 x!3 ~ x!3 ~",
})).gain(0.37)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@3 B A@7 B A@7 B A@7 B A@7 B A@15 ~>".pickRestart({
  A: "x!8", B: "x!4 ~@4",
})).gain(0.37)

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@14 x!2] ~@19 [~@4 x!2 ~@2] ~@32>").gain(0.37)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@14 A>".pickRestart({
  A: "x",
})).gain(0.37)

stack(clavinet, clavinet_2, bass, kick, snare, hihat, low_tom, crash)

More by Falco