Strudelify

mario kart ds - rainbow road

Shinobu Nagata

KeyD majorTempo152 bpm
0:00/0:00
// mario kart ds - rainbow road — Shinobu Nagata
// 152 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piccolo" named as a pipe, played on piccolo (its tremolo strings patch is not one); ch 2 "Soprano Flute" named as a pipe, played on flute (its string ensemble 1 patch is not one); ch 3 "Flute" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 4 "Oboe" named as a reed, played on oboe (its tremolo strings patch is not one); ch 5 "B♭ Clarinet" named as a reed, played on clarinet (its string ensemble 1 patch is not one); ch 6 "Alto Saxophone" named as a reed, played on alto sax (its pizzicato strings patch is not one); ch 7 "B♭ Trumpet" named as a brass, played on trumpet (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/3102566; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(152/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 · piccolo
const piccolo = note("<~@12 A@4 ~@4 B@3 ~@29 A@4 ~@4 B@3 ~@17>".pickRestart({
  A: "[~@4 a5 ~ d6 ~ e6@4 a5 ~ f#6@4 g6@2 f#6@2 d6@2 e6@4 a5 ~ a6@4 g6 ~ f#6 ~ g6@3 ~ d6 ~ d7@16 ~@4]/4",
  B: "[[d5,d6]@9 ~ [d5,d6]@2 [e5,e6]@2 [d5,d6]@10 ~@2 [d5,d6]@2 [e5,e6]@2 [d5,d6]@14 ~@4]/3", // D E D E D
})).s("gm_piccolo").gain(0.45)

// other · flute · "Soprano Flute"
const flute = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@4 H@2 I@2 J@2 K L ~@6 M@2 ~@7 N A@2 B@2 C@2 D@2 E@2 F@2 G@4 H@2 I@2 J@2 K L ~@6 M@2 ~@7 N
>`.pickRestart({
  A: "[f#4@7 g#4@9]/2", B: "[e5@7 f#5@9]/2", C: "[f#6@8 a5@2 d6@2 f#6 ~@3 g#5@16, ~@7 g#6@9]/2",
  D: "[d5@7 [e5,e6]@9]/2", E: "[a5,a6]/2", F: "[[g5,g6]@11 [b5,b6]@2 [g5,g6] e5@2]/2",
  G: "[a5@4 a5 ~ d6 ~ e6@4 a5 ~ f#6@4 g6@2 f#6@2 d6@2 e6@4 a5 ~ a6@4 g6 ~ f#6 ~ g6@3 ~ d6 ~@5 e5@2 [g5,g6]@2 [c6,c7]@2 [d6,d7]@3 ~ [e6,e7]@6, ~@22 d7@5 ~@5]/4", // G C D E
  H: "[f#5,f#6]/2", I: "[[d5,d6]@11 [b5,b6]@2 [g5,g6]@2 e5]/2",
  J: "[d5@9 ~ d5@2 e5@2 ~@12 d5@2 e5@2 d5@2, a#4 [c5,c6], ~@7 d5@5 ~@4]/2", K: "[d5,d6]", L: "[a5,a6] [g#5,g#6]",
  M: "[[f#5,f#6]@3 [g#5,g#6]@13]/2", N: "[c#5,c#6]@2 [e5,e6] ~ [a5,a6] ~ [b5,b6]@2 ~@2 [c#6,c#7] ~ [e6,e7]@4",
})).s("gm_flute").gain(0.25)

// other · flute · "Soprano Flute" · soft notes
const flute_soft = note(`<
  A@2 B@2 ~@2 C ~@4 D E@2 F G ~@3 H I ~@19 A@2 B@2 ~@2 C ~@4 D E@2 F G ~@3 H I ~@19
