Strudelify

mother 3 - unfounded revenge

Duncan D.

KeyC minorTempo140 bpm
0:00/0:00
// mother 3 - unfounded revenge — Duncan D.
// 140 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 7, 4/4 at bar 7, 2/4 at bar 11, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Piccolo" named as a pipe, played on piccolo (its tremolo strings patch is not one); ch 2 "C Trumpet" named as a brass, played on trumpet (its piano patch is not one); ch 15 "Double Bass" named as a bass, played on acoustic bass (its contrabass patch is not one)
// note: duplicate parts dropped: ch 12 "Violins" string ensemble 1 (copy of ch 7 "Brass" brass section)
// note: Transcription provider: pdmx. https://musescore.com/score/867751; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piccolo
const piccolo = note("<~@8 A B ~@23 A B ~@23 A B ~@7 A B ~@23 A B ~@23 A B ~@2>".pickRestart({
  A: "~@6 [bb6,b6,c7] ~@3 [bb6,b6,c7] ~@3 [bb6,b6,c7] ~", B: "~@2 [bb6,b6,c7] ~@13",
})).s("gm_piccolo").gain(0.5)

// chords · trumpet · "C Trumpet"
const trumpet = note(`<
  ~@2 A B C D E F@2 G H I J ~@7 J ~ K ~ L ~ M ~ B C D E F@2 G H I J ~@7 J ~ K ~ L ~ M ~ B C D E F@2 G H I B C D E F@2 G
  H I J ~@7 J ~ K ~ L ~ M ~ B C D E F@2 G H I J ~@7 J ~ K ~ L ~ M ~ B C D E F@2 G H I
>`.pickRestart({
  A: "~@14 g4 ~", B: "[c3,g3]!8, c5 ~ d5 ~ eb5 ~ f5 ~ g5@6 c6 ~",
  C: "[c3,g3]!8, f5 ~ c6 ~ eb5 ~ c6 ~ d5 ~ c6 ~ c5 ~ eb5 ~", D: "[g2,d3]!8, d5@4 b4 ~ g4 ~ d5@4 b4 ~ g4 ~",
  E: "[g2,d3]@2 eb5 [eb5,f5] [g2,d3,d5]@2 [g2,d3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2, f5 ~ [g2,d3]@2 ~@2 eb5 ~ c5@4 ~@4", // G5 Ebsus2 G5 C5 G5
  F: "[c3,g3]!8", G: "[c3,g3]!4 [ab2,eb3]!4", H: "[ab2,eb3]!4 [g2,d3]!4", I: "[c3,g3]!7 ~",
  J: "ab5 ~ ab5!3 eb5 ~ bb5 c6@8", K: "g5 ~ g5!3 eb5 ~ ab5 bb5@8", L: "f5 ~ f5!3 d5 ~ g5 ab5@8",
  M: "eb5 ~ eb5!3 g5 ~ eb5 c5@8",
})).s("gm_trumpet").gain(0.5)

// other · french horn · "Mellophone"
const french_horn = note(`<
  A B C ~@4 D E F G H ~@2 I ~@3 J ~ K ~ L ~ M ~ N ~@5 D E F G H ~@2 I ~@3 J ~ K ~ L ~ M ~ N ~@5 D E F G H ~@4 D E F G H
  ~@2 I ~@3 J ~ K ~ L ~ M ~ N ~@5 D E F G H ~@2 I ~@3 J ~ K ~ L ~ M ~ N ~@5 D E F G H
>`.pickRestart({
  A: "~@2 [b3,gb4] ~ [b3,gb4]@2 ~@2 [b3,gb4] ~ [b3,gb4] ~@3 [b3,gb4] ~", // B5
  B: "[b3,gb4] ~ [b3,gb4] ~ [b3,gb4] ~ [b3,gb4] ~ [b3,gb4] ~ [b3,gb4] ~ [c4,g4] ~ [db4,ab4] ~", // B5 C5 Db5
  C: "[d4,a4] ~ [eb4,bb4] ~ [e4,b4] ~ [f4,c5] ~ [gb4,db5] ~ [g4,d5] ~ [ab4,eb5]@2 ~@2", // D5 Eb5 E5 F5 Gb5 G5 Ab5
  D: "~@6 g3 ~ c4 ~ d4 ~ eb4 ~ f4 ~", E: "g4@6 c5 ~ f4 ~ c5 ~ eb4 ~ c5 ~", F: "d4 ~ c5 ~ c4 ~ g4 ~ gb4@4 eb4 ~ c4 ~",
  G: "gb4@4 eb4 ~ c4 ~ g4 ~ f4 [f4,g4] eb4@2 d4 ~", H: "c4 ~@3", I: "g4 ~ g4!3 eb4 ~ ab4 bb4@8",
  J: "eb4 ~ eb4!3 c4 ~ f4 g4@8", K: "f4 ~ f4!3 c4 ~ g4 ab4@8", L: "eb4 ~ eb4!3 bb3 ~ f4 g4@8",
  M: "d4 ~ d4!3 ab3 ~ eb4 f4@8", N: "c4 ~ c4!3 eb4 ~ c4 c4@8",
})).s("gm_french_horn").gain(0.5)

// other · trombone
const trombone = note("<~@16 A ~@24 A ~@33 A ~@24 A ~@20>".pickRestart({
  A: "f3 ~ f3!3 c3 ~ g3 ab3@8",
})).s("gm_trombone").gain(0.5)

