Strudelify
Der Junge mit der Mundharmonika cover art

Der Junge mit der Mundharmonika

Bernd Cluver

KeyE majorTempo106 bpm
0:00/0:00
// Der Junge mit der Mundharmonika — Bernd Cluver
// 106 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 91 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(106/4)

// 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: edit a riff to change every repeat.

// chords · accordion · "M-Gesang"
const accordion = note(`<
  ~ A B@2 C D@2 E@2 F G@2 H I J K L M N O P Q R S T@2 U B@2 C D@2 E@2 F G@2 H I J K L M N O P Q R S T@2 ~@8 V W X@2 Y Z
  AA@2 H I J K L M N O P Q R S T@2 ~@4 AB AC AD AE@3
>`.pickRestart({
  A: "~@16 g#4@4 b4@7 ~ e4@4", B: "[f#4@37 ~@19 f#4@4 g#4@4]/2", C: "a4 c#5@5 b4 e4",
  D: "[g#4@45 ~@3 g#4@4 b4@7 ~ e4@4]/2", E: "[f#4@53 ~@3 f#4@4 g#4@4]/2", F: "a4@4 c#5@19 ~ b4@4 e4@4",
  G: "[g#4@47 ~@9 e4@4 e4@3 ~]/2", H: "[a4,c#5]@4 [a4,c#5]@18 ~@2 [c#5,e5]@4 [c#5,e5]@3 ~",
  I: "[c#5,e5]@7 ~ [c#5,e5]@4 [b4,d#5]@11 ~ [a4,c#5]@8", J: "[g#4,b4]@22 ~@2 [b4,d#5]@3 ~ [b4,d#5]@3 ~",
  K: "[b4,d#5]@7 ~ [b4,d#5]@4 [a4,c#5]@12 [g#4,b4]@8", L: "f#4@24 e4@7 ~, d#4@21 ~@11",
  M: "[a4,c#5]@11 ~ [g#4,b4]@11 ~ e4@7 ~", N: "[a4,c#5]@11 ~ [g#4,b4]@12 e4@4 e4@4",
  O: "[a4,c#5] [a4,c#5]@5 [c#5,e5]!2", P: "[c#5,e5]@3 [b4,d#5]@3 [a4,c#5]@2", Q: "[g#4,b4]@6 [b4,d#5]!2",
  R: "[b4,d#5]@3 [a4,c#5]@3 [g#4,b4]@2", S: "[d#4,f#4]@6 f#4 g#4", T: "[a4@8 c#5@4 b4@12 d#4@4 e4@19 ~@17]/2",
  U: "~@14 g#4@6 b4@7 ~ e4@4", V: "e6 d#6", W: "c#6@3 b5@3 e5@2", X: "[f#5@53 ~@3 f#5@4 g#5@4]/2",
  Y: "a5@24 g#5@3 ~ a5@4", Z: "f#6@24 a5@7 ~", AA: "[a5@12 g#5@2 f#5@2 ~@40 e4@4 e4@3 ~, ~@16 g#5@43 ~@5]/2",
  AB: "[c#4,a4]", AC: "[d#4,b4]", AD: "[c#4,a4]@27 ~ [e4,g#4]@2 [d#4,f#4]@2", AE: "[[e4,g#4]@17 ~@7]/3",
})).s("gm_accordion").gain(0.4)

