Strudelify

goya no machiawase noragami opening

Hello Sleepwalkers

KeyE minorTempo180 bpm
0:00/0:00
// goya no machiawase noragami opening — Hello Sleepwalkers
// 180 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1382591; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · distortion guitar · "Guitare électrique"
const distortion_guitar = note(`<
  ~ A B C D A B C D ~@7 E ~@8 A B C D ~@14 F G ~@8 H I H I H I J K L M N O L M N O ~@32 P Q R S P Q R S P Q R S P T A B
  C D ~@5
>`.pickRestart({
  A: "~@8 e5!5 ~@3", B: "~@8 g5!5 ~@3", C: "~@8 a5!5 ~@3", D: "~@8 d6!5 ~@3", E: "b4!8 c5 b4!3 b4@4", F: "~@6 b5!2",
  G: "b5!8", H: "[c3,g3,c4] [b2,f#3,b3]", I: "[e2,b2,e3] [g2,d3,g3]",
  J: "[c3,g3,c4] ~ [b2,f#3,b3] ~ [a#2,f3,a#3] ~ [a2,e3,a3] ~", K: "[d3,a3,d4] ~ [d#3,a#3,d#4] ~ [e3,b3,e4] ~@3",
  L: "[e2,b2,e3] ~ e2!2 [e2,b2,e3]!2 e2 [f2,c3,f3]", M: "~ f2!3 [f2,c3,f3]!4",
  N: "[g2,d3,g3] ~ g2!2 [g2,d3,g3]!2 g2 [g2,d3,g3]", O: "~ g2!3 [g2,d3,g3]!4", P: "[c3,g3,c4]!8", Q: "[b2,f#3,b3]!8",
  R: "[e2,b2,e3]!8", S: "[g2,d3,g3]!8", T: "[d4,a4,d5] ~@3",
})).s("gm_distortion_guitar").gain(0.64)

// chords · overdriven guitar · "Guitare électrique"
const overdriven_guitar = note(`<
  ~@16 A ~@24 B@2 C D E F G H E F I J ~@28 K@2 L ~ E F G H E F I J E F G H E F I J ~@18 M ~@3 N
>`.pickRestart({
  A: "~ [f3,g3,b4,c5]@2 ~", B: "[b2,e3,g3,d4,e4]/2", C: "[f3,a#3,d4]!6 [f3,a#3,d4,g5] [f3,a#3,d4,g#5]",
  D: "a5 a#5 b5!6", E: "[e2,b2,e3]!8", F: "[a2,e3,a3]!8", G: "[c3,g3,c4]!8", H: "[b2,f#3,b3]!4 [d3,a3,d4]!4",
  I: "[c3,g3,c4]!7 [d3,a3,d4]", J: "~ [d3,a3,d4] ~ [d3,a3,d4] [b2,f#3,b3]@4", K: "[b2,e3,g3,d4,g4]/2",
  L: "[f3,a#3,d4]!8", M: "e3 ~ e3 g3 a3 b3 d4 e4", N: "f#5",
})).s("gm_overdriven_guitar").gain(0.47)

// bass · electric bass finger · "Basse électrique"
const bass = note(`<
  ~ A@2 B@2 A@2 B@2 C D E F C D E G H I J K H I J K A@2 L M N@2 ~@2 O P Q R ~@8 I@2 S T I@2 S U V W V W V W X Y Z AA AB
  AC Z AA AB AC AD@2 AE@2 AF@2 AG@2 ~@8 I@2 S T I@2 S U I@2 S T I@2 S AH ~@14 A@2 B@2 AI AJ AK@2 ~
>`.pickRestart({
  A: "[e2!2 e2@2 a1 b1 d2 e2@2 e2 e2@2 g2 g#2 a2@2]/2", B: "[e2!2 e2@2 a1 b1 d2 e2@2 e2 e2@2 a2 g#2 g2@2]/2",
  C: "e2 ~@5 d3 e3", D: "~ e2 ~@6", E: "f2 ~@5 f2 g2", F: "~ f2 ~@6", G: "~ f2@6 ~", H: "e2!6 d2 e2", I: "e2!8",
  J: "f2!7 g2", K: "f2!6 g2 f2", L: "e2!2 e2@2 a1 b1 d2 e2", M: "~ d#2 ~ d2 ~@4", N: "e2/2", O: "f2@3 c#3 c#3@2 ~@2",
  P: "f2@3 c#3@3 f2@2", Q: "e3@3 a2@3 e3@2", R: "f2@2 g3@3 f2 a3@2", S: "c2!8", T: "b1!8", U: "d2!5 ~@3",
  V: "c2!2 b1!2", W: "e1!2 g1!2", X: "c2 b1 a#1 a1", Y: "g#1 g1 f#1 f1", Z: "e1@2 ~@2 b1!2 e1 c2",
  AA: "~ f1 c2@2 ~ f1!2 c2", AB: "d2@2 ~@2 d2!2 a1 d2", AC: "~@3 a1 e2!2 d2@2", AD: "[e2@12 ~@3 a2]/2",
  AE: "[b2@3 d3 ~ c#3@11]/2", AF: "[~@2 e2@12 ~ b1]/2", AG: "[e2@3 b1 f#2 ~ d2 c#2@9]/2", AH: "d2!4 d2@4",
  AI: "e1!2 ~@5 e1", AJ: "~@2 e1@2 e2@2 d2@2 g#1 a1@3 g1@4", AK: "[e1!2 ~@5 f1@9]/2",
})).s("gm_electric_bass_finger").gain(0.13)

