Strudelify

MCRmix (Fixed)

Remade by Isye M.

KeyG majorTempo120 bpm
0:00/0:00
// MCRmix (Fixed) — Remade by Isye M.
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/137410; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 63 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · french horn · "Baritone Horn"
const french_horn = note(`<
  ~@8 A B C D E D F G H I@6 J@3 K@3 L M N O L M N O P Q H R P Q S T U@2 V W U@2 V W ~ X Y S Z AA AB AC ~@2
>`.pickRestart({
  A: "g2@6 f#2 g2", B: "a2@6 g2 a2", C: "b2 e3 d3 b2", D: "b2 ~", E: "e3 d3!2 b2", F: "c3 b2!2 g2", G: "a2 g2", H: "g2",
  I: "[d3 a2 g2 f#2]/3", J: "[g2 a2 e2 ~]/3", K: "[g2@6 a2@6 b2@6 c#3@3 g2 a#2 g2]/3",
  L: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", M: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  N: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", O: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", P: "e2", Q: "c3", R: "d3",
  S: "d#3", T: "~ c3!5 a#2 c3", U: "~ g3 ~ g3 ~ g3 f3 g3", V: "~ b3 ~ b3 ~ b3 ~ b3", W: "~ c4 ~ c4 c4@2 a#3@2",
  X: "f#3!2 f#3@2 f#3@4", Y: "f#3 f3", Z: "d3 a#2", AA: "b2", AB: "c3 d3", AC: "a2",
})).s("gm_french_horn").gain(0.4)

// bass · tuba · "Bb Tuba"
const bass = note(`<
  ~@8 A B C D E F G D A H@12 I@2 J K I@2 J K L E M D L E N O P@2 Q R P@2 Q R S@2 T D U F V G ~@2
>`.pickRestart({
  A: "g2", B: "f#2", C: "e2", D: "d2", E: "c2", F: "b1", G: "a1", H: "[d2!2 d2 d2]/3", I: "g2!8", J: "b2!8", K: "c3!8",
  L: "e1", M: "g1", N: "d#2", O: "~ c3!7", P: "g1 g2 g1 g2 g1 g2 f2 g2", Q: "g1 b2 g1 b2 g1 b2 g1 b2",
  R: "g1 c3 g1 c3 c3@2 a#2@2", S: "[a2@3 g2@3 f#2@3 f#2 f#2@2 f#2@4]/2", T: "f#2 f2", U: "d2 a#1", V: "c2 d2",
})).s("gm_tuba").gain(0.3)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<~@8 A B C D E F G H ~@12 I J@8 K@2 L M N@3 O ~@3 P ~@3 P ~@10>".pickRestart({
  A: "g4", B: "f#4 b4", C: "e4", D: "d4 g4", E: "c4", F: "b3 e4", G: "a3", H: "d4", I: "~@5 g4 a#4 g4",
  J: "[a#4 g4 a#4@2 a#4@2 g4 a#4@2 g4 ~@3 g4 a#4 g4@2 ~@4 g4 a#4 g4@2 ~@4 g4 a#4 g4]/4",
  K: "[a#4 g4 a#4@2 a#4@2 a#4 c5@2 g4@2 g4@2 g4 a#4@2]/2", L: "g4@3 a4", M: "f#4@4 ~ g4 a#4!2",
  N: "[a#4 g4 a#4@2 a#4@2 a#4 c5@2 g4@2 g4@2 g4 a4 a#5@2 g4 a4 a#4@2 g4 a4 a#4]/3", O: "~ c5!5 a#4 c5", P: "~@2 c4 a#3",
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@48 A ~@3 A ~ B C D E F G H ~@2>".pickRestart({
  A: "~@2 c4 a#3", B: "f#4", C: "f#4 f4", D: "d#4", E: "d#4 a#3", F: "b3", G: "c4 d4", H: "a3",
})).s("gm_alto_sax").gain(0.2)