// other · orchestral harp · "M-Harfe"
const orchestral_harp = note(`<
  ~@27 A B C D E F G H I J K@2 L@2 M N@2 K@2 L@2 O@2 L ~@16 K@2 L@2 M N@2 K@2 L@2 O@2 L ~@10
>`.pickRestart({
  A: "f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 ~ d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5, ~@8 f#5 ~@7",
  B: "~ d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5, f#5 ~@15",
  C: "a5 c#5 a5 c#5 a5 c#5 a5 c#5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 c#6 a5 ~@2 c#6 a5, ~@14 c#6 ~, ~@29 a5@2 ~",
  D: "b5 g#5 ~ g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 ~ g#5 b5 g#5, ~ b5 ~@12 b5 ~",
  E: "b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 b5 g#5 ~ g#5 b5 g#5 ~ g#5 ~ g#5 ~ g#5 b5 g#5 b5 g#5 ~ g#5, ~@8 b5 ~ b5!3 ~@2 b5",
  F: "f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5, ~@7 f#5!9",
  G: "~ d#5 ~ d#5 f#5 d#5 ~ d#5 f#5 d#5 f#5 d#5 f#5 ~ f#5 d#5 ~ d#5 ~ d#5 f#5 d#5 ~ d#5 f#5 d#5 f#5 d#5 f#5 ~ f#5 d#5, f#5@2 f#5@2 ~@2 f#5@2 ~@5 d#5@2 ~ f#5@2 f#5@2 ~@2 f#5@2 ~@5 d#5@2 ~",
  H: "a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5",
  I: "g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5 g#5 e5",
  J: "d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5 d5 g#5",
  K: "c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5",
  L: "b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5",
  M: "b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5",
  N: "c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5 b4 g#5",
  O: "[b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 f#5 b4 ~ c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 c#5 a5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5 d#5 f#5, ~@31 f#5@2 ~@31]/2",
})).s("gm_orchestral_harp").gain(0.2)

// bass · acoustic bass · "M-Bass"
const bass = note(`<
  A B C D E A B D F E A B G H I J F K L M@2 N J F O P@2 Q@2 R S T U V W X Y Z AA S X AB AC AD AE AF AG AH AI AJ AG@2 AK
  AL@2 AM AN AG X AG AK AL@2 AM AN AG X Z AA S X AB AC AD AE AF AG AH AI AJ AG@2 AK AL@2 AO AP AQ AR@3
>`.pickRestart({
  A: "e2@15 ~", B: "e2", C: "b1@29 ~@3", D: "b1@31 ~", E: "a1", F: "b1", G: "a1@15 ~", H: "a1@11 ~ a1@4", I: "e2@31 ~",
  J: "e2@11 ~ e2@4", K: "a1@3 e2@5", L: "f#2@12 e2@19 ~", M: "[a1@23 ~ a1@4 c#2@4]/2", N: "e2@29 ~@3", O: "a1 b1",
  P: "[e2@36 ~@20 e2@7 ~]/2", Q: "b2@5 ~ b2@3 ~ b2@2 f#2@4", R: "a2@9 ~@3 a2@6 ~@2 a2@4 e2@7 ~",
  S: "e2@9 ~@3 e2@6 ~@2 e2@4 b1@8", T: "e2@9 ~@3 e2@6 ~@2 e2@4 b1@7 ~", U: "b2@10 ~@2 b2@5 ~@3 b2@4 f#2@8",
  V: "b2@9 ~@3 b2@6 ~@2 b2@4 f#2@8", W: "a2@9 ~@3 a2@6 ~@2 a2@4 e2@6 ~@2", X: "e2@10 ~@2 e2@6 ~@2 e2@4 b1@7 ~",
  Y: "e2@5 ~ d2@3 ~ d2@2 b1@4", Z: "a2@9 ~@3 a2@6 ~@2 a2@4 e2@8", AA: "a2@9 ~@3 a2@5 ~@3 a2@4 e2@6 ~@2",
  AB: "b1@10 ~@2 b1@6 ~@2 b1@3 ~ b1@8", AC: "a1@12 e2@11 ~ e2@7 ~", AD: "f#2@12 e2@7 ~ e2@4 f#2@4 g#2@4",
  AE: "a2@11 ~ a2@6 ~@2 a2@4 e2@8", AF: "a2@10 ~@2 a2@5 ~@3 a2@4 e2@7 ~", AG: "e2@5 ~ e2@3 ~ e2@2 b1@4",
  AH: "e2@5 ~ e2@3 ~ e2@2 b1@3 ~", AI: "b1@3 d#2@2 f#2 d#2@2", AJ: "a1@12 b1@7 ~ b1@4 b1@8",
  AK: "e2@10 ~@2 e2@7 ~ e2@4 b1@7 ~", AL: "b1@5 ~ b1@3 ~ b1@2 f#1@4", AM: "a1@11 ~ a1@7 ~ a1@4 e2@8",
  AN: "b1@4 ~@2 b1@3 ~ b1@2 f#1@4", AO: "a1@10 ~@2 a1@7 ~ a1@4 e1@8", AP: "b1@10 ~@2 b1@6 ~@2 b1@4 f#1@7 ~",
  AQ: "a1@9 ~@3 a1@4 e1@8 a1@8", AR: "[e2@35 ~@13]/3",
})).s("gm_acoustic_bass").gain(0.56)