// bass · electric bass finger · "Basse électrique"
const bass_2 = note("<~ A@8 ~@16 A@2 B C ~@72 D E F G D E F G D E F G H I A@4 ~@5>".pickRestart({
  A: "[[e1,e2]!2 [e1,e2]@2 ~@3 [e1,e2]@2 [e1,e2] [e1,e2]@2 ~@4]/2", B: "[e1,e2]!2 [e1,e2]@2 ~@3 [e1,e2]",
  C: "~ d#2 ~ d2 ~@4", D: "c2@2 c2 a1", E: "b1@4 a1 b1 d2@2", F: "e1@2 e1 f#1", G: "g1@4 f#1 g1 f#1 g1", H: "e1 g1",
  I: "a1 ~@3",
})).s("gm_electric_bass_finger").gain(0.19)

// other · lead 1 square · "Synthétiseur de Sweep" · C# E F# G# A
const lead_1_square = note("<~@121 [~@2 [c#5,c#6] [e5,e6] [f#5,f#6] [g#5,g#6] [a5,a6] ~] ~@2>")
  .s("gm_lead_1_square").gain(0.13).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B C D C D C D C D A E A E A E A F A B A D G ~ H I J@11 ~ A B A B A B A E J@6 ~@2 A B A B A B A B G ~@3
  K@4 J@7 ~ A B A B A B A E A B A B A B A E L@3 M L@3 G L@4 N ~ A B A B J@3 ~@2
>`.pickRestart({
  A: "x ~@3 x!2 ~ x", B: "~ x ~@2 x!2 ~@2", C: "x ~@6 x", D: "~ x ~@6", E: "~ x ~ x ~@4", F: "~ x ~ x ~ x ~@2", G: "x",
  H: "~@3 x", I: "~@5 x ~@2", J: "x!4", K: "~ x ~ x", L: "x!2", M: "x ~ x!2", N: "x ~ x!2 ~@2 x!2",
})).gain(0.13)

// drums · rim
const rim = s("rim").struct("<~@73 [~@3 x] [~ x ~ x]!3 ~@47>").gain(0.19)

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

// drums · low tom
const low_tom = s("lt").struct("<~@53 [x!4]!7 [x!3 ~] ~@63>").gain(0.1)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~ A ~ A ~@10 B@4 ~@84 C ~@2>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@8 x!3 ~ x ~@3", C: "~@5 x!2 ~",
})).gain(0.13)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A B C B C B C B ~@10 A D ~@2 C B ~@18 A B ~@6 E F ~@12 G H@3 I ~@2 J ~@10 A B ~@6 A B K@7 D K@4 L I ~@9
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6", C: "x ~@6 x", D: "~ x ~ x ~@4", E: "x!4", F: "x!3 ~", G: "~@8 x!4 ~@4",
  H: "x!4 ~@4 x!4 ~@4", I: "x", J: "~@3 x", K: "~ x ~ x ~ x ~ x", L: "~ x!3",
})).gain(0.19)

// drums · high tom
const high_tom = s("ht").struct("<~@18 A ~ A ~ A ~@10 B C D C ~@82 E F G ~@2>".pickRestart({
  A: "~@8 x!2 ~@6", B: "~@6 x!2 ~@6 x ~", C: "x ~ x ~ x ~ x!2 ~@6 x!2", D: "x ~ x ~ x ~ x!2 ~@6 x ~", E: "x!2 ~@5 x",
  F: "~ x ~@6", G: "x ~ x ~@3 x!3 ~@7",
})).gain(0.13)

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

// drums · ride
const ride = s("rd").struct("<~@33 x ~@90>").gain(0.13)

stack(
  distortion_guitar, overdriven_guitar, bass, bass_2, lead_1_square, kick, rim, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, ride
)