Strudelify
Faith cover art

1987 · Faith

Faith

Michael George

KeyB majorTempo120 bpm
0:00/0:00
// Faith — Michael George
// 120 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 22 ms behind the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: edit a riff to change every repeat.

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@4 A B@8 C D E D F G H I J K L M B@8 C D E D F G H I J K L M B@8 C D E D F G H I J K L M ~@3 A
>`.pickRestart({
  A: "[b3,d#4,f#4,b4]@2 ~ [b3,d#4,f#4,b4] ~@2 [b3,d#4,f#4,b4] ~ [b3,d#4,f#4,b4] ~@7", // B
  B: "[f#3@10 g#3@2 f#3@14 g#3@2 f#3@3 ~@11 c#4@2 ~@4 f#3@10 g#3@2 f#3@14 g#3@2 f#3@3 ~ d#4@16 [g#3,e4]@16 f#3@12 f#4@2 ~@2, b3@21 ~ b3@41 ~, d#4@31 ~ [g#3,e4]@16 d#4@31 ~ f#4@15 ~@17 d#4@14 ~@2]/8", // C#m
  C: "g#4@8 ~@4 c#5@3 ~, e4@15 ~, b3@7 ~ b4@7 ~, ~@5 g#4@3", D: "[f#4,b4,d#5]@7 ~",
  E: "[b3,e4,g#4]@8 [g#4,b4]@4 [g#4,b4,c#5]@3 ~, ~@8 e4@7 ~", F: "[b3,e4,g#4]@7 ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4,c#5]@3 ~",
  G: "[f#4,b4,d#5]@2 ~ [a#4,c#5,f#5] ~@2 [b4,d#5,g#5]@8 ~@2", H: "[g#4,c#5,e5]",
  I: "[f#4,a#4,f#5] ~@2 [f#4,a#4,c#5,f#5] ~@2 [a#4,c#5,f#5] ~@9, ~@3 f#4 ~@4", J: "b3@2 ~ b3 ~@2 b3@3 ~ b3 ~ b3@2 ~@2",
  K: "[b3,f#4]@2 ~ [b3,f#4]@2 ~ [b3,f#4]@3 ~ [b3,f#4]@2 [b3,f#4]@2 ~@2", // B5
  L: "[b3,f#4]@2 ~ [b3,f#4,b4]@2 ~ [b3,f#4,b4]@2 ~@2 [b3,f#4,b4] ~ [b3,f#4,b4] ~@3, b4 ~@15", // B5
  M: "[b4,d#5,f#5,b5] ~@2 [b4,d#5,f#5,b5] ~@2 [b4,d#5,f#5,b5] ~@9", // B
})).s("gm_drawbar_organ").gain(0.19).pan(0.9)

// chords · brass section · "Horns"
const brass_section = note(`<
  ~@3 A B ~@8 C D E F C G H I J K L M ~@8 C D E F C G H I J K L M ~@8 C D E F C G H I J K L M ~@2 A B
