Strudelify

Sword and Shield - Gym Leader

Go IchinoseJunichi Masuda

KeyB♭ majorTempo132 bpm
0:00/0:00
// Sword and Shield - Gym Leader — Go IchinoseJunichi Masuda
// 132 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "B♭ Clarinet 1" clarinet (copy of ch 1 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/5948700; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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.

// other · piccolo
const piccolo = note("<~@6 A B C D C D C D C D ~@13 E F G@2 H@2 G@2 I@2 ~@4 J K E L M>".pickRestart({
  A: "d6@4 d6@2 d6@2 eb6@3 c6@3 d6@2", B: "~@2 bb5!2 bb5@2 bb5@2 c6@4 f6@2 ~@2", C: "g6!2 ~ g6 ~ ab6 ~ g6",
  D: "g6!2 ~ g6 ~ bb6 ~ bb6", E: "f6@4 f6@2 f6@2 g6@3 eb6@3 f6@2", F: "~@2 f6!2 f6@2 f6@2 g6@4 ~@4",
  G: "[f6@4 d6@2 bb5 f6@3 ~@3 f6@2 d6]/2", H: "[g6 f6@3 ~@2 bb5 c6@5 ~ bb5 c6 bb5]/2",
  I: "[g6 f6@3 ~@2 c6 bb5@5 ~@4]/2", J: "bb5@4 bb5@2 bb5@2 d6@3 c6@3 d6@2", K: "~@2 bb5!2 bb5@2 bb5@2 d6@3 c6@3 d6@2",
  L: "~@2 f6!2 f6@2 f6@2 g6@3 eb6@3 f6@2", M: "bb6 ~@3",
})).s("gm_piccolo").gain(0.4)

