Strudelify

wir ham noch lange nicht genug

Komponisten: Böhse Onkelz

KeyG majorTempo156 bpm
0:00/0:00
// wir ham noch lange nicht genug — Komponisten: Böhse Onkelz
// 156 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5916266; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/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(`<
  A B C D ~@4 A B C D E F G H A B C I J K L@2 M K N@2 O P Q@2 M K R S@2 T U@2 R V W X@2 F G H E F G H G Y G@2 E F G H E
  F G Z@2 T U@2 R V W X@2 F G H E F G H E F G H E F G H G H G AA G AB@2 AC@2 ~@7 R T U@2 R V W X@2 F G H E F G AD
>`.pickRestart({
  A: "f4!2 g4 f4 a#4 f4 a4 f4", B: "f4!2 g4 f4 a#4 f4 a4 c4", C: "c4!2 f4 c4 g4 c4 f4 c4",
  D: "a#4 c4 a4 c4 g4 c4 a4 c4", E: "c4", F: "a3", G: "f3", H: "g3", I: "a#4 c4 a4 c4 g4 c4 c5!2",
  J: "c5 f4@2 f4@3 f4@2", K: "g4 a4@2 g4@3 f4@2", L: "[a4@2 a4@2 a4@2 a4 a#4@7 ~@2]/2", M: "a4@2 a4 a4@3 f4@2",
  N: "[~@2 c5@2 c5@2 c5 d5@2 c5@5 f4!2]/2", O: "c5@2 c5 c5@3 f4@2", P: "g4 a4@2 g4@2 f4!3",
  Q: "[a4@3 a4@3 a4 a#4@7 a#4@2]/2", R: "~ c5!3", S: "[c5@2 c5@2 c5@2 c5 d5@2 ~ c5@2 c5@2 c5@2]/2",
  T: "d5 c5@2 c5@4 a4", U: "[d5 c5@2 c5@3 a4 c5@9]/2", V: "d5 c5@2 c5@5", W: "~ f4!3",
  X: "[a#4 a#4@2 a#4@3 a4 a4@2 ~@3 c4@4]/2", Y: "f3@2 f4 c4", Z: "[g3@5 c5!3]/2", AA: "~@8 a3@5 g3@3",
  AB: "[a3@3 a3@2 g3@2 f3@6 f4!2 g4]/2", AC: "[a4@2 c5 a4@2 g4@2 f4@8 ~]/2", AD: "g4@2 g4!3 f4 a#3 a3",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophon"
const tenor_sax = note(`<
  ~@4 A B C D A B C D E F G H E F G H I J K L I J K L I J K L I J K M I J K L I J K L C N O P C N O P Q R Q S T U V W X
  Y Z AA@2 J K L I J K L C N O P C N O P Q@2 AB AC Q@2 AB AC Q AC Q AD Q@2 AB AC AE@2 AF AG AE@2 AF AG I J K L I J K L C
  N O P C N O AH
>`.pickRestart({
  A: "c4", B: "a3", C: "f3", D: "g3", E: "f3!2 c4 f3!2 c4@3", F: "d3!2 a3 d3!2 a3@3", G: "a#2!2 f3 a#2!2 f3@3",
  H: "c3!2 g3 c3!2 g3@3", I: "f3!2 c4 f3!2 c4@2 d3", J: "d3!2 a3 d3!2 a3@2 a#2", K: "a#2!2 f3 a#2!2 f3@2 c3",
  L: "c3!2 g3 c3!2 g3@2 f3", M: "c3!2 g3 c3!2 g3 c3!2", N: "d3", O: "a#2", P: "c3", Q: "d3!8", R: "d3!4 f3@2 c3@2",
  S: "d3!6 c4!2", T: "c4 f3@2 f3@3 f3@2", U: "g3 a3@2 g3@3 f3@2", V: "a3!4", W: "a#3@2 a3 a#3@2 a3@3", X: "a3!3 f3",
  Y: "g3 a3@2 g3@4 f3", Z: "c4@2 f3@2 f3@2 f3!2", AA: "[c4 c4@3 d4@2 c4 c4@3 c4 f3!2 c4@2 d3]/2", AB: "a#2!8",
  AC: "c3!8", AD: "c3@2 c3@2 c3!4", AE: "f3!2 a3 f3!2 a3 f3!2", AF: "d3!2 f3 d3!2 f3 d3!2", AG: "e3!2 g3 e3!2 g3 e3!2",
  AH: "c3@2 c3!5 a2",
})).s("gm_tenor_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophon"
const tenor_sax_2 = note(`<
  ~@4 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E F A G E F A H I J K L I J K L B M B@2 A I J K L
  I J K L F A G E F A H I J K L I J K L N@2 O P E Q R@2 S T S U D V A G W@2 X Y W@2 X Y Z F A G E F A H I J K L I J K AA
>`.pickRestart({
  A: "f3", B: "d3", C: "a#2", D: "c3", E: "c4", F: "a3", G: "g3", H: "g3@7 f3", I: "f3!2 c4 f3!2 c4@2 d3",
  J: "d3!2 a3 d3!2 a3@2 a#2", K: "a#2!2 f3 a#2!2 f3@2 c3", L: "c3!2 g3 c3!2 g3@2 f3", M: "d3@2 f3 c3", N: "a3/2",
  O: "a#3 c4@15", P: "~@2 f3@2 g3@2 a3@2 a#3@3 a3@2 a#3@3", Q: "~@2 d4@2 c4@2 a#3@2 c4@3 a#3@2 a3@3",
  R: "[g3@2 f3@4 c3@18 f3@3 g3@2 a3@3]/2", S: "g3 f3@3", T: "~ d3 f3 g3@2 a3@3", U: "g3@2 g3@2 g3!4", V: "a2",
  W: "d3!8", X: "a#2!8", Y: "c3!8", Z: "c4 c4@3", AA: "c3!2 g3 c3!2 g3!2 f3",
})).s("gm_tenor_sax").gain(0.3)

stack(alto_sax, tenor_sax, tenor_sax_2)