Strudelify

Engel

Gero

KeyB♭ majorTempo100 bpm
0:00/0:00
// Engel — Gero
// 100 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5067349; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · "Alt Saxophon"
const alto_sax = note(`<
  ~@20 A B C D E F G ~ H I J K H I J L ~@9 A B C D E F G ~ H I J K H I J L M N M O ~@4 A B C D E F G ~ H I J K H I J K P
  Q R S T@2 U H ~@4
>`.pickRestart({
  A: "~ d4!3 d4@2 d4@2", B: "e4@2 e4 e4@5", C: "~@2 d4!2 d4@2 d4@2", D: "f4 d4@2 d4@5", E: "~ a4!6 g4", F: "g4",
  G: "bb4@3 ~", H: "d5@3 a4", I: "c5@3 a4", J: "b4@3 g4", K: "a4", L: "d4",
  M: "d5 e5 f5 ~@2 d5 ~@3 f5 e5 d5 db5 e5 ~@2", N: "g5 e5 f5 ~@2 e5 ~@3 a5 g5 f5 e5!2 db5 ~",
  O: "g5 e5 f5 ~@2 e5 ~@3 a5 g5 f5 e5 ~@3", P: "d5", Q: "e5", R: "g5@3 f5@3 e5@2", S: "d5@3 c5@3 bb4@2",
  T: "a4@2 g4 a4@3 ~@2", U: "d5@3 e5",
})).s("gm_alto_sax").gain(0.22)

// other · alto sax · "Alt Saxophon" · soft notes
const alto_sax_soft = note("<A B C D A B C E ~@85 A B C E>".pickRestart({
  A: "d5@3 a4", B: "c5@3 a4", C: "b4@3 g4", D: "a4", E: "d4",
})).s("gm_alto_sax").gain(0.03)

// other · trumpet · "B Trompete"
const trumpet = note(`<
  A B C D A B C E ~@12 F G H I J K L ~ A B C D A B C E ~@9 F G H I J K L ~ A B C D A B C E M N M O ~@4 F G H I J K L ~ A
  B C D A B C D P Q R S T@2 U A@2 B C E
>`.pickRestart({
  A: "d5@3 a4", B: "c5@3 a4", C: "b4@3 g4", D: "a4", E: "d4", F: "~ d5!3 d5@2 d5@2", G: "e5@2 e5 e5@5",
  H: "~@2 d5!2 d5@2 d5@2", I: "f5 d5@2 d5@5", J: "~ a5!6 g5", K: "g5", L: "d5@3 ~",
  M: "d5 e5 f5 ~@2 d5 ~@3 f5 e5 d5 db5 e5 ~@2", N: "g5 e5 f5 ~@2 e5 ~@3 a5 g5 f5 e5!2 db5 ~",
  O: "g5 e5 f5 ~@2 e5 ~@3 a5 g5 f5 e5 ~@3", P: "d5", Q: "e5", R: "g5@3 f5@3 e5@2", S: "d5@3 c5@3 bb4@2",
  T: "a4@2 g4 a4@3 ~@2", U: "d5@3 e5",
})).s("gm_trumpet").gain(0.16)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@8 A@3 B C D C D C D C D ~@8 A@3 B A@3 B ~ C ~ C D C ~ C D ~@8 A@3 B A@3 B A@3 B E F E G E F E@3 F H ~ A@3 B A@3 B
  A@3 B A@3 B ~@4
>`.pickRestart({
  A: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@2 eb4 d4", B: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@4", C: "c4 ~@3 eb4 ~@3 c4 ~@7",
  D: "~@13 f4!3", E: "d4", F: "e4", G: "a3", H: "f4@3 ~",
})).s("gm_french_horn").gain(0.1)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<~@12 A ~ A ~ A ~ A ~ B C B@3 C D ~@10 A ~ A ~ A ~ A ~ B C B@3 C D ~@45>".pickRestart({
  A: "~ d4@3 ~ d4@3 ~ d4@2 c4 d4@2 eb4 d4", B: "d4", C: "e4", D: "f4@3 ~",
})).s("gm_french_horn").gain(0.06)

// other · french horn · "Bariton Horn"
const french_horn_2 = note(`<
  ~@12 A@2 B@2 C@2 D@2 E F E G E F H I J@3 K J@3 K ~@2 K ~ K ~ K ~ K E F E G E F H I J@3 K J@3 K J@3 K E F E G E F E@3 F
  L M@2 J@2 K J@3 K J@3 K J@3 K ~@4
>`.pickRestart({
  A: "[d3@2 d3@2 d3@2 d3@2 d3 d3@3 d3@2 d3@10 ~@6 eb3@2]/2", B: "[d3@2 d3@2 d3@2 d3@2 f3 d3@3 d3@2 d3@10 ~@6 f3@2]/2",
  C: "[d3@2 d3@2 d3 d3@3 d3@2 d3@2 d3@12 ~@6 f3@2]/2", D: "[d3@2 d3@2 d3@2 d3@2 d3 d3@3 d3@12 ~@8]/2", E: "d4", F: "e4",
  G: "a3", H: "~@2 d4@2 d4!3 f4", I: "f4 d4@2 d4@5", J: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@2 eb4 d4",
  K: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@4", L: "~@2 g3@2 g3!3 bb3", M: "[bb3 a3@2 a3@9 ~@4]/2",
})).s("gm_french_horn").gain(0.21)

// other · french horn · "Bariton Horn"
const french_horn_3 = note(`<
  ~@8 A@3 B ~@8 C D E F C D G H I@3 J I@3 J ~@2 J ~ J ~ J ~ J C D E F C D G H I@3 J I@3 J I@3 J K F L K@2 F L K F D G H
  I@3 J I@3 J I@3 J I@3 J K M L N
