Strudelify
Du bist nicht allein cover art

Du bist nicht allein

Roy Black

KeyF majorTempo121 bpm
0:00/0:00
// Du bist nicht allein — Roy Black
// 121 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(121/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 C D E@2 D@2 F D E@2 G H I J K I L M E@2 D@2 F D E@3 N O P Q R H D E@2 D@2 F D E@2 G H I J K I L M E@2 D@2 F D E@3
  N O P Q R H D A B C D A B S
>`.pickRestart({
  A: "f2@3 ~@3 f2@2 d2@3 ~@5", B: "g2@3 ~@3 g2@2 c2@3 ~@5", C: "f2@3 ~@3 f2@2 d2@2 ~@6", D: "g2 ~@2 g2 c2 ~@3",
  E: "f2 ~@2 f2 c2 ~@3", F: "g2@3 ~@3 g2@2 c2@2 ~@6", G: "f2@3 ~@3 f2 ~ c2@2 ~@6", H: "f2@2 ~@4 f2@2 c2@3 ~@5",
  I: "g2@2 ~@4 g2@2 c2@3 ~@5", J: "g2@2 ~@4 g2 ~ c2@2 ~@6", K: "g2@3 ~@3 g2 ~ c2@2 ~@6",
  L: "f2@2 ~@4 f2 ~ c2@2 ~@2 c2@2 ~@2", M: "f2 ~@7", N: "f2@3 ~@3 f2@2 c2@2 ~@6", O: "bb1@3 ~@3 bb1@2 f1@2 ~@6",
  P: "bb1@2 ~@4 bb1 ~ bb1@2 ~@6", Q: "c2@3 ~@3 c2 ~ c2@3 ~ bb1@2 ~@2", R: "c2@3 ~@3 c2 ~ c2@3 ~@5",
  S: "f2@3 ~@3 f2@2 ~@8",
})).s("gm_acoustic_bass").gain(0.52)

// other · accordion
const accordion = note("<~@4 A@2 B@2 C@2 D@2 ~@7 E A@2 B@2 C@2 D@2 ~@23 E F@2 G@2 F@2 H@2 ~@15>".pickRestart({
  A: "[c5@2 c5 ~ c5 ~ c5@2 d5@12 c5@2 d5@2 e5@4 d5@2 c5@2]/2", B: "[d5 e5@2 ~]/2",
  C: "[c5 ~ c5 ~ c5 ~ c5@2 d5@12 c5@2 d5@2 e5@4 d5@2 c5@2]/2", D: "[e5@2 f5@3 ~@3]/2", E: "~ e5 d5 db5",
  F: "[c5 ~ c5 ~ c5 ~ c5@2 d5@11 ~ c5@2 d5@2 e5@4 d5@2 c5@2]/2", G: "[d5@2 e5@3 ~@3]/2", H: "[e5@8 f5@13 ~@11]/2",
})).s("gm_accordion").gain(0.25)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A B A C ~@7 D E F G H I J K L ~@7 D M N O P Q R S T ~@7 D E F G H I J K L ~@7 D M N O P Q R S T U B A C A B V
>`.pickRestart({
  A: "[g4,a4,c5] [f4,a4,d5]", B: "[f4,bb4,c5] [e4,bb4,d5]", C: "[f4,bb4,c5]@8 [e4,bb4,d5]@7 ~",
  D: "~@4 a5@3 ~ a5@4 g5@4", E: "bb5@6 a5@2 g5@4 f5@3 ~", F: "f5@3 e5@3 f5@2 g5@6 f5@2",
  G: "~@2 [c5,c6]@2 [e4,g6]@3 [f4,f6], e5@7 ~@9", H: "[g4,e6]@2 ~@2 bb5@3 ~ bb5@4 a5@3 ~", I: "c6@6 bb5@2 a5@4 g5@3 ~",
  J: "g5@3 a5@2 bb5@2 ~ a5@6 g5@2", K: "f5@3 ~ [f4,c6]@4 [c5,a6]@6 [bb4,g6]@2", L: "[a4,f6] ~@7",
  M: "bb5@5 a5@2 ~ g5@4 f5@3 ~", N: "f5@3 e5@3 f5@2 g5@4 a5@4", O: "[bb5,d6]", P: "~ [d6,f6] [c6,e6] [bb5,d6]",
  Q: "[a5,c6] [bb5,d6]", R: "~@2 [g5,bb5] [a5,c6] [bb5,d6]@2 [a5,c6] [g5,bb5]", S: "[a4,a5] [c5,c6]",
  T: "[g4,g5]@8 [c5,c6]@7 ~", U: "~ [f4,a4,d5]", V: "[g4,a4,c5] ~",
})).s("gm_string_ensemble_1").gain(0.31)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@4 A B ~ C D E F G ~@8 A B ~ C D E F G ~@11 C ~@2 F G ~@8 A B ~ C D E F G ~@8 H I H I H I ~
>`.pickRestart({
  A: "~@12 [a5,d6] ~ [a5,d6] ~", B: "[a5,d6] ~@15",
  C: "[e5,bb5,c6] ~ [e5,bb5,c6] ~ [e5,bb5,c6] ~ [e5,bb5,c6] ~ [e5,bb5,d6] ~@3 [e5,bb5,d6] ~@3", // C7 Em7b5
  D: "~@12 [e5,bb5,d6] ~ [e5,bb5,d6] ~", E: "[e5,bb5,d6] ~@15", F: "~@12 [f5,a5,c6] ~ [f5,a5,c6] ~",
  G: "[f5,a5,c6] ~@15", H: "~@6 a5 ~, ~@11 f5@2 ~@3, ~@12 d6 ~@3", I: "~@6 bb5 ~, ~@11 e5@2 ~@3, ~@12 d6 ~@3",
})).s("gm_pizzicato_strings").gain(0.37).pan(0.1)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@4 A B ~ C D E F G ~@8 A B ~ C D E F G ~@7 H ~@3 C ~@2 F G ~@8 A B ~ C D E F G ~@6 I J ~@7
>`.pickRestart({
  A: "~@12 [a4,d5] ~ [a4,d5] ~", B: "[a4,d5] ~@15",
  C: "[e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,d5] ~@3 [e4,bb4,d5] ~@3", // C7 Em7b5
  D: "~@12 [e4,bb4,d5] ~ [e4,bb4,d5] ~", E: "[e4,bb4,d5] ~@15", F: "~@12 [f4,a4,c5] ~ [f4,a4,c5] ~",
  G: "[f4,a4,c5] ~@15", H: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5]@4 ~@4",
  I: "[c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [f5,a5]@2 [f5,a5,c6]@4 ~@4, ~@6 c5 ~@9", // F
  J: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [e5,g5,c6]@4 ~@4", // C
})).s("gm_piano").gain(0.5).pan(0.8)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A B C@2 D E@2 F G C@3 H@4 C I C@2 D E@2 F G C@3 J@2 K E C H C@2 D E@2 F G C@3 H@4 C I C@2 D E@2 F G C@3 J@2 K E C
  H A B A B A B L
