Strudelify

I Know What I Like (In Your Wardrobe)

Genesis

KeyA majorTempo84 bpm
0:00/0:00
// I Know What I Like (In Your Wardrobe) — Genesis
// 84 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 12 "Roto Tom" (taiko drum patch on one pitch) is played as the kit's tom
// note: duplicate parts dropped: ch 11 "Sitar 2" sitar (copy of ch 7 "Sitar 1" sitar)
// note: Full arrangement: all 88 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 pick · "Bass"
const bass = note(`<
  ~@13 A B C A B C D E F G H I J K L M N@2 O ~@3 P Q R S T U V W X G H I J K L M Y Z G H I J K L M N@2 O ~@3 AA AB AC@6
  AD W AE AF AG W AH AI AJ ~@5
>`.pickRestart({
  A: "a1@7 e2", B: "a1@7 a2", C: "a1@15 ~", D: "a1@2 ~@2 a1@2 ~@12 e1 ~ f#1@2 ~@2 a1@6 ~@2", E: "a1 ~ a1@12 a2@2",
  F: "a1@8 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1 ~",
  G: "a1@3 ~@3 a1 ~ b1 ~ c#2 ~@3 c#2 ~ d2@2 e2@2 ~@2 f#2 ~ g2@4 a2@4",
  H: "a1@3 ~@3 a1 ~ b1@2 c#2@2 ~@2 c#2 ~ d2 ~ e2@2 ~@2 f#2 ~ g2@4 a2@4",
  I: "d2@3 ~@3 d2 ~ e2@2 f#2@2 ~@2 f#2 ~ g2@2 a2@2 ~@2 b2 ~ c#3@4 d3@4",
  J: "d2@3 ~@3 d2 ~ e2@2 f#2@2 ~@2 f#2 ~ g2@2 a2@2 ~@2 b2 ~ c#3@4 d3@3 ~",
  K: "a1@2 ~@4 a1 ~ b1@2 c#2@2 ~@2 c#2 ~ d2@2 e2 ~@3 f#2 ~ g2@3 ~ a2@3 ~",
  L: "d2@3 ~@3 d2 ~ e2 ~ f#2@2 ~@2 f#2 ~ g2@2 a2@2 ~@2 b2 ~ c#3@4 d3@4",
  M: "a1@3 ~@3 a1 ~ b1 ~ c#2@2 ~@2 c#2 ~ d2@2 e2@2 ~@2 f#2 ~ g2@3 ~ a2@4", N: "a1@8 a2@8 a1@7 ~ a2@8", O: "a1",
  P: "~@24 a2 ~ f#2@2 ~@2 e2 ~", Q: "a1@7 ~@7 a1 ~ g1@4 a1@3 ~@7 a1 ~", R: "b1@4 a1@3 ~@7 a1 ~ g1@4 a1@2 ~@8 a1 ~",
  S: "b1@3 ~ a1@3 ~@7 a1 ~ g1@4 a1@2 ~@10", T: "a1 ~ b1@2 ~@2 f#2 ~ a2@2 ~@2 a1@12 b1@2 ~@4 a1 ~",
  U: "g1@4 a1@3 ~@7 a1@2 b1@2 ~@6 b2 ~ a2 ~@5", V: "a1@8 ~@6 a1 ~ g1@3 ~ a1@2 ~@8 a1@2",
  W: "b1@4 a1@2 ~@8 a1 ~ g1@4 a1@2 ~@8 a1 ~",
  X: "b1 ~@3 a2@2 ~@2 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", Y: "a1@8 a2@7 ~ c#2@8 a2@8",
  Z: "d2@8 a2@7 ~ a1@3 ~ d2@2 e2@2 ~@2 f#2 ~ g2@3 ~", AA: "~@30 a1 ~", AB: "b1@4 a1@3 ~@7 a1 ~ g1@4 a1@3 ~@7 a1 ~",
  AC: "[b1@4 a1@3 ~@7 a1 ~ g1@4 a1@3 ~@7 a2@5 ~ a1 ~@10 a1 g1@4 a1@3 ~@8 a2@5 a1@2 ~@8 a1 ~ g1@4 a1@3 ~@7 a2@5 ~ a1@3 ~@8 a1 g1@4 a1@3 ~@7 a2@5 ~@2 a1@2 ~@7 a1 ~ g1@4 a1@3 ~@7 a2@5 ~ a1@3 ~@8 a1 g1@4 a1@3 ~@7 a1 ~]/6",
  AD: "b1@4 a1@2 ~@8 a1 ~ g1@4 a1@3 ~@8 a1", AE: "b1@4 a1@2 ~@8 a1@2 g1@3 ~ b2 ~ b2 ~ a2 ~ a2 ~ g2@2 a1@2",
  AF: "b1@3 ~ a1@2 ~@8 a1 ~ g1@4 a1@2 ~@8 a1 ~", AG: "b1@3 ~ a1@2 ~@8 a1@2 g1@4 a1 ~@9 a1 ~",
  AH: "b1@4 a1@2 ~@8 a1 ~ g1@4 a1 ~@9 a1 ~", AI: "b1@4 a1 ~@9 a1 ~ g1@4 a1@2 ~@8 a1 ~",
  AJ: "b1@4 a1 ~@9 a1@2 g1@4 a1 ~@11",
})).s("gm_electric_bass_pick").gain(0.36)

