Strudelify
Immer wieder, immer mehr cover art

1994 · Im Namen der Liebe

Immer wieder, immer mehr

Brunner & Brunner

KeyD majorTempo128 bpm
0:00/0:00
// Immer wieder, immer mehr — Brunner & Brunner
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A@3 B@3 C A@4 D A D E B F A@2 D G H A B I J A@3 B@4 C A@3 D@2 A B A D A B C A@4 D A D E B F A@2 D G H A B I J A@3 B@4
  C A@3 D@2 A B A D A B C A@2 K L K A D M B@2 A@3 B@4 C A@3 D@2 A B A D A B C A@3 N@2
>`.pickRestart({
  A: "d2 ~ d2@2 a1@2 d2@3 ~ d2@2 b1@2 a1@2", B: "a1 ~ a1@2 e1@2 a1@3 ~ a1@2 f#1@2 e1@2",
  C: "a1 ~ a1@2 e1@2 a1@3 ~ a1@2 b1@2 a1@2", D: "g1 ~ g1@2 d1@2 g1@3 ~ g1@2 e1@2 d1@2",
  E: "b1 ~ b1@2 f#1@2 b1@3 ~ b1@2 a1@2 f#1@2", F: "a1 ~ a1@2 e1@2 a1@3 ~ a1@2 e1@2 a1@2",
  G: "e2 ~ e2@2 b1@2 e2@3 ~ e2@2 b1@2 d2@2", H: "e2 ~ e2@2 b1@2 e2@3 ~ e2@2 d2@2 b1@2",
  I: "g1 ~ g1@3 ~ g1@2 a1 ~ a1@3 ~ a1@2", J: "d2 ~ d2@2 b1@2 a1@2 a1 ~ a1@2 b1@2 a1@2",
  K: "g1 ~ g1@2 g1@2 g1@2 g1 ~ g1@2 e1@2 d1@2", L: "f#1 ~ f#1@2 f#1@2 f#1@2 f#1 ~ f#1@2 e1@2 f#1@2",
  M: "d2 ~ d2@2 a1@2 d2@3 ~ d2@2 c2@2 a1@2", N: "[d2@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A@3 B@4 C@2 D E F D F G H@2 D E F I@2 D J K L M@3 N@4 O M@3 P Q R O R F S T@2 C@2 D E F D F G H@2 D E F I@2 D J K L
  M@3 N@4 O M@3 P Q R O R Q R N@2 C@2 Q U F D F R V@2 M@3 N@4 O M@3 P Q R O R Q R N@2 W@3 X@2
>`.pickRestart({
  A: "[a3,d4,f#4]/3", B: "[a3,c#4,e4]/4", C: "[a3,d4,f#4]/2", D: "[d3,a3,f#4]", E: "g4@3 f#4@5, [d3,a3]",
  F: "[g3,b3,g4]", G: "[f#3,d4,f#4]", H: "[e3,c#4,e4]/2", I: "[e3,g#3,e4]/2", J: "[a3,c#4,g4]",
  K: "[b3,d4,g4] [a3,c#4,e4]", L: "[d3,d4,f#4] [a3,c#4,e4]", M: "[f#3,d4,a4]/3", N: "[a3,c#4,a4]/2", O: "[a3,c#4,a4]",
  P: "[g3,e4,b4]", Q: "[g3,d4,b4]", R: "[f#3,d4,a4]", S: "[a3,d4,f#4]", T: "[a3,c#4,e4]/2", U: "[f#3,c#4,a4]",
  V: "[e3,c#4,a4]/2", W: "[d3,a3,f#4,d5]/3", X: "[[d3,a3,f#4,d5]@3 ~]/2",
})).s("gm_synth_strings_1").gain(0.23).pan(0.4)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@3 B C@2 D E ~@29 F G H I J K L I ~@31 F G H I J K L I ~@3 M N M O M O P Q ~@11 F G H I J K L I ~ R@2 S T@2
>`.pickRestart({
  A: "a4@3 f#4@3 d4@2", B: "c#4@6 e4@7 ~@3", C: "g4@3 e4@3 c#4@2", D: "g4@6 f#4@6 ~ e4@3, ~@6 [e4,f#4] ~",
  E: "d4@5 ~@11", F: "e3@3 f#3@3 g3@2", G: "b2@11 ~@5", H: "d3@3 ~", I: "c#3@13 ~@3", J: "d3@3 e3@3 f#3@2",
  K: "b2@13 ~@3", L: "d3@9 ~@7", M: "~ d3 g3 ~@2 d4@2 b3, ~@3 g4@3 ~@2", N: "~ f#3 a3 ~@2 c#4@3, ~@3 f#4@3 ~@2",
  O: "~ a3 d4 ~@2 d4@3, ~@3 f#4@3 ~@2", P: "~@3 b3@2 c#4@3, a2@7 ~, ~ e3@7, ~ a3@3",
  Q: "~@6 b3@4 c#4@5 ~, a2@15 ~, ~ e3@6 ~, ~@4 a3@11 ~", R: "d3@5 ~ d3@6 b2@4", S: "d3@5 ~ d3@6 b2@3 ~",
  T: "[d3@3 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note(`<
  A ~ B@3 ~ C@2 ~@4 D E F G ~@7 H@4 I@4 ~@2 C@2 ~ J@6 K@3 C@2 ~@4 D E F G ~@7 H@4 I@4 ~@2 C@2 ~ J@6 K@3 C@2 ~@4 L@4 ~ A
  ~ B@3 ~@2 C@2 ~ J@6 K@3 C@2 ~ M@2 ~