>`.pickRestart({
  A: "[f3,a3,c4,e4] ~ [f3,a3,c4,e4] ~ [f3,a3,c4,e4]@4 [d3,a3,d4,f4] ~ [d3,a3,d4,f4] ~ [d3,a3,d4,f4]@3 ~", // Fmaj7 Dm
  B: "[d3,bb3,d4,f4] ~ [d3,bb3,d4,f4] ~ [d3,bb3,d4,f4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@3 ~", // Bb C
  C: "[f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@3 ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@3 ~", // F
  D: "[g3,bb3,d4,g4] ~ [g3,bb3,d4,g4] ~ [g3,bb3,d4,g4]@3 ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@3 ~", // Gm C
  E: "[g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@3 ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@3 ~", // C
  F: "[g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@3 ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@2 ~@2", // C
  G: "[e3,a3,c4,e4] ~ [e3,a3,c4,e4] ~ [e3,a3,c4,e4]@3 ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@3 ~", // Am F
  H: "[e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@3 ~", // C
  I: "[f3,a3,c4,f4] ~@15", // F
  J: "[f3,bb3,d4,f4] ~ [f3,bb3,d4,f4] ~ [f3,bb3,d4,f4]@3 ~ [f3,bb3,d4,f4] ~ [f3,bb3,d4,f4] ~ [f3,bb3,d4,f4]@3 ~", // Bb
  K: "[f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@3 ~ [f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [f3,bb3,d4,f4]@3 ~", // F Bb
  L: "[f3,a3,c4,e4] ~ [f3,a3,c4,e4] ~ [f3,a3,c4,e4]@4 ~@8", // Fmaj7
})).s("gm_acoustic_guitar_steel").gain(0.23)

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

// drums · snare
const snare = s("sd").struct("<[x ~ x!3 ~ x ~]!19 x [x ~ x!3 ~ x ~]!31 x [x ~ x!3 ~ x ~]!22 [x ~ x!2 ~@4]>").gain(0.37)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[~ x ~ x]!19 x [~ x ~ x]!31 x [~ x ~ x]!22 [~ x ~@2]>").gain(0.44)

// drums · triangle
const triangle = s("triangles:35").struct("<[x!8]!19 x [x!8]!31 x [x!8]!22 [x!4 ~@4]>").gain(1.63)

stack(
  bass, accordion, string_ensemble_1, pizzicato_strings, piano, acoustic_guitar_steel, kick, snare, pedal_hat, triangle
)

More by Roy Black