// other · flute
const flute = note("<~@6 A B C D C D C D C D ~@13 E F G@2 H@2 G@2 I@2 ~@4 J K E L M>".pickRestart({
  A: "d5@4 d5@2 d5@2 eb5@3 c5@3 d5@2", B: "~@2 bb4!2 bb4@2 bb4@2 c5@4 f5@2 ~@2", C: "g5!2 ~ g5 ~ ab5 ~ g5",
  D: "g5!2 ~ g5 ~ bb5 ~ bb5", E: "f5@4 f5@2 f5@2 g5@3 eb5@3 f5@2", F: "~@2 f5!2 f5@2 f5@2 g5@4 ~@4",
  G: "[f5@4 d5@2 bb4 f5@3 ~@3 f5@2 d5]/2", H: "[g5@2 f5@6 ~@4 bb4@2 c5@9 ~@3 bb4@2 c5@2 bb4@2]/2",
  I: "[g5 f5@3 ~@2 c5 bb4@5 ~@4]/2", J: "bb4@4 bb4@2 bb4@2 d5@3 c5@3 d5@2", K: "~@2 bb4!2 bb4@2 bb4@2 d5@3 c5@3 d5@2",
  L: "~@2 f5!2 f5@2 f5@2 g5@3 eb5@3 f5@2", M: "bb5 ~@3",
})).s("gm_flute").gain(0.34).pan(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@4 A B A C D E D F D E D F G H G H G H G H ~@3 I J K L M@2 N@2 M@2 O@2 ~@8 P>".pickRestart({
  A: "bb3@4 bb3@2 bb3@2 eb4@3 c4@3 d4@2", B: "~@2 bb3!2 bb3@2 bb3@2 eb4@4 ~@4", C: "~@2 bb3!2 bb3@2 bb3@2 eb4@4 d4@4",
  D: "g4@4 g3@2 d4@2 eb4@2 eb4@2 eb4!2 d4@2", E: "~@2 g3@2 g3@2 bb3@2 c4 db4!3 ~ db4 bb3@2",
  F: "~@2 g3!2 g3@2 bb3@2 c4 db4!3 ~ db4 bb3@2", G: "g3!2 ~ g3 ~ ab3 ~ g3", H: "g3!2 ~ g3 ~ bb3 ~ bb3",
  I: "bb3@4 bb3@2 bb3@2 d4@3 c4@3 d4@2", J: "~@2 bb3!2 bb3@2 bb3@2 d4@3 c4@3 d4@2", K: "f4@4 f4@2 f4@2 g4@3 eb4@3 f4@2",
  L: "~@2 f4!2 f4@2 f4@2 g4@4 ~@4", M: "[d4@4 bb3@2 f3 d4@3 ~@3 d4@2 bb3]/2",
  N: "[eb4 d4@3 ~ bb3 eb3 f3@5 ~ f3 g3 f3]/2", O: "[eb4 d4@3 ~ bb3 g3 f3@5 ~@4]/2", P: "f4 ~@3",
})).s("gm_alto_sax").gain(0.4).pan(0.6)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@4 A B A B C D C D C D C D E F E F E F E F ~@3 G H G I J K L K J M J N O P O Q O P O P R
>`.pickRestart({
  A: "d3@4 d3@2 d3@2 c3@3 c3@3 d3@2", B: "~ d3!3 c3@2 c3@2", C: "~@4 g3@2 d4@2 eb4@2 eb4@2 eb4!2 d4@2",
  D: "~@2 g3@2 g3@2 bb3@2 c4 db4!3 ~ db4 bb3@2", E: "g3!2 ~ g3 ~ ab3 ~ g3", F: "g3!2 ~ g3 ~ bb3 ~ bb3",
  G: "f3@4 f3@2 f3@2 bb3@3 bb3@3 f3@2", H: "~@2 f3!2 f3@2 f3@2 bb3@3 bb3@3 f3@2", I: "~@2 f3!2 f3@2 f3@2 bb3@4 ~@4",
  J: "bb2!4 g2!2 ~ f2", K: "bb2!4 ~ d2!3", L: "bb2!4 g2 ~@2 f2", M: "bb2!4 ~ [d2,d3]!3", N: "bb2!4 ~ [eb2,eb3]!3",
  O: "bb2!2 ~ bb2 ~ g2 ~ f2", P: "bb2!2 ~ bb2 ~ d3 ~ d3", Q: "bb2!2 ~ bb2 ~ eb3 ~ d3", R: "bb2 ~@3",
})).s("gm_baritone_sax").gain(0.4).pan(0.6)

// other · trumpet · "B♭ Trumpet 1"
const trumpet = note("<~@4 A B A C D E D E D E D E ~@11 F G H I J@2 K@2 J@2 L@2 M@2 N@2 M@2 O@2 ~>".pickRestart({
  A: "g4@4 g4@2 g4@2 bb4@3 a4@3 bb4@2", B: "~@2 g4!2 g4@2 g4@2 bb4@3 a4@3 bb4@2", C: "~@2 g4!2 g4@2 g4@2 bb4@4 bb4@4",
  D: "g4@4 ~@4 eb4@2 eb4@2 eb4!2 d4@2", E: "~@6 bb3@2 c4 db4!3 ~ db4 bb3@2", F: "bb3@4 bb3@2 bb3@2 d4@3 c4@3 d4@2",
  G: "~@2 bb3!2 bb3@2 bb3@2 d4@3 c4@3 d4@2", H: "f4@4 f4@2 f4@2 g4@3 eb4@3 f4@2", I: "~@2 f4!2 f4@2 f4@2 g4@4 ~@4",
  J: "[f4@4 d4@2 bb3 f4@3 ~@3 f4@2 d4]/2", K: "[g4 f4@3 ~ d4 bb3 c4@5 ~ bb3 c4 bb3]/2",
  L: "[g4 f4@3 ~ d4 c4 bb3@5 ~ bb3 c4 bb3]/2", M: "[~@4 d4@2 bb3 f4@3 ~@3 f4@2 d4]/2",
  N: "[~ f4@3 ~ d4 bb3 c4@5 ~ bb3 c4 bb3]/2", O: "[~ f4@3 ~ d4 c4 bb3@5 ~@4]/2",
})).s("gm_trumpet").gain(0.44)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note("<~@4 A B A C D E D E D E D E ~@11 F G H I J@2 K@2 J@2 L@2 M@2 N@2 M@2 O@2 ~>".pickRestart({
  A: "d4@4 d4@2 d4@2 g4@3 f4@3 g4@2", B: "~@2 d4!2 d4@2 d4@2 g4@3 f4@3 g4@2", C: "~@2 d4!2 d4@2 d4@2 g4@4 g4@4",
  D: "g4@4 ~@4 eb4@2 eb4@2 eb4!2 d4@2", E: "~@6 bb3@2 c4 db4!3 ~ db4 bb3@2", F: "bb3@4 bb3@2 bb3@2 d4@3 c4@3 d4@2",
  G: "~@2 bb3!2 bb3@2 bb3@2 d4@3 c4@3 d4@2", H: "d4@4 d4@2 d4@2 eb4@3 c4@3 d4@2", I: "~@2 d4!2 d4@2 d4@2 eb4@4 ~@4",
  J: "[f4@4 d4@2 bb3 f4@3 ~@3 f4@2 d4]/2", K: "[g4 f4@3 ~@2 bb3 c4@5 ~ bb3 c4 bb3]/2",
  L: "[g4 f4@3 ~ d4 c4 bb3@5 ~ bb3 c4 bb3]/2", M: "[~@4 d4@2 bb3 f4@3 ~@3 f4@2 d4]/2",
  N: "[~ f4@3 ~ d4 bb3 c4@5 ~ bb3 c4 bb3]/2", O: "[~ f4@3 ~ d4 c4 bb3@5 ~@4]/2",
})).s("gm_trumpet").gain(0.45)

// other · french horn · "Mellophone"
const french_horn = note("<~@4 A B A C D E D E D E D E D E D E D E D E ~@3 F G H I J@2 K@2 L@2 M@2 ~@9>".pickRestart({
  A: "bb3@4 bb3@2 bb3@2 eb4@3 c4@3 d4@2", B: "~@2 bb3!2 bb3@2 bb3@2 eb4@3 c4@3 d4@2",
  C: "~@2 bb3!2 bb3@2 bb3@2 eb4@4 d4@4", D: "g3!2 ~ g3 ~ ab3 ~ g3", E: "g3!2 ~ g3 ~ bb3 ~ bb3",
  F: "f3@4 f3@2 f3@2 bb3@3 bb3@3 f3@2", G: "~@2 f3!2 f3@2 f3@2 bb3@3 bb3@3 f3@2",
  H: "bb3@4 bb3@2 bb3@2 bb3@3 bb3@3 bb3@2", I: "~@2 bb3!2 bb3@2 bb3@2 bb3@3 bb3@3 c4@2",
  J: "[d4@4 bb3@2 f3 d4@3 ~@3 d4@2 bb3]/2", K: "[eb4 d4@3 ~ bb3 eb3 f3@5 ~ f3 g3 f3]/2",
  L: "[d4@4 ~@2 f3 d4@3 ~@3 d4@2 bb3]/2", M: "[eb4 d4@3 ~ bb3 g3 f3@5 ~@4]/2",
})).s("gm_french_horn").gain(0.45).pan(0.7)

// other · trombone
const trombone = note(`<
  ~@4 A B A C D E D E D E D E D E D E D E D E ~@3 F G H G I J I K I J I K L M L N L M L M O