>`.pickRestart({
  A: "[f#5@7 g#5@9]/2", B: "[e6@7 f#6@9]/2", C: "d6@7 ~", D: "~@3 e6", E: "[a6@15 ~]/2", F: "g5, g6 ~@7", G: "e6 ~@7",
  H: "~@7 e6", I: "a#5",
})).s("gm_flute").gain(0.15)

// other · flute
const flute_2 = note("<~@12 A B@3 ~@4 C@3 ~@29 A B@3 ~@4 C@3 ~@17>".pickRestart({
  A: "~@4 a5 ~ d6 ~ e6@4 a5 ~ f#6@2", B: "[f#6@2 g6@2 f#6@2 d6@2 e6@4 a5 ~ a6@4 g6 ~ f#6 ~ g6@3 ~ d6 ~ d7@15 ~@5]/3",
  C: "[d5@9 ~ d5@2 e5@2 d5@9 ~@3 d5@2 e5@2 d5@13 ~@5]/3",
})).s("gm_flute").gain(0.3)

// other · oboe
const oboe = note("<~@8 A@4 ~@4 B@4 ~@4 C@6 ~@2 D@6 E F ~@8 A@4 ~@4 B@4 ~@4 C@6 ~@2 D@6 E F>".pickRestart({
  A: "[~@4 a4@2 d5 ~ e5@4 a4 ~ f#5@4 g5@2 f#5@2 d5@2 e5@2 a4 ~ a4 ~ d5@4 c5 ~ b4 ~ c5@3 ~ g4 ~ e4@16 ~@4]/4",
  B: "[~@4 [f#4,a4]@2 d5@2 [c#5,e5]@4 a4 ~ [d5,f#5]@4 g5@2 f#5@2 d5@2 [c#5,e5]@2 a4 ~ a4 ~ d5@4 c5 ~ b4 ~ c5@3 ~ g4 ~ e4@16 ~@4]/4", // F#m C#m D C#m
  C: "[~@4 e4@4 a4@2 ~@2 f#5@2 e5@12 d#5@2 c#5@2 d#5@6 b4@2 d#5@3 ~ d#5@4 e5@11 ~ b4@2 g#4@2 a4@11 ~ b4@2 g#4@2 a4@6 g#4 ~ e4@4 f#4@3 ~@3]/6",
  D: "[~@4 c#5@4 e5@2 ~@2 e6@2 c#6@12 b5@2 a5@2 b5@6 g#5@2 b5@3 ~ b5@4 c#6@11 ~ b5@2 g#5@2 a5@11 ~ b5@2 g#5@2 a5@6 g#5@2 e5@4 f#5@6]/6",
  E: "g5", F: "c#5@2 e5 ~ a5 ~ b5@2 ~@2 c#6 ~ e6@4",
})).s("gm_oboe").gain(0.4)

// chords · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H I J@2 K@2 L M N O P@2 Q@2 R S T@2 U@2 V@2 R W X Y A@2 B@2 C@2 D@2 E@2 F@2 G@2 H I J@2
  K@2 L M N O P@2 Q@2 R S T@2 U@2 V@2 R W X Y
>`.pickRestart({
  A: "[[f#5,f#6]@7 [g#5,g#6]@9, [a4,d5]@4 ~@3 [b4,e5]@3 ~@6]/2", B: "[[a5,a6]@7 [d5,g5,b5,b6]@9, c5 ~@3]/2",
  C: "[[f#5,f#6]@14 b4@6 b4@4 e5@4 g#5@3 ~, a4@4 ~@3 g#6@9, ~@7 g#5@7 ~@2]/2", // F#
  D: "[[d5,g5,g6]@4 [b4,b5] [d5,d6] [g5,g6] ~ a3@8, a3 ~, ~@7 [c#5,d5,a5,a6]@9]/2", E: "[a5, a4@7 ~]/2",
  F: "[g5@11 [b5,b6]@2 [e5,g5] ~@2, g4, c5@5 ~@3]/2", G: "[d4,a4,a5]/2", H: "[a#3,a4]@4 ~@2 [a#3,a4]@9 ~, [g5,g6]",
  I: "~@2 g5@2 [c6,c7]@2 [d6,d7]@3 ~ e6@6, d5@2 ~ [c5,e5]@5", J: "[a4 c#5, f#5]/2",
  K: "[d5@11 [b5,b6]@2 g5@2 e5, g4]/2", L: "f4", M: "c5, g4@3 ~", N: "[b4,d5,f#5,d6]", O: "a5 [g#5,g#6], b4, f#4@3 ~",
  P: "[[e4,a4]@4 ~@2 [e4,a4]@12 e4@2 ~@2 a4@9 ~]/2", Q: "[d#4@2 ~ d#4@4 [c#4,e5]@9]/2", R: "f#4", S: "[a4,b4]",
  T: "[[f#5,f#6]@3 [e4,g#5,g#6]@13, [e4,d#5] ~@7]/2", U: "[[e4,a4]@9 [e4,e5] ~ e5@5]/2", V: "[d#4@7 c#4@3 ~ b4@5]/2",
  W: "g#4", X: "a4", Y: "[c#5,c#6]@2 e5 ~ [a5,a6] ~ [b5,b6]@2 ~@2 [c#6,c#7] ~ [e6,e7]@4, b3@2 ~ b3@4 ~",
})).s("gm_clarinet").gain(0.3)