// other · trumpet · "Bb Trumpet"
const trumpet = note("<~@7 A@4 B@2 C@2 ~ D ~@12 E@8 F@2 G H I@3 J ~@3 K ~@3 K ~ L@2 M@2 L@4 N>".pickRestart({
  A: "[~@6 d4 g4@3 d4 ~@3 g4 f#4@3 d4 ~@3 f#4 g4@3 d4 ~@3 g4@2]/4", B: "[f#4@4 e4@4 d4@4 c4@2 d4@5 b3 ~@8 f#4@4]/2",
  C: "[g4@2 f#4@2 e4@2 f#4 d4@5 ~@4]/2", D: "g3",
  E: "[a#4 g4 a#4@2 a#4@2 g4 a#4@2 g4 ~@3 g4 a#4 g4@2 ~@4 g4 a#4 g4@2 ~@4 g4 a#4 g4]/4",
  F: "[a#3 g3 a#3@2 a#3@2 a#3 c4@2 g3@2 g3@2 g3 a#3@2]/2", G: "g3@3 a3", H: "f#3@4 ~ g3 a#3!2",
  I: "[a#3 g3 a#3@2 a#3@2 a#3 c4@2 g3@2 g3@2 g3 a3 a#3@2 g3 a3 a#3@2 g3 a3 a#3]/3", J: "~ c5!5 a#4 c5", K: "~@2 c5 a#4",
  L: "[f#4@2 f#4!2 f#4@2 g#4 g#4@2 f#4@2 f4@2 f#4@3]/2", M: "[f#4@2 f#4!2 f#4@2 g#4 g#4@2 f#4@2 f4@2 f#4@2 d#4]/2",
  N: "f#4",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<~@7 A@4 B@2 C@2 ~ D ~@27 E F@2 G H G@2 ~ H ~@10>".pickRestart({
  A: "[~@6 d5 g5@3 d5 ~@3 g5 f#5@3 d5 ~@3 f#5 g5@3 d5 ~@3 g5@2]/4", B: "[f#5@4 e5@4 d5@4 c5@2 d5@5 b4 ~@8 f#5@4]/2",
  C: "[g5@2 f#5@2 e5@2 f#5 d5@5 ~@4]/2", D: "g4", E: "~ c4!5 a#3 c4", F: "~@6 c4 b3", G: "~@6 c5 b4", H: "~@2 c4 a#3",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@8 A B C D E D F G H I@6 J@3 K@3 L M N O L M N O P Q R S P Q T U ~@10 V W X Y Z AA ~@2
>`.pickRestart({
  A: "g3@6 f#3 g3", B: "a3@6 g3 a3", C: "b3 e4 d4 b3", D: "b3 ~", E: "e4 d4!2 b3", F: "c4 b3!2 g3", G: "a3 g3", H: "g3",
  I: "[d4 a3 g3 f#3]/3", J: "[g3 a3 e3 ~]/3", K: "[g3@6 a3@6 b3@6 c#4@3 g2 a#2 g2]/3",
  L: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2", M: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  N: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", O: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", P: "e2", Q: "c3", R: "g2",
  S: "d3", T: "d#3", U: "~ c4!5 a#3 c4", V: "f#2 f2", W: "d#2", X: "d2 b1", Y: "b1", Z: "c2 d2", AA: "a2",
})).s("gm_trombone").gain(0.4)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@17 A B C D B C A B C A B C ~@34>".pickRestart({
  A: "x!2 ~ x!2 ~ x!2", B: "~ x!2 ~ x!2 ~ x", C: "x ~ x!2 ~@4", D: "x!3 ~@3 x ~ x ~@3 x ~ x ~",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@8 A B A B A B ~@3 C D E C D E C D E C D E ~@15 F G@3 H G@3 I ~ G@7 ~@2>".pickRestart({
  A: "x ~@3 x!4 ~@3 x!4 ~", B: "~@2 x!7 ~ x!6", C: "~@3 x ~@5 x ~@5 x", D: "~@5 x ~@5 x ~@4", E: "~ x ~@5 x ~@2 x!6",
  F: "~@2 x!14", G: "~ x ~ x", H: "~ x!3", I: "~ x ~@2",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@45 [~ x ~ x ~ x ~ x]!8 ~@10>").gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@45 [x!2]!3 x [x!2]!3 x ~@10>").gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@45 [x!8]!8 ~ [x!8]!7 ~@2>").gain(0.5)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@16 A B C D B C D B C D B C D ~@34>".pickRestart({
  A: "x", B: "x ~@2 x", C: "~ x", D: "~ x ~@2",
})).gain(0.3)

stack(
  french_horn, bass, clarinet, alto_sax, trumpet, trumpet_2, trombone, kick, kick_soft, snare, hihat, mid_tom, crash,
  crash_soft
)