Strudelify

Nimbasa City

Shota Kageyama

KeyB majorTempo249 bpm
0:00/0:00
// Nimbasa City — Shota Kageyama
// 249 bpm, 12/8, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5987331; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(249/6)

// 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 · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@15 A B C D E ~ F G H B I J K L M N O ~@21 A B C D E ~ F G H B I J K L M N O ~@6
>`.pickRestart({
  A: "~@8 d#4 g4 ~ a#4 c#5 d#5 ~ g5", B: "e5 c#5", C: "f#5 c#5", D: "d#5@15 [c#5,d#5]", E: "e5 b4", F: "d#5 c#5",
  G: "b4", H: "~@4 d#4 d4 ~ d#4 f#4 g#4 ~ a#4 b4 c#5 ~ d#5", I: "a#4 g#5", J: "f#5", K: "d#5@8 ~@4 a#4 b4 ~ c5",
  L: "c#5 ~@6 c#5@9", M: "d5 ~@6 d5@9", N: "d#4 d4 ~ d#4 f4 e4 ~ f4 g4 f#4 ~ g4 g#4 g4 ~ g#4",
  O: "a4 g#4 ~ a4 b4 a#4 ~ b4 e4 a#4 ~ b4 e5 a#5 ~ b5",
})).s("gm_string_ensemble_1").gain(0.34)

// chords · trumpet
const trumpet = note(`<
  A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D E F G H I J@2 D E F G K@2 L@2 M@2 N@2 O P A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D E F G H
  I J@2 D E F G K@2 L@2 M@2 N@2 O P
>`.pickRestart({
  A: "[d#4@8 d#4@3 f#4 ~@3 f#4@9 f#4@3 ~ a#4 ~@3]/2", B: "[g#4@8 f4@3 g#4 ~@3 g#4@4 f#4 d#4@3 f#4@4 e4 c#4@4]/2",
  C: "[g#4@8 g#4@3 f4 g#4@3 a#4@17]/2", D: "[g#4,c#5]@8 [g#4,c#5]@3 [f#4,b4] ~@3 [e4,a#4]",
  E: "~@3 [c#4,f#4]@5 [d#4,f#4] ~@3 [e4,g#4] ~@3", F: "[f#4,b4]@8 [f#4,b4]@3 [f#4,a#4] ~@3 [e4,g#4]",
  G: "~@3 [b3,e4]@5 [c#4,f#4] ~@3 [d#4,g#4] ~@3", H: "[f4,a#4]@8 [f4,a#4]@3 [d#4,g#4] ~@3 [c#4,g4]",
  I: "~@3 [a#3,d#4]@5 [c#4,f#4] ~@3 [c#4,g#4] ~@3", J: "[[d#4,g#4]@8 [d#4,g#4]@3 [f#4,a#4] ~@3 [f#4,c5]@17]/2",
  K: "[f4,g#4] ~@6 [f4,g#4]@9", L: "[[g#4,a#4]@12 ~@3 [a4,b4]@17]/2",
  M: "[[c4,e4]@8 [c4,e4]@3 [c4,g4] ~@3 [e4,g4]@9 [e4,g4]@4 [g4,c5] ~@3]/2", // C C5 Em C5
  N: "[[f#4,a4]@8 [d4,f#4]@3 [f#4,a4] ~@3 [f4,a4]@4 [d4,g4] [d4,f4]@3 [d4,g4]@4 [c4,f4] [b3,d4]@4]/2", // F#m D F#m F G5 Dm G5 F5 …
  O: "[c4,e4]@4 [e4,a4] [d#4,g4] ~ [e4,a4]!2 ~@2 [e4,g4] [a3,f4]@3 [a3,e4]", // C A5 D# A5 Em Dm A5
  P: "[g#3,b3]@3 [a3,d4] [b3,e4]@3 [b3,e4] ~@3 [a#3,g4]@5", // G#m D5 E5 D#
})).s("gm_trumpet").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A@2 B@2 A@2 C@2 A@2 B@2 A@2 D@2 E F G@2 H I J@2 E F G@2 K L M@2 N@2 O P Q R A@2 B@2 A@2 C@2 A@2 B@2 A@2 D@2 E F G@2 H
  I J@2 E F G@2 K L M@2 N@2 O P Q R
>`.pickRestart({
  A: "[b3@8 b3@3 c#4 ~@3 d#4@9 d#4@4 f#4 ~@3]/2", B: "[f4@8 c#4@3 f4 ~@3 e4@4 d#4 c#4@3 d#4@4 c#4 a#3@4]/2",
  C: "[f4@8 f4@3 c#4 f4@3 d#4@8 g4@5 d#4 d4 ~ c#4]/2", D: "[f4@8 f4@3 c#4 f4@3 d#4@8 g4@9]/2",
  E: "~@4 d#4 e4@2 d#4 e4@3 g#4 ~@3 f#4", F: "~@3 e4@5 c#4 d#4 ~@2 c#4 ~@3",
  G: "[c#4 d#4@7 c#4@3 d#4 ~@3 b3@12 ~ c#4 d#4 ~@2]/2", H: "c#4@8 a#3@3 c#4 ~@3 [c#4,d#4]",
  I: "~@3 c#4@5 b3 ~@3 a#3 ~@3", J: "[g#3@8 g#3@3 a#3 ~@3 c4@11 ~ g#3 c#4@3 d#4, ~@15 a#3 ~@16]/2", K: "c#4 ~@6 c#4@9",
  L: "d4 ~@6 d4@5 a#3@4", M: "[c#4 d#4@11 ~@3 e4@12 d4 c4@3 d4]/2", N: "[c4@8 c4@3 d4 ~@3 e4@9 e4@4 g4 ~@3]/2",
  O: "f#4@8 d4@3 f#4 ~@4", P: "f4@3 e4 d4@3 e4@4 d4 c4@3 b3",
  Q: "a3@4 [c4,e4] [b3,d#4] ~ [c4,e4] [d#4,a4] ~@2 [b3,d#4] [b3,d4]@3 [a3,c4]", // C B C D#dim B Bm Am
  R: "[g#3,b3]@3 [g#3,c4] [g#3,d4]@3 [g#3,e4] ~@3 [g3,c#4]@5", // G#m G# G#dim C#m Gdim
})).s("gm_alto_sax").gain(0.4)