// bass · tuba
const bass = note(`<
  A ~ B C@2 D E C@2 F G C ~@16 C@2 D E C@2 F G C ~@16 C@2 D E C@2 F G C@3 D E C@2 F G C ~@16 C@2 D E C@2 F G C ~@16 C@2
  D E C@2 F G C
>`.pickRestart({
  A: "[g1,g2] ~@2 [g1,g2] ~@2 [g1,g2] ~", B: "~@7 [g1,g2]", C: "[c2,c3] ~@3 [c2,c3] ~@3", D: "[g1,g2] ~@3 [g1,g2] ~@3",
  E: "[g1,g2] ~@3 [c2,c3] ~@3", F: "[c2,c3] ~@3 [ab1,ab2] ~@3", G: "[ab1,ab2] ~@3 [g1,g2] ~@3",
})).s("gm_tuba").gain(0.5)

// chords · brass section · "Brass"
const brass_section = note(`<
  A B C ~@9 D E F G H I F J D E F G H I F@2 ~@9 D E F G H I F J D E F G H I F@2 ~@18 D E F G H I F J D E F G H I F@2 ~@9
  D E F G H I F J D E F G H I F@2 ~@9
>`.pickRestart({
  A: "~@2 [b4,gb5] ~ [b4,gb5]@2 ~@2 [b4,gb5] ~ [b4,gb5] ~@3 [b4,gb5] ~", // B5
  B: "[b4,gb5] ~ [b4,gb5] ~ [b4,gb5] ~ [b4,gb5] ~ [b4,gb5] ~ [b4,gb5] ~ [c5,g5] ~ [db5,ab5] ~", // B5 C5 Db5
  C: "[d5,a5] ~ [eb5,bb5] ~ [e5,b5] ~ [f5,c6] ~ [gb5,db6] ~ [g5,d6] ~ [ab5,eb6]@2 ~@2", // D5 Eb5 E5 F5 Gb5 G5 Ab5
  D: "[ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~ [ab3,f4] ~", // Db
  E: "[bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~ [bb3,f4] ~", // Bb5
  F: "[g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~", // Cm
  G: "[ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~ [ab3,eb4] ~", // Ab5
  H: "[ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~ [ab3,d4] ~", // Abdim
  I: "[g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [g3,d4] ~", // G5
  J: "[bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~ [bb3,e4] ~", // Bbdim
})).s("gm_brass_section").gain(0.4)

// bass · acoustic bass · "Double Bass"
const bass_2 = note(`<
  ~@3 A@2 B C A@2 D E A ~@16 A@2 B C A@2 D E A ~@25 A@2 B C A@2 D E A ~@16 A@2 B C A@2 D E A ~@25
>`.pickRestart({
  A: "[c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~", // Cm
  B: "[g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~", // G
  C: "[g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~", // G Cm
  D: "[c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [c3,eb3] ~ [ab2,c3] ~ [ab2,c3] ~ [ab2,c3] ~ [ab2,c3] ~", // Cm Ab
  E: "[ab2,c3] ~ [ab2,c3] ~ [ab2,c3] ~ [ab2,c3] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~ [g2,b2] ~", // Ab G
})).s("gm_acoustic_bass").gain(0.5)

// other · timpani
const timpani = note(`<
  A ~ B C D E F G C H I J K L M N O P Q R K S M N O T Q R C D E F G C H I J K L M N O P Q R K S M N O T Q R C D E F G C
  H I J C D E F G C H I J K L M N O P Q R K S M N O T Q R C D E F G C H I J K L M N O P Q R K S M N O T Q R C D E F G C
  H I J
>`.pickRestart({
  A: "g2@2 ~ g2@2 ~ g2@2", B: "~@14 g2 ~", C: "c3 ~@3 c3 ~@3", D: "c3@2 ~@6 c3@2 ~@4 c3!2", E: "g2 ~@3 g2 ~@3",
  F: "g2@2 ~@4 g2!2 c3@2 ~@6", G: "c3@2 ~@4 g2!2 c3@2 ~@6", H: "c3 ~@3 ab2 ~@3", I: "ab2 ~@3 g2 ~@3",
  J: "c3 ~@2 g2 c3 g2 c3 g2", K: "f3@2 ~@12 f3!2", L: "bb2 ~ f3!2 bb2 ~ f3!2 bb2 ~ f3!2 bb2 ~ f3!2",
  M: "eb3@2 ~@12 eb3!2", N: "ab2 ~ eb3!2 ab2 ~ eb3!2 ab2 ~ eb3!2 ab2 ~ eb3!2", O: "d3@2 ~@12 d3!2",
  P: "g2 ~ d3!2 g2 ~ d3!2 g2 ~ d3!2 g2 ~ d3!2", Q: "c3@2 ~@12 g2!2", R: "c3 ~ g2!2 c3 ~ g2!2 c3 ~ g2!2 c3 ~ g2!2",
  S: "bb2 ~ f3!2 bb2 ~ f3!2 bb2 ~ f3!2 bb2 ~ f3 ~", T: "g2 ~ d3!2 g2 ~ d3!2 g2 ~ d3!2 g2 ~ d3 ~",
})).s("gm_timpani").gain(0.5)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x ~@2 x ~] ~@120>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@3 [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!118>").gain(0.5)

// drums · splash
const splash = s("cr").struct(`<
  A ~@2 B ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@8 B ~@8 B ~ B ~ B ~ B ~ B ~ B ~
  B ~ B ~ B ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@8
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct("<[~@3 x] ~@120>").gain(0.5)

stack(piccolo, trumpet, french_horn, trombone, bass, brass_section, bass_2, timpani, kick, snare, splash, ride)

More by Duncan D.