Strudelify

Symphony No.7 in E Major

Anton Bruckner

Tempo50 bpm
0:00/0:00
// Symphony No.7 in E Major — Anton Bruckner
// 50 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5367206; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 23 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(50/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 · french horn · "Horn in F"
const french_horn = note("<A B C D E F G H I J K L D ~@10>".pickRestart({
  A: "c#4@6 g#3@2 g3@3 c4 c#4@3 d#4", B: "g#3@12 g#3 f#3 ~ e3", C: "c#4@2 e3 c#4!2 c4 c#4 d#4", D: "d#4 ~",
  E: "~@2 f3 g3", F: "g#3@6 f3 g3 g#3@4 a#3@4", G: "c4@2 f#3 g#3", H: "a3@6 g#3 a3 a#3@4 c4@4", I: "d4 ~",
  J: "~ f#3!2 g#3", K: "a3 ~", L: "~ c4!2 d4",
})).s("gm_french_horn").gain(0.25)

// other · french horn · "Horn in F"
const french_horn_2 = note("<A B C D E F G H I J@2 K@2 ~@10>".pickRestart({
  A: "e3 g3", B: "d#3 e3", C: "e3 a3", D: "g#3 ~", E: "~@2 f3 e3", F: "c3@2 g#3 g3", G: "g#3@2 f#3 f3",
  H: "c#3@2 a#3 a3", I: "a#3 ~", J: "[~@3 e3@3 ~@2]/2", K: "[~@3 a#3@3 ~@2]/2",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn in F"
const french_horn_3 = note("<A B C D E F G H I J K L M ~@10>".pickRestart({
  A: "e3", B: "g#2 d3", C: "c#3@4 c#3 c3 c#3!2", D: "c3 ~", E: "~@2 a2 c3", F: "c3@2 d#3!2", G: "d#3@2 c#3!2",
  H: "c#3@2 f3!2", I: "f3 ~", J: "~@3 d3", K: "d3 c#3 ~@2", L: "~@3 g#3", M: "g#3 g3 ~@2",
})).s("gm_french_horn").gain(0.25)

// other · french horn · "Horn in F"
const french_horn_4 = note("<A B C D E F G H I J K L M ~@10>".pickRestart({
  A: "g#2 a2", B: "d#3 b2", C: "a2 f#2", D: "g#2 ~", E: "~@2 d3 c3", F: "f3@2 c3 d#3", G: "g#2@2 a2 c#3",
  H: "f#3@2 d3 f3", I: "a#2 ~", J: "~@3 a#2", K: "a2 ~", L: "~@3 e3", M: "d#3 ~",
})).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn in F"
const french_horn_5 = note("<~@3 A@2 ~@4 B C D E F G H I J K J K L M>".pickRestart({
  A: "[~@3 f#4@2 ~@3]/2", B: "~ c#4 d#4 e4", C: "e4@2 c#4 d#4", D: "f4 g4 g#4 a#4", E: "a#4@2 f#4!2",
  F: "f#4@4 f#4@3 f#4", G: "f#4@2 f#4!2", H: "f#4@3 b4 g4@3 g4", I: "f#4@8 f#4@6 f4 f#4", J: "g4@2 g4!2",
  K: "g4@8 g4@6 g4!2", L: "g4", M: "g4 ~@3",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F"
const french_horn_6 = note("<~@3 A@2 ~@4 B C D E F E G H I@4 J K>".pickRestart({
  A: "[~@3 c#4@2 ~@3]/2", B: "~ f#3!2 g#3", C: "a3@2 g#3!2", D: "g#3 c4!2 d4", E: "d#4@2 f#3 a#3", F: "d#4@4 d#4@3 e4",
  G: "d#4@4 c#4@3 d#4", H: "c4@8 c4@6 c4!2", I: "c4@2 ~@2 c4@2 d4 g3", J: "c4", K: "c4 ~@3",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F"
const french_horn_7 = note("<~@3 A@2 ~@4 B C D E F G H I J@4 K L>".pickRestart({
  A: "[~@3 c#3@2 ~@3]/2", B: "~@3 d3", C: "d3 c#3 c#4 c4", D: "c#4 g3 f3 g#3", E: "g#3 g3 f#3!2", F: "f#3@4 f#3@3 f#3",
  G: "f#3@2 f#3!2", H: "f#3 d#3", I: "d#3@8 d#3@6 d#3!2", J: "g3 ~ g3!2", K: "g3", L: "g3 ~@3",
})).s("gm_french_horn").gain(0.4)

stack(french_horn, french_horn_2, french_horn_3, french_horn_4, french_horn_5, french_horn_6, french_horn_7)