>`.pickRestart({
  A: "d3@4 d3@2 d3@2 c3@3 c3@3 d3@2", B: "~@2 d3@2 d3@2 d3@2 c3@3 c3@3 c3@2", C: "~ d3!3 c3@2 c3@2",
  D: "g2!2 ~ g2 ~ eb3 ~ d3", E: "g2!2 ~ g2 ~ db3 ~ d3", F: "bb2@4 bb2@4 f2@3 f2@3 bb2@2",
  G: "~@2 bb2@2 bb2@2 bb2@2 f2@3 f2@3 f2@2", H: "bb2@4 bb2@4 eb2@3 eb2@3 eb2@2", I: "bb2!4 g2!2 ~ f2",
  J: "bb2!4 ~ [d2,d3]!3", K: "bb2!4 ~ [eb2,eb3]!3", L: "bb2!2 ~ bb2 ~ g2 ~ f2", M: "bb2!2 ~ bb2 ~ [d2,d3] ~ [d2,d3]",
  N: "bb2!2 ~ bb2 ~ [eb2,eb3] ~ [eb2,eb3]", O: "bb2 ~@3",
})).s("gm_trombone").gain(0.48).pan(0.3)

// other · french horn · "Baritone"
const french_horn_2 = note(`<
  ~@4 A B A C D E D E D E D E D E D E D E D E ~@3 F G H G I J I K I J I K L M L N L M L M O
>`.pickRestart({
  A: "g2@4 g2@2 g2@2 f2@3 f2@3 g2@2", B: "~@2 g2@2 g2@2 g2@2 f2@3 f2@3 f2@2", C: "~ g2!3 f2@2 f2@2",
  D: "g2!2 ~ g2 ~ eb3 ~ d3", E: "g2!2 ~ g2 ~ db3 ~ d3", F: "bb2@4 bb2@4 f2@3 f2@3 bb2@2",
  G: "~@2 bb2@2 bb2@2 bb2@2 f2@3 f2@3 f2@2", H: "bb2@4 bb2@4 eb3@3 eb3@3 eb3@2", I: "bb2!4 g2!2 ~ f2",
  J: "bb2!4 ~ d3!3", K: "bb2!4 ~ eb3!3", L: "bb2!2 ~ bb2 ~ g2 ~ f2", M: "bb2!2 ~ bb2 ~ d3 ~ d3",
  N: "bb2!2 ~ bb2 ~ eb3 ~ d3", O: "bb2 ~@3",
})).s("gm_french_horn").gain(0.55).pan(0.7)

// bass · tuba · "Sousaphone"
const bass = note(`<
  ~@4 A B A C D E D E D E D E D E D E D E D E ~@3 F G H G I J I K I J I K L M L N L M L M O
