Strudelify

(The System of) Dr. Tarr and Professor Fether

The Alan Parsons Project

KeyC minorTempo113 bpm
0:00/0:00
// (The System of) Dr. Tarr and Professor Fether — The Alan Parsons Project
// 113 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Vocal 2" clarinet (copy of ch 1 "Vocal" harmonica)
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric bass finger · "Fingered Bass"
const electric_bass_finger = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H I J@2 E@2 K@2 E@2 F@2 G@2 H I J@2 E@2 L M N O E@2 P@2 Q R S T J@2 E@2 L M N O L M N O
  E@2 U@2 V W@2 X W@3 X W@3 X W@3 X
>`.pickRestart({
  A: "eb5@2 ~ d5@2 ~ c5@7 ~@3", B: "[eb5@2 ~ d5@2 ~ c5@4 ~ g4 ab4 bb4 a4@12 ~@6]/2", C: "bb5@2 ~ a5@2 ~ g5@9 ~",
  D: "[bb5@2 ~ a5@2 ~ g5@6 ~@2 c5@7 ~@3 c6@5 ~@3]/2", E: "bb4@2 ~ a4@2 ~ g4@7 ~@3",
  F: "[bb4@2 ~ a4@2 ~ g4@6 ~@2 c5@12 ~@6]/2",
  G: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~@3", // Cm
  H: "[eb4,f4,ab4,c5] ~@2 [eb4,f4,ab4,c5] ~@2 [eb4,f4,ab4,c5] ~@3 [eb4,f4,ab4,c5] ~ [eb4,f4,ab4,c5] ~@3", // Fm7
  I: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~ [f3,bb3] [gb3,b3]", // Cm Bb5 B5
  J: "[c4 ~ eb4@3 ~ d4 c4 d4 c4@18 ~@5]/2", K: "[bb4@2 ~ a4@2 ~ g4@6 ~@2 c5@13 ~@5]/2", L: "f3@9 ~ f4@3 ~ c4 ~",
  M: "ab3@9 ~ f4@3 ~ c4 ~", N: "bb3@9 ~ f4@3 ~ c4 ~", O: "eb4 f4 ~ eb4 f4 ~ eb4 f4@2 eb4 f4 ~ eb4 ~ f4 ~",
  P: "[bb4@2 ~ a4@2 ~ g4@6 ~@2 c4@7 ~@11]/2", Q: "c5@8 ~@6 bb4 g4", R: "f4 eb4 c4 c4@2 ~ eb4 ~ c4@3 ~@5",
  S: "~@2 f4!2 eb4 f4 ~ eb4 f4!2 eb4 f4@4 ~", T: "~@2 c4 d4 eb4 ~ d4 c4 eb4 c4@6 ~",
  U: "[bb4@2 ~ a4@2 ~ g4@6 ~@2 c4@7 ~@3 c5@5 ~@3]/2", V: "e5@3 ~ e5@3 ~ d5@3 ~ c5@3 ~",
  W: "f5@3 ~ e5@3 ~ d5@3 ~ c5@3 ~", X: "b4@11 ~@5",
})).s("gm_lead_8_bass_lead").gain(0.45)

// chords · electric guitar jazz · "Gutar Jazz"
const electric_guitar_jazz = note(`<
  A B C D E F G@2 H@2 I@2 J@2 K L M@2 H@2 I@2 H@2 I@2 J@2 K L M@2 H@2 N O P Q H@2 R@2 J@2 S J M@2 H@2 N O P Q N O P Q
  H@2 I@2 T U V W X W Y W X W Y W X W Y W