// chords · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note(`<
  ~@8 A@2 B@2 A@2 ~ C D@2 E@2 F G ~ H ~@15 I ~@8 A@2 B@2 A@2 ~ C D@2 E@2 F G ~ H ~@15 I
>`.pickRestart({
  A: "a6/2", B: "[g6@11 ~@2 g6 [e5,e6]@2]/2", C: "[e5,e6] g6 ~@3 e7@3", D: "f#6/2", E: "[d6@11 ~@2 g6@2 e6]/2",
  F: "[a#4,a#5]", G: "c6", H: "a6 ~", I: "~@2 e6 ~@13",
})).s("gm_clarinet").gain(0.15)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@3 A ~@4 B@4 ~@4 B@4 ~@4 C@6 D@2 E@6 F@2 ~@3 A ~@4 B@4 ~@4 B@4 ~@4 C@6 D@2 E@6 F@2
>`.pickRestart({
  A: "~@3 d5@4 ~",
  B: "[~@4 a4@2 d5 ~ e5@4 a4 ~ f#5@4 g5@2 f#5@2 d5@2 e5@2 a4 ~ a4 ~ d5@4 c5 ~ b4 ~ c5@3 ~ g4 ~ e4@16 ~@4]/4",
  C: "[~@4 c#4@4 e4@2 ~@2 e5@2 c#5@12 b4@2 a4@2 b4@6 g#4@2 b4@3 ~ b4@4 c#5@11 ~ b4@2 g#4@2 a4@11 ~ b4@2 g#4@2 a4@6 g#4 ~ e4@4 f#4@3 ~@3]/6",
  D: "[f#4@3 b3@5 b3@8, d#4@2 ~ g#4@13]/2",
  E: "[~@4 e4@4 a4@2 ~@2 f#5@2 e5@12 d#5@2 c#5@2 d#5@6 b4@2 d#5@3 ~ d#5@4 e5@11 ~ b4 ~ g#4@2 a4@11 ~ b4@2 g#4@2 a4@6 g#4 ~ e4@4 f#4@3 ~@3]/6",
  F: "[g4@2 a4 e4@2 f#4@11]/2",
})).s("gm_alto_sax").gain(0.4)

// chords · french horn · "Horn in F"
const french_horn = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G H I J K@2 L M N@2 O P Q@2 R@2 S T U@2 V W X@2 Y Z AA AB A@2 B@2 C@2 D@2 E@2 F@2 G H I J K@2
  L M N@2 O P Q@2 R@2 S T U@2 V W X@2 Y Z AA AB
