Strudelify

Kiss

Vengaboys

KeyB♭ majorTempo143 bpm
0:00/0:00
// Kiss — Vengaboys
// 143 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 13 Doctor Solo -> lead 8 bass lead; ch 15 Doctor Solo -> lead 8 bass lead
// note: Full arrangement: all 187 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(143/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 · synth bass 2
const bass = note(`<
  ~@2 A B A B A B C D A B A B A B A B A B A B A B A B E F G H I F J C@2 F K L M N O P Q N O R S C T C U@2 V W C F X Y C
  F J H C F X Y C F J Z A B A ~ M N O P Q N O R S C T C U@2 V W C F X Y C F X Y C F X Y C F J H C F X Y C F X Y A B A B
  A B A B A B A B A B A H C F X Y C F J Z C F X Y C F X Y C F X Y C F J AA A B A B A B A B A B A B A B A B A B A B A B A
  B AB ~@8
>`.pickRestart({
  A: "~@2 bb1 ~@3 bb1@2 ~@2 bb1@2 ~@2 bb1 ~", B: "~ f1 ~ g1 ~ ab1 ~ a1", C: "~ bb1 ~ bb1 ~ bb1 ~ bb1",
  D: "~@2 f1@2 ~@2 g1 ~ g1 ~ ab1@4 a1 ~", E: "~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1 ~", F: "~ f1 ~ f1 ~ f1 ~ f1",
  G: "~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~@3 eb1@2", H: "bb1@7 ~", I: "~@2 bb1 ~@3 bb1 ~@3 bb1@2 ~@2 bb1@2",
  J: "~ eb1 ~ eb1 ~ eb1 ~ eb1", K: "~@2 eb1 ~@3 eb1 ~@3 eb1 ~@3 eb1@2", L: "bb1@11 ~@5",
  M: "~@2 bb1@2 ~@2 bb1 ~@3 bb1 ~@3 d2@2", N: "~ d2 ~ d2 ~ d2 ~ d2", O: "~ g1 ~ g1 ~ g1 ~ f1", P: "~ f1 ~ f1 ~ f1 ~ c2",
  Q: "~ bb1 ~ bb1 ~ bb1 ~ d2", R: "~@2 f1@2 ~@2 f1@2 ~@2 f2 ~@3 f2@2", S: "~ d2 ~ d2 ~ d2 ~ c2",
  T: "~ d2 ~ d2 ~ c2 ~ bb1", U: "~ ab1 ~ ab1 ~ ab1 ~ ab1", V: "~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~", W: "f1@7 ~",
  X: "~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ eb1@2", Y: "~@2 bb1@2 ~@2 bb1@2 ~@2 bb1 ~@3 bb1@2",
  Z: "~@2 bb1 ~@3 bb1@2 ~@2 bb1 ~@3 bb1 ~", AA: "~@2 bb1@2 ~@2 bb1 ~@3 f1 ~@3 g1 ~", AB: "bb1@3 ~@13",
})).s("gm_synth_bass_2").gain(0.4)

// chords · synth brass 2
const synth_brass_2 = note(`<
  ~@38 A@2 B@2 C@2 D@2 E F G H I J K L ~@20 A@2 B@2 C@2 D@2 E F G H I J K L ~@97
>`.pickRestart({
  A: "[[f3,bb3,d4]@3 ~@11 [f3,a3,d4]@4 ~@14]/2", B: "[[g3,bb3,d4]@2 ~@5 [a3,c4,f4]@2 ~@7]/2",
  C: "[[f3,bb3,d4]@3 ~@11 [f3,a3,d4]@5 ~@13]/2", D: "[[g3,bb3,d4]@3 ~@11 [a3,c4,f4]@4 ~@14]/2", E: "[f3,a3,d4]@3 ~@13",
  F: "[f3,bb3,d4] ~@7", G: "[f3,a3,d4] ~@3", H: "[bb3,d4,f4]@7 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@2 [bb3,d4,f4] ~",
  I: "[ab3,c4,eb4]@7 ~", J: "~@10 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", K: "[bb3,c4,f4]@15 ~", L: "[a3,c4,f4]@5 ~@3",
})).s("gm_synth_brass_2").gain(0.3)

