Strudelify

Luigi's Mansion 3 Main Theme

Chad York & Darren Radtke

KeyC♯ minorTempo120 bpm
0:00/0:00
// Luigi's Mansion 3 Main Theme — Chad York & Darren Radtke
// 120 bpm, 3/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Mandolin" named as a guitar, played on electric guitar clean (its orchestral harp patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5931080; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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 · lead 1 square · "Theremin"
const lead_1_square = note(`<
  A B C D A E F ~ G H I J K L M ~@9 N O ~@2 P O Q R ~@16 S F ~ T U@2 A B C D A E F ~ G H I J K L M ~@9 N O ~@2 P O Q R
  ~@16 S F ~ T U@2
>`.pickRestart({
  A: "g#5@11 g5@2 g#5@3", B: "a5@11 g#5@2 e5@3", C: "g5@8 d#5@3 c5@2 d#5@3", D: "a4@11 g#4@5", E: "b5@11 a#5@5",
  F: "a5", G: "a5@8 a5@3 g#5@2 a5@3", H: "f#5", I: "g#5@8 g#5@3 g5@2 g#5@3", J: "e5", K: "g5@8 g5@3 f#5@2 g5@3",
  L: "e5@11 c#5@5", M: "g#5", N: "g5@11 b5@5", O: "a#5", P: "g5", Q: "c#6@11 g#5@5", R: "g#6", S: "d#5@11 a#5@5",
  T: "~@5 d#6@11", U: "[a#6@5 a6@16 ~@6 g#4@5]/2",
})).s("gm_lead_1_square").gain(0.4)

// other · electric guitar clean · "Mandolin"
const electric_guitar_clean = note(`<
  A@2 B@2 A@2 C@2 D@2 A@2 E F G H I J K L M N O P J D Q R Q S T U V@2 W@2 V@2 X@2 Y@2 V@2 B Z AA ~ G C ~ AB AC AD A@2
  B@2 A@2 C@2 D@2 A@2 E F G H I J K L M N O P J D Q R Q S T U V@2 W@2 V@2 X@2 Y@2 V@2 B Z AA ~ G C ~ AB AC AD
>`.pickRestart({
  A: "c#2@5 ~@11", B: "c2@5 ~@11", C: "a1@5 ~@11", D: "f#1@5 ~@11", E: "a#1@5 ~@11", F: "g1@5 ~@6 e1@5",
  G: "d#1@5 ~@11", H: "e4@2 g#4@2 ~ g#4@2 c#5@2 e5@2 ~@3 g#5@2, g#1@2 c#5 ~@3 e5 ~, ~@5 g#1@5 ~ [e1,c#5]@2 g#1@3",
  I: "[a1,a5]@5 ~@11", J: "e1@5 ~@11", K: "c#1@5 ~@6 c1@5", L: "c#1@5 ~@11", M: "a4@8 a4@3 g#4@2 a4@3, a1@5 ~@11",
  N: "c5@3 a4@2 e4@3 c4@3 e4@2 a4@3, e1@5 ~@11", O: "g#4@13 e4 ~ d#4, c#1@5 ~@11", P: "c#4, g#1@5 ~@11",
  Q: "g4@8 g4@3 f#4@2 g4@3, g1@5 ~@11", R: "c#4, a1@5 ~@11", S: "a#4@3 a4@2 a#4@8 c5@3, a#1@5 ~@11",
  T: "c#5@3 c5@2 c#5@3 e5@3 d#5@2 c#5@3, c#2@5 ~@11", U: "g#5, d#2@5 ~@11", V: "d#2@5 ~@11", W: "d2@5 ~@11",
  X: "b1@5 ~@11", Y: "g#1@5 ~@11", Z: "a1@5 ~@6 f#1@5", AA: "f1@5 ~@11", AB: "~@5 d#1@5 ~@6", AC: "~@5 a1@5 ~@6",
  AD: "~@5 a2@3 g#2@3 f#2@2 c#2@3",
})).s("gm_electric_guitar_clean").gain(0.3)

// bass · clarinet · "Bass Clarinet"
const bass = note("<~@16 A B C D ~@4 E F ~@2 E G H I ~@38 A B C D ~@4 E F ~@2 E G H I ~@22>".pickRestart({
  A: "a2@8 a2@3 g#2@2 a2@3", B: "c3@8 a2@3 e2@2 a2@3", C: "g#2@8 g#2@3 g2@2 g#2@3", D: "c#3", E: "g2@8 g2@3 f#2@2 g2@3",
  F: "a#2", G: "a#2@3 a2@2 a#2@8 c3@3", H: "c#3@3 c3@2 c#3@3 e3@3 d#3@2 c#3@3", I: "g#3",
})).s("gm_electric_bass_finger").gain(0.4)