// chords · trombone
const trombone = note(`<
  A B C@2 A B D@2 A B C@2 A B D@2 ~@16 E F G@2 H I A B C@2 A B D@2 A B C@2 A B D@2 ~@16 E F G@2 H I
>`.pickRestart({
  A: "~@4 [g#2,d#3] ~@6 [g#2,d#3] ~@4", B: "~@4 [b2,f#3] ~@6 [b2,f#3] ~@4",
  C: "[[c#3,g#3]@8 [g#2,c#3]@3 [c#3,g#3] ~@3 [e3,b3]@5 ~@3 [c#3,f#3]@9]/2", // C#5 E5 F#5
  D: "[[c#3,g#3]@8 [g#2,c#3]@3 [c#3,g#3] ~@3 [d#3,g#3]@5 ~@3 [d#3,g3]@9]/2", E: "~@4 [a2,e3] ~@6 [a2,e3] ~@4",
  F: "~@4 [c3,g3] ~@6 [c3,g3] ~@4", G: "[[d3,a3]@8 [a2,d3]@3 [d3,a3] ~@3 [f3,c4]@8 [d3,g3]@9]/2", H: "a2 ~@3",
  I: "b3@3 a3 g#3 ~@2 e3 ~@3 d#3@5",
})).s("gm_trombone").gain(0.4)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D@2 E@2 F@2 G@2 D@2 E@2 H I J@2 K@2 L@2 M ~ A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 D@2 E@2
  F@2 G@2 D@2 E@2 H I J@2 K@2 L@2 M ~
>`.pickRestart({
  A: "[[f#3,b3,d#4]@11 [f#3,b3,d#4] ~@3 [f#3,b3,d#4]@13 [f#3,b3,d#4] ~@2 [f#3,b3,d#4]]/2", // B
  B: "[[g#3,c#4,f4]@11 [g#3,c#4,f4] ~@3 [g#3,b3,e4]@8 [f#3,a#3,c#4]@9]/2", // C# E F#
  C: "[[g#3,c#4,f4]@11 [g#3,c#4,f4] ~@3 [a#3,d#4,g#4]@8 [a#3,d#4,g4]@9]/2", // C# D#sus4 D#
  D: "[[g#3,c#4,e4]@11 [g#3,c#4,e4] ~@3 [f#3,a#3,e4]@13 [f#3,a#3,e4] ~@2 [f#3,a#3,e4]]/2", // C#m F#7
  E: "[[f#3,b3,d#4]@11 [f#3,b3,d#4] ~@3 [g#3,b3,e4]@13 [g#3,b3,e4] ~@2 [g#3,b3,e4]]/2", // B E
  F: "[[f3,a#3,c#4]@11 [f3,a#3,c#4] ~@3 [g3,c#4,d#4]@13 [g3,c#4,d#4] ~@2 [g3,c#4,d#4]]/2", // A#m D#7
  G: "[[f#3,b3,d#4]@11 [f#3,b3,d#4]!2 ~@2 [f#3,b3,d#4]@5 [f#3,b3,d#4] ~@2 [f#3,b3,d#4]@5 [f#3,b3,d#4] ~@3]/2", // B
  H: "[f3,a#3,c#4] ~@6 [f3,a#3,c#4]@9", I: "[f3,a#3,d4] ~@6 [f3,a#3,d4]@9",
  J: "[[g#3,a#3,d#4]@13 ~@2 [a3,b3,e4]@5 [a3,b3,e4] ~@2 [a3,b3,e4]@9]/2", // G#sus2 Asus2
  K: "[[g3,c4,e4]@9 ~@2 [g3,c4,e4] ~@3 [g3,c4,e4]@13 [g3,c4,e4] ~@2 [g3,c4,e4]]/2", // C
  L: "[[a3,d4,f#4]@12 ~@3 [a3,c4,f4]@8 [g3,b3,d4]@9]/2", M: "[g3,c4,e4] ~@3",
})).s("gm_electric_guitar_clean").gain(0.4)

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

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

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@2 B@2 A@2 ~ B A@2 B@2 A@2 ~@2 A@3 B A@2 ~@2 A@6 ~@2 A@3 ~@3 A@2 B@2 A@2 ~ B A@2 B@2 A@2 ~@2 A@3 B A@2 ~@2 A@6 ~@2
  A@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~ A ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@3 A ~ A
>`.pickRestart({
  A: "~@15 x", B: "~@3 x ~@12",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B C A ~ B C A ~ B C A ~ B C A ~@3 A ~ B C A ~@3 D@2 B C A ~ B C A E A ~ B C A ~ B C A ~ B C A ~ B C A ~@3 A ~ B C
  A ~@3 D@2 B C A ~ B C A E
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~@7 x ~@8", D: "x ~@6 x ~@8", E: "x ~@10 x ~@4",
})).gain(0.64)

stack(
  string_ensemble_1, trumpet, alto_sax, trombone, electric_guitar_clean, bass, kick, snare, hihat, open_hat, mid_tom,
  crash
)