// other · pad new age
const pad_new_age = note(`<
  ~@26 A B C@2 ~@15 D@2 ~@2 E@3 F G ~@27 D@2 ~@2 E@3 F G ~@23 D@2 ~@6 H ~@39 H ~@7 H ~@7 H ~@7 H ~
>`.pickRestart({
  A: "f6@3 ~ f6@3 ~ f6@4 d6@2 eb6@2", B: "f6 ~ bb6@3 ~ a6@3 ~ a6@2 g6@2 f6 ~",
  C: "[g6@5 ~@5 bb5 ~ g6@2 f6@4 ~@8 bb5@2 g6@2 f6@2]/2", D: "[~@10 f5 c6 f6 c7 c6 f6@4 ~@13]/2",
  E: "[~@17 [ab5,eb6]@18 ~@13, ~@15 ab4@20 ~@13, ~@16 [c5,eb5]@19 ~@13]/3", // Ab5 Cm
  F: "~@2 eb6@11 ~@3, [f4,f5]@13 ~@3, ~ [bb4,bb5]@12 ~@3", G: "~ [a5,f6]@9 ~@6, [f4,c5,f5]@5 ~@3",
  H: "~@9 bb5 f6 bb6 bb5 f6 bb6 ~",
})).s("gm_pad_new_age").gain(0.28)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@56 A B ~@2 C@2 ~@30 A B ~@2 A B ~@2 A B ~@2 C@2 ~@26 A B ~@2 C@2 ~@2 A B ~@2 A B ~@2 A B ~@2 C@2 ~@33
>`.pickRestart({
  A: "~@2 eb5@2 d5 ~ bb4 ~ eb5@2 ~ d5@2 ~ bb4@2", B: "~@2 eb5@2 d5 ~ bb4 ~ eb5@2 ~ d5@3 ~@2",
  C: "[~@2 eb5@2 d5 ~ bb4 ~ eb5@2 ~ d5@2 ~ bb4@8 ~@10]/2",
})).s("gm_lead_2_sawtooth").gain(0.3).pan(0.4)

// other · lead 1 square
const lead_1_square = note(`<
  ~@61 A B C D E F G H I ~@35 A B C D E F G H I ~@15 A B C D E F G H I B C D E F G H I B C D E F G H I ~@33
>`.pickRestart({
  A: "~@6 f4 ~ g4@2 f4@2 d4@2 eb4@2", B: "f4@3 ~ f4@2 f4 f4@2 ~ f4 f4@3 bb4@2", C: "a4@3 ~ a4@2 ~ a4@3 f4 f4@3 c5@2",
  D: "g4@3 ~ g4@2 ~ g4@3 eb4 eb4@3 g4 ~", E: "f4@3 ~ f4@2 ~ d4@3 ~ d4 d4@2 eb4 ~",
  F: "f4@2 ~@2 f4@3 ~ f4@2 f4 f4@3 bb4@2", G: "a4@3 ~ a4@2 ~ a4@3 f4 f4@2 ~ c5@2",
  H: "g4@3 ~ g4@2 ~ g4@3 eb4 eb4@2 ~ g4 ~", I: "f4@2 ~ f4@2 ~ d4@4 ~@6",
})).s("gm_lead_1_square").gain(0.39).pan(0.6)

// bass · slap bass 2
const bass_2 = note(`<
  ~@9 A B C B C B C B C B C B C B C B C ~@44 B C B D ~@40 B C B C B C B C B C B C B C B ~@25 B C B C B C B C B C B C B C
  B C B C B C B C B C E ~@8
