Strudelify

Du hast ja Tranen in den Augen

CORDALIS,COSTA

KeyB majorTempo70 bpm
0:00/0:00
// Du hast ja Tranen in den Augen — CORDALIS,COSTA
// 70 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 62 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 · pad halo
const pad_halo = note(`<
  ~@4 A@2 B@2 C D E F A@2 B@2 C D E G H I J K A@2 B@2 C D E G H I J K A@2 B@2 C D L ~@9 A@2 B@2 C M@2 N@3
>`.pickRestart({
  A: "[e3,g#3,e4,c#5]/2", B: "[[b2,b4]@7 [c3,c5], [f#3,d#4]]/2", C: "[c#3,g#3,f4,c#5]",
  D: "[e3,g3,e4,b4] [f#3,c#4,e4,a#4]", E: "[b2,b3,d#4,b4]@11 ~ [e3,g#3,e4,b4]@11 ~", F: "[b2,b3,d#4,b4] ~@5 [b2,b3]@2",
  G: "[b2,b3,f#4,b4]@23 ~", H: "g#3 g3, [e3,e4,b4]", I: "[b2,f#3,d#4,b4] [g#2,g#3,d#4,b4]", J: "[c#3,g#3,f4,b4]@23 ~",
  K: "[f#3,c#4,f#4,a#4] ~@7", L: "[b2,b3,d#4,b4]@3 ~@9 [d#3,a#3,d#4,g4]@11 ~",
  M: "[[e3,g3,e4,b4] [f#3,a#3,c#4,f#4]@2 [b2,b3,d#4,b4]]/2", N: "[[g2,b3,e4,b4]@13 ~@2 [b2,b3,f#4,b4]@36 ~@21]/3",
})).s("gm_pad_halo").gain(0.22).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@24 A@2 B@2 C D E@2 F G H I J@2 B@2 C D K L@2 M@2 N O P@2 Q A@2 B@2 C R S T@3
>`.pickRestart({
  A: "g#5/2", B: "f#5/2", C: "f5", D: "e5 f#5", E: "[b5@3 a5]/2", F: "g#5 g5, e4", G: "f#5 g#5, d#4", H: "[f4,b4]@23 ~",
  I: "[f#4,a#4]@3 ~@15 d#4 [e4,f#4] g#4 [a4,b4] [c#5,d#5] e5", J: "[g#5, f#5 ~@47]/2", K: "b5 ~@7",
  L: "[g#3,g#4,f5,c6]/2", M: "[[d#3,d#5]@7 [e3,e5], [g4,a#5]]/2", N: "[f3,c4,f5,a5]", O: "[g#3,b3,d#5,g#5]",
  P: "[[d#3,g4,d#5]@23 ~ [f#3,f#4,a#4,f#5]@23 ~, a#5@3 ~]/2", Q: "[b2,d#4,b4]@23 ~", R: "e5@3 f#5 ~@2",
  S: "~@6 b5@3 b5 a#5 g#5", T: "[g5@9 f#5@2 ~ e5@3 [d#5,b5]@37 ~@20]/3",
})).s("gm_string_ensemble_1").gain(0.26).pan(0.4)

// other · tubular bells
const tubular_bells = note("<A B@2 ~@21 C D E F ~@8 C D E F ~@9 G H I C D E F ~@6>".pickRestart({
  A: "~@12 g4 ~@2 d4@2 ~ d4@2 b3 ~@3",
  B: "[b3 [d4,g4] ~@4 b3 ~@3 d4@2 ~@2 [d4,g4]@3 ~@2 [b3,d4] g3 d3@5 ~@22, ~@4 d4@5 ~@39]/2", C: "~@12 g#5 ~@5 b4 ~@5",
  D: "e5 ~@23", E: "~@10 f#5 ~ c#5 ~@5 d#5 ~@5", F: "f#5 ~@23", G: "~@18 a#5 ~@5",
  H: "c#6@2 ~@4 f#5 ~@5 a#5 ~@5 c#5@2 ~@4", I: "b4 ~@23",
})).s("gm_tubular_bells").gain(0.39).pan(0.7)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@2 A B ~@8 C@4 D@2 C@4 D E C@4 D@2 C@4 D E C@4 D@2 B F@4 G@2 F H I C@4 D J K L@3
>`.pickRestart({
  A: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ d#4 ~ c#4 ~", B: "b3 ~@23",
  C: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  D: "c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~", E: "c#4 ~@23",
  F: "d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~ d#4 ~",
  G: "f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  H: "f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 ~", I: "f#4 ~@23",
  J: "c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~ c#4 ~@11", K: "~@12 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  L: "[b3 ~@2 b3 ~ b3 ~ b3 ~ b3 ~@2 b3 ~@2 b3@36 ~@21]/3",
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.7)

// bass · synth bass 2
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P I Q R S T U K L M N O P I V R S T W K L M N O P X Y Z AA AB AC AD AE AF AG K L M N
  O AH@2 AI@3
>`.pickRestart({
  A: "b1@4 a#1 g#1 f#1@3 e1 g1 a#1", B: "b1 ~@7", C: "e1@11 b1", D: "e1@19 ~ f#1@2 g#1@2", E: "b1@21 ~ f#2@2",
  F: "b1@3 c2", G: "c#2@21 ~ d#2@2", H: "e2 f#2", I: "b1@7 ~ c#2@2 d#2@2 e2@7 ~ d#2@2 c#2@2", J: "b1 ~@8 b1@3",
  K: "e1@5 g#1 c#2@3 b1@3", L: "e1@5 g#1 b1@4 g#1 f#1", M: "b1@5 d#2 g#2@3 f#2@3", N: "b1@5 d#2 f#2@3 d#2 b1 c2",
  O: "c#2@5 f2 a#2@3 g#2@3", P: "e2@5 g2 f#2@4 d#2 c#2", Q: "b1 a1 g#1 f#1", R: "e1@9 ~ b1@2 e2@12",
  S: "b1@9 ~ b1@2 g#1@6 d#2@6", T: "c#2@9 ~ g#2@2 c#3@7 ~ g#2@2 c#2@2", U: "f#2 ~@11", V: "b1@5 f#1 b1@4 g#1 f#1",
  W: "f#2 ~@8 b1@3", X: "b1@2 ~@10 d#2@7 ~ c2@2 a#1@2", Y: "g#1@5 c2 f2@3 d#2@3", Z: "g#1@5 c2 d#2@3 f2 d#2 c2",
  AA: "d#2@5 g2 c3@3 a#2@3", AB: "d#2@5 g2 a#2@3 g2 d#2 e2", AC: "f2@5 a1 d2@3 c2@3", AD: "g#1@5 b1 f2@3 d#2@2 a#1",
  AE: "d#2@5 g2 c3@3 a#2@2 g2", AF: "f#2 f#1 f#2 f#1", AG: "b1@23 ~", AH: "[e2@6 f#2@9 f#1@3 b1@3 b1 a#1 g#1]/2",
  AI: "[g1@9 f#1@2 ~ e1@2 ~ b1@37 ~@20]/3",
})).s("gm_synth_bass_2").gain(0.64)

// other · pad poly
const pad_poly = note(`<
  ~@2 A B ~@14 C D E F G H I@2 J K L M N O P F G H I@2 J K L M Q R S T U V W T X Y I@2 J K L Z AA AB@3
>`.pickRestart({
  A: "f#4 b3 d#4 f#4 b3 d#4 f#4 a#3 c#4 [e4,g4] [d#4,f#4] [c#4,e4], [b2,b4]@2 [f#3,a#4] ~", B: "[b3,d#4] ~@7",
  C: "[b3,d#4]@5 ~ [b3,d#4]@2 [c#4,e4]@2 [d#4,f#4]@2 [e4,g#4]@5 ~ [e4,g#4]@2 [d#4,f#4]@2 [c#4,e4]@2", // B C#m D#m E D#m C#m
  D: "[b3,d#4] [b4,d#5] [c#5,e5] [d#5,f#5]", E: "[e5,g#5] [e5,g5]", F: "[d#5,f#5] [d#5,g#5]", G: "[f5,g#5]",
  H: "[c#5,f#5] ~@11", I: "e4 b3 g#3 e4 b3 g#3 e4 b3 g#3 e4 b3 g#3", J: "d#4 b3 f#3 d#4 b3 f#3 d#4 b3 f#3 d#4 b3 f#3",
  K: "d#4@2 b3@2 f#3@2 d#4@2 b3@2 f#3@2 d#4@2 b3@2 f#3@2 d#4@2 b3@2 f#3 ~",
  L: "f4 c#4 g#3 c#4 g#3 f3 c#4 g#3 f3 c#4 g#3 f3", M: "e4 b3 g3 e4 b3 g3 f#4 c#4 a#3 f#4 c#4 a#3",
  N: "d#4@2 b3@2 f#3@2 [b3,d#4]@2 [c#4,e4]@2 [d#4,f#4]@2 [e4,g#4]@5 ~ [e4,g#4]@2 [d#4,f#4]@2 [c#4,e4]@2", // B C#m D#m E D#m C#m
  O: "~ b3 f#3 f#4 d#4 b3 f#3 a3 b3 d#4 b3 f#3, d#4@4 ~@2 d#4@3 ~@3", P: "[e5,g#5] [e5,g5], e3", Q: "b3 ~@7",
  R: "~ d#4 c4 g#4 d#4 c4 g#4 d#4 c4 g#4 d#4 c4", S: "g#4 d#4 c4 g#4 d#4 c4 g#4 d#4 c4 g#4 d#4 c4",
  T: "g4 d#4 a#3 g4 d#4 a#3 g4 d#4 a#3 g4 d#4 a#3",
  U: "g4@2 d#4@2 a#3@2 g4@2 d#4@2 a#3@2 g4@2 d#4@2 a#3@2 g4@2 d#4@2 a#3 ~", V: "a4 f4 c4 f4 c4 a3 f4 c4 a3 f4 c4 a3",
  W: "g#4 d#4 b3 g#4 d#4 b3 g#4 d#4 b3 g#4 d#4 b3",
  X: "~ c#4 a#3 a#4 f#4 c#4 a#3 c#4!2 f#4 c#4 a#3, f#4@4 ~@2 f#4@3 ~@3", Y: "b3", Z: "e4 b3 g3 e4 b3 g3 f#3@3 ~@3",
  AA: "~@6 d#4 b3 f#3 d#4 b3 f#3", AB: "[e4@2 ~ b3@2 g3@2 e4@2 b3@3 g3@3 [b3,d#4]@37 ~@20]/3",
})).s("gm_pad_poly").gain(0.52).pan(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@12 A B C D E F G H I J K L A B C D E F G M I J K L A B C D E F N O P Q R S T U V W A B C D E X Y Z@3
>`.pickRestart({
  A: "~ g#3 b3 e4 ~ g#3 ~@2 b3 ~ b3 g#3, e3@4 ~@4 b3@4 e3@9 ~@3, ~@7 g#3@2 e4@2 ~",
  B: "~ g#3 b3 ~ b3 g#3 ~ g#3 b3 ~ b3 g#3, e3@4 ~@2 e4@4 ~@2 e3@4 ~@2 e4@5 ~",
  C: "f#3 b3 d#4 f#4 d#4 b3 f#3 b3 d#4 f#4 d#4 b3", D: "f#3 b3 d#4 f#4 d#4 b3 f#3 b3 d#4 f#4 ~ b3, ~@5 d#4",
  E: "~ g#3 c#4 f4 c#4 g#3 ~ g#3 c#4 f4 c#4 g#3, c#3@8 ~@4 c#3@9 ~@3",
  F: "~ g3 b3 e4 b3 g3 ~ a#3 c#4 e4 ~ a#3, e3 ~@2 f#3 ~ c#4", G: "~ b3 d#4 f#4 d#4 b3 e3 g#3 b3 e4 b3 g#3, f#3@7 ~@17",
  H: "f#3@11 ~@13", I: "~ g#3 b3 e4 b3 g#3 ~ g3 b3 e4 b3 g3, e3@8 ~@4 e3@9 ~@3",
  J: "~ f#3 b3 d#4 b3 f#3 ~ g#3 b3 d#4 ~ g#3, b2 ~@2 g#2 ~ b3",
  K: "~ g#3 c#4 f4 c#4 g#3 c#3 g#3 c#4 f4 c#4 g#3, c#3@7 ~@17", L: "f#3 ~@7",
  M: "~ b3 d#4 f#4 d#4 b3 ~ a3 d#4 f#4 d#4 a3, f#3@7 ~@5 f#3@7 ~@5", N: "[b2,b3]@3 ~@10 g4@11, ~ [d#3,a#3,d#4]",
  O: "~ c4 d#4 g#4 ~ c4 ~@2 d#4 ~ d#4 c4, ~@8 d#4@4 g#3@9 ~@3, ~@7 c4@2 g#4@2 ~",
  P: "~ c4 d#4 ~ d#4 c4 ~ c4 d#4 ~ d#4 c4, g#3@5 ~ g#4@4 ~@2 g#3@4 ~@2 g#4@5 ~",
  Q: "a#3 ~ g4 a#4 g4 d#4 a#3 ~ g4 a#4 g4 d#4, ~@2 d#4@5 ~@7 d#4@4 ~@6",
  R: "a#3 ~ g4 a#4 g4 d#4 a#3 ~ g4 a#4 ~ d#4, ~ d#4@2 ~@4 d#4@2 ~ g4@2",
  S: "~ c4 f4 a4 f4 c4 ~ c4 ~ a4 f4 c4, f3@8 ~@4 f3@9 ~@3, ~@4 f4 ~",
  T: "~@2 d#4 g#4 d#4 b3 ~ b3 d#4 g#4 ~ b3, g#3 ~@2 g#3 ~@2, ~ b3@2 ~@7 d#4@2",
  U: "~@2 g4 a#4 g4 d#4 ~@2 g4 a#4 g4 d#4, a#3@7 ~@5 a#3@7 ~@5, ~ d#4@2 ~@4 d#4@2 ~@3",
  V: "~@2 f#4 a#4 f#4 c#4 ~ c#4 f#4 a#4 f#4 c#4, a#3@7 ~@5 a#3@7 ~@5, ~ c#4@2 ~@9", W: "b3@7 ~@17",
  X: "~ g3 b3 e4 b3 g3 f#3@2 ~@4, e3 ~@5", Y: "~@7 b3 d#4 f#4 d#4 b3, ~@12 f#3@7 ~@5",
  Z: "[e3@3 g3@2 b3@2 e4@3 b3@2 g3@3 [b2,f#3,b3]@36 ~@21]/3", // B5
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@2 A B C@7 B C@11 B C@11 B C@5 D B C@8 E C@6 F G ~@2>".pickRestart({
  A: "x!2", B: "x", C: "x ~@4 x!2 ~@5", D: "x ~@4 x!2 ~ x ~@3", E: "x!4", F: "~@6 x ~@4 x", G: "x ~@4 x ~@2",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct("<~@12 [~ x ~ x]!7 [~@3 x ~@5 x!2 ~] [~ x ~ x]!3 ~ [~ x ~@2]!8 ~@30>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@24 A@7 ~ B@3 ~ B@5 C ~ B@8 ~ B@5 D A E ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@3 x ~@5 x!3", D: "~ x ~@2", E: "~@7 x ~@16",
})).gain(0.56)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~@16 B ~@11 C ~@3 D ~@14 A D ~@5 E ~ F ~@2>".pickRestart({
  A: "~@11 x", B: "~@5 x", C: "~@8 x ~ x!2", D: "~@3 x", E: "~@4 x!2 ~@6", F: "~@7 x ~ x ~@2 x ~@11",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A ~@7 A ~@3 A ~@7 B ~@3 A ~@6 B ~@8 C ~@5 D ~ E ~@2>".pickRestart({
  A: "~@11 x", B: "x ~@10 x", C: "x", D: "~ x", E: "~@5 x ~@2",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@2 [~@9 x!2 ~] ~@16 [~@3 x] ~@11 [~@2 x ~@2 x!2 ~@5] ~@30>").gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@2 A ~@21 A ~@11 A ~@5 A@2 ~@8 A ~@4 B ~ C ~@2>".pickRestart({
  A: "x", B: "~ x", C: "~@5 x ~@2",
})).gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@11 A ~@11 A B@8 ~@3 A B@6 A B@8 A B@5 C D E ~@2>".pickRestart({
  A: "x", B: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", C: "x ~ x!3 ~ x ~ x ~ x ~@13",
  D: "~@12 x ~ x!3 ~ x ~ x ~ x ~", E: "x ~@2 x!3 ~ x ~ x ~@2 x ~@11",
})).gain(0.32)

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

stack(
  pad_halo, string_ensemble_1, tubular_bells, electric_guitar_muted, bass, pad_poly, acoustic_guitar_steel, kick, rim,
  snare, hihat, mid_tom, open_hat, high_tom, crash, ride, tambourine
)

More by CORDALIS,COSTA