Strudelify

Luigi Circuit

Nevaeh Mosley

KeyD majorTempo140 bpm
0:00/0:00
// Luigi Circuit — Nevaeh Mosley
// 140 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5849646; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 59 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 · [...]/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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C D ~@8 E F@2 G E H@2 I ~ J ~ J ~ J ~ J K L M@2 K L N O P Q R@2 S T S T C D U V W X Y Z AA@2 AB AC AD AE@2
>`.pickRestart({
  A: "c4@3 c4@3 c4@10", B: "~@12 c4 [d4,d#4] [f4,g4] [a4,a#4]", C: "c5 a#4@3", D: "b4 c5", E: "~ a4 g4 f4",
  F: "[e4@4 d4@4 c4@4 a#3@3 a3@3 g3@10 g3@2 f3 g3]/2", G: "~ g3@11 ~@4",
  H: "[e4@4 d4@4 c4@4 a#3@3 a3@3 g3@10 g3@2 a3 a#3]/2", I: "~ c4@15", J: "~@12 d#5 f5@3", K: "~@4 f4 g4@2 a4@9",
  L: "~@2 a4 a#4 a4@2 a#4@2", M: "[c5@4 a#4@4 a4@4 g4@3 f4@17]/2", N: "c5 a#4 d5 c5", O: "d#5@2 d5 f5@2 d#5 g5@2",
  P: "f5@3 d#5 ~@4 d5@3 c5 ~@4", Q: "a#4@3 a4 ~@4 g4@2 a4 f4 ~@4", R: "d#4/2", S: "~@4 a#4@4 a#4@3 a4 ~@4",
  T: "~@4 a#4@4 a#4@3 c5 ~@4", U: "d4!2 ~@3 d4 ~@2", V: "d#4!2 ~@3 d#4 ~@2", W: "e4!2 ~@3 e4 ~@2", X: "f4!2 ~@3 f4 ~@2",
  Y: "~@2 c5@2 ~ a#4@2 c5 a#4@2 d#5 ~@5, ~@2 c5 ~@5", Z: "c5@2 ~ a#4@2 c5 a#4@2 g4 ~@5 c5@2, ~ c5 ~@6",
  AA: "[~ a#4@2 c5 a#4@2 d#5 ~@5 c5@2 ~ a#4@2 c5 a#4@2 g4 ~@5 c5@2 ~ a#4@2 c5, c5 ~@6 c5 ~@6 c5 ~]/2",
  AB: "a#4@2 d#5 ~@5 c5@2 ~ a#4@2 c5 a#4@2, ~@5 c5 ~@2", AC: "g4 ~@5 c5@2 ~ a#4@2 c5 a#4@2 d#5 ~, ~@4 c5 ~@3",
  AD: "~ g4@2 f#4@2 f4 e4 d#4", AE: "[d4 c4@8 ~@7]/2",
})).s("gm_alto_sax").gain(0.45)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  ~@2 A B C D C D C D C ~@8 E ~@12 F G H I J K L@2 M N M N A B O P Q R S T U@2 V W X Y@2
>`.pickRestart({
  A: "~ d4@3", B: "d#4 e4", C: "~@2 c4@2 c4@2 a#3@2 c4 a#3@2 d#4 ~@4", D: "~@2 c4@2 c4@2 a#3@2 c4 a#3@2 g3 ~@4",
  E: "~ e4@11 [f#4,g4,g#4,a4,a#4,b4,c5] [f3,f#3,g3,g#3,a3,a#3,b3,c4,c#4,d4,d#4,e4,f4] [b2,c3,c#3,d3,d#3,e3] ~, ~@7 a#2",
  F: "~@4 f3 g3@2 a3@9", G: "~@2 a3 a#3 a3@2 a#3@2", H: "c4 a#3 d4 c4", I: "d#4@2 d4 f4@2 d#4 g4@2",
  J: "f4@3 d#4 ~@4 d4@3 c4 ~@4", K: "a#3@3 a3 ~@4 g3@2 a3 f3 ~@4", L: "d#4/2", M: "~@4 a#4@4 a#4@3 a4 ~@4",
  N: "~@4 a#4@4 a#4@3 c5 ~@4", O: "d3!2 ~@3 d3 ~@2", P: "d#3!2 ~@3 d#3 ~@2", Q: "e3!2 ~@3 e3 ~@2", R: "f3!2 ~@3 f3 ~@2",
  S: "~@2 c4@2 ~ a#3@2 c4 a#3@2 d#4 ~@5, ~@2 c4 ~@5", T: "c4@2 ~ a#3@2 c4 a#3@2 g3 ~@5 c4@2, ~ c4 ~@6",
  U: "[~ a#3@2 c4 a#3@2 d#4 ~@5 c4@2 ~ a#3@2 c4 a#3@2 g3 ~@5 c4@2 ~ a#3@2 c4, c4 ~@6 c4 ~@6 c4 ~]/2",
  V: "a#3@2 d#4 ~@5 c4@2 ~ a#3@2 c4 a#3@2, ~@5 c4 ~@2", W: "g3 ~@5 c4@2 ~ a#3@2 c4 a#3@2 d#4 ~, ~@4 c4 ~@3",
  X: "~ g3@2 f#3@2 f3 e3 d#3", Y: "[d3 c3@8 ~@7]/2",
})).s("gm_tenor_sax").gain(0.3)