>`.pickRestart({
  A: "~@8 g1 ~ ab1@3 ~ a1 ~", B: "~@2 bb1 ~@3 bb1@2 ~@2 bb1@2 ~@2 bb1 ~", C: "~ f1 ~ g1 ~ ab1 ~ a1", D: "bb1@15 ~",
  E: "bb1 ~@7",
})).s("gm_slap_bass_2").gain(0.28)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@18 A B C D C E C E ~@88 A B C D C E C E A B C D C E C ~@25 A B C D C E C E A B C D C E C E A B C D C E C E ~@9
>`.pickRestart({
  A: "~@2 bb2@2 ~@2 bb2 ~@3 bb2@2 ~@2 bb2 ~", B: "~@2 f2@2 ~@2 g2 ~@3 ab2 ~@3 a2 ~", C: "~ bb2 ~ bb2 ~ bb2 ~ bb2",
  D: "~ f2 ~ g2 ~ ab2 ~ a2", E: "~@2 f2@2 ~@2 g2@2 ~@2 ab2 ~@3 a2@2",
})).s("gm_lead_8_bass_lead").gain(0.35)

// chords · lead 8 bass lead
const lead_8_bass_lead_2 = note(`<
  ~@2 A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@5 C D E F G H I J ~@8 K L K L M N O P Q R S T Q R S ~ Q R S T Q R
  S ~ B ~ B ~@9 K L K L M N O P Q R S T Q R S T Q R S T Q R S ~ Q R S T Q R S T B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ Q R S T
  Q R S ~ Q R S T Q R S T Q R S T Q R S ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@2
>`.pickRestart({
  A: "~@8 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~", // Bb
  B: "[f4,bb4,d5] ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~", // Bb
  C: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] [d4,f4]!2 ~ [d4,f4,bb4] ~, ~@11 bb4@2 ~@3", // Bb Dm Bb
  D: "~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] c4!2 ~ [c4,f4,a4] ~, ~@11 [f4,a4]@2 ~@3", // F
  E: "~@2 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] ~@3 [eb4,g4,bb4] [eb4,g4]!2 ~ [eb4,g4,bb4] ~, ~@11 bb4@2 ~@3", // Eb
  F: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] [d4,bb4]!2 ~ [d4,f4,bb4] ~, ~@11 f4@3 ~@2", // Bb Gm Bb
  G: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4]!3 ~ [d4,f4,bb4] ~", // Bb
  H: "~@2 [f4,a4,c5] ~@3 [f4,a4,c5] ~@3 [f4,a4,c5] a4!2 ~ [f4,a4,c5] ~, ~@11 [f4,c5]@2 ~@3", // F F5
  I: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5]!3 ~ [g4,bb4,eb5] ~", J: "[f4,bb4,d5]@11 ~@5",
  K: "~@2 [f4,a4,d5] ~ [f4,a4,d5] ~@3 [f4,a4,d5] ~ [f4,a4,d5] [f4,a4,d5]@2 ~ [f4,a4,d5] ~", // Dm
  L: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] [f4,bb4,d5]@2 ~ [f4,bb4,d5] ~", // Bb
  M: "~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@3 [eb4,c5] ~ eb4 eb4@2 ~ [eb4,ab4,c5] ~, ~@8 ab4@2 [ab4,c5]@3 ~@3", // Ab Cm Ab
  N: "~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@3 [eb4,ab4,c5] ~ [eb4,ab4,c5] [eb4,ab4,c5]@2 ~ [eb4,ab4,c5] ~", // Ab
  O: "~@2 [f4,bb4] ~ [f4,bb4,c5] ~@3 [f4,bb4,c5] ~ [f4,bb4,c5] [f4,bb4,c5]@2 ~ [f4,bb4,c5] ~", P: "[f4,a4,c5]@11 ~@5",
  Q: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~@2 [f4,bb4,d5]@2 ~ [f4,bb4,d5] ~", // Bb
  R: "~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@3 [f4,a4,c5] ~@2 [f4,a4,c5]@3 [f4,a4,c5] ~", // F
  S: "~@2 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~@3 [eb4,g4,bb4] ~@2 [eb4,g4,bb4]@2 ~ [eb4,g4,bb4] ~", // Eb
  T: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~@3 [f4,bb4] ~@2 [f4,bb4]@2 ~ [d4,f4] ~", // Bb Bb5 Dm
})).s("gm_lead_8_bass_lead").gain(0.26).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@18 A@8 B C D E B C D E F G H I ~@16 J K L M N O P J@2 K L M N O P J Q@4 ~@16 J K L M J K L M J K L M N O P J@2 K L M
  J K L M A@8 R@8 J K L M N O P J@2 K L M J K L M J K L M N O P J A@24 ~@9
