Strudelify

Aspertia City

Go Ichinose

KeyE majorTempo86 bpm
0:00/0:00
// Aspertia City — Go Ichinose
// 86 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5828294; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(86/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 · clarinet
const clarinet = note(`<
  ~ A B C D E F@2 G H I J I J K L M N O P F Q R S L T@2 ~ A B C D E F@2 G H I J I J K L M N O P F Q R S L T@2
>`.pickRestart({
  A: "~@3 g#4", B: "b4 g#4", C: "c5@2 g#4 c5", D: "c#5@2 g#4 c#5", E: "d5@2 e4 g#4", F: "a4", G: "g#4", H: "a4 b4",
  I: "e4 g#4", J: "a4@2 b4 d5", K: "c#5", L: "c5 d5", M: "g4 e4 d4 b3", N: "d4 c#4 e4 f#4", O: "c5", P: "d5 e5",
  Q: "f#4 b4 e4 d4", R: "c5 b4", S: "e5 d#5 d5 c#5", T: "e5/2",
})).s("gm_clarinet").gain(0.25)

// chords · piano
const piano = note(`<
  A B C D E@2 F G H@2 I J K L M N O P Q R S T U V@2 W@2 A B C D E@2 F G H@2 I J K L M N O P Q R S T U V@2 W@2
>`.pickRestart({
  A: "e2 b2 e3 f#3@2 e3 b2 f#2 e2 b2 e3 f#3@2 e3 b2 f#2",
  B: "e2 b2 e3 f#3@2 e3 b2 f#2 e2 b2 e3 b2 g#3 f#3 e3 f#3, ~@3 b4",
  C: "e2 b2 [e3,e5] f#3@2 e3 [b2,e5] f#2 e2 b2 e3 ~@2 e3 [b2,d#5] [f#2,e5], [b4,f#5]@3 b4@4 f#5@3 e5@2 b4@2 ~@2, ~ g#4, ~@11 f#3@2 ~@3", // E E5 B F#7 B5
  D: "e2 c3 e3 f#3@2 [e3,e5] [c3,f#5] f#2 e2 c3 e3 c3 g#3 f#3 e3 f#3, c5@2 g#4 c5, f#5@4 ~@3 g#5@5 ~@4", // E Cdim
  E: "[e2 c#3 [e3,e5] [f#3,b4]@2 e3 [c#3,e5] f#2 e2 c#3 e3 ~@2 e3 [c#3,e5] f#2 e2 d3 e3 f#3@2 e3 [d3,c#5] f#2 e2 d3 e3 d3 f#3 e3 b3 g#3, c#5@8 g#4@3 f#3@2 ~@15 [g#3,g#4]@4, f#5@2 ~@5 f#5@3 e5@2 c#4@4 d4@8 e4@4 ~@4, ~@12 b4@2 ~ d5@7 ~ b4@5 ~@4]/2", // E B5 C#m Dmaj7 G#
  F: "a2 e3 a3 [c#5,b5] [c#5,e5,b5] [a3,b4,e5,a5] e3 b2 a2 e3 a3 e3 c3 c4 [a3,c5,e5] [e4,c5,e5], [e5,c#6]@3 b3@2 ~@2 [c5,e5,a5]@5 ~@4", // C#7 C#m7 Asus2 Am C C#m Am
  G: "a2 e3 a3 ~@2 a3 [e3,d5,a5] a2 d3 a3 d4 a3 d#3 b3 [f#3,c5,g#5] [d#4,c#5,a5], [a5,c6]@2 [e5,b5]@2 [e5,b5]@2 ~ [d5,a5]@5 ~@4, ~@3 c4@2 ~@11", // Dsus2 G#7 D#m7b5 Am E5 D5
  H: "[e4@4 d#4@4 [c#3,f#4]@4 [b2,e4]@4 a3 f#4 e4 b3!2 d#4 c#4 b3 d#4 f#4 d#4 b3 d#5 b4 f#4 d#4, [e5,b5]@15 ~, [e3,b3]@2 ~@2 [a2,g#4] [f#2,f#4] [b2,a4] [d#3,g#4]]/2", // F#5 E5 Amaj7 F# B7 G#5
  I: "e2 b2 e3 f#3 g#3 e3 [b2,b4,b5] [f#2,e5,e6] g#2 b2 [e3,e5,e6] [f#3,f#5,f#6] e3 [g#3,f#5,f#6] b2 f#2, [b4,b5]@3 ~ [f#5,f#6] ~@2 [g#5,g#6]", // B F#7 E F# G#7 B F# G#
  J: "a2 c#3 e3 [g#3,a4,a5] a3 [g#3,b3] [a3,c4] [a#3,c#4] f#3 d#3 f#3 a3 [b3,g#6] [a3,b5,e6] [f#3,e5,g#5] [c3,g#4,b4], [b4,b5]@3 ~ [b4,b5]@4 b3@2 d4@4 c4@2", // Amaj7 G#m Am A#m E Asus2 C#m E …
  K: "[e2,e4,e6] [b2,g#5,b5] [e3,b4,e5] [f#3,e4,g#4] [g#3,b3,g#4] [e3,g#4,g#5] [b2,b4,b5] [f#2,e5,e6] g#2 b2 [e3,e5,e6] f#3 e3 [g#3,f#5,f#6] b2 f#2, ~@8 [f#5,f#6]@2 ~ [f#5,f#6]@2 ~ [g#5,g#6]@2", // E E5 C#m G#m E B F#7 E …
  L: "a2 c#3 e3 [g#3,a5,a6] a3 [b3,g#4] [c4,a4] [c#4,a#4] f#3 d#3 f#3 a3 [b3,g#6] [a3,b5,e6] [f#3,e5,g#5] [b2,g#4,b4], [b5,b6]@3 ~ [b5,b6]@4 b4@2 d5@4 c5@2", // Amaj7 E F F# E Asus2 C#m E …
  M: "[a2,e4] a2 ~ [b4,e5,a5,b5]!2 [a4,e5,a5] a2!2 ~@2 g#2@2 a2@2 [e4,a4,e5]!2, [c#5,e5,a5,c#6]@3 ~@4 [a4,e5,a5]@7 e2@2", // A5 Esus4 A5 A A5
  N: "a2!2 [g2,c5,e5,b5]@2 [f#2,b4,e5,b5]@2 [b4,e5,a5] ~ d2@2 c#2@2 d2@2 [g#4,g#5] [a4,a5], [c5,e5,a5,c6] ~@2 e2 ~@3 f#2, ~@7 [a4,d5,a5]@5 ~@4", // Cmaj7 Esus2 Esus4 G# A Am D5
  O: "[g2,g3,b4,d5,g5,b5]@4 ~@2 [g2,g3]!2 ~@2 g2@2 g2!2 e2@2, ~ [e4,g4,b4,e5] [d3,g3,d4,g4,b4,d5] [d3,g3,b3,d4,g4,b4]", // G Em G
  P: "[e2,e3,d4,g4,b4,d5] [d#3,c#4,e4,g4,c#5] [d3,g3,e4,a4,c#5,e5] [c3,f#3,f#4,a4,c5,f#5]", // Em7 C#dim A7 F#dim
  Q: "[c2,c3]@3 [c2,c3] ~@2 e5!2 g5@2 a5 f#5@2 [e3,g3,c4,e5]@3, [e4,g4,c5,e5]@3 ~@5, ~@4 [e3,g3,c4]@4 ~@2 [c2,c3]@3 ~@3", // C
  R: "[d2,d3,d5]@3 [d2,d3] [f#3,a3,d4,a5]@3 [f#3,a3,d4] [e2,e3,g#5]@2 f#5 [e2,e3,g#5] ~ a5 ~ [b3,e4,g#4], ~@4 g#5 ~@7 [b3,e4,g#4]@2 b5@2", // D E
  S: "[a2,c3,e3]!2 ~@3 a4 [a2,c3,e3,b4] [a2,c3,e3,c5] c5@2 d5 b4@2 [a2,c3,e3,a4]@3, [c4,e4,g4,c5]@2 ~@3 [a2,c3,e3] ~@2", // Am C Am
  T: "[b2,d3,f#3]!2 ~@2 f#5@2 [b2,d3,f#3]!2 [b2,d3,g#3] [b2,e3,g#3] e5 [b2,e3,g#3,f5] ~ [b2,d3,g#3,e5] [b2,e3,g#3] ~, b4@4 f5 ~@3 f5@2 ~@4 d5@2", // Bm G#dim E E7 E
  U: "[a2,c3,e3]!2 ~@4 [a2,c3,e3,e5]!2 d#5@2 d#5 e5@2 ~ f#5@2, [e4,g4,c5]@4 ~@6 [b2,d#3,f#3]@2 ~ [b2,d#3,f#3]@2 ~", // Am C B
  V: "[a5@2 g5@2 f#5@2 g5@2 a5 g5@2 a5 ~ b5@2 d#6 [c2,e2,g2,c3]@3 [c2,c3] ~@2 g5 [c4,g5] [d2,d3,f#5]@2 g5 d3 [f#3,a3,d4]@3 [d4,f#5], [e3,g3,b3,e4]@4 [d#3,f#3,b3,d#4]@4 [d3,g3,b3,d4]@4 [c#3,e3,g3,c#4]@3 e6@5 [e3,g3,c4]@4 ~@3 a5@4 ~]/2", // C C5 D Em B G C#dim C
  W: "[e2 b2 e3 f#3@2 e3 b2 f#2 e2 b2 e3 f#3@2 e3 b2 f#2 e2 b2 e3 f#3@2 e3 b2 f#2 e2 b2 e3 f#3@2 e3 b2 f#2, g#5@15 ~]/2",
})).s("gm_piano").gain(0.4)

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

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

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

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

stack(clarinet, piano, kick, snare, hihat, open_hat)

More by Go Ichinose