>`.pickRestart({
  A: "[c4,eb4,g4]@5 ~@3", B: "[bb3,d4,f4]@5 ~@3", C: "[bb3,eb4,g4]@5 ~@3", D: "[c4,f4,a4]@5 ~@3",
  E: "eb5@2 ~ d5@2 ~ c5@7 ~@3", F: "eb5@2 ~ d5@2 ~ c5@9 ~", G: "[eb5@3 d5@3 c5@5 g4 ab4 bb4 a4@13 ~@5]/2",
  H: "eb4@2 ~ d4@2 ~ c4@7 ~@3", I: "[eb4@2 ~ d4@2 ~ c4@4 ~ g3 ab3 bb3 a3@13 ~@5]/2",
  J: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~@3", // Cm
  K: "[eb4,f4,ab4,c5] ~@2 [eb4,f4,ab4,c5] ~@2 [eb4,f4,ab4,c5] ~@3 [eb4,f4,ab4,c5] ~ [eb4,f4,ab4,c5] ~@3", // Fm7
  L: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~ [c4,eb4,g4] ~ f3 gb3", // Cm
  M: "[g3 ~ bb3@3 ~ a3 g3 a3@19 ~@5]/2", N: "f3@9 ~ f4@3 ~ c4 ~", O: "ab3@9 ~ f4@3 ~ c4 ~", P: "bb3@9 ~ f4@3 ~ c4 ~",
  Q: "bb3 c4 ~ bb3 c4 ~ bb3 c4@2 bb3 c4 ~ bb3 ~ c4 ~", R: "[eb4@2 ~ d4@2 ~ c4@4 ~ g3 ab3 bb3 a3@12 ~@6]/2",
  S: "[c4,f4,ab4] ~@2 [c4,f4,ab4] ~@2 [c4,f4,ab4] ~@3 [c4,f4,ab4] ~ [c4,f4,ab4] ~@3", // Fm
  T: "[d4,f4,a4]@3 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~", // Dm
  U: "[g3,b3,d4]@3 ~ [g3,b3,d4]@2 ~ [g3,b3,d4]@2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  V: "[a3,c4,f4]@3 ~ [a3,c4,f4]@2 ~ [a3,c4,f4]@2 ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~", W: "[g3,b3,d4]@11 ~@5",
  X: "[a3,d4,f4]@11 ~@5", Y: "[a3,c4,f4]@11 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.45)

// other · drawbar organ · "Hammond Organ"
const drawbar_organ = note(`<
  A B C D A B C D E F C D ~@6 A B C D E F C D ~@4 G@2 A B ~@4 A B C ~@5 G@2 A B ~@8 A B C ~@4 H I@12
>`.pickRestart({
  A: "[c4,eb4,g4]@11 ~@5", B: "[bb3,d4,f4]@11 ~@5", C: "[bb3,eb4,g4]@11 ~@5", D: "[c4,f4,a4]@11 ~@5",
  E: "[c4,eb4,g4]@5 ~@3", F: "[bb3,d4,f4]@5 ~@3", G: "[[g3,b3,d4]@5 ~@3 [a3,c4,f4]@19 ~@5]/2",
  H: "~@10 [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", I: "f5 d5 a4 g5 d5 a4 a5 d5 a4 g5 d5 a4 f5 a4 d5 a4",
})).s("gm_drawbar_organ").gain(0.45)

// bass · synth bass 1 · "Bass"
const bass = note(`<
  A@4 B@4 C@4 D E F G H@2 C@8 D E F G H@2 C@2 I J K L C@4 D E F G H@2 C@2 I J K L M J K L C@4 N O@3 N@12
>`.pickRestart({
  A: "c2@5 ~@3", B: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", C: "c3@3 ~ c3@3 ~ c3@3 ~ c3@3 ~",
  D: "c3 ~@2 c3 ~@2 c3 ~@3 c3 ~ c3 ~ bb2 b2", E: "c3 ~@2 c3 ~@2 c3 ~@3 c3 ~ c3 ~ eb3 e3",
  F: "f3 ~@2 f3 ~@2 f3 ~@3 f3 ~ f2 ~ bb2 b2", G: "c3 ~@2 c3 ~@2 c3 ~@3 c3 ~ c3 ~@3",
  H: "[~@2 g2@5 ~ f2@16 ~@6 bb2 b2]/2", I: "f2@2 ~ f2!2 ~@4 f3 f2@3 g2@2 ~", J: "ab2@2 ~ ab2!2 ~@3 ab3 ab2@4 ab2@2 ~",
  K: "bb2@2 ~ bb2!2 ~@4 bb3 bb2@3 c3@2 ~", L: "db3!2 ~ db3!2 ~ db3 db3@2 db3!2 ~ db3 ~ db3 ~",
  M: "f2@2 ~ f2!2 ~@4 f3 ~ f2@2 g2@2 ~", N: "d3@2 ~ d3 d3@2 ~ d3@2 ~ d3 d3@2 ~ d3 a2",
  O: "d3@2 ~ d3 d3@2 ~ d3@2 ~ d3!3 ~ d3 a2",
})).s("gm_synth_bass_1").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@4 A@12 B ~ A@12 B ~ A@5 ~ A@8 B ~ A@9 ~ A@20>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C B@3 C B@4 ~ D B@3 C B@3 C B@3 C ~ D B E B@3 F B@3 C B@3 E ~ D B E B@3 C B@3 F B@3 C B@3 C B@3 C B@3 C B@3
  E
>`.pickRestart({
  A: "~@12 x ~ x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "x ~@3 x ~@3 x ~ x ~ x ~ x!2", E: "~@2 x ~@3 x!2",
  F: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~ x ~",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@3 B A@3 B A@4 ~@2 A@3 C A@3 C A@3 B ~@2 A B A@3 ~ A@3 B A@4 ~@2 D A@4 B A@3 ~ A@3 B A@3 B A@3 B A@3 B A@4
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!6 ~@2", D: "~ x!7",
})).gain(0.5)

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

stack(electric_bass_finger, electric_guitar_jazz, drawbar_organ, bass, kick, snare, hihat, crash)

More by The Alan Parsons Project