Strudelify

shooting stars

J. Morgan

KeyE majorTempo120 bpm
0:00/0:00
// shooting stars — J. Morgan
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Alto Saxophone" alto sax (copy of ch 2 "B♭ Clarinet" clarinet)
// note: Transcription provider: pdmx. https://musescore.com/score/4574336; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 29 bars on a 16-step grid, each part at one level. 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 · flute
const flute = note("<~@12 A@8 B@7 C D>".pickRestart({
  A: "[d#6@6 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 b5@2 g#5@2 e5@2]/8",
  B: "[d#6@6 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6@7 d#6@2 e6@2 ~@2 b5@2 g#5 d#6]/7",
  C: "d#6@3 d#6 e6 b5 g#5 e5", D: "b5 ~@3",
})).s("gm_flute").gain(0.45)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@12 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C@2 D>".pickRestart({
  A: "b3/2", B: "g#3/2", C: "g#3", D: "e3 ~@3",
})).s("gm_tenor_sax").gain(0.3)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<~@12 A@8 B@7 C D>".pickRestart({
  A: "[d#5@6 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 b4@2 g#4@2 e4@2]/8",
  B: "[d#5@6 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5@7 d#5@2 e5@2 ~@2 b4@2 g#4 d#5]/7",
  C: "d#5@3 d#5 e5 b4 g#4 e4", D: "e5 ~@3",
})).s("gm_trumpet").gain(0.45)

// other · french horn · "Horn in F"
const french_horn = note("<~@2 A B A B A B A B A ~ C@2 D@2 C@2 D@2 C@2 D@2 C@2 B@2 E>".pickRestart({
  A: "b4", B: "g#4", C: "b4/2", D: "g#4/2", E: "g#4 ~@3",
})).s("gm_french_horn").gain(0.3)

// other · trombone
const trombone = note("<~@12 A B C D E F G H A B C D E F G H I>".pickRestart({
  A: "e2@2 e2@2 e2@2 ~ e2", B: "e2 e3@2 e2!2 e3 e2 d#3", C: "c#3@2 c#3@2 c#3@2 ~ c#3", D: "c#3 c#4@2 c#3!2 c#4 c#3 d#3",
  E: "g#2@2 g#2@2 g#2@2 ~ g#2", F: "g#2 g#3@2 g#2!2 g#3 g#2 f#2", G: "b2@2 b2@2 b2@2 ~ b3",
  H: "b2 b3 f#3 c#4 g#3 d#4 b2 b3", I: "e2 ~@3",
})).s("gm_trombone").gain(0.3)

// bass · tuba · "Euphonium"
const bass = note("<~@4 A B A B A B A ~ C D C D C D C D C D C D C D C D E>".pickRestart({
  A: "e3!4", B: "c#3!4", C: "e3", D: "c#3", E: "g#3 ~@3",
})).s("gm_tuba").gain(0.3)

// bass · tuba
const bass_2 = note("<~@12 A B C D E F G H A B C D E F G H I>".pickRestart({
  A: "e1@2 e1@2 e1@2 ~ e1", B: "e1 e2@2 e1!2 e2 e1 d#2", C: "c#2@2 c#2@2 c#2@2 ~ c#2", D: "c#2 c#3@2 c#2!2 c#3 c#2 d#2",
  E: "g#1@2 g#1@2 g#1@2 ~ g#1", F: "g#1 g#2@2 g#1!2 g#2 g#1 f#1", G: "b1@2 b1@2 b1@2 ~ b2",
  H: "b1 b2 f#2 c#3 g#2 d#3 b1 b2", I: "e1 ~@3",
})).s("gm_tuba").gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<x ~ x ~@9 [x!2 ~ x!3 ~ x]!15 ~@2>").gain(0.3)

// drums · china
const china = s("cr").struct("<[x!16]!11 [x!9 ~@7] [~ x ~ x]!15 ~@2>").gain(0.2)

stack(flute, tenor_sax, trumpet, french_horn, trombone, bass, bass_2, high_tom, china)