// bass · baritone sax · "Baritone Saxophone"
const bass = note("<~@2 A B C@7 D C@16 E@16 A B F G H I J K L@5 M@2>".pickRestart({
  A: "f3 f2@7", B: "f#2 g2", C: "c3 c2@2 d#2 e2 f2 f#2 g2", D: "c2 ~", E: "f3 f2@2 g#2 a2 a#2 b2 c3",
  F: "d3!2 ~@3 d3 ~@2", G: "d#3!2 ~@3 d#3 ~@2", H: "e3!2 ~@3 e3 ~@2", I: "f3!2 ~@3 f3 ~@2",
  J: "c3@2 c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c3@2, ~@11 f#2@2 ~@3", K: "c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c3@2 c2@2, ~@9 f#2@2 ~@5",
  L: "[~ d#2@2 e2@2 f2@2 ~ g2@2 c3@2 c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c3@2 c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c3@2 c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c3@2 c2@3 d#2@2 e2@2 f2@2 ~ g2@2 c2@8 ~@6, ~@7 f#2@2 ~@12 f#2@2 ~@12 f#2@2 ~@12 f#2@2 ~@12 f#2@2 ~@15]/5",
  M: "[~ c2@8 ~@7]/2",
})).s("gm_baritone_sax").gain(0.3)

// drums · kick
const kick = s("bd").struct("<A B@45 C@3 D E F G H I J ~ K ~>".pickRestart({
  A: "x ~@2 x ~@2 x ~@9", B: "x!4", C: "x!2 ~@3 x ~@2", D: "x ~ x ~@7 x ~@3 x!2", E: "x ~@3 x ~@2 x ~@3 x ~@2 x ~",
  F: "~@2 x ~@2 x ~@3 x ~@2 x ~@3", G: "x ~@2 x ~@3 x ~@2 x ~@3 x ~", H: "~ x ~@3 x ~@2 x ~@3 x ~@2 x",
  I: "~@3 x ~@2 x ~@3 x ~@2 x ~@2", J: "~ x ~@2 x ~@3 x ~@2 x ~@3 x", K: "~ x ~@4 x ~",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  A B C D E@3 F E@3 G H@3 I H@3 I H J H J H J H J E@7 K E@5 L K M C D N ~ N O P Q R S T U V W ~
>`.pickRestart({
  A: "~@10 x!3 ~@3", B: "~@13 x!3", C: "~@4 x ~@7 x!3 ~", D: "~@9 x!3 ~@4", E: "~ x ~ x",
  F: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", G: "~@9 x ~ x ~@4", H: "~@4 x ~@2 x ~ x ~@2 x ~@3", I: "~@4 x ~@2 x ~ x ~@2 x ~@2 x",
  J: "~@4 x ~@2 x ~ x ~@2 x!2 ~@2", K: "~@2 x ~@3 x!2", L: "~@4 x ~@4 x!6 ~", M: "~ x ~@2", N: "~@3 x ~@4",
  O: "~@4 x ~@2 x ~@5 x ~@2", P: "~@4 x ~@6 x ~@4", Q: "~@2 x ~@6 x ~@6", R: "x ~@6 x ~@6 x ~",
  S: "~ x!2 ~@2 x ~@6 x ~@3", T: "~@3 x ~@6 x ~@5", U: "~ x ~@6 x ~@6 x", V: "~ x ~ x ~ x!3",
  W: "x ~ x ~@3 x ~@2 x ~@6",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~@9 B ~@31 C ~@2 D E F G ~@9>".pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@13 x ~ x", C: "~@14 x!2", D: "~@7 x ~@8", E: "~@8 x!2 ~@6", F: "~ x", G: "~@11 x!2 ~@3",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C D E@2 F D E@2 ~ G H@2 I G H@2 I G J G J G J G J ~@8 D E@4 K L M B C A@4 N O@2 P O@2 Q R ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~@5 x!2 ~@6", C: "~@2 x ~ x!3 ~@9", D: "~ x ~ x ~ x!7 ~ x!3", E: "x!4 ~ x!7 ~ x!3",
  F: "x!4 ~ x!3 ~@2 x!2 ~@2 x!2", G: "~ x ~ x ~ x!2 ~ x ~ x!2 ~ x!3", H: "x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x!3",
  I: "x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x!2 ~", J: "x!2 ~ x ~ x!2 ~ x ~ x!2 ~@4", K: "x!4 ~ x!4 ~@6 x", L: "x!4 ~ x!7 ~ x ~ x",
  M: "x!4 ~ x!3 ~@8", N: "~ x ~ x!13", O: "x!16", P: "x ~@2 x!2 ~ x!2 ~ x ~ x!5", Q: "x!3 ~@3 x ~@3 x ~ x ~ x ~",
  R: "x ~@2 x ~ x ~@2",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~ B ~@7 C ~@23 D ~@7 E ~ B ~ F G H ~@7 I ~>".pickRestart({
  A: "~@3 x ~@2 x ~@9", B: "~@12 x!4", C: "~@4 x!4", D: "~@13 x ~ x", E: "~@8 x!6 ~@2", F: "~@4 x!4 ~@8", G: "~ x ~@2",
  H: "~@5 x!2 ~ x!2 ~@6", I: "~@7 x!2 ~ x!2 ~@4",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~ B ~@3 B ~@2 C B@16 ~@8 B ~@7 A ~@5 B ~@2 A ~@5>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@6", C: "~ x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B C D ~@3 D ~@2 D@2 ~@3 D ~@3 D ~ D ~ D ~ D ~@9 D ~@7 B C E@4 D ~@2 F ~@3 G ~
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@9", B: "~ x ~@2", C: "x!2", D: "x", E: "x!2 ~@3 x ~@2", F: "~ x", G: "~ x ~@5 x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@28 [x!4]!7 [x!3 ~] ~@23>").gain(0.4)

stack(alto_sax, tenor_sax, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride)

More by Nevaeh Mosley