Strudelify

Der Kommissar

Falco

KeyA minorTempo120 bpm
0:00/0:00
// Der Kommissar — Falco
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · synth brass 1
const synth_brass_1 = note(`<
  ~@3 A B@2 C D C E@4 F@4 E@4 F@4 G@4 E@4 ~ H ~ I J ~ B@2 K B E@4 F@4 E@4 F@4 ~ H ~ I J ~@4 H ~ I J ~@2 L M@2 E@4 F@4 ~
  H ~ I J ~@4 H ~ I J ~@3 H ~ I ~ N ~@2
>`.pickRestart({
  A: "e4 ~ c5 ~ a4 e4 g4 a4", B: "e4 g4 c5 g4 a4 e4 g4 a4", C: "e4 g4 ~ g4 a4 e4 g4 a4", D: "~ g4 ~ g4 a4 ~ g4 a4",
  E: "[[a3,c4,e4] d4@2 ~ [a3,c4] ~ e4@2, ~ [g3,b3]@3 ~ [g3,b3]@3, ~@3 e4@2 ~@3]/4", // Am G
  F: "[[a3,c4] d4@2 ~ [a3,c4] ~ e4@2, e4@2 ~ e4@2 ~@3, ~ [g3,b3]@3 ~ [g3,b3]@3]/4", // Am G
  G: "[[a3,c4,e4] d4@2 ~ [a3,c4] [g3,b3]@3, ~ [g3,b3]@3 ~@4, ~@3 e4@2 ~@3]/4", // Am G
  H: "~@2 [c3,e3,a3] ~ [d3,g3,b3] ~ [e3,a3,c4]@6 [d3,g3]@4", // Am G Am G5
  I: "~@2 [c4,a4] ~ [d4,g4,b4] ~ [e4,a4,c5]@6 [d4,g4,b4] ~ [c4,e4,a4] ~, ~ e4 ~@6", J: "[f#4,a4,d5]@15 ~",
  K: "e4 g4 c5 g4 a4 ~ g4 a4", L: "~@6 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", M: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  N: "~@2 [c3,e3,a3] ~ [d3,g3,b3] ~ [e3,a3,c4]@6 [d3,g3,b3]@4", // Am G Am G
})).s("gm_synth_brass_1").gain(0.3)

// chords · synth brass 1 · soft notes
const synth_brass_1_soft = note(`<
  ~@3 A ~@2 B C B ~@2 D ~@3 D ~@3 D ~@3 D ~@3 E@2 ~@2 D ~@2 F ~@6 G ~@3 D ~@3 D ~@3 D ~@3 D ~@2 F ~@7 F ~@4 H I ~@4 D
  ~@3 D ~@2 F ~@7 F ~@6 F ~@5 J
>`.pickRestart({
  A: "~ g4 ~ g4 ~@4", B: "~@2 c5 ~@5", C: "e4 ~ c5 ~@2 e4 ~@2", D: "~ d4", E: "[~ d4@3]/2", F: "~@12 b3@3 ~",
  G: "~@5 e4 ~@2", H: "a1@2 a1@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", I: "a1 ~ a1 ~ a1 ~@11",
  J: "~@2 [c4,a4] ~ [d4,g4,b4] ~ [e4,a4,c5]@6 [d4,g4,b4] ~ [c4,e4,a4] ~, ~ e4 ~@6", // F G Am G Am
})).s("gm_synth_brass_1").gain(0.15)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@2 A@7 B C B D B C B D B C B D B C B D B C B D B C B D ~@6 A@4 B C B D B C B D B C B D B C B D ~@6 E@4 ~@4 F G F H B
  C B D B C B D ~@23