>`.pickRestart({
  A: "[[bb4,bb5]@62 ~ [bb4,bb5,bb6]@63 ~@2]/8", B: "[f4,bb4,d5,f5], [bb1,bb2]@7 ~",
  C: "~ [f3,f4,a4,c5,f5]@15, ~ f2@13 ~@2", D: "[eb2,g4,bb4,eb5]@15 ~, eb3@13 ~@3", E: "[bb1,bb2,f4,bb4,d5]@15 ~",
  F: "[bb1,bb2,f4,bb4,d5,f5]@15 ~", G: "[f2,f4,a4,c5,f5]@15 ~", H: "[eb2,g4,bb4,eb5]", I: "[bb1,f4,bb4,d5]@5 ~@3",
  J: "[bb3,d4,f4]@15 ~", K: "[a3,c4,f4]@15 ~", L: "[g3,bb3,eb4]@7 ~", M: "[f3,bb3,d4]@7 ~", N: "[bb3,d4,f4]@7 ~",
  O: "[a3,c4,f4]@7 ~", P: "[bb3,eb4,g4]@7 ~", Q: "[[bb4,bb5,bb6]@59 ~@5]/4",
  R: "[[bb4,bb5]@62 ~@50 [bb3,d4,f4]@15 ~, ~@63 [bb4,bb5,bb6]@63 ~@2]/8", // Bb
})).s("gm_synth_strings_1").gain(0.22).pan(0.4)

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

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

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A@7 B A@7 C A@8 ~@8 A@3 ~ A@7 D A@7 ~ A@7 ~ A@11 ~@5 A@3 D A@7 ~ A@15 ~ A@23 ~ A@23 ~ A@24 ~@9
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~", C: "~ x ~@2", D: "~@2 x ~ x ~@2 x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@53 A ~@15 A ~@19 A ~@23 A ~@23 A ~@15 B ~@33>".pickRestart({
  A: "~@3 x", B: "~@3 x!2 ~ x ~",
})).gain(0.45)

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

// drums · open hat
const open_hat = s("oh").struct("<~@33 [~@7 x] ~@3 x ~@149>").gain(0.5)

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

// drums · congas
const congas = s("conga:13").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@45 A ~ A ~@41 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@10
>`.pickRestart({
  A: "~@10 x!2 ~@4",
})).gain(1.27)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@45 A ~ A ~@41 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@10
>`.pickRestart({
  A: "~@3 x",
})).gain(1.27)

// drums · whistle
const whistle = s("ballwhistle:1").struct(`<
  ~@10 A ~ A ~ A ~ A ~@97 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@10
>`.pickRestart({
  A: "x ~ x ~@3 x ~ x ~@2 x ~@2 x ~",
})).gain(0.45)

stack(
  bass, synth_brass_2, pad_new_age, lead_2_sawtooth, lead_1_square, bass_2, lead_8_bass_lead, lead_8_bass_lead_2,
  synth_strings_1, kick, snare, clap, low_tom, hihat, open_hat, crash, congas, congas_2, whistle
)

More by Vengaboys