Strudelify
Bohmischer Wind cover art

Bohmischer Wind

Mosch

KeyD majorTempo152 bpm
0:00/0:00
// Bohmischer Wind — Mosch
// 152 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "TubaDopp" synth brass 2 (copy of ch 3 "Tuba" tuba)
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(152/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, A@4 for four bars: edit a riff to change every repeat.

// other · french horn · "Flgelh."
const french_horn = note(`<
  A B C@2 D E F@2 G H I@2 J K L@2 A B M@2 D E N@2 G H O P Q K R ~ S T@3 U N@2 ~ V W X@2 Y N@2 ~ S T@3 U N@2 ~ Z AA AB@2
  AC AD@2 ~ AE AA R AF AG AH AI@2 AJ AK AL@2 AM AN@2 ~ AE AA R AF AG AH AI@2 AJ AK O ~ AO AP@3 S T@3 U N@2 ~ V W X@2 Y
  N@2 ~ S T@3 U N@2 ~ Z AA AB@2 AC AD@2 ~@13
>`.pickRestart({
  A: "f#4@5 f4@5 ~ f#4@5", B: "g4@11 f#4@5", C: "[e4@27 ~@5]/2", D: "e4@5 d#4@5 ~ e4@5", E: "f#4@11 e4@5",
  F: "[d4@27 ~@5]/2", G: "b4@5 a#4@5 ~ b4@5", H: "c#5@11 b4@5", I: "[a4@19 ~@2 g4@5 ~ f#4@5]/2",
  J: "e4 ~@4 d#4 ~@5 e4 ~@4", K: "a4@11 g4@5", L: "[f#4@29 ~@3]/2", M: "[e4@31 ~]/2", N: "d4/2", O: "a4",
  P: "g4@11 b4@5", Q: "a4@5 g#4@5 ~ a4@4 ~", R: "f#4", S: "d4@5 c#4@5 ~ c4@5", T: "b3@9 ~@2 b3@5",
  U: "c4@5 b3@5 ~ c4@5", V: "d4@5 c4@5 ~ b3@5", W: "c4@11 c4@4 ~", X: "[c4@27 d4@5]/2", Y: "e4@5 d4@5 ~ c#4@5",
  Z: "d4@5 e4@5 ~ d4@4 ~", AA: "d4", AB: "[c4@20 ~ c4@5 ~ d4@5]/2", AC: "e4@5 d4@5 ~ c4@5", AD: "b3/2",
  AE: "g4@5 f#4@5 ~ e4@5", AF: "a4@10 ~ c5@4 ~", AG: "c5@5 b4@5 ~ a#4@5", AH: "b4@10 ~ b4@5", AI: "[b4@9 ~@7]/2",
  AJ: "b4@5 a4@6 g#4@5", AK: "a4@10 ~ a4@4 ~", AL: "[a4@19 ~@2 f#4@6 g4@5]/2", AM: "a4@5 d5@6 c5@5", AN: "[b4@15 ~]/2",
  AO: "g4", AP: "[f#4@17 ~@7]/3",
})).s("gm_french_horn").gain(0.5).pan(1)

// bass · tuba
const bass = note(`<
  A B C D E F G@2 H I C I C F J@2 A B C D E F K L M I C N I F O A ~ N A N P Q R S P M A I A T U V P N A N P W R S P M A
  I A X Y Z AA AB AC AD AE N A N AF I A M A AG AH AI AA AB AC AD AE N A N AF I A@2 F A AJ AK AL N A N P Q R S P M A I A
  T U V P N A N P W R S P M A I A X Y Z P N A N P N A N A AM@3
>`.pickRestart({
  A: "[d2,d3] ~@15", B: "[d2,d3]@11 [d#2,d#3]@5", C: "[e2,e3] ~@15", D: "[a1,a2] ~@15", E: "[c#2,c#3] ~@15",
  F: "[a1,a2]@5 [b1,b2]@5 ~ [c#2,c#3]@5", G: "[[d2,d3]@5 [e2,e3]@5 ~@6 [b2,b3]@11 [a2,a3]@5, ~@11 [f#2,f#3]@7 ~@14]/2",
  H: "[f#2,f#3]@3 ~@13", I: "[a2,a3] ~@15",
  J: "[[d2,d3]@5 [c#2,c#3]@5 ~@6 [b1,b2]@11 [a1,a2]@5, ~@11 [d2,d3]@7 ~@14]/2", K: "[d2,d3]@5 [e2,e3]@5 ~ [f#2,f#3]@5",
  L: "[b2,b3]@11 [a2,a3]@5", M: "[f#2,f#3] ~@15", N: "[g2,g3] ~@15", O: "[d2,d3] ~@4 [a2,a3] ~@5 [f#2,f#3] ~@4",
  P: "[d2,d3]", Q: "[g2,g3] ~@10 [g2,g3] ~ [a2,a3] ~@2", R: "[b2,b3]@10 ~ [g2,g3]@5",
  S: "[c3,c4]@5 [b2,b3]@6 [g2,g3]@5", T: "[g2,g3] ~@10 [b2,b3]@2 [a2,a3]@3", U: "[g2,g3]@11 [e2,e3]@5",
  V: "[d2,d3]@11 [e2,e3]@5", W: "[g2,g3] ~@10 [g2,g3]@2 [a2,a3]@3", X: "[g2,g3] ~@10 [e2,e3]@5",
  Y: "[d2,d3]@11 [b1,b2]@5", Z: "[g1,g2] ~@15", AA: "[g2,g3]@5 [a2,a3]@6 [b2,b3]@4 ~", AB: "[d3,d4]@7 ~",
  AC: "[c3,c4]@15 ~", AD: "[a2,a3]@7 ~", AE: "[f#2,f#3]@7 ~", AF: "[g2,g3]@11 [g#2,g#3]@5", AG: "[g2,g3]@11 ~@5",
  AH: "[d2,d3]@11 ~@5", AI: "[b1,b2]@11 ~@5", AJ: "[c2,c3]@15 ~", AK: "[a1,a2]@15 ~",
  AL: "[d2,d3]@5 [e2,e3]@6 [d2,d3]@4 ~", AM: "[[g1,g2]@35 ~@13]/3",
})).s("gm_tuba").gain(0.5)

// other · synth brass 2 · "T.h”rner"
const synth_brass_2 = note(`<
  A B C@2 D E F@2 ~@2 G B H I J@2 K B C@2 D E F@2 ~@2 G L M I N ~ O P@3 Q R@3 S T U@2 V W@2 ~ O P@3 Q R@3 X Y Z@2 AA
  AB@3 AC Y N AD ~ AE AF AG ~ AH AI AJ ~ AE AK ~ AC Y N AD ~ AE AF AL ~ AH AI N AM AN@3 O P@3 Q R@3 S T U@2 V W@2 ~ O
  P@3 Q R@3 X Y Z@2 AA AO@3 AP AQ@3 AP AB@3 AR AS@3
>`.pickRestart({
  A: "f#4@5 f4@6 f#4@5", B: "g4@11 f#4@5", C: "[e4@29 ~@3]/2", D: "e4@5 d#4@5 ~ e4@5", E: "f#4@11 e4@5",
  F: "[d4@7 ~]/2", G: "~@5 e4@3 d#4@3 e4@2 f#4@3", H: "e4 ~@4 d#4 ~@5 e4 ~@4", I: "a4@11 g4@5", J: "[f#4@29 ~@3]/2",
  K: "f#4@5 f4@5 ~ f#4@5", L: "g4@11 g#4@5", M: "a4@5 g#4@5 ~ a4@5", N: "f#4", O: "d4@5 c#4@6 c4@5", P: "b3@10 ~ b3@5",
  Q: "c4@5 b3@6 c4@5", R: "[d4@3 ~]/3", S: "d4@5 c4@6 b3@5", T: "c4@10 ~ c4@4 ~", U: "[c4@26 ~ d4@5]/2",
  V: "e4@5 d4@6 c#4@5", W: "d4/2", X: "d4@5 e4@6 d4@5", Y: "d4", Z: "[c4@19 ~@2 c4@6 d4@5]/2", AA: "e4@5 d4@6 c4@5",
  AB: "[b3@17 ~@7]/3", AC: "g4@5 f#4@6 e4@5", AD: "a4@3 ~", AE: "~@5 d4@6 b3@5", AF: "g4@11 d4@5", AG: "b3@7 ~",
  AH: "~@5 f#4@5 ~ d4@5", AI: "f#4@11 d4@5", AJ: "f#4@11 ~@5", AK: "g4", AL: "b3", AM: "e4", AN: "[f#4@17 ~@7]/3",
  AO: "[b3@34 ~@9 d4@5]/3", AP: "c4@10 ~ d4@5", AQ: "[b3@36 ~@7 d4@5]/3", AR: "b3@3 ~@13", AS: "[g3@35 ~@13]/3",
})).s("gm_synth_brass_2").gain(0.5).pan(0.9)

// other · synth brass 2 · "Baritonr"
const synth_brass_2_2 = note(`<
  A B C@2 D E F@2 ~@2 G H@2 I J@2 A B C@2 D E F@2 ~@2 G K L M N ~ O P@3 Q R@3 S T U@2 V W@2 ~ O P@3 Q R@3 X Y Z@2 AA
  AB@3 AC AD AE AF ~ AG AH AI ~ AJ AK AL ~ AG AM ~ AN AD AE AF ~ AG AH AI ~ AJ AK AE AO AP@3 AQ P@3 Q R@3 S T U@2 V W@2
  ~ O P@3 Q R@3 X Y Z@2 AA AR@3 AS AT@3 AS AU@3 AV AW@3
>`.pickRestart({
  A: "a3@5 g#3@5 ~ a3@5", B: "b3@11 a3@5", C: "[g3@29 ~@3]/2", D: "g3@5 f#3@5 ~ g3@5", E: "a3@11 g3@5",
  F: "[f#3@29 ~@3]/2", G: "~@5 e3@3 d#3@3 e3@2 f#3@3", H: "[g3@11 ~@5 g3 ~@4 f#3 ~@5 g3 ~@4, ~@11 a3@7 ~@14]/2",
  I: "c#4@11 b3@5", J: "[a3@29 ~@3]/2", K: "g3@11 d4@5", L: "c#4@5 c4@5 ~ c#4@5", M: "f#4@11 e4@5", N: "d4",
  O: "d4@5 e4@6 f#4@5", P: "g4@9 ~@2 g4@5", Q: "a4@5 g#4@6 a4@5", R: "[b4@3 ~]/3", S: "b4@5 a4@6 g#4@5",
  T: "a4@10 ~ a4@5", U: "[a4@26 ~ b4@5]/2", V: "c5@5 b4@6 a#4@5", W: "[b4@31 ~]/2", X: "b4@5 c5@6 b4@4 ~", Y: "b4",
  Z: "[a4@20 ~ a4@6 b4@5]/2", AA: "c5@5 b4@6 a4@5", AB: "[g4@17 ~@7]/3", AC: "b4@5 a4@6 g4@5", AD: "f#3", AE: "a3",
  AF: "c4@3 ~", AG: "~@5 b3@5 ~ g3@5", AH: "b3@11 b3@5", AI: "g3@7 ~", AJ: "~@5 a3@6 f#3@5", AK: "d4@11 f#3@5",
  AL: "a3@11 ~@5", AM: "b3", AN: "b3@5 a3@6 g3@5", AO: "c#4", AP: "[d4@35 ~@13]/3", AQ: "d3@5 e3@6 f#3@5",
  AR: "[g4@34 ~@9 b3@5]/3", AS: "a3@11 f#3@5", AT: "[g3@36 ~@7 b3@5]/3", AU: "[g3@3 ~]/3", AV: "d3@3 ~@13",
  AW: "[b2@17 ~@7]/3",
})).s("gm_synth_brass_2").gain(0.5).pan(0.1)

// other · trumpet · "Trompete"
const trumpet = note("<~@81 A@2 B ~ C D E@2 F@2 B ~ G@3 ~ H@4 I@3 ~ J K@2 ~ L@3 ~@12 M@4 ~@12>".pickRestart({
  A: "d4@9 ~@2 d4!2 ~ d4 ~", B: "d4", C: "g4@7 ~@4 g4!2 ~ g4 ~", D: "g4@10 ~ g4 g4@2 b4 ~", E: "[d5@9 ~@7]/2",
  F: "[d4@24 ~@3 d4!2 ~ d4 ~]/2", G: "[a4@35 ~@13]/3", H: "d5@7 ~", I: "[g5@43 ~@5]/3", J: "d4@8 ~@3 d4 ~ d4 ~@2",
  K: "[d4@7 ~]/2", L: "[g5@35 ~@13]/3", M: "[d4@25 ~@7]/4",
})).s("gm_trumpet").gain(0.57).pan(0.7)

// other · clarinet · "Klarinet"
const clarinet = note(`<
  ~@2 A B ~@2 C D ~@6 E F ~@2 A B ~@2 C D ~@6 G H ~@5 I J K L ~@4 M N@2 L ~@4 I J K L O P Q ~ R S T ~ U V W ~@2 X Y ~@2
  Z AA ~@2 AB AC ~ AD V AE ~@2 AF Y ~@2 Z AA ~ AG AH AI AJ ~@4 I J K L ~@4 M N@2 L ~@4 I J K L O P Q ~ R S T ~ AK AL AM
  ~ AK AL AN ~@4
>`.pickRestart({
  A: "~@5 [a3,a4]@3 [a#3,a#4]@3 [b3,b4]@2 [c4,c5]@3", B: "[c#4,c#5]@3 [c4,c5]@2 [b3,b4]@3 [a#3,a#4]@3 [a3,a4]@2 ~@3",
  C: "~@5 [a3,a4]@3 [a#3,a#4]@3 [b3,b4]@2 [c#4,c#5]@3", // A A# B C#
  D: "[d4,d5]@3 [c#4,c#5]@2 [b3,b4]@3 [a#3,a#4]@3 a4@2 ~@3, ~@11 a3 ~@4", // D C# B A#
  E: "~@5 [d4,d5]@3 [f#4,f#5] ~@2 [f#4,f#5]@2 [a4,a5] ~@2", // D F# A
  F: "[a4,a5]@3 [b4,b5] ~ [b4,b5]@3 [f#4,f#5] ~@2 [f#4,f#5]@2 [a4,a5]@2 ~", // A B F# A
  G: "~@5 [a4,d5,f#5]@3 [f#4,a4,d5] ~@2 [d4,f#4,a4] ~ [f#4,a4,d5] ~@2", H: "[a4,d5,f#5] ~@15", I: "~@11 b3@2 c4@3",
  J: "d4@10 ~ b3@5", K: "e4@5 d4@5 ~ b3@5", L: "d4@13 ~@3", M: "~@11 d4@2 c4@3", N: "b3@10 ~ c4@5",
  O: "~@5 [d4,d5] ~@2 [e4,e5] ~@2 [d4,d5] ~@4", P: "~@5 [d4,d5] ~@2 [e4,e5] ~@2 [d4,d5] ~ [e4,e5] ~@2",
  Q: "[d4,d5] ~@15", R: "[g4,g5]@3 [f#4,f#5]@2 [f4,f5]@3 [e4,e5]@3 [d#4,d#5]@2 [d4,d5]@3",
  S: "[c#4,c#5]@3 [d4,d5]@2 [d#4,d#5]@3 [e4,e5]@3 [f4,f5]@2 [f#4,f#5]@3", T: "[g4,g5]@3 ~@13",
  U: "~@5 [a4,d5,f#5]@2 ~@4 [c5,f#5,a5] ~@4", // D F#dim
  V: "~@5 [a4,c5,f#5]@3 [c5,f#5,a5] ~@2 [c5,f#5,a5]@2 [a5,c6] ~@2, ~@13 f#5@2 ~", // F#dim Am
  W: "[f#5,a5,c6]@3 [c5,f#5] ~ [a5,c6] ~@10, ~@3 a5@2 f#5@2 ~@9", X: "~@5 [d5,g5,d6] ~@5 [b4,d5,b5] ~@4",
  Y: "[d5,g5,b5] ~@15", Z: "~@5 [c5,f#5,a5] ~@5 [a4,c5,f#5] ~@4", AA: "[c5,f#5,a5] ~@15",
  AB: "~@5 [g4,b4,d5]@5 ~ [d4,g4,b4]@5", AC: "[b4,d5,g5]@7 ~", AD: "~@5 [a4,d5,f#5]@5 ~ [c5,f#5,a5] ~@4",
  AE: "[a5,c6] ~@2 [c5,f#5] ~ [a5,c6] ~@10, f#5@2 ~ a5@2 f#5@2 ~@9", AF: "~@5 [d5,g5,b5] ~@5 [b4,d5,g5] ~@4",
  AG: "d5@3 c#5 ~ d5 ~@2 e5 ~@2 f#5 ~ g5 ~@2", AH: "a5@3 g5 ~ f#5 ~@2 g5 ~@2 a5 ~ b5 ~@2",
  AI: "c6@2 ~ [b5,d6] ~ [a5,d6] ~@2 [g5,d6] ~@2 [f#5,d6] ~ [e5,d6] ~@2", // Bm D5 G5 D E7
  AJ: "[d5,d6] [d5,e5,d6,e6] [e5,e6] [d5,e5,d6,e6] [d5,d6] [d5,e5,d6,e6] [e5,e6] [d5,e5,d6,e6] [d5,d6] [d5,e5,d6,e6] [e5,e6] [d5,e5,d6,e6] [d5,d6] [d5,e5,d6,e6] [e5,e6] [d5,e5,d6,e6]", // D Dsus2 E Dsus2 D Dsus2 E Dsus2 …
  AK: "g4@3 f#4@2 f4@3 e4@3 d#4@2 d4@3", AL: "c#4@3 d4@2 d#4@3 e4@3 f4@2 f#4@3", AM: "g4@3 ~@13", AN: "[b3,d4,g4] ~@7",
})).s("gm_clarinet").gain(0.16).pan(0.6)

// chords · trombone · "Posaunen"
const trombone = note(`<
  A B C D E F G H I J K L E K G M N B C D E F G H I J K O P F G Q R S@3 T S@3 U V@2 W X S Y@2 Z S@3 T S@3 AA AB V W AC S
  AD AE ~ V@3 X S@3 AF V@4 S@3 AG V@3 X S@3 AH V@2 AI AJ G V G AK S@3 T S@3 U V@2 W X S Y@2 Z S@3 T S@3 AA AB V W AC S
  AD AE AL@8 AM AN@3
>`.pickRestart({
  A: "~@5 [d#3,g#3,d4] ~@5 [e3,a3,d4] ~@4", B: "~@5 [g3,b3,d4] ~@5 [f#3,a3,d#4] ~@4",
  C: "~@5 [g3,b3,e4] ~@5 [g3,b3,e4] ~@4", D: "~@5 [g3,a3,e4] ~@5 [g3,a3,e4] ~@4",
  E: "~@5 [f#3,a3,d#4] ~@5 [g3,a3,e4] ~@4", F: "~@5 [f#3,a3,c#4] ~@5 [g3,a3,c#4] ~@4",
  G: "~@5 [f#3,a3,d4] ~@5 [f#3,a3,d4] ~@4", H: "b3@11 a3@3 ~@2, [f#3,d4]@7 ~",
  I: "~@5 [f#3,a#3,c#4] ~@5 [f#3,b3,d4] ~@4", J: "~@5 [f#3,a3,c#4] ~@5 [f#3,a3,d4] ~@4",
  K: "~@5 [g3,a3,c#4] ~@5 [g3,a3,c#4] ~@4", L: "~@5 [g3,b3,e4] ~@5 [f#3,a3,c#4] ~@4", M: "[f#3,a3,d4]",
  N: "~@5 [e3,g#3,d4] ~@5 [f#3,a3,d4] ~@4", O: "~@5 [e3,g3,b3] ~@5 [f3,g#3,b3] ~@4",
  P: "g#3 ~@4 [e3,a3,c4] ~@5 [g3,c#4] ~@4", Q: "[f#3,a3,d4] ~@15", R: "~@5 [g3,b3,d4] ~@10",
  S: "~@5 [g3,b3,d4] ~@5 [g3,b3,d4] ~@4", T: "[a3,c4]@5 [g#3,b3]@6 [a3,c4]@4 ~, d3@15 ~",
  U: "[b3,d4]@5 [a3,c4]@6 [g#3,b3]@5, d3@15 ~", V: "~@5 [f#3,a3,c4] ~@5 [f#3,a3,c4] ~@4",
  W: "~@5 [f#3,a3,c4] ~@5 [f#3,b3,d4] ~@4", X: "~@5 [f#3,b3,d4] ~@5 [f#3,a#3,c#4] ~@4",
  Y: "~@5 [g3,b3,d4] ~@5 [g3,c4,e4] ~@4", Z: "[b3,d4]@5 [a#3,c#4]@6 [a3,c4]@5, d3",
  AA: "~@5 [g3,c4,e4] ~@5 [g3,b3,d4] ~@4", AB: "~@5 [f#3,b3,d4] ~@5 [b3,d4] ~@4, ~@11 f#3@2 ~@3",
  AC: "~@5 [f#3,b3,d4] ~@5 [f#3,a3,c4] ~@4", AD: "[g3,b3,d4] ~@2 [g3,b3,d4] ~ [g3,b3,d4] ~@5 [g3,b3,d4] ~@4",
  AE: "[g3,b3,d4] ~@15", AF: "~@5 [g3,c4,d4] ~@5 [f3,b3,d4] ~@4", AG: "[g3,b3]@5 [f#3,a3]@6 [e3,g3]@5, d4@15 ~",
  AH: "~@5 [g3,c4,d4] ~@5 [f#3,b3,d4] ~@4", AI: "[f#3,a3,c4] ~@15", AJ: "[g3,a3,c#4]@7 ~",
  AK: "[f#3,d4]@5 [e3,g3,c#4]@6 [d3,a3,c4]@5", AL: "[[c3,f#3]@16 [b2,g3]@35 ~@13, d3@25 ~@7]/4",
  AM: "[b2,d3,g3]@5 ~@11", AN: "[[g2,d3]@17 ~@7]/3",
})).s("gm_trombone").gain(0.5)

// drums · kick
const kick = s("bd").struct("<x!32 ~ x!31 ~ x!63 ~@12>").gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  A@31 B ~ A@7 C A@7 D A@13 C B ~ A@15 C A@10 B C A@3 D A@7 C A@7 D A@13 C B ~@12
>`.pickRestart({
  A: "~@5 x ~@5 x ~@4", B: "x", C: "x ~@2 x ~ x ~@5 x ~@4", D: "x ~@4 x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct("<~@65 x!15 ~ x!10 ~@2 x!3 ~@44>").gain(0.18)

stack(french_horn, bass, synth_brass_2, synth_brass_2_2, trumpet, clarinet, trombone, kick, snare, crash)

More by Mosch