>`.pickRestart({
  A: "[d4,f#4]@5 ~@3", B: "[~@8 [c#4,e4]@5 ~@3 [e4,g4]@5 ~@3, ~@15 [e3,a3]@11 ~@5 [a3,c#4]@11 ~@6]/3",
  C: "[~@17 f#4@9 ~@6, ~@15 d3@11 ~@6, ~@8 [a3,d4]@5 ~@3]/2", D: "~ a3 f#3 d3", E: "b2@5 ~@3", F: "d3 ~", G: "e3 ~",
  H: "[~@16 [b3,d4]@7 ~ [c#4,e4]@7 ~ [d4,f#4]@10 ~@6 [d4,f#4]@10 ~@6, ~@15 [d3,g3]@8 [e3,a3]@8 [d3,a3]@11 ~@5 [d3,a3]@11 ~@6]/4", // Bm C#m D G5 A5 D5
  I: "[~@17 f#4@9 ~@6 [c#4,e4]@10 ~@6 [e4,g4]@10 ~@6, ~@15 d3@11 ~@5 [e3,a3]@11 ~@22, ~@16 [a3,d4]@10 ~@21 [a3,c#4]@11 ~@6]/4", // C#m Em A5 D5 A
  J: "[~@16 [b3,e4]@10 ~@6 [d4,g4]@10 ~@6 [d4,f#4]@10 ~@6 [c#4,e4]@10 ~@7 f#4@9 ~@5 g3, ~@15 [e3,g3]@11 ~@5 [g3,b3]@11 ~@5 [d3,a3]@11 ~@5 [e3,a3]@11 ~@5 d3@11 ~@6, ~@40 [a3,d4]@5 ~@3]/6", // E5 G5 D C#m Em G D5 A5 …
  K: "[~ g4@9 ~@6 [d4,f#4]@10 ~@6 [c#4,e4]@10 ~@6, [b3,d4]@10 ~@5 [d3,a3]@11 ~@5 [e3,a3]@11 ~@6]/3", // D C#m Bm D5 A5
  L: "[~@8 [d4,g4]@5 ~@3 [d4,f#4]@5 ~@3 [c#4,e4]@5 ~@3, ~@15 [g3,b3]@11 ~@5 [d3,a3]@11 ~@5 [e3,a3]@11 ~@6]/4", // G5 D C#m G D5 A5
  M: "[~@8 [d4,f#4]@5 ~@3, ~@15 [d3,a3]@11 ~@6]/2", // D D5
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.2)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@3 B C@3 A@2 D E F D F G H@2 D E F I@2 D J K L A@3 B@5 A@3 M N A B A N A B@2 A@2 D E F D F G H@2 D E F I@2 D J K L
  A@3 B@5 A@3 M N A B A N A B@2 A@2 F O F D F D H@2 A@3 B@5 A@3 M N A B A N A B@2 A@3 P@2
>`.pickRestart({
  A: "[a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]!3 [a3,d4,f#4]@2", // D
  B: "[a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]!3 [a3,c#4,e4]@2", // A
  C: "[a3,c#4,g4] [a3,c#4,g4]@2 [a3,c#4,g4]!3 [a3,c#4,g4]@2", // A7
  D: "[a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!3", E: "[a3,d4,g4] [a3,d4,g4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!3",
  F: "[b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!3", G: "[b3,d4,f#4] [b3,d4,f#4]@2 [b3,d4,f#4]@2 [b3,d4,f#4]!3",
  H: "[a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]!3", // A
  I: "[g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!3", // E
  J: "[a3,c#4,g4] [a3,c#4,g4]@2 [a3,c#4,g4]@2 [a3,c#4,g4]!3", // A7
  K: "[g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4] [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]", // G A
  L: "[a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4] [a3,c#4,e4]!4", M: "[b3,e4,g4] [b3,e4,g4]@2 [b3,e4,g4]!3 [b3,e4,g4]@2",
  N: "[b3,d4,g4] [b3,d4,g4]@2 [b3,d4,g4]!3 [b3,d4,g4]@2", // G
  O: "[a3,c#4,f#4] [a3,c#4,f#4]@2 [a3,c#4,f#4]@2 [a3,c#4,f#4]!3", P: "[~ [d4,f#4]@23 ~@8, [d3,a3]@3 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.7)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note("<~@15 A@3 B C D ~@3 E@2 ~@19 F@3 ~@6 A@3 B C D ~@3 E@2 ~@19 G@2 H ~@27 I@5 ~>".pickRestart({
  A: "[~@16 [c#4,e4]@13 ~@3 [d4,f#4]@13 ~@3, ~@15 a3@14 ~@2 a3@14 ~@3]/3", B: "[a3,d4,g4]@5 ~ [a3,d4,f#4]@8 ~@2",
  C: "[b3,d4,g4]@11 ~@5", D: "[g#3,b3,e4]@11 ~@5",
  E: "[[b3,d4]@7 ~ [a3,c#4,e4]@5 ~@3 f#4@8 ~@8, g3@5 ~@10 [a3,d4]@9 ~@8]/2", // Bm A D5
  F: "[~@2 a4@4 e4@6 ~@4 [a4,d5]@12 ~@4 a4@5 ~ f#4@9 ~, ~@15 f#4@13 ~@3 [d4,f#4]@6 [a3,d4]@10 ~]/3", // D5 D D5
  G: "[~ a4@2 e4@3 ~@2 [a4,d5]@6 ~@2, ~@15 f#4@13 ~@4]/2", H: "~ f#4 e4 d4@3 ~@2",
  I: "[~@2 a4@4 e4@9 ~ [a4,d5]@12 ~@4 [a4,d5]@12 ~@4 [a4,d5]@12 ~@4 [a4,d5]@12 ~@4, ~@15 f#4@13 ~@3 f#4@13 ~@3 f#4@13 ~@3 f#4@13 ~@4]/5", // D5
})).s("gm_epiano2").gain(0.4).pan(0.2)