// other · bandoneon · "M-Mundha"
const bandoneon = note("<~@51 A B C@2 D E F@2 A B C@2 D E F@2 ~@14 A B C@2 ~@6>".pickRestart({
  A: "e6 d#6", B: "c#6@3 b5@3 e5@2", C: "[f#5@53 ~@3 f#5@4 g#5@4]/2", D: "a5@24 g#5@3 ~ a5@4", E: "f#6@24 a5@7 ~",
  F: "[a5@12 g#5@2 f#5@2 g#5@43 ~@5]/2",
})).s("gm_bandoneon").gain(0.43).pan(0.4)

// chords · synth strings 1 · "M-SynStr"
const synth_strings_1 = note(`<
  ~@12 A@2 B@2 C D E F@2 G@2 H I J@2 K@2 L M@2 K@2 L N O A@2 B@2 C D E F@2 G@2 H I P M@2 K@2 L Q M@4 K@2 L Q M@2 A@2 B@2
  C D E F@2 G@2 H I P M@2 K@2 R H S T@3
>`.pickRestart({
  A: "[e3,a3,c#4]/2", B: "[e3,g#3,b3]/2", C: "[d#3,f#3,b3]", D: "[e3,a3,c#4]@3 [e3,g#3,b3]@5",
  E: "[f#3,a3,c#4]@3 [e3,g#3,b3]@5", F: "[a3,c#4,e4]/2", G: "[g#3,b3,e4]/2", H: "[f#3,b3,d#4]",
  I: "[a3,c#4,e4] [f#3,b3,d#4]", J: "[[g#3,b3,e4]@9 ~@7]/2", K: "[b3,d#4,f#4]/2", L: "[c#4,e4,a4]", M: "[b3,e4,g#4]/2",
  N: "[b3,e4,g#4]", O: "[d4,e4,g#4]", P: "[g#3,b3,e4]", Q: "[b3,d#4,f#4]", R: "[e3,a3,c#4]@31 ~", S: "[e3,a3,c#4]",
  T: "[[e3,g#3,b3,e4]@23 ~@9]/3", // E
})).s("gm_synth_strings_1").gain(0.2)

// chords · acoustic guitar steel · "M-RhyGit"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C A@2 B@2 C A D E F G H I J K L@2 M@2 N O M P B@2 C A@2 B@2 C A D E F G H I J K L@2 M@2 N O M A@2 B@2 L B A Q
  A@2 B@2 L B A Q E F G H I J K L@2 M@2 N O M A@2 B@2 R S T U@3
