Strudelify

Mario Circuit - Super Mario Kart

Soyo Oka

KeyC majorTempo134 bpm
0:00/0:00
// Mario Circuit - Super Mario Kart — Soyo Oka
// 134 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/595311; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(134/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.

// chords · lead 2 sawtooth · "Keyboard Synthesizer"
const lead_2_sawtooth = note("<A B C D E F C D E G H@3 I J@3 K@2 L C D E F C D E G H@3 I J@3 K@2 L>".pickRestart({
  A: "[g2,a3,c4,f4,g4]@3 [g2,a3,c4,f4,g4]!3 ~ [g2,a3,c4,f4,g4] [g2,a3,c4,f4,g4]@3 [g#2,a#3,c#4,f#4,g#4]@2 [a2,a#3,d4,g4,a4]@3", // F F# Gm
  B: "[a#2,c4,d#4,g#4,a#4]@3 [a#2,c4,d#4,g#4,a#4] ~ [a#2,c4,d#4,g#4,a#4] ~ [a#2,c4,d#4,g#4,a#4] [a#2,c4,d#4,g#4,a#4]@4 ~@4", // G#
  C: "a1 ~ e4 ~ [e4,g4]@2 [f#4,a4]@2 a3 f#3 ~ d2 ~@2 [g3,c4,e4]@2, ~@4 c4 ~ g3 ~ [d4,f#4]@4 ~@4", // Em F#m C D
  D: "a1 ~ e4 ~ [e4,g4]@2 [f#4,a4]@2 a3 f#3 ~ d2 ~@2 [g3,c4,e4,g4,b4]@2, ~@4 c4 ~ g3 ~ [d4,f#4]@4 ~@4", // Em F#m Cmaj7 D
  E: "g1 ~ d4 ~ [d4,f4]@2 [e4,g4]@2 g3 e3 ~ c2 ~@2 [f3,a#3,d4]@2, ~@4 a#3 ~ f3 ~ [c4,e4]@4 ~@4", // Dm Em A# C
  F: "g1@2 [f3,a#3,a#4,d5]@2 ~ [f3,a#3] [e5,g5]@2 [e3,a#3,c5,e5]@3 [e3,a#3] ~@2 f3 f#3, ~@4 [d5,f5]@2 ~@5 [d5,f5]@2 [d#5,f#5]@3, ~@6 e3 ~", // A# A#5 Em C7 Edim Dm D#m
  G: "g1@2 d4 f3 [d4,f4]@2 [e4,g4]@2 [g1,g2,b3,f4,a4]@4 [c2,c3,a#3,f4,a4]@4, ~@4 a#3 ~ f3 ~@9", // Dm Em G7 F
  H: "[f2@3 f2 e4@2 [f2,f4]@2 [c3,e4,g4]@3 [c3,d5] ~@2 c3@2 f2@3 f2 c4@2 [f2,e4]@2 [c3,d4,f4,a#4]@3 [c3,c5] ~@2 c3@2 f2@3 f2 a4@2 [f2,c5]@2 [c3,c5,e5,g5]@3 [c3,f5] ~@2 [c3,d#5,c6]@2, f3@4 e3@3 [d#4,g4,c5]@3 ~@5 [c4,e4,a4]@3 ~@6, ~@8 d#3@4 d3@3 ~ f3@4 e3@3 ~]/3", // F C Csus2 Fmaj7 A# C F5 C …
  I: "~ d6 c6 [f2,f5] c6 a#5 f5 c5 d5 c5 a#4 [c3,f4] a#4 a4 f4 c4, d#3@4 d3@3 ~, f2@3 ~@3 f2@2 [c3,f4]@3 ~@3 c3@2", // F F5
  J: "[g1@3 [d3,f3] d4@2 [d3,f3] ~ [a#2,d3,f3,a#4]@3 [d3,f3,c5] ~@2 [d3,f3] ~ [c3,e3,g3]@2 ~ [e3,g3] e4@2 [e3,g3] ~ [a#2,e3,g3,g4]@3 [e3,g3,d5] ~@2 [e3,g3] ~ [a2,e3,g3]@3 [e3,g3] ~@2 [e3,g3,g4] a4 [a2,e3,g3,c5]@2 a4 [e3,g3,c5] e5@2 [e3,g3,d5] e5, ~@3 f4 ~@3 a4@2 g4 ~ f4 ~@3 c5@4 ~@5]/3", // Dm A# Dm7 Dm C Em Edim Em7 …
  K: "[g#1@3 [g#2,f#3,f#4,a#4,c5,f5]@2 [g#2,f#3,f#4,a#4,c5,d#5]@3 [g#2,f#3,f#4,c5]@3 [g#2,f#3,f#4,a#4] ~@2 g2@2 f2@3 [f3,d4,f4,a#4,c5] [g2,f3,d4,f4,a#4,c5]!2 ~ [g2,f3,d4,f4,a#4,c5] [g2,f3,d4,f4,a#4,c5]@3 [g#2,f#3,d#4,f#4,b4,c#5]@2 [a2,g3,d#4,g4,c5,d5]@3, ~@14 [f3,d4,f4,a#4,c5]@5 ~@13]/2", // Fm G#7 D#m A# Gm7 G#m7 Am7b5 A#
  L: "[a#2,g#3,f4,g#4,c#5,d#5]@3 [a#2,g#3,f4,g#4,c#5,d#5] ~ [a#2,g#3,f4,g#4,c#5,d#5]@3 [b2,a3,f#4,a4,d5,e5]!2 ~ [b2,a3,f#4,a4,d5,e5] ~ [b2,a3,f#4,a4,d5,e5]@3", // A#m7 Bm7
})).s("gm_lead_2_sawtooth").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@2 [x ~@2 x ~@4]!36>").gain(0.3)

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

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<A B ~@3 C ~@3 D ~@9 E ~@3 C ~@3 D ~@9 E>".pickRestart({
  A: "x!2 ~ x!3 ~ x!2 ~@2 x ~ x ~@2", B: "x ~@2 x ~ x ~ x!2 ~@7", C: "~@8 x!3 ~ x!3 ~", D: "~@9 x ~ x!5",
  E: "x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@2",
})).gain(0.58)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<[~@9 x ~@2 x ~@2 x] ~@37>").gain(0.58)

stack(lead_2_sawtooth, kick, snare, woodblocks, woodblocks_2)