Strudelify

Rocky Point Holiday

Brandon Fawra

KeyG majorTempo180 bpm
0:00/0:00
// Rocky Point Holiday — Brandon Fawra
// 180 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 16, 2/4 at bar 17, 3/4 at bar 17) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/57575; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/3)

// 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 · trumpet · "Bb Trumpet"
const trumpet = note("<A B@2 ~ C@2 D@5 E@5 F G H G I@2 J K L ~ M@2 N@2 O@8 ~ P Q>".pickRestart({
  A: "~@11 d#5 f5 g5 ~ a5", B: "[a#5@3 ~@8 [d5,a#5]@10 [d5,g5]@11]/2", C: "[[d5,a#5]@11 [d5,g5]@21]/2",
  D: "[[d5,g5,a#5]@27 [d5,f5,a#5]@42 [c5,g5,c6]@3 ~@8]/5", E: "[c4@11 c5@32 f4@10 e5@16 f5@11]/5", F: "a5", G: "g5",
  H: "f5", I: "a4 a#4 ~ c5 d5 e5@8 f5@3", J: "a4 a#4 ~ c5 d5 c5 ~ a#4 a4 g4 ~ a4 g4 f4 ~ e4",
  K: "d4 e4 ~ f4 g4 a4 ~ g4 f4 g4 ~ a4 g4 a4 ~ a#4", L: "c5@3 ~@13", M: "c5", N: "c#5/2", O: "[~@3 c6, [c5,f5]]/8",
  P: "a4@3 c5@2 a#4@3 d5@3 c5@2 d5 ~ e5", Q: "f5@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<A B@2 ~ C@2 D@5 E@5 F@2 G F H@2 I J K ~ L M N@2 O@8 ~ P Q>".pickRestart({
  A: "~@11 d#5 f5 g5 ~ a5", B: "[a#5@3 ~@8 [f4,a#4]@10 [g4,a#4]@11]/2", C: "[[f4,a#4]@11 [g4,a#4]@21]/2",
  D: "[[g4,a#4]@27 [g4,a#4]@42 [f4,c5]@3 ~@8]/5", E: "[c4@11 a4@32 f4@10 c5@16 d5@11]/5", F: "d5", G: "c5",
  H: "a4 a#4 ~ c5 d5 e5@8 f5@3", I: "a4 a#4 ~ c5 d5 c5 ~ a#4 a4 g4 ~ a4 g4 f4 ~ e4",
  J: "d4 e4 ~ f4 g4 a4 ~ g4 f4 g4 ~ a4 g4 a4 ~ a#4", K: "c5@3 ~@13", L: "g4", M: "g#4", N: "a#4/2", O: "a4/8",
  P: "a4@3 c5@2 a#4@3 d5@3 c5@2 d5 ~ e5", Q: "f5@3 ~@13",
})).s("gm_trumpet").gain(0.24)

// other · trumpet · "Bb Trumpet"
const trumpet_3 = note("<A B@2 ~ C@2 D@5 E@5 F@4 G@2 H I J ~ K L M@2 N@8 ~ O P>".pickRestart({
  A: "~@11 d#4 f4 g4 ~ a4", B: "[a#4@3 ~@8 [a#3,d4]@10 [a#3,d4]@11]/2", C: "[[a#3,d4]@11 [a#3,d4]@21]/2",
  D: "[[a#3,d4]@27 [a#3,d4]@42 [c4,f4]@3 ~@8]/5", E: "[c4@11 f4@32 f4@10 a4@16 a#4@11]/5", F: "a#4",
  G: "a4 a#4 ~ c5 d5 e5@8 f5@3", H: "a4 a#4 ~ c5 d5 c5 ~ a#4 a4 g4 ~ a4 g4 f4 ~ e4",
  I: "d4 e4 ~ f4 g4 a4 ~ g4 f4 g4 ~ a4 g4 a4 ~ a#4", J: "c5@3 ~@13", K: "e4", L: "d#4", M: "f#4/2", N: "[c4,f4]/8",
  O: "a4@3 c5@2 a#4@3 d5@3 c5@2 d5 ~ e5", P: "f5@3 ~@13",
})).s("gm_trumpet").gain(0.3)

// other · french horn · "F Mellophone"
const french_horn = note("<A B@5 C@5 D@5 E F G F H I J K L@2 F M N@2 O P Q P R@4 ~ S T>".pickRestart({
  A: "~@11 d#4 f4 g4 ~ a4", B: "[a#4@37 d#4 ~ f4 g4 a4 ~ a#4@37]/5", C: "[g4@27 f4@42 f4@3 ~@8]/5",
  D: "[c4@11 a4@32 f4@10 e4@16 d4@11]/5", E: "a4", F: "g4", G: "f4", H: "a3 a#3 ~ c4 d4 e4 ~ f4 e4 d4 ~ c4 a#3 a3 ~ g3",
  I: "a3 a#3 ~ c4 d4 e4 ~ d4 c4 d4 ~ e4 d4 e4 ~ f4", J: "a4 a#4 ~ c5 d5 c5 ~ a#4 a4 g4 ~ a4 g4 f4 ~ d#4",
  K: "d4 e4 ~ f4 g4 a4 ~ g4 f4 g4 ~ a4 g4 a4 ~ a#4", L: "c5/2", M: "d#4", N: "c#4/2", O: "f4 g4 ~ a4 a#4 c5@8 a4 ~ g4",
  P: "f4 g4 ~ a4 a#4 c5 ~ a#4 a4 g4 ~ f4 g4 a4 ~ a#4", Q: "c5 a#4 ~ a4 g4 f4 ~ g4 a4 a#4 ~ c5 a#4 a4 ~ g4", R: "c5/4",
  S: "a3@5 g3@5 ~ g3@2 g3@3", T: "c4@3 ~@13",
})).s("gm_french_horn").gain(0.3)

// chords · french horn · "Baritone Horn"
const french_horn_2 = note("<~ A@2 ~ B@2 C@5 D@5 E F G F ~@2 H I J ~ K L M@2 ~@2 N@2 O@4 ~ P Q>".pickRestart({
  A: "[~@11 [a#3,f4]@10 [a#3,d4]@11]/2", B: "[[a#3,f4]@11 [a#3,d4]@21]/2", C: "[[a#3,d4]@27 [a#3,d4]@43 ~@10]/5",
  D: "[c4@11 [c4,f4]@32 f3@10 [c4,e4]@16 [d4,f4]@11]/5", E: "[d4,a4]", F: "[d4,g4]", G: "[c4,f4]",
  H: "~@5 d#4@3 f4@3 d#4@2 d4@3", I: "c4@3 d4@2 a3@5 ~ a#3@5", J: "c4@3 ~@13", K: "[c4,e4]", L: "[g#3,d#4]",
  M: "[a#3,c#4]/2", N: "[a#3,d#4]/2", O: "[c4,d#4]/4", P: "[a3,d4]@5 [g3,c4]@5 ~ [g3,c4]@2 [g3,c4]@3",
  Q: "[c4,f4]@3 ~@13", // F5
})).s("gm_french_horn").gain(0.48)

// other · french horn · "Baritone Horn"
const french_horn_3 = note("<~ A@2 ~ B@2 C@5 D@5 E@4 ~@2 F G H ~ I J K@2 ~@2 L@2 M@4 ~ N H>".pickRestart({
  A: "[~@11 f3@10 g3@11]/2", B: "[f3@11 g3@21]/2", C: "[g3@27 f3@43 ~@10]/5", D: "[c3@11 f3@32 f3@10 a3@16 a3@11]/5",
  E: "a#3", F: "~@5 d#3@3 f3@3 d#3@2 d3@3", G: "c3@3 d3@2 a3@5 ~ g3@5", H: "f3@3 ~@13", I: "g3", J: "d#3", K: "f#3/2",
  L: "a#3/2", M: "a3/4", N: "f3@5 d#3@5 ~ d#3@2 d#3@3",
})).s("gm_french_horn").gain(0.48)

// bass · tuba · "Euphonium"
const bass = note("<~ A@2 ~ B@2 C@7 D@3 E@4 F@2 G H I ~ J K L@2 ~@2 M@2 N@4 ~ O I>".pickRestart({
  A: "[~@11 d3@10 d#3@11]/2", B: "[d3@11 d#3@21]/2", C: "[d#3@27 d3@42 c3@43]/7", D: "[d3@21 e3@16 d3@11]/3", E: "f3",
  F: "f3@5 c3@5 ~ f3@2 c4@3", G: "f3@5 c3@5 ~ d#3@2 d3@3", H: "c3@3 d3@2 a2@5 ~ d3@5", I: "c3@3 ~@13", J: "c3",
  K: "g#2", L: "c#3/2", M: "d#3/2", N: "c3/4", O: "c3@5 c3@5 ~ c3@2 c3@3",
})).s("gm_tuba").gain(0.48)

// bass · tuba · "Bb Tuba"
const bass_2 = note("<~ A@2 ~ B@2 C@7 D@3 E@4 F@2 G H I ~ J K L@2 ~@2 M@2 N@4 ~ O P>".pickRestart({
  A: "[~@11 a#2@10 g2@11]/2", B: "[a#2@11 g2@21]/2", C: "[g2@27 f2@42 c2@43]/7", D: "d2/3", E: "f2",
  F: "f2@5 c2@5 ~ f2@2 c3@3", G: "f2@5 c2@5 ~ d#2@2 f2@3", H: "c2@3 d2@2 c2@5 ~ d2@5", I: "c2@3 ~@13", J: "c3",
  K: "g#2", L: "f#2/2", M: "d#2/2", N: "[~ f1, f2]/4", O: "f2@5 c2@5 ~ c2@2 c2@3", P: "f2@3 ~@13",
})).s("gm_tuba").gain(0.48)

stack(trumpet, trumpet_2, trumpet_3, french_horn, french_horn_2, french_horn_3, bass, bass_2)