Strudelify

Kein Typ fur eine Nacht

Howard Carpendale

KeyB majorTempo108 bpm
0:00/0:00
// Kein Typ fur eine Nacht — Howard Carpendale
// 108 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "WARM PAD" pad warm (copy of ch 6 "E.PIANO 2" epiano2)
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@8 A B C D E F G@2 H I J K A L M N O P Q R S T U V O P Q R W X Y Z R AA AB@2 AC AD AE AF O P Q R S T U V O P Q R AG X
  Y AH AI AJ AK@2 AL@2 AM@2 AC AN Q AO AP AQ AR@2 A AS AT AU S AV AW AA AC AN Q AO AX@2 AY AZ ~@2
>`.pickRestart({
  A: "b1@5 ~ b1 ~ b1@7 ~", B: "g#1@4 ~@2 g#1 ~ g#1@4 d#2@2 c#2@2", C: "b1@5 ~ b1 ~ a#1@7 ~", D: "g#1@5 ~ g#1 ~ g#1@7 ~",
  E: "b1@5 ~ b1 ~ b1@4 d#2@2 f#2@2, ~@12 c#2 ~@3", F: "g#2@5 ~ g#2@6 g#1@4",
  G: "[e1@5 ~ f#1@7 ~ g#1@12 g#1 ~ g#1@2 a#1@2]/2", H: "b1@5 ~ b1 ~ b1 ~ b1@2 d#2@2 f#2@2",
  I: "g#1@5 ~ g#1 ~ g#1@4 ~@4", J: "b1@5 ~ b1 ~ f#1@2 f#1@6", K: "g#1@2 a#1@2 b1@2 c#2 d#2",
  L: "g#1@4 ~@2 g#1 ~ g#1 ~ g#1@2 b1@2 f#1@2", M: "e1 f#1", N: "g#1@8 ~@2 g#1 ~ g#1@2 a#1@2", O: "b1@5 ~ b1 ~ b1@8",
  P: "e1@5 ~ e1 ~ e1 ~ e1@5 ~", Q: "e1@5 ~ e1 ~ e1@7 ~", R: "b1@5 ~ b1 ~ b1 ~ b1@5 ~", S: "b1@5 ~ b1@2 a#1@7 ~",
  T: "g#1@5 ~ g#1 ~ g#1@4 f#1@4", U: "e1@7 ~ f#1@6 ~@2", V: "g#1@2 g#1@2 g#2@2 g#1@2 ~@2 g#1@2 g#2 ~ a#1@2",
  W: "b1@5 ~ b1@2 a#1@8", X: "g#1@4 g#2@2 g#1 ~", Y: "e1@5 ~ e1@2 f#1@7 ~",
  Z: "g#1@2 g#1@4 ~@2 g#1 ~ g#1@4 a#1 ~, ~@3 g#2@2 ~@3", AA: "g#1@5 ~ g#1 ~ g#1 ~ g#1@4 a#1@2",
  AB: "[b1@6 f#1@7 ~ g#1@4 d#2@2 a#1@4 b1@6 ~@2]/2", AC: "b1@5 ~ b1 ~ b1 ~ b1@6", AD: "g#1@5 ~ g#1 ~ g#1@6 ~@2",
  AE: "e1@7 ~ f#1@7 ~", AF: "g#1@5 g#2 g#1 a#1", AG: "b1@2 b2 ~ b2@2 a#2@10",
  AH: "g#1@2 g#1@4 ~@2 g#1 ~ g#1 ~ g#1 ~ g#1 ~, ~@3 g#2@2 ~@3", AI: "b1@5 ~ c#2@10", AJ: "d#2@6 g#1@9 ~",
  AK: "[b1@3 a#1@4 e2@4 b1@4 ~]/2", AL: "[b1@6 c#2@8 d#2@8 e2@9 ~]/2",
  AM: "[b1@6 a#1@8 g#1@7 ~ g#1 ~ g#1 ~ g#1 ~ g#1@2 a#1@2]/2", AN: "e1@5 ~ e1 ~ e1@6 ~@2", AO: "b1@5 ~ b1 ~ b1@6 ~@2",
  AP: "b1@2 f#2@2 b2@2 a#2@4 a#1 ~ a#1@4", AQ: "g#1@5 ~ g#1@9 ~",
  AR: "[e1@5 ~ f#1@7 ~ g#1@4 g#1@2 g#2@2 g#1 ~ g#1@2 g#2@2 g#1@2 a#1@2]/2", AS: "e1@5 ~ e1 ~ e1 ~ e1@4 ~@2",
  AT: "e1@4 ~@2 e1 ~ e1@7 ~", AU: "b1@5 ~ b1 ~ b1@4 b1@3 ~", AV: "g#1@5 ~ g#1 ~ g#1@8", AW: "e1@5 ~ e1@2 f#1@8",
  AX: "[b1@2 f#2@2 b2@2 a#2@4 a#1@3 ~ g#1@7 ~ g#1 ~ g#1 ~ g#1@2 b1@2 f#1@2]/2", AY: "e1@7 ~ f#1@6 g#1@2",
  AZ: "g#1@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.53)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@23 A@2 ~@22 A@2 ~@22 A@2 ~@25>".pickRestart({
  A: "[[g#2,g#3,d#4,g#4]@19 ~@13]/2", // G#5
})).s("gm_pad_sweep").gain(0.32).pan(0.4)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A@4 B@2 C@4 D E F@2 G H I ~ D E F@2 G H I J@3 K@2 L M H J@3 K@2 L M N@2 D E F@2 G H I J@3 K@2 O M H J@3 K@2 O M P@4
  B@2 Q@3 J@3 K@2 O M R J@3 K@2 O M R J@3 K@2 O S@3
>`.pickRestart({
  A: "[~ c#3 d#3 g#2 ~@2 e2@2, b2@8 ~@24 b2@7 ~ a#2@8 ~@16, ~@2 f#3@30 ~@2 f#3@4 ~@9 f#3@17, ~@4 b3@29 ~@3 b3@9 ~ b3@18, ~@6 e4@10 d#4@18 ~@4 c#4@25 ~]/4",
  B: "[~@8 d#3@3 [e3,f#3,g#3]@5, b2@8 c#3@9 ~@15, ~@2 f#3@13 ~@17, ~@4 b3@11 ~@17, ~@6 e4@8 f#4@9 ~@9]/2", // E
  C: "[b2@3 [a#2,a#3]@4 [g#2,g#3]@9 [f#3,b3,d#4]@15 ~, b3 ~@7]/4", D: "[b3,d#4] [a#3,c#4], f#3@15 ~",
  E: "[g#3,b3,d#4]@7 ~", F: "[[f#3,b3,d#4]@15 ~]/2", G: "[e3,g#3,b3]@8 [f#3,a#3,c#4]@7 ~", H: "[f#3,b3,d#4]",
  I: "[f#3,b3,d#4] ~@15", J: "[[b3,e4]@36 [f#3,b3,d#4]@11 ~, g#3@17 ~@7]/3", K: "[f#3,b3,d#4]/2",
  L: "b3@7 ~ c#4@8, f#3@7 ~, d#4 ~@7 a#3@6 ~@2", M: "[g#3,b3,d#4]", N: "[[b3,d#4] ~@31, f#3@15 ~]/2",
  O: "[b3,d#4] c#4, f#3@15 ~, ~@4 a#3@3 ~", // B
  P: "[~@4 c#3@4 ~@3 g#2@4 ~@9 e2@8, b2@8 ~@8 d#3@8 ~@8 b2@7 ~ a#2@7 f#3@17, ~@4 b3@29 ~ f#3@4 c#4@25 ~, ~@6 e4@10 d#4@18 ~@2 b3@9 ~ b3@18]/4",
  Q: "[b2@3 [a#2,a#3]@4 [g#2,g#3]@9 [f#3,b3,d#4]@8, b3 ~@5]/3", R: "[b3,d#4] ~@15, f#3", S: "[[g#3,b3,d#4]@15 ~]/3",
})).s("gm_epiano2").gain(0.38).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@4 A@2 ~@13 B ~@7 C D E F G ~@3 C D E F G ~@3 B ~@7 C D E F G ~@3 C D E F G H@2 I@2 ~ J@2 K@2 ~@2 C D E F G L M N O D
  E F G ~@3 C D E F P@2 ~