// drums · kick
const kick = s("bd").struct("<[x!4]!118 x ~>").gain(0.6)

// drums · snare
const snare = s("sd").struct("<A@8 B A@12 C A@25 B A@12 C A@25 D A@7 E A@22 C ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@2 x ~@2 x!3", D: "~@4 x ~@7 x ~ x!2", E: "~ x!3 ~@2 x ~",
})).gain(0.53)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@16 A ~@21 A ~@16 A ~@55>".pickRestart({
  A: "~@7 x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C B C B@2 A B C B C B C B A B C@2 B C B C B A B C B C B C B A B C B C B C B@2 C B C B@2 A B C B C B C B A B
  C@2 B C B C B A B C B C B C B A B C B C B C B@2 C B C B@2 A B C B C B C B A B C B C B C B A B C B C B C B D C B C E@3
  F ~
>`.pickRestart({
  A: "~ x!7", B: "x!7 ~", C: "x!8", D: "~ x!6 ~", E: "x!5 ~ x ~", F: "x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@16 A ~@7 B ~@7 C ~@5 A ~@16 A ~@7 B ~@7 C ~@13 D ~@7 B ~@7 C ~@9
>`.pickRestart({
  A: "~@5 x!2 ~", B: "~@5 x!3", C: "~@10 x ~ x ~ x!2", D: "~@5 x ~ x",
})).gain(0.47)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ B@3
  ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~ x",
})).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct("<~@94 [~@3 x] ~@25>").gain(0.47)

// drums · crash
const crash = s("cr").struct(`<
  A ~@8 A ~@7 A ~@4 A ~@3 A ~@7 A ~@13 A ~@7 A ~@4 A ~@3 A ~@7 A ~@13 A ~@7 A ~@7 A ~@7 A ~@6 A ~
>`.pickRestart({
  A: "x",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@9 [~@3 x]!17 ~@22 [~@3 x]!17 ~@22 [~@3 x]!8 ~@25>").gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<A@9 B C@16 A@22 C@17 A@22 C@8 A@23 D ~>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x!2 ~@6", C: "~ x ~@6", D: "x",
})).gain(0.2)

stack(
  bass, synth_strings_1, electric_guitar_clean, electric_guitar_clean_2, acoustic_guitar_steel, epiano2, kick, snare,
  low_tom, hihat, mid_tom, open_hat, high_tom, crash, tambourine, shaker
)

More by Brunner & Brunner