Strudelify

Wir zwei allein

Hasselhoff David

KeyD majorTempo72 bpm
0:00/0:00
// Wir zwei allein — Hasselhoff David
// 72 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@14 A B C D E F G H I J K L M N O P Q R S P Q R T U T U T A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D
  E F V ~
>`.pickRestart({
  A: "f#2@5 ~ f#2@2 g2@8", B: "a1 d2", C: "f#2@5 ~ f#2@2 g2@6 g2@2", D: "a1 b1", E: "c#2 d2",
  F: "e2@4 f#2@2 g2@2 a2@7 ~", G: "a2@8 f#2@5 ~ f#2@2", H: "g2 a1", I: "d2@8 f#2@5 ~ f#2@2", J: "g2@3 g2 a1@4",
  K: "b1 c#2", L: "d2@4 e2@2 f#2 g2", M: "a2@7 ~ a2@4 g2@4", N: "d2@11 ~ g2@4", O: "d2@11 ~@5",
  P: "d2@5 ~ d2 ~ d2@6 ~@2", Q: "d2@5 ~ d2 ~ d2@8", R: "g2 f#2 e2 d2", S: "a2@5 ~ a2 ~ a2@4 g2@4",
  T: "a1@5 ~ a1 ~ a1@7 ~", U: "b1@5 ~ b1 ~ b1@6 ~@2", V: "a2@4 g2@4 d2@5 ~@3",
})).s("gm_acoustic_bass").gain(0.37)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F C D G H I J K L@4 M@3 N@2 O P@2 Q ~@2 B C D E R C D G H I J S L@4 M@3 N@2 O P@2 Q L@4 T@3 U@2 O P@2 Q
  V@4 W@3 ~
>`.pickRestart({
  A: "[f#2@2 ~@4 f#2@2 g2@2 b2@2 ~@8 c#4@2 ~@6 g4@3 ~, ~@2 a2@4 ~@8 a2@17 ~, ~@4 d3@5 ~@3 d3@4 e3@8 c#4@7 ~, ~@18 a3@7 ~@2 [a3,d4]@4 ~, ~@11 d4@2 ~@3]/2", // D5
  B: "~@12 a3@3 ~, d3@10 d4@5 ~, ~ a3@5 ~@2, ~ d4 f#4 ~, ~@3 e4@3 ~@2",
  C: "~@5 d4 ~ d3, d3@13 ~@3, ~ a3@5 a3@2, ~@4 d4@4 f#4@5 ~@3, ~@6 e4@7 ~@3", D: "~ b3 ~ a3 ~ g3 ~ f#3, g3 f#3 e3 d3",
  E: "~@7 d4 ~@4 [d4,g4]@4, a2 ~, ~ e3@3 ~@4, ~@4 a3@4 ~@3 a3@5, ~@6 c#4@2 c#4@5 ~@3", // G5
  F: "~@3 [d4,g4], d3@11 [a2,a3]@5, ~ a3@4 d4 ~@2, ~ d4 f#4 ~, ~@3 e4@3 ~@2", // G5 A
  G: "~@6 d4@2 c#4@5 ~@3, a2 ~, ~ e3@3 ~@4, ~ a3 ~@2", H: "~@7 d3, b2@3 f#3, ~ f#3@4 b3@3, ~ b3 d4@2, ~@3 c#4@5",
  I: "~@3 b3 c#4@4, a2 ~, ~ e3@3 ~@4, ~ a3 ~@2", J: "~@7 d3, b2@5 b3@3, ~ f#3@5 f#3@2, ~ b3 d4 ~, ~@3 c#4@3 ~@2",
  K: "~@8 [a3,c#4]@5 ~@3, a2@13 ~@3, ~ e3@2 d4 ~@4, ~@4 a3@3 e3@6 ~@3", // A
  L: "[~@3 [f#2,a3] ~@15 f#2 ~@6 a3@2 ~@2 d4@2, f#2@3 ~ g2@4 a2@3 e4@2 ~ d4@2 ~@2 a3@2 ~@2 g3@2 ~@5 f#3@3, ~ d3@3 ~ d3@3 ~ e3@3 d3@4 f#2@3 ~ g2@4 a2@4 b2@4, ~@2 f#3@2 ~@2 g3@2 ~@2 a3@2 ~ a3@3 ~ d3@3 ~ d3@3 ~ e3@2 ~@5, ~@7 b3@5 ~@3 f#4@5 ~@3 b3@2 ~@7]/4", // F#m
  M: "[~@14 d3@2 ~@4 d3@4 ~@6 d4@2 c#4@2 ~@3 g3 f#3 e3 ~@6 [f#2,a3]@2, c#3@4 d3@3 ~ e3@2 ~@2 a2@6 a3 ~ f#3@2 f#3@2, ~ e3@2 ~@2 f#3@3 ~@5 e3@6 ~ f#2@3 ~, ~@4 a3@12 ~@2 b3@6 ~@4 a3@4 ~@3 b3@3 ~@4 d3@6, ~@6 d4@4 ~@7 c#4@2 ~@5]/3", // F#m
  N: "[~@15 f#2, g2@4 a2@3 e4@2 ~ d4@2 ~@2 a3@2, ~ d3@3 ~ e3@3 d3@4 f#2@3 ~, ~@2 g3@2 ~@2 a3@2 ~ a3@3 ~ d3@3, ~@3 b3@5 ~@3 f#4@5]/2",
  O: "~@3 a3, g2 a2, ~ d3@3 ~ e3@2 ~, ~ g3 ~@2, ~@3 b3@2 ~@3",
  P: "[~@2 d4@2 ~@7 d3 ~@2 d3@2, b2@4 c#3@4 d3@3 ~ e3@2 ~@2, ~ f#3@3 ~ e3@2 ~@2 f#3@3 ~@4, ~@6 a3@6 ~ b3@3, ~@5 d4@2 ~]/2",
  Q: "~@3 d4 c#4@3 ~, a2@7 ~, ~ e3@6 ~, ~ a3 ~@2",
  R: "~@3 [d4,g4], d3@11 a3@4 ~, ~ a3@4 d4 ~@2, ~ d4 f#4 ~, ~@3 e4@3 ~@2", // G5
  S: "~@6 d4@2 c#4@5 ~@3, a2@13 ~@3, ~ e3@3 ~@4, ~ a3 ~@2",
  T: "[~@14 d3@2 ~@4 d3@4 ~@7 b3 c#4@2 ~@3 g3 f#3 e3 ~@6 [f#2,a3]@2, c#3@4 d3@3 ~ e3@2 ~@2 a2@6 a3 ~ f#3@2 f#3@2, ~ e3@2 ~@2 f#3@3 ~@5 e3@6 ~ f#2@3 ~, ~@4 a3@12 ~@2 b3@6 ~@4 a3@4 ~@3 b3@3 ~@4 d3@6, ~@6 d4@4 ~@5 d4 ~ c#4@2 ~@5]/3", // F#m
  U: "[~@20 d4@2 ~ c#4!2 d4@7, g2@4 a2@3 e4@2 ~@2 d4 ~@4, ~ d3@3 ~ e3@3 d3@4 ~@4, ~@2 g3@2 ~@2 a3@2 ~ a3@3 ~@4, ~@3 b3@5 ~@8]/2",
  V: "[~@3 [f#2,a3] ~@22 a3@2 ~@2 d4@2, f#2@3 ~ g2@4 a2@3 e4@2 ~ d4@2 ~@2 a3@3 ~ g3@2 ~@5 f#3@3, f#3@2 f#3@2 ~@2 g3@2 ~@2 a3@2 ~ a3@3 ~ d3@3 ~ d3@3 ~ e3@2 ~@5, ~ d3@3 ~ d3@3 ~ e3@3 d3@4 f#2@3 ~ g2@4 a2@4 b2@4, ~@7 b3@5 ~@3 f#4@2 ~@6 b3@2 ~@7]/4", // F#m
  W: "[~@7 d3 ~@2 d3@2 ~@3 d4 c#4@3 ~ d4@4, c#3@4 d3@3 ~ e3@2 ~@2 a2@7 [a2,d3]@5, ~@2 e3@4 ~@4 f#3@6 ~@10 e3@12 ~ [f#3,a3]@9, ~@2 a3@6 ~ b3@3 ~@2 a3@2 ~@8, ~@3 d4@2 ~@7]/3", // D5 F#m
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@2 A ~@2 B ~@10 C D E@2 ~@2 F@2 G H ~@3 A ~@2 B ~@10 C D E@2 ~@2 F@2 G H ~@3 C D E@2 ~@3 H G H ~@4 D E@2 ~@2
>`.pickRestart({
  A: "~@7 d3", B: "~@11 a2@5", C: "~@3 f#3@2 ~@3", D: "~@3 e3 ~@3 f#4", E: "~@3 e3 ~@4", F: "[~@7 f#3@2 ~@6 e3]/2",
  G: "~@3 f#4 ~@3 e3", H: "~@7 e3",
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@5 A B C D E ~@4 F@2 G H I J K@3 L@4 ~@5 A B C D E ~@4 F@2 G H I J K@3 L@4 ~@3 M I J K@3 L@4 ~@8
>`.pickRestart({
  A: "~@12 g4@3 a4", B: "f#4@9 ~ d4!2 g4@3 a4", C: "f#4@11 ~@3 a4@2", D: "b4@2 b4@2 a4@2 a4@2 g4@2 g4 ~ f#4@2 f#4@2",
  E: "f#4 e4!2 ~@13", F: "[~@2 a4 b4@3 b4 a4@3 b4 f#4@4 ~]/2", G: "~@4 f#4@2 a4@2 b4@5 ~ b4@2",
  H: "a4@4 b4@2 f#4@5 ~ d4@2 d4@2", I: "e4@2 a4 f#4@3 d4 f#4", J: "g4@2 a4 e4@5",
  K: "[~@6 a4 b4@3 b4 a4@3 b4 f#4@4 ~@3 f#4 a4]/3",
  L: "[b4@5 ~ b4@2 a4@4 b4@2 f#4@5 ~ d4@2 d4@2 e4@4 a4@2 f#4@6 d4@2 f#4@2 g4@4 a4@2 e4@10 ~@8]/4", M: "~@6 d4!2",
})).s("gm_piano").gain(0.42).pan(0.8)

// chords · pad bowed · "BOWEDGLASS"
const pad_bowed = note("<~@6 A B C@2 ~@19 A B C@2 ~@42>".pickRestart({
  A: "[a3,d4,f#4]@3 [a3,d4,g4]", B: "[a3,d4,f#4]",
  C: "[[b3,d4,g4] [a3,d4,f#4] [b3,d4,g4] [d4,f#4] [c#4,e4]@4, ~@3 a3@5]/2", // G D G D C#m
})).s("gm_pad_bowed").gain(0.47).pan(0.4)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@10 A B A B C D C E F G@2 H I H J K@2 L M ~@4 N O P@2 A Q A R C D C E F G@2 H I H J K@2 C D C E F G@2 H I H J K@2 C D
  C S F T@2 ~
>`.pickRestart({
  A: "[b2,b3,d4,f#4]", B: "[a2,a3,c#4,e4]", C: "[a3,c#4,f#4] [b3,d4,g4]", D: "[c#4,e4,a4] [d4,f#4,a4]",
  E: "[c#4,e4,a4] [b3,d4,f#4]", F: "[c#4,e4,a4] [a3,d4,f#4]",
  G: "[[b3,g4] [a3,f#4] ~@2 c#4@2 [a3,c#4,f#4]@2, d4 ~, ~ [a3,e4,a4]@2 ~]/2", H: "[b3,d4,g4] [c#4,e4,a4]",
  I: "[d4,f#4,a4] [a3,c#4,f#4]", J: "f#4 e4 d4@2 [c#4,e4,a4]@4, b3 ~, d4 ~@3",
  K: "[[a3,d4,f#4]@2 [b3,g4] [a3,f#4] ~@2 c#4 [b3,d4,g4], ~ d4@2 ~, ~@4 [a3,e4,a4]@3 ~]/2", // D Em D G A5
  L: "[a3,d4,f#4]@3 [b3,d4,g4]", M: "[a3,d4,f#4]@5 ~@3", N: "[a3,d4,f#4]@3 [a3,d4,g4]", O: "[a3,d4,f#4]",
  P: "[[b3,d4,g4] [a3,d4,f#4] [b3,d4,g4] [d4,f#4] [c#4,e4]@4, ~@3 a3@5]/2", // G D G D C#m
  Q: "[a3,c#4,e4]@4 [a3,c#4] [b3,d4] [c#4,e4] [a3,c#4], a2", R: "[a2,a3,c#4,e4]@3 ~",
  S: "[c#4,e4,a4]@4 f#4 e4 d4@2, ~ b3, ~@2 d4 ~", // A
  T: "[[b3,g4] [a3,f#4] ~@2 c#4 [b3,d4,g4] [a3,d4,f#4]@2, d4 ~, ~@2 [a3,e4,a4]@3 ~@3]/2", // Em D G D A5
})).s("gm_string_ensemble_2").gain(0.09).pan(0.7)

// other · viola
const viola = note(`<
  ~@14 A B A B C D@2 E F E G H I J K ~@7 L M N ~@2 A B A B C D@2 E F E G H I A B A B C D@2 E F E G H I A B A O C P@2 ~
>`.pickRestart({
  A: "a2 b2", B: "c#3 d3", C: "e3 f#3", D: "[g3@2 f#3 e3 a3@7 ~ a2@4]/2", E: "b2 c#3", F: "d3 a2",
  G: "f#3 e3 d3 a2 e3@4", H: "f#3@4 g3@2 f#3 e3", I: "a3@3 g3", J: "f#3@3 e3 d3@2 g3@2", K: "f#3@5 ~@3",
  L: "~@4 a2 b2 c#3 e3", M: "b2@2 d3 f#3", N: "a2@5 ~@3", O: "c#3@4 f#3 e3 d3 a2", P: "[g3@2 f#3 e3 a3@6 g3@2 f#3@4]/2",
})).s("gm_viola").gain(0.2).pan(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@38 A B C D E D F G H@2 I J I K@2 L D E D F G H@2 I J I M@2 N O P O Q L R@2 ~
>`.pickRestart({
  A: "~@4 [a3,c#4] [b3,d4] [c#4,e4] [a3,c#4]", B: "b3@2 ~ d4, d4@3 ~, ~ b3", C: "e4@3 ~", D: "f#4 d4",
  E: "e4@8 f#4@7 ~", F: "e4@4 [d4,f#4] [c#4,e4] b3 a3, ~@3 d4", G: "e4 f#4",
  H: "[g4@4 f#4@2 e4@2 a4@14 ~@4 [d5,d6] ~ [d5,d6] ~ [d5,d6] ~]/2", // D
  I: "~@2 [d5,d6] ~ [d5,d6]@2 [c#5,c#6] ~@3 [c#5,c#6] ~ [c#5,c#6]@2 [d5,d6] ~", // D C# D
  J: "~@2 [d5,d6]@2 [e5,e6]@2 [f#5,f#6] ~@3 [d5,d6] ~ [d5,d6] ~ [d5,d6] ~", // D E F# D
  K: "[[d5,d6] [e5,e6] [f#5,f#6] [b5,b6] [a5,a6]@8 [b5,b6]@4]/2", L: "[a5,a6]",
  M: "[[d5,d6] [e5,e6] [f#5,f#6] [b5,b6] [a5,a6]@8 [b5,b6]@2 [a5,a6]@2]/2", N: "[e5,e6]@3 [d5,d6]",
  O: "~@2 [d5,d6] ~ [d5,d6] ~ [d5,d6] ~@3 [d5,d6] ~ [d5,d6]@2 [c#5,c#6] ~", // D C#
  P: "~@2 [c#5,c#6] ~ [c#5,c#6]@2 [d5,d6] ~@3 [d5,d6]@2 [e5,e6]@2 [f#5,f#6] ~", // C# D E F#
  Q: "~@2 [c#5,c#6] ~ [c#5,c#6]@2 [d5,d6] ~ [d5,d6]@2 [e5,e6]@2 [f#5,f#6]@2 [b5,b6]@2", // C# D E F# B
  R: "[[b5,b6] [a5,a6] [e5,e6]@3 [d5,d6]@3]/2", // B A E D
})).s("gm_string_ensemble_1").gain(0.09).pan(0.9)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_3 = note("<~@53 A@2 B C D ~@9 E F G H ~@4>".pickRestart({
  A: "[~@12 d3 a3 b3 ~ d4@7 f#4!2 e4@5 ~ d4, ~@15 c#4@2 ~@15]/2", B: "d4 e4@3 e4@2 d4 e4@5 ~@4",
  C: "~@3 e4 [f4,f#4]@2 a4@2 b4@7 f#4, ~@8 a#4 ~@7", D: "f#4 e4!2 d4!2 c#4!2 a3@3 a3@4 ~@2",
  E: "~@6 d4 e4 f#4@5 e4 ~ d4", F: "d4 ~ c#4@3 d4 ~ e4 f#4 a4@5 ~@2", G: "~@3 d5 d5@2 d5@2 a4@4 ~@4",
  H: "f#4 e4!2 d4!2 c#4!2 a3@7 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.36).pan(0.3)

// drums · rim
const rim = s("rim").struct("<~@14 A@6 B@6 ~ A ~ C@11 A@7 B@6 ~ A@6 B@7 A@7 ~>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~ x ~ x",
})).gain(0.21)

// drums · kick
const kick = s("bd").struct("<~@29 [x ~@2 x!2 ~@3]!38 [x ~@3 x ~@2 x]!6 [x!2] ~>").gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@14 A@6 B@6 ~ A ~ C@11 A@7 B@6 ~ A@6 B@7 A@7 ~>".pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "~ x ~ x",
})).gain(0.36)