>`.pickRestart({
  A: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@2 eb4 d4", B: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@4", C: "d4", D: "c4", E: "b3",
  F: "a3", G: "~@2 d3@2 d3!3 f3", H: "f3 d3@2 d3@5", I: "c3 d3@3 eb3 d3@3 c3 d3@2 c3 d3@2 eb3 d3",
  J: "c3 d3@3 eb3 d3@3 c3 d3@2 c3 d3@4", K: "f3", L: "g3", M: "e3", N: "d3",
})).s("gm_french_horn").gain(0.17)

// other · trombone · "Posaune"
const trombone = note(`<
  ~@8 A@3 B ~ B ~ B ~ B ~ B ~@6 C D A@3 B ~@4 E F@2 G@2 H@2 I@2 ~@6 C D A@3 B ~@4 A@3 B ~@10 J K@2 ~ L M ~@2 L M ~@2 L M
  ~@2 L M ~@4
>`.pickRestart({
  A: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@2 eb4 d4", B: "c4 d4@3 eb4 d4@3 c4 d4@2 c4 d4@4", C: "~@2 d4@2 d4!3 f4",
  D: "f4 d4@2 d4@5", E: "~@3 f3", F: "[d3@2 d3@2 d3@2 d3@2 d3 d3@3 d3@12 ~@6 d3@2]/2",
  G: "[d3@3 d3 d3@2 d3@2 d3@2 d3@2 d3@12 ~@6 f3@2]/2", H: "[d3@2 d3@2 d3@2 d3@2 d3@2 d3@2 d3 d3@11 ~@6 f3@2]/2",
  I: "[d3@2 d3@2 d3@2 d3@2 f3 d3@3 d3 d3@11 ~@8]/2", J: "~@2 g3@2 g3!3 bb3", K: "[bb3 a3@2 a3@13]/2",
  L: "~@2 a3@2 a3!4", M: "a3 d3@2 d3@5",
})).s("gm_trombone").gain(0.08)

// other · trombone · "Posaune" · soft notes
const trombone_soft = note("<~@20 A B A C A B ~@19 A B A C A B ~@14 C D E C@2 D E C A B ~@18 C D E C>".pickRestart({
  A: "d4", B: "e4", C: "a3", D: "c4", E: "b3",
})).s("gm_trombone").gain(0.04)

// other · trombone · "Posaune"
const trombone_2 = note(`<
  ~@4 A@3 B A@3 B ~ B ~ B ~ B ~ B ~@6 C D A@3 B A@3 B ~@15 C D A@3 B A@3 B A@3 B ~@10 C D A@3 B A@3 B A@3 B A@3 B ~@4
>`.pickRestart({
  A: "c3 d3@3 eb3 d3@3 c3 d3@2 c3 d3@2 eb3 d3", B: "c3 d3@3 eb3 d3@3 c3 d3@2 c3 d3@4", C: "~@2 d3@2 d3!3 f3",
  D: "f3 d3@2 d3@5",
})).s("gm_trombone").gain(0.1)

// other · trombone · "Posaune" · soft notes
const trombone_soft_2 = note("<~@20 A B A C A D ~@19 A B A C A D ~@14 C B C@3 B C@2 A E ~@18 E F G C>".pickRestart({
  A: "f3", B: "e3", C: "d3", D: "g3", E: "a3", F: "c4", G: "d4",
})).s("gm_trombone").gain(0.05)

// bass · tuba · "B Tuba"
const bass = note(`<
  ~@4 A@3 B A@3 B A B A B A B A B A@3 B A@3 B A@3 B A@3 B C@2 B A B A B A B A@3 B A@3 B A@3 B A@3 B ~@3 D E F G H E F G
  H I J K L A B A B A B A B A B A B A B A B M H N L
>`.pickRestart({
  A: "c2 d2@3 eb2 d2@3 c2 d2@2 c2 d2@2 eb2 d2", B: "c2 d2@3 eb2 d2@3 c2 d2@2 c2 d2 f2!3",
  C: "c2 d2@3 eb2 d2@3 c2 d2@2 c2 d2@4", D: "~@13 d3!3", E: "d3@3 a2", F: "c3@3 a2", G: "b2@3 d3", H: "a2",
  I: "d3@3 d3", J: "e3@3 e3", K: "g3@3 g2", L: "d2", M: "f2", N: "g2",
})).s("gm_tuba").gain(0.27)

stack(
  alto_sax, alto_sax_soft, trumpet, french_horn, french_horn_soft, french_horn_2, french_horn_3, trombone,
  trombone_soft, trombone_2, trombone_soft_2, bass
)

More by Gero