// other · lead 2 sawtooth · "Synth"
const lead_2_sawtooth = note(`<
  ~@22 A B C B C@2 D E F G ~@2 H@2 ~@8 C B C B C@2 D I J C B C B C@2 D K F G ~@25
>`.pickRestart({
  A: "f#5@2 e5 d5, e5 ~@31", B: "c#5@2 d5 e5", C: "f#5@2 e5 d5", D: "f#5@16 g5@7 ~ a5@8", E: "a3@7 ~ f3@7 ~ a3@8 d3@8",
  F: "a3 f3 a3 d3", G: "a3", H: "[~@3 a1@5]/2", I: "a5@15 ~ g5@16", J: "f#5@16 g5@15 ~",
  K: "a3@7 ~ f3@7 ~ a3@8 d3@8, g3 ~@31",
})).s("gm_lead_2_sawtooth").gain(0.32).pan(0.7)

// chords · drawbar organ · "Hammond"
const drawbar_organ = note(`<
  ~@13 A B C A B C A B D E@2 F@2 G H I J K L ~@4 A M A@2 M A M C E@2 F@2 G H I N O E@2 F@2 G H I J K L ~@25
>`.pickRestart({
  A: "[e4,a4,c#5]@31 ~", B: "c#5@8 d5@8 c#5@8 b4@7 ~, [d4,g4]", C: "[e4,a4,c#5]@15 ~", D: "[e4,a4,c#5] ~@7",
  E: "[[d5,f#5]@16 e5@8 d5@7 ~ c#5@16 d5@8 e5@7 ~, [g4,b4]]/2", // D G
  F: "[f#5@3 ~@13 e5@8 d5@8 c#5@16 d5@8 e5@8, [f#4,a4], d5 ~@3, g5 ~@3 f#5@28 ~@32]/2", G: "f#5@2 e5 d5, [g4,b4]@31 ~",
  H: "f#5@2 e5 d5, [f#4,a4]", I: "f#5@16 g5@8 a5@5 ~@3, [g4,b4]@15 ~",
  J: "[e4,a4,c#5]@7 ~ [f4,a4,d5]@6 ~@2 [e4,a4,c#5]@7 ~ [d4,a4,b4]@7 ~", // A Dm A Bm7
  K: "[e4,a4,c#5]@7 ~ [f4,a4,d5]@6 ~@2 [e4,a4,c#5]@7 ~ [d4,a4,b4]@6 ~@2", L: "[e4,a4,c#5]", M: "[d4,g4,c#5]@31 ~",
  N: "[e4,a4,c#5]@15 ~ [e4,g4,a4,b4,d5]@14 ~@2", O: "[f#4,a4,d5]@15 ~ [g4,b4,d5]@16",
})).s("gm_drawbar_organ").gain(0.25).pan(0.2)

// chords · drawbar organ · "Hammond" · soft notes
const drawbar_organ_soft = note("<~@63 A B A C D E D E D E D E D E D E D E D E ~@5>".pickRestart({
  A: "e5@3 ~ f#5@3 ~ e5@3 ~ d5@3 ~, [a4,c#5]@15 ~", B: "e5@6 ~@2 f#5@7 ~ e5@6 ~@2 d5@7 ~, [g4,b4]@15 ~",
  C: "e5@6 ~@2 f#5@7 ~ e5@15 ~, [g4,b4]@31 ~", D: "e5@8 f#5@7 ~ e5@8 d5@6 ~@2, [a4,c#5]@15 ~",
  E: "e5@6 ~@2 f#5@6 ~@2 e5@15 ~, [g4,b4]@31 ~", // G
})).s("gm_drawbar_organ").gain(0.14).pan(0.2)