// other · music box
const music_box = note(`<
  ~@32 A B C D A E F ~ G H I J K L M ~@3 N ~ O ~@33 A B C D A E F ~ G H I J K L M ~@3 N ~ O ~
>`.pickRestart({
  A: "a#5@11 a5@2 a#5@3", B: "b5@11 a#5@2 f#5@3", C: "a5@8 f5@3 d5@2 f5@3", D: "b4@11 a#4@5", E: "c#6@11 c6@5", F: "b5",
  G: "b5@8 b5@3 a#5@2 b5@3", H: "g#5", I: "a#5@8 a#5@3 a5@2 a#5@3", J: "f#5", K: "a5@8 a5@3 g#5@2 a5@3",
  L: "f#5@13 d#5@3", M: "a#5", N: "~@11 a4 c5 e5@3", O: "~@11 a5 c6 e6@3",
})).s("gm_music_box").gain(0.45)

// other · violin
const violin = note("<A@2 B@2 A@4 C@2 A@4 B ~@39 A@2 B@2 A@4 C@2 A@4 B ~@39>".pickRestart({
  A: "~@5 e4 ~@5 e4@5", B: "~@5 d#4 ~@5 d#4@5", C: "~@5 f#4 ~@5 f#4@5",
})).s("gm_violin").gain(0.3)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@16 A@9 B A B A B C D E@2 F G E@3 H I D E H E H E J B K ~ L M N ~@16 A@9 B A B A B C D E@2 F G E@3 H I D E H E H E J
  B K ~ L M N
>`.pickRestart({
  A: "~@5 e4 ~@5 e4@5", B: "~@5 f#4 ~@5 f#4@5", C: "~@5 a4 ~@5 a4@5", D: "~@5 g#4 ~@10", E: "~@5 f#4 ~@5 f#4 ~@4",
  F: "~@5 f4 ~@5 f4 ~@4", G: "~@5 f4 ~@10", H: "~@5 f#4 ~@10", I: "~@5 g#4 ~@5 g#4 ~@4", J: "a#3@3 ~@2 d#4@3 ~@8",
  K: "~@5 e4 ~@10", L: "~@11 f#4 ~@4", M: "f#4@5 ~@6 e4 ~@4", N: "e4 ~@15",
})).s("gm_pizzicato_strings").gain(0.3)

// other · viola
const viola = note("<A@2 B@2 A@2 C@4 A@2 D@2 A ~@39 A@2 B@2 A@2 C@4 A@2 D@2 A ~@39>".pickRestart({
  A: "~@5 g#3 ~@5 g#3@5", B: "~@5 g3 ~@5 g3@5", C: "~@5 a3 ~@5 a3@5", D: "~@5 a#3 ~@5 a#3@5",
})).s("gm_viola").gain(0.3)

// bass · acoustic bass · "Contrabass"
const bass_2 = note(`<
  A@2 B@2 A@2 C@2 D@2 A@2 E F G H C I J K C I K L I D M C M E A N O@2 P Q O@2 R S T U O V W X Y Z G C ~ AA AB AC A@2 B@2
  A@2 C@2 D@2 A@2 E F G H C I J K C I K L I D M C M E A N O@2 P Q O@2 R S T U O V W X Y Z G C ~ AA AB AC
>`.pickRestart({
  A: "c#2@5 ~@11", B: "c2@5 ~@11", C: "a1@5 ~@11", D: "f#1@5 ~@11", E: "a#1@5 ~@11", F: "g1@5 ~@6 e1@5",
  G: "d#1@5 ~@11", H: "g#1@5 g#1@5 ~ e1@2 g#1@3", I: "e1@5 ~@11", J: "c#1@5 ~@6 c1@5", K: "c#1@5 ~@11", L: "g#1@5 ~@11",
  M: "g1@5 ~@11", N: "d#2@5 ~@11", O: "d#2", P: "d2", Q: "d2 ~", R: "b1", S: "b1 ~", T: "g#1", U: "g#1 ~", V: "d#2 ~",
  W: "c2", X: "a1@8 ~@3 f#1@5", Y: "f1", Z: "a#1@3 d#2@2 f#2@3 ~@8", AA: "~@5 d#1@5 ~@6", AB: "~@5 a1@5 ~@6",
  AC: "~@5 a2@3 g#2@3 f#2@2 c#2@3",
})).s("gm_acoustic_bass").gain(0.3)

stack(lead_1_square, electric_guitar_clean, bass, music_box, violin, pizzicato_strings, viola, bass_2)