Strudelify

Sound! Euphonium: Kitajui's Sunrise Festival Performance

Camille Dela Cruz

KeyF majorTempo120 bpm
0:00/0:00
// Sound! Euphonium: Kitajui's Sunrise Festival Performance — Camille Dela Cruz
// 120 bpm, 4/4, key F 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); ch 9 "Tuba" tuba (copy of ch 8 "Trombone" trombone)
// note: Transcription provider: pdmx. https://musescore.com/score/5867402; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 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 · [...]/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 · alto sax · "Alto Saxophone"
const alto_sax = note("<~@2 A B C D E@2 C F G H I J K L M@2 N@2 A B C D E@2 C F G H I J K L M@2 N@2>".pickRestart({
  A: "~@2 d4 e4", B: "f4@11 ~@5", C: "~@2 f4@2 g4@2 f4@2 e4@2 e4 d4 c4 ~ a3 ~", D: "d4@11 ~@5", E: "[d4 e4 f4@4 ~@2]/2",
  F: "a4", G: "f4@4 e4@4 d4@4 d4 ~ c4 ~", H: "d4 ~ f4@5 ~@5 g4@3 ~", I: "c4@2 d4 c4 bb3@2 g3@2 a3@2 c4@6",
  J: "d4@4 d4 ~ c4 ~ d4 ~ f4@6", K: "~@4 g4@4 a4@2 bb4 a4 g4 ~ f4 ~", L: "f4@8 d4@3 ~ f4@3 ~",
  M: "[a4@8 c5@2 a4@2 g4@2 a4@8 ~@2 d4@3 ~ f4@3 ~]/2", N: "[a4@8 bb4@2 g4 ~ a4@2 g4@8 ~@10]/2",
})).s("gm_alto_sax").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax_2 = note("<~@2 A B C D E F@2 ~ G H I J K L M@2 N@2 A B C D E F@2 ~ G H I J K L M@2 N@2>".pickRestart({
  A: "~@2 bb3 g3", B: "a3@4 ~ g3@2 a3", C: "a3 ~ e3@2 f3@2 d3@2", D: "~@2 bb3 a3", E: "bb3 g3 a3@2",
  F: "[g3@2 a3@2 ~ e3@2 f3@4 ~@5]/2", G: "f4@4 e4@4 d4@4 d4 ~ c4 ~", H: "d4 ~ f4@5 ~@5 g4@3 ~",
  I: "c4@2 d4 c4 bb3@2 g3@2 a3@2 c4@6", J: "d4@4 d4 ~ c4 ~ d4 ~ f4@6", K: "~@4 g4@4 a4@2 bb4 a4 g4 ~ f4 ~",
  L: "f4@8 d4@3 ~ f4@3 ~", M: "[a4@8 c5@2 a4@2 g4@2 a4@8 ~@2 d4@3 ~ f4@3 ~]/2", N: "[a4@8 bb4@2 g4 ~ a4@2 g4@8 ~@10]/2",
})).s("gm_alto_sax").gain(0.2)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@2 A B C D E@2 C F G H I@2 J ~ K@2 L@2 A B C D E@2 C F G H I@2 J ~ K@2 L@2>".pickRestart({
  A: "~@2 d4 e4", B: "f4@11 ~@5", C: "~@2 f4@2 g4@2 f4@2 e4@2 e4 d4 c4 ~ a3 ~", D: "d4@11 ~@5", E: "[d4 e4 f4@4 ~@2]/2",
  F: "a4", G: "~@6 g3 a3", H: "g3@2 ~@2 c4@2 d4@2 c4 a3 f3@4 g3@2", I: "[a3 g3 ~@3 a3@4 ~ d3@4 ~@2]/2", J: "~ d3",
  K: "[~ g3@3 a3@2 ~ a3@4 g3@4 d3]/2", L: "[~@4 a3 g3 a3 g3@2 ~@7]/2",
})).s("gm_tenor_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet 1"
const trumpet = note("<~@2 A B C D E@2 C F G H I J K L M@2 N@2 A B C D E@2 C F G H I J K L M@2 N@2>".pickRestart({
  A: "~@2 d5 e5", B: "f5@11 ~@5", C: "~@2 f5@2 g5@2 f5@2 e5@2 e5 d5 c5 ~ a4 ~", D: "d5@11 ~@5", E: "[d5 e5 f5@4 ~@2]/2",
  F: "a5", G: "f4@4 e4@4 d4@4 d4 ~ c4 ~", H: "d4 ~ f4@5 ~@5 g4@3 ~", I: "c4@2 d4 c4 bb3@2 g3@2 a3@2 c4@6",
  J: "d4@4 d4 ~ c4 ~ d4 ~ f4@6", K: "~@4 g4@4 a4@2 bb4 a4 g4 ~ f4 ~", L: "f4@8 d4@3 ~ f4@3 ~",
  M: "[a4@8 c5@2 a4@2 g4@2 a4@8 ~@2 d4@3 ~ f4@3 ~]/2", N: "[a4@8 bb4@2 g4 ~ a4@2 g4@8 ~@10]/2",
})).s("gm_trumpet").gain(0.2)

// other · trombone
const trombone = note("<~@2 A B@2 C D E@2 F G H I@2 J ~ K@2 L@2 A B@2 C D E@2 F G H I@2 J ~ K@2 L@2>".pickRestart({
  A: "~@2 bb2 g2", B: "[a2@4 ~ g2@2 a2@2 ~ e2@2 f2@2 d2@2]/2", C: "~@2 bb2 a2", D: "bb2 g2 a2@2",
  E: "[g2@2 a2@2 ~ e2@2 a2@4 ~@5]/2", F: "a2@3 bb2@4 a2", G: "~@6 g2 a2", H: "g2@2 ~@2 c3@2 d3@2 c3 a2 f2@4 g2@2",
  I: "[a2 g2 ~@3 a2@4 ~ d2@4 ~@2]/2", J: "~ d2", K: "[~ g2@3 a2@2 ~ a2@4 g2@4 d2]/2", L: "[~@4 a2 g2 a2 g2@2 ~@7]/2",
})).s("gm_trombone").gain(0.2)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<A@2 B C D@2 E C D ~@11 B C D@2 E C D ~@11>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!2 ~@8", C: "~ x", D: "x!2", E: "x!3 ~",
})).gain(0.43)

// drums · woodblocks · soft notes
const woodblocks_soft = s("woodblock:5").struct("<~@10 [x!2]!5 x ~@12 [x!2]!5 x ~@4>").gain(0.29)

stack(alto_sax, alto_sax_2, tenor_sax, trumpet, trombone, woodblocks, woodblocks_soft)