>`.pickRestart({
  A: "~ g#4@3 ~@5 g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [b3,e4]@2 [b3,e4]!2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2, ~@5 g#4@2 g#4@2 ~@23", // E5
  B: "~ f#4@3 ~@5 f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3, [b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2, ~@5 f#4@2 f#4@2 ~@23", // B
  C: "~ a4@3 ~@5 a4@3 ~ a4@3 ~ a4@3 ~ a4@3 ~ a4@3 ~ a4@3, [c#4,e4]@2 [c#4,e4]!2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2, ~@5 a4@2 a4@2 ~@23", // C#m
  D: "~ g#4@3 ~@5 g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [d4,e4]@4 [d4,e4]@2 [d4,e4]@2 [d4,e4]@4 [d4,e4]@4 [d4,e4]@4 [d4,e4]@4 [d4,e4]@4 [d4,e4]@3 ~, ~@5 g#4@2 g#4@2 ~@23", // Dsus2
  E: "~ e4@3 [a3,c#4] e4 [a3,c#4] e4 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3, [a3,c#4]@3 ~@5 [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@3 ~", // A
  F: "~ e4@3 [a3,c#4] e4 [a3,c#4] e4 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3, [a3,c#4]@2 ~@6 [a3,c#4]@3 ~ [a3,c#4]@3 ~ [a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [a3,c#4]@2 ~@2 [a3,c#4]@2 ~@2", // A
  G: "~ g#4@3 [b3,e4] g#4 [b3,e4] g#4 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [b3,e4]@3 ~@5 [b3,e4]@2 ~@2 [b3,e4]@2 ~@2 [b3,e4]@2 ~@2 [b3,e4]@3 ~ [b3,e4]@2 ~@2 [b3,e4]@3 ~", // E5
  H: "~ g#4@3 [b3,e4] g#4 [b3,e4] g#4 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [b3,e4] ~@3 [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~ [b3,e4] ~", // E5
  I: "~ f#4@3 [b3,d#4] f#4 [b3,d#4] f#4 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3, [b3,d#4]@2 ~@6 [b3,d#4]@3 ~ [b3,d#4]@2 ~@2 [b3,d#4]@2 ~@2 [b3,d#4]@3 ~ [b3,d#4]@3 ~ [b3,d#4]@3 ~", // B
  J: "~ e4@3 [a3,c#4] e4 ~@3 e4@3 ~ [e4,g#4]@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [a3,c#4]@3 ~@3 [a3,c#4]@2 [a3,c#4]@2 ~@2 b3@2 ~@2 [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@2 ~@2 [b3,e4]@2 ~@2, ~@7 e4@2 ~@23", // A E A E5
  K: "~ a4@3 [c#4,f#4] a4 [c#4,f#4] a4 ~ a4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [c#4,f#4]@3 ~@5 [c#4,f#4]@2 ~@2 [b3,e4]@3 ~ [b3,e4]@2 ~@2 [b3,e4]@2 ~@2 [b3,e4]@2 ~@2 [b3,e4]@3 ~", // F#5 E5
  L: "~ e4@3 ~@5 e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3, [a3,c#4]@2 [a3,c#4]!2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2 [a3,c#4]@2, ~@5 e4@2 e4@2 ~@23", // A
  M: "~ e4@3 ~@5 e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3 ~ e4@3, [g#3,b3]@2 [g#3,b3]!2 [g#3,b3]@2 [g#3,b3]@2 [g#3,b3]@2 [g#3,b3]@2 [g#3,b3]@2 [g#3,b3]@2, ~@5 e4@2 e4@2 ~@23", // G#m
  N: "~ d#4@3 ~@5 d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3, [f#3,b3]@2 [f#3,b3]!2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2 [f#3,b3]@2, ~@5 d#4@2 d#4@2 ~@23", // B5
  O: "~ e4@3 ~@5 e4@3 ~ e4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3, [a3,c#4]@2 [a3,c#4]!2 [a3,c#4]@2 [a3,c#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2, ~@5 e4@2 e4@2 ~@23", // A B
  P: "~ e4@4 ~@27, [g#3,b3] ~@7", // G#m
  Q: "~ g#4@3 ~@5 g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3, [b3,e4]@4 [b3,e4]@2 [b3,e4]@2 [b3,e4]@4 [b3,e4]@4 [b3,e4]@4 [b3,e4]@4 [b3,e4]@4 [b3,e4]@3 ~, ~@5 g#4@2 g#4@2 ~@23", // E5
  R: "~ [e4,a4]@29 ~@2, [a3,c#4]@29 ~@3", S: "~ [f#4,b4]@30 ~, [b3,d#4]@15 ~", T: "~ [e4,a4]@30 ~, [a3,c#4]@15 ~",
  U: "[~ [g#4,b4]@65 ~@30, [b3,e4]@65 ~@31]/3", // G#m E5
})).s("gm_acoustic_guitar_steel").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@27 [x ~@2 x ~@2 x ~]!62 [x ~@6 x] x>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<A@11 B A@14 C A@9 D A@9 D A@29 D A@12 E C>".pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!2", C: "x", D: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~",
  E: "x!4",
})).gain(0.25)

// drums · claves
const claves = s("clave:2").struct("<~@27 [~@2 x ~@2 x ~ x]!62 ~@2>").gain(1.46)

stack(accordion, orchestral_harp, bass, bandoneon, synth_strings_1, acoustic_guitar_steel, kick, hihat, claves)

More by Bernd Cluver