// bass · piano · "Piano Low End"
const bass_2 = note("<~@3 A@4 B@4 ~@21 B@4 ~@47 C@4 ~>".pickRestart({
  A: "[~@21 a1@99 ~@8]/4", B: "[~@16 a1@99 ~@13]/4", C: "[~@3 a1@28 ~]/4",
})).s("gm_piano").gain(0.53).pan(0.8)

// other · overdriven guitar · "Overdrive Guitar"
const overdriven_guitar = note(`<
  ~@13 A B@2 C B@4 D E F G F G@2 H I J D ~@4 A B@2 C B@3 K E F G F G@2 H ~@2 E F G F G@2 H I J D L M@2 N L M L M L N M@2
  L M L M L M@2 L ~@5
>`.pickRestart({
  A: "a2@27 ~ e3@4", B: "a2@7 e3", C: "a2@28 e3@3 ~", D: "a2", E: "f#4@16 e4@7 ~ d4@8", F: "c#4@2 d4 e4",
  G: "f#4@2 e4 d4", H: "f#4@2 g4 a4", I: "a3@8 f3@8 a3@8 d3@7 ~", J: "a3 f3 a3 d3", K: "a2@7 ~", L: "a2@31 ~",
  M: "a2@15 ~", N: "a2@29 ~@3",
})).s("gm_overdriven_guitar").gain(0.2).pan(0.2)

// other · sitar · "Sitar 1"
const sitar = note(`<
  ~@13
  [c#4@4 a3@4 d4@4 a3@3 ~ c#4@4 a3@3 ~ b3@4 a3@4]!9
  ~@14
  [c#4@4 a3@4 d4@4 a3@3 ~ c#4@4 a3@3 ~ b3@4 a3@4]!8
  ~@19
  [c#4@4 a3@4 d4@4 a3@3 ~ c#4@4 a3@3 ~ b3@4 a3@4]!19
  [c#4@4 a3@4 d4@4 a3@3 ~ c#4@4 a3@3 ~ b3@4 ~@4]
  ~@5
>`).s("gm_sitar").gain(0.14).pan(0)

// other · soprano sax · "LowEnd 1"
const soprano_sax = note("<A@8 ~@25 B@3 ~@29 C@2 ~@6 D@8 ~@7>".pickRestart({
  A: "a0/8", B: "[a0@91 ~@5]/3", C: "[~@19 a1@41 ~@4]/2", D: "a1/8",
})).s("gm_soprano_sax").gain(0.16).pan(0.1)

// other · lead 8 bass lead · "LowEnd 2"
const lead_8_bass_lead = note("<A@8 ~@25 B@3 ~@36 C@8 ~@8>".pickRestart({
  A: "a0/8", B: "[a0@91 ~@5]/3", C: "[~@31 a1@225]/8",
})).s("gm_lead_8_bass_lead").gain(0.2).pan(0.9)

// other · woodblock · "Monkey Skulls"
const woodblock = note("<~@22 A B@2 C@2 D B@3 ~@13 A B@2 C@2 D B@3 A B@2 C@2 D B@3 ~@26>".pickRestart({
  A: "e4 ~@3 e4 ~@3 e4 ~@5 e4 ~ e4 ~@5 e4 ~ a4@2 c#5@2 a4@2 ~@2",
  B: "~@4 e4 ~@3 e4 ~@5 e4 ~ e4 ~@5 e4 ~ a4@2 c#5 ~ a4@2 ~@2",
  C: "~@4 e4 ~@3 e4 ~@5 e4 ~ e4 ~@5 e4 ~ a4 ~ c#5 ~ a4@2 ~@2",
  D: "~@4 e4 ~@3 e4 ~@5 e4 ~ e4 ~@5 e4 ~ a4 ~ c#5@2 a4@2 ~@2",
})).s("gm_woodblock").gain(0.25).pan(0.9)