>`.pickRestart({
  A: "c5 ~ g4 ~ a4 ~ e4 ~ g4 ~ d4 ~ e4 ~ g4 ~", B: "a3!2 ~ a3 ~ e3 a3 ~ g3@2 ~@6", C: "~@5 d3 e3 ~ b3 ~ a3 ~ g3@3 ~",
  D: "~@5 d3 d#3@2 e3@5 ~@3",
  E: "[~@15 d5@16 ~, ~@3 a4@4 a4@4 a4@3 a4@16 ~@2, ~@5 d5@10 ~@17, ~@9 f4@3 f4@16 ~@4, ~@10 g4@3 g4@16 ~@3]/4",
  F: "~@2 [a3,a4]@2 [g3,g4] ~ [a3,a4] ~@3 [a3,a4]@2 [g3,g4] ~ [a3,a4] ~", // A G A G A
  G: "~@2 [a3,a4]@2 [g3,g4] ~ [a3,a4] ~@3 [d4,d5]@2 [c4,c5] [a3,a4] [g3,g4] ~", // A G A D C A G
  H: "~@2 [f4,f5] [e4,e5]@3 [e4,e5] ~@3 [c4,c5] ~ [a3,a4] [g3,g4] a3@2, ~@7 [d4,d5]@5 ~@4", // F E C A G D
})).s("gm_electric_guitar_muted").gain(0.35)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@33 A B C D E D F@4 ~@16 A B C D E D G@2 A B C D E D H@4 ~@8 A B C D E D G@2 A B C D E D I J B C D A B ~@2
>`.pickRestart({
  A: "[f#3,a3]@7 ~, d4", B: "[e3,a3]@15 ~", C: "[f#3,a3,d4]", D: "[a3,c4,e4]", E: "[f#3,a3,d4]@7 ~", F: "[a3,c4,e4]/4",
  G: "[[f3,a3,c4]@31 ~]/2", H: "[a2,c3,e3]/4", I: "a3", J: "[a3,d4], f#3@7 ~",
})).s("gm_synth_strings_1").gain(0.35)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@34 A ~@25 A ~@7 A ~@17 A ~@7 A ~@6 A ~@3 A B C>".pickRestart({
  A: "c4@15 ~", B: "[f#3,a3,d4]", C: "[a3,c4,e4]",
})).s("gm_synth_strings_1").gain(0.15)

// bass · fretless bass
const bass = note(`<
  ~@3 A@2 B@2 ~@2 C D E F C D G F C D E F C D G F C D E F C D G F H I J K L M N@4 C D E F C D G F C D E F C D G F H I J
  K L M O P H I J K L M Q@3 ~ C D E F C D G F H I J K L M O P H I J K L M O H I J K H I J ~
>`.pickRestart({
  A: "[a#1@7 ~]/2", B: "[g1@27 ~@5]/2", C: "a2 ~ a2 ~ e2 ~ e2 ~ g2 ~ g2 ~@3 e2 ~",
  D: "g2 ~ g2 ~@3 e2 ~ e2 ~ e2 ~@3 e2 ~", E: "a2 ~ a2 ~ e2 ~ e2 ~ g2 ~ g2 ~@5", F: "~@5 d2 d#2@2 e2@4 ~@4",
  G: "a2 ~ a2 ~ e2 ~ e2 ~ g2 ~ g2@2 ~@4", H: "d3@4 c3@2 b2@2 a2@5 ~ a2@2", I: "c3@4 ~@2 c3 ~ c3@2 a2@2 ~@2 c3@2",
  J: "d3@2 c3 b2 a2@4", K: "e3@5 ~ e3 ~ e3@8", L: "d3@5 ~ d3 ~ d3@7 ~", M: "c3@5 ~ c3 ~ c3@6 c3@2", N: "a2/4",
  O: "c3@4 ~@2 c3 ~ c3@5 ~ c3 ~", P: "c3@5 ~ c3 ~ c3@2 a2@2 b2@2 c3@2", Q: "a2/3",
})).s("gm_fretless_bass").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~ [x ~@3 x ~@2 x]!38 ~@4 [x ~@3 x ~@2 x]!30 ~@4 [x ~@3 x ~@2 x]!31>").gain(0.49)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@107>").gain(0.15)

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "~@7 x",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!38 ~@4 [~ x ~ x]!30 ~@4 [~ x ~ x]!30 [~ x ~@2]>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!38 ~@4 [x!8]!30 ~@4 [x!8]!30 [x!7 ~]>").gain(0.44)

stack(
  synth_brass_1, synth_brass_1_soft, electric_guitar_muted, synth_strings_1, synth_strings_1_soft, bass, kick, rim,
  clap, snare, hihat
)

More by Falco