>`.pickRestart({
  A: "[f#4@8 a3@2 d4@2 f#4 ~ g#4@6 b3@4 e4@4 g#4@4]/2",
  B: "[[f#4,a4]@8 c#4@2 f#4@2 a4 ~ f#4@8 f#4@10, ~@7 b4@9, ~@11 d5@4 ~]/2", C: "[[c#4,f#4]@8 a3@2 d4@2 f#4 ~ e4@18]/2",
  D: "[[b3,g4]@8 b3@2 d4@2 g4 ~ a4@18]/2", E: "[d4 [d4,f#4], d3]/2", F: "[[d4,e4]@10 ~ b4@2 g4@3]/2", G: "[d4,e4]",
  H: "f#4", I: "[d4,f4]@2 ~ [d4,f4]@4 ~", J: "[e4,g4]@2 ~ g4@5", K: "[e4 f#4, d3]/2", L: "[c3,g4]",
  M: "g4@2 ~ b4@2 g4@2 e4, c3", N: "[d4@8 ~@2 d4@2 e4@2 ~@2 e4@10 e4@2 f#4@2 e4 ~, a#3 ~, ~@7 d4@6 ~@3]/2",
  O: "[d4,a4]", P: "~@3 e5, e4, g#4 ~, ~@3 b4@5", Q: "[g#4@3 g#4@6 [a3,g#4] ~ [e3,g#4]@5]/2",
  R: "[[b3,f#4]@2 ~ [b3,f#4]@3 ~ b3@9]/2", S: "[c#4,e4]", T: "e4", U: "[f#4@2 ~ [b3,d#4]@13]/2", V: "g#4",
  W: "g#4@3 [e3,g#4]@5", X: "[[b3,f#4]@7 [b3,e4]@3 ~ [c#3,e4]@5]/2", Y: "[a3,e4]", Z: "[b3,f#4]", AA: "[c4,e4,g4]",
  AB: "[c#4,e4,a4]@2 ~ [c#4,e4,a4]@4 ~", // A
})).s("gm_french_horn").gain(0.35)

// other · glockenspiel
const glockenspiel = note("<~@14 A ~@12 B C D ~@5 E F D G H ~@14 A ~@12 B C D ~@5 E F D G H>".pickRestart({
  A: "a6 g6 f#6 g6 ~ d6 d7@2", B: "~@10 b6 ~ g#6@2 ~@2", C: "a6 a7 a6 a7 a6 a7 a6@2 ~@2 b6@2 g#6@2 a6@2",
  D: "~@4 g#6 ~ e6 ~@3 f#6 ~@5", E: "~@5 b6 g#6 a6", F: "~@10 b6 ~ g#6 ~ a6@2", G: "g6@2 ~@2 a6 ~ e6@2 ~@2 f#6 ~@5",
  H: "f#6 f#7 f#6 f#7 f#6 f#7 f#6 f#7 f#6 f#7 f#6 f#7 f#6 f#7 f#6 f#7",
})).s("gm_glockenspiel").gain(0.45)

// chords · piano
const piano = note("<A@2 B@2 C@2 D@2 ~@32 A@2 B@2 C@2 D@2 ~@32>".pickRestart({
  A: "[[a4,d5,f#5]@8 a4@2 d5@2 f#5 ~ [b4,e5,g#5]@6 b4@4 e5@4 g#5@4]/2", // D E
  B: "[[c5,f5,a5]@8 c#5@2 f#5@2 a5 ~ f#5@2 ~@6 d6@8 d6 ~, ~@14 [d5,g5,b5]@17 ~, ~@2 f#5 ~]/2", // F G
  C: "[[a4,c#5,f#5]@8 a4@2 d5@2 f#5 ~ [b4,g#5]@2 [b4,g#5]@4 b4@4 e5@4 g#5@2 ~@2, ~@7 e5@3 ~@6]/2", // F#m E
  D: "[[b4,d5,g5]@8 b4@2 d5@2 g5 ~@3 a3@15 ~, a3@14 [c#5,d5,a5]@17 ~]/2", // G Dmaj7
})).s("gm_piano").gain(0.35)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@38
  [f#3 a3 d4 f#4 a4 d5 f#5 a5 d6 a5 f#5 d5 a4 f#4 d4 a3]
  ~@39
  [f#3 a3 d4 f#4 a4 d5 f#5 a5 d6 a5 f#5 d5 a4 f#4 d4 a3]
  ~
>`).s("gm_orchestral_harp").gain(0.3)