// other · oboe
const oboe = note("<~@66 A B ~@4 A B ~@4 A B ~@8>".pickRestart({
  A: "~@26 c#5 ~ d5 ~ e5@2", B: "~@26 c#5 ~ d5 ~ e5 ~",
})).s("gm_oboe").gain(0.4).pan(0)

// chords · drawbar organ · "Hammond 2"
const drawbar_organ_2 = note("<~@67 A B A B A B A B A B A B A B A B ~@5>".pickRestart({
  A: "[e4,a4,c#5]@31 ~", B: "c#5@8 d5@8 c#5@8 b4@7 ~, [d4,g4]",
})).s("gm_drawbar_organ").gain(0.2).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A@2 B C A D E C F G H I H G I G J@2 A@2 B C A C K@2 L K@3 F G H I H G I G A@2 G H I H G I G J@2 B@20 C ~@5
>`.pickRestart({
  A: "x!2", B: "x ~@6 x!2 ~@6 x", C: "x ~@6 x!2 ~@7", D: "x ~@2 x ~@4 x ~@6 x", E: "x ~ x ~@4 x!2 ~@7", F: "x!4",
  G: "x ~@6 x!2 ~@5 x ~", H: "x ~@2 x!2 ~@2 x", I: "x ~@6 x!3 ~@4 x ~", J: "x ~@2 x!2 ~@3", K: "x!2 ~@2 x!2 ~@2",
  L: "x ~@3 x!2 ~@2",
})).gain(0.39)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@21 [~@4 x!5 ~@7] ~@21 [~@4 x!5 ~@7] ~@44>").gain(0.33)

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

// drums · low tom
const low_tom = s("lt").struct("<~@12 A ~@15 B ~@22 C D ~@6 B ~@6 E ~@7 F ~ F ~@11>".pickRestart({
  A: "~@7 x", B: "~@31 x", C: "~ x ~ x", D: "~@2 x ~@4 x", E: "~@15 x", F: "~@14 x!2",
})).gain(0.52)

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

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@12 A ~@8 B ~@6 C ~@2 D E D F E ~@7 B ~@15 C ~@6 G ~@21>".pickRestart({
  A: "~@13 x ~@2", B: "~@4 x!10 ~@2", C: "~@28 x!3 ~", D: "~@3 x", E: "~ x ~@2", F: "~ x ~ x", G: "~@7 x",
})).gain(0.33)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@18 A B ~@2 C D C E C F G ~@11 H ~@3 C D C E C F I ~@2 C D C E C F G ~@6 J ~@21
>`.pickRestart({
  A: "~@6 x!2", B: "~ x ~@6", C: "~ x!3", D: "~@2 x ~ x ~ x!2", E: "~@4 x ~@2 x!3 ~@2 x ~ x ~", F: "x!4",
  G: "~ x!2 ~ x ~@3", H: "~@3 x", I: "~ x!2 ~ x ~ x ~", J: "~@9 x ~@6",
})).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@11 A B ~@9 C@6 D ~@2 E F G H I ~@8 C@7 ~ J C@6 D ~@2 K L M N ~@2 O P Q R ~@2 S ~@13
>`.pickRestart({
  A: "~@3 x ~ x ~@26", B: "~@10 x ~ x!2 ~@2", C: "~ x ~ x", D: "~@8 x ~@13 x!6 ~@4", E: "~@9 x ~ x ~@4",
  F: "~@2 x ~@3 x ~@18 x ~ x!3 ~ x", G: "x ~@8 x ~ x ~@4", H: "~ x ~ x ~@5 x ~ x ~@4", I: "~ x ~ x ~@8 x!2 ~@2",
  J: "~@10 x!2 ~@4", K: "~@12 x!2 ~ x", L: "x ~@7 x!2 ~ x!2 ~@3", M: "~@9 x ~@2 x ~@3", N: "~ x ~@2 x ~@11",
  O: "~@20 x ~ x!3 ~@2 x ~@2 x!2", P: "x ~@2 x ~@2 x!3 ~@11 x ~ x ~@5 x ~ x ~", Q: "~@4 x ~@2 x ~@2 x ~@3 x ~", R: "x",
  S: "~@3 x",
})).gain(0.39)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct(`<
  ~@10
  [~@20 x!12]
  [x!3 ~ x ~ x!2 ~@8 x ~@15]
  x
  ~@19
  [~@16 x!2 ~ x!3 ~ x!2 ~@7]
  ~@55
>`).gain(0.2)

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

More by Genesis