Strudelify

Pretty Belinda

Chris Andrews

KeyE majorTempo148 bpm
0:00/0:00
// Pretty Belinda — Chris Andrews
// 148 bpm, 2/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 177 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(148/2)

// 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.

// other · piano · "Gesang/P"
const piano = note(`<
  ~@17 A B C D E F G H A F C D I F J K A B C D E F G H A F C D I F J K L M N O P Q R F L M S F T U V B A B C D E F G H A
  F C D I F J K ~@16 A B C D E F G H A F C D I F J K L M N O P Q R F L M S F T U V B A B C D E F G H A F C D I F J K
  ~@32
>`.pickRestart({
  A: "c#5@5 d5@3 c#5@5 e5@3", B: "~@5 e5@4 ~@7", C: "c#5@5 d5@3 c#5@3 ~@2 c#5@3", D: "~@5 b4@4 ~@7",
  E: "b4@5 c#5@3 b4@4 ~ e5@2 ~", F: "~@5 e5@3 ~@8", G: "b4@5 c#5@3 b4@2 ~@3 b4@3", H: "~@5 a4@3 ~@8",
  I: "b4@5 c#5@2 ~ b4@5 e5@3", J: "b4@5 c#5@2 ~ b4@3 ~@2 b4@3", K: "~@5 a4@4 ~@7", L: "a5@3 ~@2 a5@2 ~ a5@3 ~@2 a5@3",
  M: "~@5 a5@3 ~@5 a5@2 ~", N: "a5@3 ~@2 a5@2 ~ a5@5 g#5@3", O: "~@6 e5@3 ~@4 g#5@2 ~",
  P: "g#5@4 ~ g#5 ~@2 g#5@3 ~@2 g#5@3", Q: "~@5 g#5@3 ~@5 g#5 ~@2", R: "g#5@3 ~@2 f#5@2 ~ f#5@3 ~@2 f#5@3",
  S: "a5@4 ~ a5@2 ~ a5@4 ~ g#5@3", T: "g#5@2 ~@3 g#5 ~@2 g#5@2 ~@3 g#5@3", U: "~@5 g#5@2 ~@6 g#5@2 ~",
  V: "f#5@3 ~@2 f#5@2 ~ f#5@4 ~ f#5@3",
})).s("gm_piano").gain(0.56)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3
  I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G
  H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I G@2 A B C@2 D C E B F G H@3 I J
>`.pickRestart({
  A: "a1@3 ~@5 a1@3 ~@5", B: "a1 ~ a1 ~", C: "e1 ~ e1 ~", D: "e1@3 ~@5 e1@5 ~@3", E: "a1@3 ~@5 a1@5 ~@3",
  F: "a1@4 ~@4 a1@5 ~@3", G: "a1@5 ~@3 a1@5 ~@3", H: "e1@5 ~@3 e1@5 ~@3", I: "e1@5 ~@3 e1@6 ~@2", J: "a1@5 ~@11",
})).s("gm_acoustic_bass").gain(0.56).pan(0.4)

// other · tenor sax · "Saxophon"
const tenor_sax = note(`<
  ~ A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B
  E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E
  D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B A B C D E D F B F B E D E D F B
>`.pickRestart({
  A: "~@13 g#2@2 ~", B: "a2 ~@7", C: "~@13 d#2@2 ~", D: "e2 ~@7", E: "~@13 d#2@3", F: "~@13 g#2@3",
})).s("gm_tenor_sax").gain(0.47)

// chords · percussive organ · "Nachschl"
const percussive_organ = note(`<
  ~@2 A B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B
  C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@4 A@3 B C@4 A@4 C@3 D E
>`.pickRestart({
  A: "~@5 [e5,a5,c#6] ~@7 [e5,a5,c#6] ~@2", B: "~@5 [e5,a5,c#6] ~@7 [e5,g#5,b5] ~@2",
  C: "~@5 [e5,g#5,b5] ~@7 [e5,g#5,b5] ~@2", D: "~@5 [e5,g#5,b5] ~@10", E: "[e5,g#5,b5] ~@15",
})).s("gm_percussive_organ").gain(0.25)

// chords · synth strings 1 · "Fl„che"
const synth_strings_1 = note(`<
  ~@2 A@2 B@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 E@8 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4
  D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 C@4 F@5
>`.pickRestart({
  A: "[e3,a3,c#4]/2", B: "[e3,g#3,b3]/2", C: "[e3,a3,c#4]/4", D: "[e3,g#3,b3]/4",
  E: "[[e3,g#3,b3]@31 ~ [a3,c#4]@32, ~@31 e3@31 ~@2]/8", F: "[[g#3,b3]@60 [a3,c#4]@9 ~@11, e3@69 ~@11]/5",
})).s("gm_synth_strings_1").gain(0.23)

// drums · kick
const kick = s("bd").struct("<~@2 [x!2]!173 [x ~@7 x ~@4 x ~@2] ~>").gain(0.44)

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

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

stack(piano, bass, tenor_sax, percussive_organ, synth_strings_1, kick, snare, hihat)

More by Chris Andrews