// bass · electric bass finger · "5-str. Electric Bass"
const bass = note(`<
  A B C D E B F G H I J K H I L@2 H I J K M N O P Q R S T U V W X Q R Y Z U AA AB AC A B C D E B F G H I J K H I L@2 H I
  J K M N O P Q R S T U V W X Q R Y Z U AA AB AC
>`.pickRestart({
  A: "d1@4 ~ a1 d2@2 e2@3 a1@5", B: "a1 ~ d2@2 e2@2 g1@3 g1 a1@6", C: "d1@3 d1 ~ a1 d2@2 e2@3 a1@5",
  D: "a1 ~ g1@2 a1@2 e2@4 a1@6", E: "d1@3 ~@2 a1 d2@2 e2@3 a1@5", F: "d1@3 d1 ~ a1 d2@2 a2@3 a1@5",
  G: "~@2 g1!2 a2@2 a1@4 a2@6", H: "d1@2 a1@3 a1 d2@2 e2@2 a1@6", I: "~@2 a1@2 d2@3 d2 ~@2 d2@2 a1@4",
  J: "d1@2 a1@3 a1 d2@2 e2 ~ a1@6", K: "~@2 g1@2 a1@5 a1 d2@4 a1@2",
  L: "[a#1@3 a#1 f2@2 a#2@2 c3@2 f2@8 c2@2 d2@2 g1@4 c2@6]/2", M: "a#1@3 a#1 f2@2 a#2@2 c3@3 f2@5",
  N: "c2@3 c2 g2 ~ c3@2 d3@3 g2@5", O: "b1@3 b1 f#2@2 b2@2 c#3 ~@2 f#2@5", P: "e1@4 b1 ~ e2@2 f#2@3 b1@5",
  Q: "a2@2 e2@2 a2!2 b2@3 e2@3 a1@4", R: "~@2 a2!2 d2@3 d2 ~@2 e2@6", S: "g#2@2 d#2@2 g#2!2 a#2 ~@2 d#2@3 g#1@4",
  T: "~@2 c#2!2 f#1@3 f#1 ~@2 g#1@6", U: "f#2@2 c#2@2 f#2@2 g#2@3 c#2@3 f#1@4", V: "~@2 b1@2 b1 e1@2 e1 ~@2 f#1@6",
  W: "e1@3 e1 b1@2 e2@2 f#2@3 b1@5", X: "~ b1 f#2 e2 ~ b1@3", Y: "g#2@2 d#2 ~ g#2!2 a#2 ~@2 d#2@3 g#1@4",
  Z: "~@2 c#2!2 d#2@2 f#1@4 g#1@6", AA: "g#2@2 d#2@2 g#2@2 a#2@3 d#2@3 g#1@4", AB: "a1@3 a1 e2@2 a2@2 b2 ~@2 e2@5",
  AC: "b1 f#2 b2 c#3@2 f#2@3",
})).s("gm_electric_bass_finger").gain(0.5)

// drums · kick
const kick = s("bd").struct("<A@24 B@6 A C B@6 A D A@24 B@6 A C B@6 A D>".pickRestart({
  A: "x ~@2 x ~ x ~@2", B: "x!4", C: "x ~@2 x ~@4", D: "x ~@5 x ~@2 x ~@6",
})).gain(0.45)

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B@2 C A D@2 E A@2 B@2 A@3 E A@3 B F G@2 D H I@2 A H J K E H I@3 A@2 B A@2 B@2 C A D@2 E A@2 B@2 A@3 E A@3 B F G@2 D
  H I@2 A H J K E H I@3 A@2 B A
>`.pickRestart({
  A: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", B: "x!3 ~ x!3 ~ x!3 ~ x ~ x ~", C: "x!3 ~ x!3 ~ x!2 ~@6", D: "x!3 ~ x!3 ~ x!3 ~ x ~@3",
  E: "x!3 ~ x!3 ~ x!3 ~@5", F: "~ x!2 ~ x ~ x ~ x!3 ~ x!3 ~", G: "x!3 ~ x ~ x ~ x!3 ~ x!3 ~", H: "x ~ x!6", I: "x!8",
  J: "~ x!7", K: "x!5 ~ x!2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@2 ~@2 A@2 ~@3 A@2 ~@7 A B@3 ~ C ~@3 C ~ D E C ~@5 A ~@2 A@2 ~@2 A@2 ~@3 A@2 ~@7 A B@3 ~ C ~@3 C ~ D E C ~@5 A ~
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@5 x ~@10", C: "~ x ~@6", D: "~@5 x ~@2", E: "~@7 x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@3 A ~@7 A ~@27 A ~@3 A ~@7 A ~@24>".pickRestart({
  A: "~@7 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@3 B ~@7 B ~@15 B ~@11 A ~@3 B ~@7 B ~@15 B ~@8>".pickRestart({
  A: "~@10 x ~ x!2 ~@2", B: "~@12 x!2 ~@2",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@7
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@29 [x!2 ~@14] ~@39 [x!2 ~@14] ~@10>").gain(0.4)

stack(
  piccolo, flute, flute_soft, flute_2, oboe, clarinet, clarinet_soft, alto_sax, french_horn, glockenspiel, piano,
  orchestral_harp, bass, kick, snare, hihat, open_hat, mid_tom, high_tom, crash, ride
)

More by Shinobu Nagata