// drums · clap
const clap = s("cp").struct("<~@14 A@6 B@6 C A ~@13 A@6 B@6 C A@6 B@7 A@6 ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~ x",
})).gain(0.43)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@15 A B A C ~ D ~ E ~ E ~ A B ~@14 A B A C ~ D ~ E ~ E ~ A B A B A C ~ D ~ E ~ E ~ E ~ A B A B A B ~
>`.pickRestart({
  A: "~@12 x!4", B: "x", C: "x!2 ~@14", D: "~@4 x!4 ~@8", E: "~@4 x!5 ~@7",
})).gain(0.14)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@16 A ~@5 B ~ C ~@2 D ~@15 A ~@5 B ~ C ~@2 D ~ A ~@5 B ~ C ~ B ~@2 A ~ D ~ A ~
>`.pickRestart({
  A: "~ x!2 ~@13", B: "~@9 x!2 ~@5", C: "~@9 x ~@6", D: "~ x ~@14",
})).gain(0.07)

// drums · congas
const congas = s("conga:18").struct("<~@20 [~ x ~@2] ~@26 [~ x ~@2] ~@12 [~ x ~@2] ~@14>").gain(1.37)

// drums · congas
const congas_2 = s("conga:33").struct("<~@20 A ~@11 B ~@3 B ~@10 A ~@12 A ~@14>".pickRestart({
  A: "~@3 x ~@12", B: "~@9 x!2 ~@5",
})).gain(1.37)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@14 A@7 B@6 A C A@11 C A@7 B@6 A@7 B@12 D ~>".pickRestart({
  A: "x!5 ~ x ~ x!5 ~ x!2", B: "x!5 ~ x!7 ~ x!2", C: "x!5 ~ x ~@9", D: "x!5 ~ x!2 ~@8",
})).gain(0.72)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@14 A@7 B@6 A C A@11 C A@7 B@6 A@7 B@12 D ~>".pickRestart({
  A: "~@5 x ~ x ~@5 x ~@2", B: "~@5 x ~@7 x ~@2", C: "~@5 x ~ x ~@8", D: "~@5 x ~@10",
})).gain(0.36)

// drums · claves
const claves = s("clave:2").struct(`<
  ~@15 A ~ A ~@2 B ~ B ~ B ~ A@2 ~@4 A ~@3 A ~@5 A ~ A ~@2 B ~ B ~ B ~ A ~ A ~ A ~@2 B ~ B ~ B ~ B ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@3 x ~@12",
})).gain(1.75)

stack(
  bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, piano, pad_bowed, string_ensemble_2, viola, string_ensemble_1,
  acoustic_guitar_nylon_3, rim, kick, snare, clap, tambourine, tambourine_soft, congas, congas_2, cabasa, cabasa_soft,
  claves
)

More by Hasselhoff David