>`.pickRestart({
  A: "b3 [b3,b4]", B: "[b4,f#5,b5] ~@2 [b4,f#5,b5]@2 ~ [f#5,b5] ~ [b4,f#5,b5] ~@7, ~@3 b4 ~@4",
  C: "[b3,e4,g#4]@8 [e4,g#4,b4]@4 [e4,g#4,b4,c#5]@3 ~", // E C#m7
  D: "[f#4,b4,d#5]@9 ~ [f#4,b4,d#5] [b4,d#5] [g#4,b4,e5] [f#4,b4,d#5] ~@2", // B E B
  E: "[b3,e4,g#4]@7 ~@5 c#5@4, ~@8 [e4,g#4,b4]@7 ~", F: "~@2 [f#4,d#5] ~@2 [e4,c#5] ~@2 [d#4,b4]@6 ~@2",
  G: "[f#4,b4,d#5]@2 ~ [a#4,c#5,f#5] ~@2 [b4,d#5,g#5]@9 ~", H: "[g#4,c#5,e5]",
  I: "[f#4,c#5,f#5] ~@2 [f#4,c#5,f#5] ~@2 [f#4,c#5,f#5] ~@9", J: "b3@2 ~ b3 ~@2 b3@2 ~@8",
  K: "[b3,f#4]@2 ~ [b3,f#4]@2 ~ [b3,f#4]@3 ~@7", L: "[b3,b4]", M: "[b4,f#5,b5] ~@2 [b4,f#5,b5] ~@2 [b4,f#5,b5]@2 ~@8",
})).s("gm_brass_section").gain(0.33)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~ A@3 B A C D E@2 C F E D C G H G I J K L A M N A C D E@2 C D E D C G H G I J K L A O N A C D E@2 C F E P C G H G I J
  K L A M N A@3 B
>`.pickRestart({
  A: "[b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4]@2 ~@2 [b2,g#3,b3,d#4] ~ [b2,f#3,b3,d#4]@2 ~@2", // B G#m B
  B: "[b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4] ~ [b2,f#3,b3,d#4] ~@7", // B
  C: "[b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4]@2 ~ f#3 [b2,g#3,b3,d#4] ~ [b2,f#3,b3,d#4]@2 ~@2", // B G#m B
  D: "[e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@2 ~@2 [e3,g#3,c#4,e4] ~ [e3,g#3,b3,e4]@2 ~@2", // E C#m E
  E: "[b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4]@2 ~@2 [b2,g#3,b3,d#4] ~ [b2,f#3,b3,d#4] ~@3", // B G#m B
  F: "[e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4] ~@2 [e3,g#3,b3,e4]@2 ~@2 [e3,g#3,c#4,e4] ~ [e3,g#3,b3,e4] ~@3", // E C#m E
  G: "[e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@2 ~ b3 [e3,g#3,c#4,e4] ~ [e3,g#3,b3,e4]@2 ~@2", // E C#m E
  H: "[f#3,b3,d#4]@2 ~ [f#3,b3,d#4] ~@2 [f#3,b3,d#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [f#3,b3,d#4] ~", // B
  I: "[f#3,b3,d#4]@2 ~ [a#3,c#4,f#4]@2 ~ [b3,d#4,g#4]@3 ~ [b3,d#4,g#4] ~ [g#3,b3,d#4]@3 ~", // B F# G#m
  J: "[g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~@2 [c#3,g#3,c#4,e4] ~ [c#3,g#3,c#4,e4]@2 ~@2", // C#m
  K: "[f#3,a#3,c#4,f#4] ~@2 [f#3,a#3,c#4,f#4] ~@2 [f#3,a#3,c#4,f#4] ~@9", // F#
  L: "[b2,f#3,b3,d#4]@2 ~ [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4]@2 ~@2 [b2,f#3,b3,d#4] ~ [b2,f#3,b3,d#4] ~@3", // B
  M: "[b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4]@2 ~ f#3 [b2,g#3,b3,d#4] ~ [b2,f#3,b3,d#4] ~@2 f#3", // B G#m B
  N: "[b2,b3,d#4,f#4]@2 ~ [b2,b3,d#4,f#4] ~@2 [b2,b3,d#4,f#4] ~@9", // B
  O: "[b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4] ~@2 [b2,f#3,b3,d#4]@2 ~ f#3 [b2,g#3,b3,d#4] ~ [b2,f#3,b3,d#4] ~@3", // B G#m B
  P: "[e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4] ~@2 [e3,g#3,b3,e4]@2 ~@2 [e3,g#3,c#4,e4] ~ [e3,g#3,b3,e4]@2 ~@2", // E C#m E
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.3)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@3 A B C D E C@3 F G H C I J F K L M G N G O C D E C@3 F G H C I J F K L M G N G O C D E C@3 F G H C I J F K L M G N
  G O ~@2 A P
>`.pickRestart({
  A: "b2@2 ~ b2@2 ~ b2@3 ~ b2 ~ b2@2 ~@2", B: "b2@2 ~ g#2 ~ f#2 d#2 ~ b1@2 ~@6",
  C: "b1@2 ~ b1@2 ~ b1@2 ~ b1!2 ~ b1 ~ f#2 ~", D: "b1@2 ~ b1@2 ~ b1@2 ~ b1!2 ~ b1 ~ b1 ~",
  E: "e2@2 ~ e2@2 ~ e2@3 ~ e2 ~ e2 ~ e2 ~", F: "e2@2 ~ e2@2 ~ e2@2 ~ e2!2 ~ e2 ~ e2 ~",
  G: "b1@2 ~ b1@2 ~ b1@2 ~ b1!2 ~ b1@2 ~@2", H: "e2@2 ~ e2@2 ~ e2@2 ~ e2!2 ~ e2@2 ~@2",
  I: "e2@2 ~ e2@2 ~ e2@2 ~@2 e2 ~ e2@2 ~@2", J: "b1@2 ~ c#2@2 ~ d#2@3 ~ f#2 ~ f#2@2 d#2@2",
  K: "b2@2 ~ a#2@2 ~ g#2@2 ~ g#2!2 ~ g#2@2 ~@2", L: "c#2@2 ~ c#2@2 ~ c#2@3 ~ c#2 ~ c#2 ~ c#2 ~",
  M: "f#2 ~@2 f#2 ~@2 f#2 ~@9", N: "b1@2 ~ b1@2 ~ b1@2 ~@2 b1 ~ b1@2 ~@2", O: "b1 ~@2 b1 ~@2 b1 ~@9",
  P: "b2@2 ~ g#2 ~ f#2 d#2 ~ b1@2 ~@6, ~@8 a#1 ~@7",
})).s("gm_electric_bass_finger").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@3 C@2 B C B C@2 B@4 D E F B D E B@3 C@2 B C B C@2 B@4 D E F B D E B@3 C@2 B C B C@2 B@4 D E F B D E ~@3 A
>`.pickRestart({
  A: "~ x", B: "x ~@2 x ~ x!2 ~@3 x ~ x ~@3", C: "x ~@2 x ~ x!2 ~@2 x!2 ~ x ~@3", D: "x ~@2 x ~@2 x ~@3 x ~ x ~@3",
  E: "x ~@2 x ~@2 x ~@9", F: "x ~@2 x ~@2 x ~@2 x!2 ~ x ~@3",
})).gain(0.32)

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

// drums · snare
const snare = s("sd").struct("<~@4 A B@15 C B@3 C B@15 C B@3 C B@15 C B@3 C ~@3 A>".pickRestart({
  A: "x ~@2 x ~@2 x ~ x ~@7", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 [~@12 x!4] ~@19 [~@12 x!4] ~@19 [~@12 x!4] ~@16>").gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@12 [~@10 x!2 ~@4] ~@19 [~@10 x!2 ~@4] ~@19 [~@10 x!2 ~@4] ~@16>").gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct("<~@5 A ~@15 A ~@3 A ~@15 A ~@3 A ~@15 A ~@7>".pickRestart({
  A: "x",
})).gain(0.36)

stack(drawbar_organ, brass_section, electric_guitar_clean, bass, kick, rim, snare, mid_tom, high_tom, tambourine)

More by Michael George