>`.pickRestart({
  A: "[[e3,f#3]@2 b3@21 ~@9]/2", B: "[f#3,g#3] ~ g#4 ~ [g#3,a#3]@2 a#4 ~ [a#3,b3]@2 b4 ~ [b3,c#4] ~ d#4@2",
  C: "~@10 f#3 ~ [f#3,g#3]@2 b3@2", D: "d#4@7 ~ [d#4,f#4]@7 ~, ~@8 e4 ~@7", E: "g#4 d#4, f#4 ~@15",
  F: "d#4@7 ~ c#4@8, ~@8 b3 ~@7", G: "b3@5 ~@3", H: "[~@4 [f#5,g#5]@2 f#5@17 ~@9]/2", I: "[~@2 [c#5,d#5] c#5@8 ~@5]/2",
  J: "[~@10 b4@11 ~@11, ~@10 a#4 ~@21]/2", K: "[~@10 [f#4,g#4]@2 d#4@2 f#4@9 ~@9]/2", L: "g#4@3 f#4@4 ~, f#4 ~@15",
  M: "g#4@3 f#4@3 ~@2, f#4 ~@15", N: "e4@3 d#4@3 c#4 ~", O: "g#3@6 f#3@4 f#3 ~ [f#3,g#3]@2 b3@2, f#3 ~@15",
  P: "[b3@13 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.18).pan(0.7)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG Z AA AB AC AD AE AF AH AI AJ AK AL AM AN AO
  AG Z AA AB AC AD AE AF AG Z AA AB AC AD AE AF ~@2 AP AQ E AR G AS AG Z AA AB AC AD AE AF AG Z AT AB AC AD AE AF AG Z
  AA AB AC AD AE AU@3
>`.pickRestart({
  A: "f#3 ~ f#3 ~ [f#3,b3] ~ [f#3,b3]@3 ~ f#3 ~ f#3 ~ [f#3,b3]@2", B: "~@4 f#3 ~ [f#3,b3]@3 ~ f#3 ~@3 [f#3,b3]@2",
  C: "~@2 f#3 ~ f#3 ~ [f#3,b3]@3 ~ f#3 ~ f#3 ~ [f#3,b3]@2", // B5
  D: "~@2 [f#3,b3] ~ f#3 ~ [f#3,b3]@2 ~@2 c#4 ~ d#4@4, ~@12 c#4 ~@3", // B5
  E: "~@2 f#3 ~ f#3 ~ [f#3,b3]@3 ~@3 f#3 ~ [f#3,b3]@2", // B5
  F: "~@4 f#3 ~ [f#3,b3]@4 ~@2 [b3,c#4]@4, ~@10 b2@5 ~, ~@11 [e3,f#3]@5", // B5 Bsus2 Esus2
  G: "~@4 f#3 ~ [f#3,b3]@3 ~ [f#3,b3] ~ f#3 ~ [f#3,b3]@2", H: "~@4 f#3 ~ [f#3,b3]@2 ~@2 b3 ~ d#4@3 ~, ~@12 c#4 ~@3",
  I: "[f#3,b3] ~@3 b3 ~ [f#3,b3,c#4]@3 ~ c#4 ~ [f#3,b3,c#4] ~@3", // B5 F#sus4
  J: "[f#3,b3,c#4] ~@3 [f#3,b3] ~ [f#3,b3,c#4]@3 ~@3 [f#3,b3,c#4]@2 ~@2", // F#sus4 B5 F#sus4
  K: "[f#3,b3] ~@3 [f#3,b3] ~ [f#3,a#3,c#4]@4 ~@2 [f#3,a#3,c#4] ~@3", // B5 F#
  L: "[g#3,b3,d#4] ~@5 [g#3,b3,d#4]@4 ~@2 [g#3,b3,d#4]@2 ~@2", // G#m
  M: "[f#3,b3] ~@3 [f#3,b3] ~ [f#3,b3]@3 ~@3 b3@2 f#3 ~, ~@12 f#3 ~@3", // B5
  N: "f#3 ~@3 f#3 ~ [f#3,b3]@3 ~@3 [f#3,b3]@2 ~@2", O: "e3@2 e3 ~ [a#3,c#4]@4, b3 ~, g#3@3 ~ f#3@3 ~",
  P: "[g#3,d#4] ~@5 [g#3,d#4]@4 g#3 ~ [g#3,d#4]@2 ~@2", // G#5
  Q: "b3 ~@3 [f#3,b3] ~ b3 ~ [b3,c#4]@4 f#3 ~ [f#3,b3,c#4]@2, ~@4 f#3 ~@3", // B5 Bsus2 F#sus4
  R: "[f#3,d#4] ~@3 f#3 ~ [f#3,b3,c#4]@3 ~ f#3 ~ [b3,c#4]@3 ~, ~@12 f#3 ~@3", // D#m F#sus4 Bsus2
  S: "[f#3,b3] ~@3 [f#3,b3] ~ [f#3,a#3,c#4]@5 ~ [f#3,a#3,c#4] ~@3", // B5 F#
  T: "[f#3,b3,d#4] ~@5 [g#3,b3,d#4]@4 ~@2 [g#3,d#4]@2 ~@2", // B G#m G#5
  U: "[f#3,b3] ~ f#3 ~@3 b3@5 ~ b3@4, ~@6 f#3@3 ~@3 f#3@2 ~@2", V: "[g#3,d#4] ~@5 [g#3,d#4]@4 ~@2 [g#3,d#4]@3 ~",
  W: "[e3,g#3,b3] [f#3,c#4]", X: "[g#3,d#4], b3 ~@15",
  Y: "[f#3,b3,d#4,f#4] ~ f#3 ~@3 [b3,d#4]@5 ~ [f#3,b3,d#4]@3 ~, ~@6 f#3@3 ~@7", // B
  Z: "[g#3,b3,e4] ~@3 b3 ~ [g#3,b3,e4]@3 ~@3 [b3,e4]@2 g#3 ~, ~@12 g#3 ~@3", // E E5
  AA: "[g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4]@4 ~@2 [b3,e4]@2 g#3 ~, ~@12 g#3 ~@3", // E E5
  AB: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~ [b3,d#4]@5 ~ [f#3,b3,d#4]@2 ~@2, ~@3 f#3 ~@4", // B
  AC: "[f#3,b3,d#4] ~@5 [b3,d#4]@5 ~ [f#3,d#4]@3 ~, ~@3 f#3 ~@4", // B D#m
  AD: "[g#3,d#4] ~@3 [g#3,d#4] ~ [g#3,d#4]@4 ~@2 [g#3,d#4]@3 ~", AE: "[g#3,b3]@5 ~@3 [a#3,c#4]@7 ~, e3@2 ~@6 f#3@3 ~@5",
  AF: "[g#3,d#4]@15 ~", AG: "~@2 f#3 ~@3 [b3,d#4]@5 ~ [f#3,b3,d#4]@3 ~, ~@6 f#3@3 ~@7",
  AH: "~@2 [f#3,b3]@3 ~ [f#3,b3]@3 ~ [f#3,b3]@3 ~ [f#3,b3] ~", // B5
  AI: "b3 ~ [f#3,b3] ~@3 b3@3 ~ [f#3,b3]@3 ~ [f#3,b3]@2, ~@6 f#3 ~@9", // B5
  AJ: "~@2 [f#3,b3] ~ b3@3 ~@3 [f#3,c#4]@3 ~ c#4@2, ~@4 f#3 ~@9 f#3 ~", AK: "~@2 [g#3,d#4]@9 ~ [g#3,d#4]@2 ~@2",
  AL: "b3 ~ [f#3,b3]@2 ~@6 [f#3,b3]@2 ~@2 [f#3,b3]@2", AM: "~@2 g#3 ~ [g#3,d#4]@2 ~@2 [g#3,d#4] ~ [g#3,d#4]@5 ~",
  AN: "[e3,b3] [f#3,c#4]", AO: "c#4 d#4@12 ~@3, g#3@13 ~@3", AP: "~@6 [f#3,b3]@3 ~ f#3 ~ [f#3,b3] ~ [f#3,b3]@2",
  AQ: "~@2 [f#3,b3] ~ f#3 ~ [f#3,b3]@2 ~@2 f#3 ~ [f#3,b3]@2 ~@2", // B5
  AR: "~@4 f#3 ~@6 f#3 c#4@4, ~@6 [f#3,b3]@5 e3@5, ~@10 b2@5 ~, ~@12 b3 ~@3", AS: "~@4 f#3 ~ [f#3,b3]@2 ~@2 b3 ~@5",
  AT: "[g#3,b3,e4] ~@3 [g#3,e4] ~ [g#3,b3,e4]@4 ~@2 [b3,e4]@2 g#3 ~, ~@6 f#3 ~@5 g#3 ~@3", AU: "[[g#3,d#4]@35 ~@13]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.24).pan(0.4)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  A B C ~ D E@3 F G H I J K ~ L M N ~ O P Q ~@2 R S O T U ~ V ~ R S O T U ~ V ~@2 W X ~ Y Z AA ~ R S O T U ~ V ~ R S O T
  U ~ V ~@2 AB AC AD D E@3 R S O T U ~ V ~ R S O T U ~ V ~ R S O T U ~ V ~@3
>`.pickRestart({
  A: "b3 ~@9 b3 ~@5", B: "~@2 [f#3,b3] ~@7 b3 ~ f#3 ~@3", C: "~@2 b3 ~@7 b3 ~@5", D: "~@2 b3 ~@7 [f#3,b3] ~@5",
  E: "~@2 [f#3,b3] ~@13", F: "~@2 [f#3,b3] ~ f#3 ~@5 [f#3,b3] ~@3 [f#3,b3] ~", G: "~@4 c#4 ~@5 f#3 ~@3 f#3 ~",
  H: "~@2 [f#3,b3] ~@7 [a#3,c#4] ~@5", I: "~@2 g#3 ~ [g#3,b3,d#4] ~@5 g#3 ~@5", J: "~@2 [f#3,b3] ~@7 f#3 ~@5",
  K: "b3 ~@3 b3 ~@5 f#3 ~@5", L: "~@4 [g#3,d#4] ~@11", M: "f#3 ~@5 f#3 ~@9", N: "~@14 f#3 ~", O: "~@10 g#3 ~@5",
  P: "~@2 b3 ~ [f#3,b3] ~@5 f#3 ~@5", Q: "~@4 [g#3,d#4] ~@5 g#3 ~@5", R: "~@2 [b3,d#4] ~ [f#3,b3,d#4] ~@11",
  S: "~@2 [g#3,b3] ~ [g#3,e4] ~@5 b3 ~@5", T: "~@10 f#3 ~@5", U: "~@2 f#3 ~ [f#3,b3,d#4] ~@5 f#3 ~@5",
  V: "~@4 e3 ~ a#3 ~@5 f#3 ~@3", W: "f#3 ~@3 b3 ~@3 f#3 ~@7", X: "~@6 f#3 ~ [f#3,c#4] ~@7",
  Y: "f#3 ~@3 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~@7", Z: "~@2 d#4 ~@13", AA: "g#3 ~", AB: "~@7 [f#3,b3]",
  AC: "~@2 [f#3,b3] ~ f#3 ~@5 b3 ~@5", AD: "~@10 b3 ~@5",
})).s("gm_acoustic_guitar_nylon").gain(0.12).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@8 [x!2]!56 ~@8 [x!2]!23 x ~@2>").gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@7 B A@3 C A@3 D A@3 C A D A D A B A E A@3 F A@3 G A@3 F A@3 E A@3 H A@3 I A@3 J ~@7 K A@3 L A@3 D A@3 B A G A M
  A@3 N A@3 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@2 x ~@2 x!2 ~", D: "~@2 x ~@3 x!2", E: "~@4 x ~@5 x ~ x ~ x!2",
  F: "~@2 x!2 ~ x!3", G: "~@4 x ~@7 x!2 ~@2", H: "~@2 x ~ x!2 ~@2 x ~@3 x ~ x ~", I: "~@4 x ~@5 x ~ x!2 ~@2",
  J: "~ x!2 ~@2 x!3", K: "~@5 x!3", L: "~ x ~@2 x ~@7 x ~@2 x", M: "~@4 x ~ x ~@3 x ~ x ~ x!2",
  N: "~@2 x ~ x ~ x ~@3 x ~ x ~ x!2",
})).gain(0.35)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~ x ~ x ~ x ~ x]!8 ~@90>").gain(0.12)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct("<~@64 A B C B C B C B ~@26>".pickRestart({
  A: "~@3 x", B: "x", C: "x ~@2 x",
})).gain(0.27)

stack(
  bass, pad_sweep, epiano2, electric_guitar_clean, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, snare, hihat,
  hihat_soft, crash, ride
)

More by Howard Carpendale