Strudelify

Attack On Titan OSTs

Mason Bulot

KeyF majorTempo120 bpm
0:00/0:00
// Attack On Titan OSTs — Mason Bulot
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/289531; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 51 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · flute
const flute = note("<A@2 B C D E F G H I ~ J@2 K@2 J@2 K@2 L@2 M@2 L@2 M@2 N O P Q@3 ~@18>".pickRestart({
  A: "[[f4,a4] [f4,a4]@3 ~ [f4,a4]!2 [f4,bb4]@4 [g4,c5]@3 ~@2]/2", B: "[d5,a5]@3 [d5,a5] ~@4", C: "[d5,a5]",
  D: "[bb4,f5]@3 [bb4,f5] ~@4", E: "[bb4,f5]", F: "[c5,f5]@3 [c5,f5] ~@4", G: "[c5,f5]", H: "[ab4,db5]@3 [ab4,db5] ~@4",
  I: "[ab4,db5]", J: "[[a4,e5]@13 [a4,e5]@2 [g4,d5]]/2", K: "[[f4,c5]@13 [f4,c5]@2 [g4,d5]]/2",
  L: "[e5@2 c5 d5@2 b4@2 c5@2 a4@2 b4@2 g4@3]/2", M: "[e5@2 c5 d5@2 b4@2 c5@2 b4@2 a4@2 g4@3]/2",
  N: "a4@3 [a4,a5]!3 [b4,b5] [c5,c6]", O: "[b4,b5] [a4,a5] [ab4,ab5]@4 [e4,e5]!2", P: "e4@2 e4 a4 g4@2 e4 b4",
  Q: "[g4@2 e4 e4@4 d5@2 d5!2 a4@2 d5@2 c5@2 ~@7]/3",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft = note("<~@32 A@2 B C@2 D@2 C@2 E@2 F@2 D@2 G@2 H@2>".pickRestart({
  A: "[~ c5!2 g4@2 c5@2 d5@2 d5!3 bb4@2 d5@2]/2", B: "d5@3 [db5,a5]@2 [db5,e5]@3",
  C: "[d5!2 f5 e5@2 c5@2 d5@2 d5 f5 e5@2 c5@3]/2", D: "[d5!2 f5 e5@2 d5 c5 d5@3 c5 a4@2 c5@3]/2",
  E: "[d5!2 f5 e5@2 d5 c5 c5@2 [a4,f5]@3 [g4,e5]@2 [a4,e5]@2]/2", F: "[d5@2 f5 e5@2 c5!2 d5@2 d5 f5 e5@2 c5@3]/2",
  G: "[d5!2 f5 e5@2 c5!2 d5@2 d5 f5 e5@2 c5@3]/2", H: "[d5!2 f5 e5@2 d5 c5 d5@9]/2",
})).s("gm_flute").gain(0.05)

// other · clarinet · "Bb Clarinet"
const clarinet = note(`<
  A@2 B C D E F G H I ~ J@2 K@2 J@2 K@2 L@2 M@2 L@2 M@2 N O P Q@4 R S@2 T@2 U@2 V@2 W@2 T@2 X@2 Y@2
>`.pickRestart({
  A: "[[a3,f4,a4] [a3,f4,a4]@3 ~ [f4,a4]!2 [f4,bb4]@4 [g4,c5]@3 ~@2]/2", B: "[d4,a4,d5]@2 d4!6", C: "d4!7 c4",
  D: "[bb3,f4,bb4]@2 bb3!6", E: "bb3!8", F: "[f4,c5,f5]@2 f4!6", G: "f4!6 eb4!2", H: "[db4,ab4,db5]@2 db4!5 ~",
  I: "db4!3 f4!3 e4!2", J: "[a4,c5,e5]/2", K: "[a4,c5,f5]/2", L: "[[a4,e5,a5]@13 [a4,e5,a5]@2 [g4,d5,g5]]/2",
  M: "[[f4,c5,f5]@13 [f4,c5,f5]@2 [g4,d5,g5]]/2", N: "a4@3 a4!3 b4 c5", O: "b4 a4 ab4@4 e4!2",
  P: "[a3,c4,e4,a4] ~ [b3,d4,g4,b4] ~", // Am G
  Q: "[[c4,e4,g4,c5]@2 ~ [db4,e4,a4,db5]@4 [f5,a5] ~ d5!2 a4@2 d5@2 c5@2 c5!2 g4@2 c5@2 d5@2 d5!3 bb4@2 d5@2, ~@7 d5@2 ~@23]/4", // C A F
  R: "d5@3 [db5,a5,db6]@2 [db5,e5,db6]@3", S: "[d4!2 f4 e4@2 c4@2 d4@2 d4 f4 e4@2 c4@3]/2",
  T: "[d5!2 f5 e5@2 d5 c5 d5@3 c5 a4@2 c5@3]/2", U: "[d5!2 f5 e5@2 c5@2 d5@2 d5 f5 e5@2 c5@3]/2",
  V: "[d5!2 f5 e5@2 d5 c5 c5@2 [a4,f5]@3 [g4,e5]@2 [a4,e5]@2]/2", W: "[d5@2 f5 e5@2 c5!2 d5@2 d5 f5 e5@2 c5@3]/2",
  X: "[d5!2 f5 e5@2 c5!2 d5@2 d5 f5 e5@2 c5@3]/2", Y: "[d5!2 f5 e5@2 d5 c5 d5@9]/2",
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A@2 B@2 ~@2 C@2 ~@2 D E@2 F@2 G@2 F@2 H@2 I@2 J@2 K@2 L M N O@4 P Q@2 R@2 Q@2 S@2 T@2 R@2 U@2 V@2
>`.pickRestart({
  A: "[a3@7 f3@4 g3@4 ~]/2", B: "[[a3,d4,f4,a4]@2 f4 g4@2 e4@2 f4@2 d4@2 e4@2 c4@3]/2",
  C: "[[c4,f4,ab4,c5]@2 ab4 bb4@2 g4@2 ab4@2 f4@2 g4@2 eb4@3]/2", D: "b3 d4 f4 ab4 g4 b4 d5 e5",
  E: "[d4@2 f4 g4@2 e4@2 f4@2 d4@2 e4@2 c4@3]/2", F: "[e4@2 c4 d4@2 b3@2 c4@2 b3@2 a3@2 g3@3]/2",
  G: "[e4@2 c4 d4@2 b3@2 c4@2 a3@2 b3@2 g3@3]/2", H: "[a4@2 f4 g4@2 e4@2 f4@2 d4@2 e4@2 c4@3]/2",
  I: "[a4@2 f4 g4@2 e4@2 f4@2 e4@2 d4@2 c4@3]/2", J: "[[a3,e4]@13 [a3,e4]@2 [g3,d4]]/2",
  K: "[[f3,c4]@13 [f3,c4]@2 [g3,d4]]/2", L: "a4@3 a4!3 b4 c5", M: "b4 a4 ab4@4 e4!2", N: "a4@2 e4 a4 b4@2 e4 b4",
  O: "[c5@2 e4 db5@4 d5@2 d5!2 a4@2 d5@2 c5@2 c5!2 g4@2 c5@2 d5@2 d5!3 bb4@2 d5@2]/4", P: "d5@3 db5@2 [db5,e5]@3",
  Q: "[d4!2 f4 e4@2 c4@2 d4@2 d4 f4 e4@2 c4@3]/2", R: "[d4!2 f4 e4@2 d4 c4 d4@3 c4 a3@2 c4@3]/2",
  S: "[d4!2 f4 e4@2 d4 c4 c4@2 [f4,a4]@3 [e4,g4]@2 [e4,a4]@2]/2", T: "[d4@2 f4 e4@2 c4!2 d4@2 d4 f4 e4@2 c4@3]/2",
  U: "[d4!2 f4 e4@2 c4!2 d4@2 d4 f4 e4@2 c4@3]/2", V: "[d4!2 f4 e4@2 d4 c4 d4@9]/2",
})).s("gm_alto_sax").gain(0.3)

// chords · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A@2 B C D E F G H I J K@2 L@2 K@2 L@2 K@2 L@2 K@2 L@2 M N O P@4 Q R S T U V W T X V W T Y Z AA AB@2
>`.pickRestart({
  A: "[[a2,f3,a3] [a2,f3,a3]@3 ~ [f3,a3]!2 [f3,bb3]@4 [g3,c4]@3 ~@2]/2", B: "[d3,a3,d4]@2 ~ [a3,d4] ~ a3 ~ [a3,d4]",
  C: "~ a3 ~ [a3,d4] ~ a3 ~ g3", D: "[bb2,f3,bb3]@2 ~ [f3,bb3] ~ f3 ~ [f3,bb3]", E: "~ f3 ~ [f3,bb3] ~ f3 ~ f3",
  F: "[c4,f4]@2 ~ [c4,f4] ~ c4 ~ [c4,f4]", G: "~ c4 ~ [c4,f4] ~ c4 ~ bb3",
  H: "[ab3,db4]@2 ~ [ab3,db4] ~ ab3 ~ [ab3,db4]", I: "~ ab3 ~ [ab3,db4] ~ c4 ~ g3", J: "a2 d3 f3 ab3 g3 b3 d4 e4",
  K: "[[a3,e4]@13 [a3,e4]@2 [g3,d4]]/2", L: "[[f3,c4]@13 [f3,c4]@2 [g3,d4]]/2", M: "[f3,c4]!2", N: "[e3,b3]!2",
  O: "~ a3 c4 a3 ~ b3 d4 b3",
  P: "[~ c4 e4 c4 ~ e3 a3 [f3,a3]@2 [f3,a3]!2 a3@2 a3@2 [g3,e4]@2 [g3,e4]!2 [g3,e4]@2 [g3,e4]@2 [f3,f4]@2 [f3,d4,f4]!3 [d3,d4]@2 [f3,f4]@2]/4", // F C F Dm D F
  Q: "[a3,d4] [a3,e4] [a3,e4]@2", R: "[d3,a3]!2", S: "[bb2,f3]!2", T: "[g3,c4]!2", U: "[f3,bb3] [e3,a3]",
  V: "[a3,d4]!2", W: "[f3,bb3]!2", X: "[f3,c4]@2 g3 [g3,db4]", Y: "[a3,d4] [g3,c4]", Z: "[a3,d4]", AA: "[f3,bb3]",
  AB: "[[g3,c4]@5 [g3,c4]@2 [a3,d4]@9]/2", // C5 D5
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A@2 B ~ C ~ D ~ E F ~ G@2 H@2 G@2 H@2 G@2 H@2 G@2 H@2 I J ~@2 K@2 L M N O P Q N O P R N O P S T U V@2
>`.pickRestart({
  A: "[d3@7 bb2@4 c3@4 ~]/2", B: "d3@3 d3 ~@4", C: "f3@3 f3 ~@4", D: "c3@3 c3 ~@4", E: "db3@3 db3 ~@4", F: "db3",
  G: "[a2@13 a2@2 g2]/2", H: "[f2@13 f2@2 g2]/2", I: "f2!2", J: "e2!2", K: "[a2@5 a2@2 g2@6 g2@2 ~]/2", L: "f3!2",
  M: "a2 e3 e3@2", N: "d3!2", O: "bb2!2", P: "c3!2", Q: "bb2 a2", R: "f3@2 g2 db3", S: "d3 c3", T: "d3", U: "bb2",
  V: "[c3@5 c3@2 d3@9]/2",
})).s("gm_baritone_sax").gain(0.3)

// other · french horn · "Horn"
const french_horn = note(`<
  A@2 B ~@5 C@2 D E@2 F@2 G@2 F@2 H I H I J K J K L M N O@4 P Q@2 R@2 Q@2 S@2 T@2 R@2 U@2 V@2
>`.pickRestart({
  A: "[d4@7 bb3@4 c4@4 ~]/2", B: "[d4,a4]@3 [d4,a4] ~@4", C: "[[f4,ab4,c5]@2 ab4 bb4@2 g4@2 ab4@2 g4@2 f4@2 e4@3]/2",
  D: "b3 d4 f4 ab4 g4 b4 d5 e5", E: "[a3@2 c4 d4@2 b3@2 c4@2 a3@2 b3@2 g3@3]/2",
  F: "[a4@2 f4 g4@2 e4@2 f4@2 e4@2 d4@2 c4@3]/2", G: "[a4@2 f4 g4@2 e4@2 f4@2 d4@2 e4@2 c4@3]/2", H: "~@2 a4 ~@3 a4 ~",
  I: "~@2 a4 ~@3 g4@2", J: "~@2 [a4,d5] ~@3 [a4,d5] ~", K: "~@2 [a4,d5] ~@3 [g4,c5]@2", L: "c4@3 a4!3 b4 c5",
  M: "b4 a4 ab4@4 e4!2", N: "[c4,e4,a4] ~ [d4,g4,b4] ~",
  O: "[[c4,e4,c5]@2 ~ e4 e4@3 d4@2 d4!2 a3@2 d4@2 c4@2 c4!2 g3@2 c4@2 d4@2 d4!3 bb3@2 d4@2, ~@3 [a4,db5]@4 ~@25]/4", // C A
  P: "d4@3 [db4,a4,db5]@2 [db4,e4,db5]@3", Q: "[d4!2 f4 e4@2 c4@2 d4@2 d4 f4 e4@2 c4@3]/2",
  R: "[d4!2 f4 e4@2 d4 c4 d4@3 c4 a3@2 c4@3]/2", S: "[d4!2 f4 e4@2 d4 c4 c4@2 [f4,a4]@3 [e4,g4]@2 [e4,a4]@2]/2",
  T: "[d4@2 f4 e4@2 c4!2 d4@2 d4 f4 e4@2 c4@3]/2", U: "[d4!2 f4 e4@2 c4!2 d4@2 d4 f4 e4@2 c4@3]/2",
  V: "[d4!2 f4 e4@2 d4 c4 d4@9]/2",
})).s("gm_french_horn").gain(0.3)

// chords · trombone
const trombone = note(`<
  A@2 B C D E F G H I J K L M N K L M N O@2 P@2 O@2 P@2 Q R ~@2 S@2 T U V W X Y V W X Z V W X AA C E AB@2
>`.pickRestart({
  A: "[d3@7 bb2@4 c3@4 ~]/2", B: "[d3,a3]@3 [d3,a3] ~@4", C: "[d3,a3]", D: "[bb2,f3]@3 [bb2,f3] ~@4", E: "[bb2,f3]",
  F: "[c3,f3]@3 [c3,f3] ~@4", G: "[c3,f3]", H: "[db3,ab3]@3 [db3,ab3] ~@4", I: "[db3,ab3]", J: "b2", K: "e3!8",
  L: "e3!7 d3", M: "c3!8", N: "c3!6 d3!2", O: "[[a2,e3,a3]@13 [a2,e3,a3]@2 [g2,d3,g3]]/2",
  P: "[[f2,c3,f3]@13 [f2,c3,f3]@2 [g2,d3,g3]]/2", Q: "[f2,c3,f3]!2", R: "[e2,b2,e3]!2",
  S: "[[a2,d3]@5 [a2,d3]@2 [g2,c3]@6 [g2,c3]@2 ~]/2", T: "[f3,bb3]!2", U: "[a2,d3] [e3,a3] [e3,a3]@2", V: "[d3,a3]!2",
  W: "[bb2,f3]!2", X: "[c3,g3]!2", Y: "[bb2,f3] [a2,e3]", Z: "[f3,c4]@2 g2 [db3,g3]", AA: "[d3,a3] [c3,g3]",
  AB: "[[c3,g3]@5 [c3,g3]@2 [d3,a3]@9]/2", // C5 D5
})).s("gm_trombone").gain(0.3)

// bass · tuba · "C Tuba"
const bass = note(`<
  A@2 B ~ C ~ D ~ E ~ F G H I J G H I J K@2 L@2 K@2 L@2 M N ~@2 O@2 P Q R S T U V P T W V P T X Y Z AA@2
>`.pickRestart({
  A: "[[d2,d3]@7 [bb1,bb2]@4 [c2,c3]@4 ~]/2", B: "[d2,a2]@3 [d2,a2] ~@4", C: "[bb1,f2]@3 [bb1,f2] ~@4",
  D: "[c2,f2]@3 [c2,f2] ~@4", E: "[db2,ab2]@3 [db2,ab2] ~@4", F: "b1", G: "a2 ~ a2 ~ a2 ~ a2 ~",
  H: "a2 ~ a2 ~ a2 ~ g2 ~", I: "f2 ~ f2 ~ f2 ~ f2 ~", J: "f2 ~ f2 ~ f2 ~ g2 ~", K: "[a2@13 a2@2 g2]/2",
  L: "[f2@13 f2@2 g2]/2", M: "f2!2", N: "e2!2", O: "[d2@5 d2@2 c2@6 c2@2 ~]/2", P: "bb2!2", Q: "d2 a2 a2@2", R: "d2!2",
  S: "bb1!2", T: "c3!2", U: "bb2 a2", V: "d3!2", W: "f2@2 g2 db3", X: "d3 c3", Y: "d3", Z: "bb2",
  AA: "[c3@5 c3@2 d3@9]/2",
})).s("gm_tuba").gain(0.3)

// bass · electric bass pick · "Bass Guitar"
const bass_2 = note(`<
  A@2 B ~ C ~ D ~ E ~ F G H I J G H I J G H I J G H I J K L M N O@2 P Q R S T U R S T V R S T W X Y Z@2
>`.pickRestart({
  A: "[[d2,d3]@7 [bb1,bb2]@4 [c2,c3]@4 ~]/2", B: "[d2,a2]@3 [d2,a2] ~@4", C: "[bb1,f2]@3 [bb1,f2] ~@4",
  D: "[c2,f2]@3 [c2,f2] ~@4", E: "[db2,ab2]@3 [db2,ab2] ~@4", F: "b1", G: "a2 e3 a2 e3 a2 e3 a2 e3",
  H: "a2 e3 a2 e3 a2 e3 g2 d3", I: "f2 c3 f2 c3 f2 c3 f2 c3", J: "f2 c3 f2 c3 f2 c3 g2 d3",
  K: "f1 f2 f3 a3 f3 c3 f2 f1", L: "e1 e2 b2 ab3 e3 b2 e2 e1", M: "~ a2 e3 a3 ~ g2 d3 g3",
  N: "~ c3 g3 c4 db3 a3 db4 d3", O: "[[d2,a2]@5 [d2,a2]@2 [c2,g2]@6 [c2,g2]@2 ~]/2", P: "[bb2,f3]!2", Q: "d2 a2 a2@2",
  R: "[d2,a2]!2", S: "[bb1,f2]!2", T: "[c2,g2]!2", U: "[bb1,f2] [a1,e2]", V: "[f2,c3]@2 g1 [db2,g2]",
  W: "[d2,a2] [c2,g2]", X: "[d2,a2]", Y: "[bb1,f2]", Z: "[[c2,g2]@5 [c2,g2]@2 [d2,a2]@9]/2",
})).s("gm_electric_bass_pick").gain(0.3)

stack(flute, flute_soft, clarinet, alto_sax, tenor_sax, baritone_sax, french_horn, trombone, bass, bass_2)