>`.pickRestart({
  A: "g2@4 g2@2 g2@2 f2@3 f2@3 g2@2", B: "~@2 g2@2 g2@2 g2@2 f2@3 f2@3 f2@2", C: "~ g2!3 f2@2 f2@2",
  D: "g2!2 ~ g2 ~ eb2 ~ d2", E: "g2!2 ~ g2 ~ db2 ~ d2", F: "bb2@4 bb2@4 f2@3 f2@3 f2@2",
  G: "~@2 bb2@2 bb2@2 bb2@2 f2@3 f2@3 f2@2", H: "bb2@4 bb2@4 eb2@3 eb2@3 eb2@2", I: "bb1!4 g2!2 ~ f2",
  J: "bb1!4 ~ d2!3", K: "bb1!4 ~ eb2!3", L: "bb1!2 ~ bb1 ~ g2 ~ f2", M: "bb1!2 ~ bb1 ~ d2 ~ f2",
  N: "bb1!2 ~ bb1 ~ eb2 ~ eb2", O: "bb1 ~@3",
})).s("gm_tuba").gain(0.6)

// drums · high tom
const high_tom = s("ht").struct(`<
  A B C D E F E F G H G H G H G H I J I J I J I J B C D E F E F K L K L K L K L M N M N M N M N D
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x!16", D: "x", E: "x ~ x!3 ~ x ~ x!8", F: "~@2 x!3 ~ x ~ x!8", G: "x ~ x!3 ~ x ~ x!3 ~ x!4",
  H: "x ~ x!3 ~ x ~ x ~ x!6", I: "x ~ x ~@3 x!2", J: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", K: "x ~ x!3 ~ x!7 ~ x!2",
  L: "x ~ x!3 ~ x!6 ~ x!3", M: "x ~ x!3 ~ x ~ x ~ x ~ x!4", N: "x ~ x!3 ~ x ~ x ~ x!2 ~ x!3",
})).gain(0.64).pan(0.7)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@16 A B A B A B A B C ~@23>".pickRestart({
  A: "x ~ x!2 ~@2 x ~ x ~ x ~@2 x!3", B: "x ~ x!2 ~@2 x ~@3 x ~@2 x ~ x", C: "x",
})).gain(0.4).pan(0.7)

// drums · crash
const crash = s("cr").struct("<~@3 A B@4 ~@8 C@8 ~@2 A B@4 D E D E D E D E C@8 ~>".pickRestart({
  A: "~ x!3", B: "~ x ~@2", C: "x!4", D: "~ x ~ x", E: "~@4 x ~@6 x ~@4",
})).gain(0.48).pan(0.7)

// drums · whistle
const whistle = s("ballwhistle:0").struct("<~@2 A B C D C D E F@3 E F@3 ~@8 G A B C D C D H@8 ~@9>".pickRestart({
  A: "x ~@3 x!5 ~@3 x ~@3", B: "x", C: "~@4 x ~@6 x!3 ~@2", D: "~@6 x ~@4 x!3 ~@2", E: "x ~@3 x ~@7 x!2 ~@2",
  F: "~@4 x ~@7 x!2 ~@2", G: "x!2", H: "~@2 x!2 ~@6 x!2 ~@2 x!2",
})).gain(0.83).pan(0.7)

// drums · guiro
const guiro = s("guiro:4").struct("<~@4 A B A B ~@8 C ~@3 C ~@6 A B A B C ~@7 C ~@3 C ~@3 C>".pickRestart({
  A: "x ~@3 x ~@2 x", B: "~@4 x ~@2 x", C: "x",
})).gain(15.21).pan(0.7)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<[~ x ~ x]!2 ~@6 [~ x ~ x]!16 ~@15 [~ x ~ x]!8 ~>").gain(0.7).pan(0.7)

stack(
  piccolo, flute, alto_sax, baritone_sax, trumpet, trumpet_2, french_horn, trombone, french_horn_2, bass, high_tom,
  high_tom_soft, crash, whistle, guiro, woodblocks
)