Strudelify

(I'm Not Your) Steppin' Stone

The Monkees

KeyE minorTempo140 bpm
0:00/0:00
// (I'm Not Your) Steppin' Stone — The Monkees
// 140 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 5 "Piano   (BB)" named as a piano, played on piano (its rock organ patch is not one)
// note: Full arrangement: all 76 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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 · slap bass 2 · "Bass    (BB)"
const bass = note(`<
  ~@2 A B A B C D E F G H E I A D E F J D A K C L G M N I J F O@2 P Q R@2 S K S D N M A L N I S I A M A D T D C H O@2 Q
  U@3 R Q@4 U@2 R@2 U R Q V W
>`.pickRestart({
  A: "e2 ~ e2@2 e2 ~ e2 e1 g2 g1 g2 ~ g2 ~ g2 ~", B: "a1 ~ a1@2 a1 ~ b1 ~ c2 ~ c2@2 c2 ~ c2 c1",
  C: "e2 ~ e2@2 e2 ~ e2 e1 g2 ~ g2@2 g2 ~ g#1 ~", D: "a1 a0 a1 ~ a1 ~ a1 ~ c2 ~ c2@2 c2 ~ c2 c1",
  E: "e2 e1 e2 ~ e2 ~ e2 ~ g2 g1 g2 ~ g2 ~ g2 ~", F: "a1 ~ a1@2 a1 ~ b1 ~ c2 ~ c2@2 c2 ~ d#2 ~",
  G: "e2 ~ e2@2 e2 ~ f#2 ~ g2 ~ g2@2 g2 ~ g#1 ~", H: "a1 a0 a1 ~ a1 ~ a1 ~ c2 c1 c2 ~ c2 ~ c2 ~",
  I: "a1 ~ a1@2 a1 ~ b1 ~ c2 c1 c2 ~ c2 ~ c2 ~", J: "e2 ~ e2@2 e2 ~ f#2 ~ g2 ~ g2@2 g2 ~ g2 g1",
  K: "a1 ~ a1@2 a1 ~ a1 a0 c2 ~ c2@2 c2 ~ c2 c1", L: "a1 ~ a1@2 a1 ~ a1 a0 c2 ~ c2@2 c2 ~ d#2 ~",
  M: "a1 ~ a1@2 a1 ~ a1 a0 c2 c1 c2 ~ c2 ~ c2 ~", N: "e2 e1 e2 ~ e2 ~ e2 ~ g2 ~ g2@2 g2 ~ g2 g1",
  O: "e2@3 ~ e2 ~ e2 ~ g2@3 ~ a2 ~ g2 ~", P: "e2 ~ e2@2 e2 ~ f#2 ~ g2 ~ g2 ~ a2 ~ g2 ~",
  Q: "e2 ~ e2@2 e2 ~ e2 e1 g2 ~ g2 ~ a1 ~ a1 ~", R: "e2 ~ e2@2 e2 ~ f#2 ~ g2 ~ g2 ~ a1 ~ a1 ~",
  S: "e2 ~ e2@2 e2 ~ f#2 ~ g2 g1 g2 ~ g2 ~ g2 ~", T: "e2 ~ e2@2 e2 ~ e2 e1 g2 ~ g2@2 g2 ~ g2 g1",
  U: "e2 e1 e2 ~ e2 ~ e2 ~ g2 ~ g2 ~ a1 ~ a1 ~", V: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1!2",
  W: "a1 ~ e2@2 a2 ~ a2 ~@5 a1@4",
})).s("gm_slap_bass_2").gain(0.24).pan(0)

// chords · piano · "Piano   (BB)"
const piano = note(`<
  ~@2 A B C B D E F B C G A H I J K L ~ M N O C O K P D Q R S ~@2 T U V T W S I X Y Z AA AB Y AC AD AC AA O R J Y H AE X
  ~@2 F ~ AF@2 U@4 F AF A AF T@2 U V AG AH
>`.pickRestart({
  A: "[g#4,b4,e5,g#5] ~", B: "[e4,c#5] [g4,e5]", C: "~ [b4,g5]", D: "[g#4,e5] [b4,d5,g5,b5]", E: "~@8 [g4,e5,g5]@7 ~",
  F: "[g#4,e5,g#5]@7 ~@9", G: "[e4,a4,c#5,e5] ~", H: "[e4,c#5,e5]@7 ~ [g4,c5,e5,g5]@8", I: "[g#4,e5]@8 [b4,g5,b5]@7 ~",
  J: "[e4,a4,c#5,e5]@8 [g4,e5,g5]@7 ~", K: "[g#4,b4,e5,g#5] [b4,d5,g5,b5]", L: "[e4,c#5,e5]@7 ~ [g4,e5]@8",
  M: "[e4,c#5,e5]@7 ~ [g4,e5,g5]@7 ~", N: "~ [b4,d5,g5,b5]", O: "[e4,c#5]@8 [g4,e5,g5]@7 ~", P: "[e4,c#5,e5]@7 ~@9",
  Q: "[e4,a4,c#5,e5] [g4,e5]", R: "[g#4,e5] [b4,g5]", S: "[e4,c#5] [g4,c5,e5,g5]",
  T: "[g#4,e5,g#5]@7 ~ [b4,g5]@4 [e4,c#5]@4", U: "~ [b4,e5] ~@2 [b4,g5]@2 [e4,c#5]@2", V: "[g#4,e5]@2 [b4,g5] [e4,c#5]",
  W: "[g#4,b4,e5,g#5]@4 ~ [d5,g5] ~@2", X: "[e4,a4,c#5,e5]@4 ~ [c5,e5] ~@2", Y: "[g#4,b4,e5,g#5]@8 [b4,g5,b5]@7 ~",
  Z: "~@2 [a4,c#5]@2 ~@4 [g4,e5,g5]@7 ~", AA: "~ [b4,e5] ~@3 [d5,g5] ~@2", AB: "[e4,a4,c#5,e5] [g4,c5,e5,g5]",
  AC: "[e4,c#5]@4 ~ [c5,e5] ~@2", AD: "~ [b4,e5] ~@2 [b4,d5,g5,b5]@4", AE: "[g#4,e5,g#5]@7 ~ [b4,g5,b5]@7 ~",
  AF: "[g#4,e5] ~", AG: "[a4,c#5,e5]", AH: "~ [a4,c#5,e5] ~@5 [a4,c#5,e5] ~@4 a3@4",
})).s("gm_piano").gain(0.22).pan(1)

// chords · piano · "Piano   (BB)" · soft notes
const piano_soft = note(`<
  ~@2 A ~ B ~@2 C A ~ B D A ~@5 E ~ B ~ B ~@2 D ~@7 F ~@2 G ~@2 H ~ I J ~@2 H F H J ~@6 H ~@2 K L K@2 F@4 K@4 ~@2 F ~@3
>`.pickRestart({
  A: "~@5 [d5,g5] ~@2", B: "~ [b4,e5] ~@6", C: "~ [a4,c#5] ~@6", D: "~@5 [c5,e5] ~@2", E: "~ [b4,e5] ~@3 [d5,g5] ~@2",
  F: "~@6 b3 ~@9", G: "~@14 d4 ~", H: "~@14 c4 ~", I: "~@6 a3 ~@9", J: "~@6 b3 ~@7 d4 ~", K: "~@2 g5 c#5",
  L: "~ [b4,e5] ~@2 g5@2 c#5@2", // E5
})).s("gm_piano").gain(0.11).pan(1)

// chords · electric guitar clean · "Guitar  (BB)"
const electric_guitar_clean = note(`<
  ~@2 A B C D E F C G H G E F I J K L M B N B H D C D O P O Q ~@2 R@2 S R T U V W X Y Z AA AB AC AD AE AF AG AD Y AH AI
  AJ U ~@2 AK AL AM AN S AO R AP AM AN AM@2 AO@2 AP R AQ AR
>`.pickRestart({
  A: "~@2 [e3,b3,e4]@2 ~@2 [e3,b3,e4]@2 [g2,g3] ~@3 d3@2 [d3,g3]@2, ~@4 d3 g2@3", // E5 G G5
  B: "~@2 [a2,e3,a3]@2 ~@2 [a2,e3,a3]@2 [c3,c4] ~@3 g3@2 [g3,c4]@2, ~@4 g3 c3@3", // A5 C C5
  C: "[e3,b3]@3 e2 ~ [g2,d3,g3] ~ [g2,d3,g3]", D: "[a2,e3] ~ e3 ~@2 [c3,g3,c4] ~ [c3,g3,c4], ~@3 a2@2 ~@11",
  E: "~ [e3,b3,e4] ~ [e3,b3,e4] [g2,d3]@3 ~", // E5 G5
  F: "[a2,a3] ~@3 e3@2 [e3,a3]@2 [c3,g3]@2 ~@2 [c3,g3]@2 ~@2, e3@2 a2@6 ~@3 c2@2 ~@3", // A A5 C5
  G: "[a2,e3] ~ e3 ~ [c3,g3] ~ [c3,g3] ~, ~@3 a2@2 ~@6 c2@2 ~@3", // A5 C5
  H: "~ [e3,b3,e4] ~ [e3,b3,e4] [g2,d3] ~ d3 ~, ~@11 g2@2 ~@3", // E5 G5
  I: "[e3,b3] ~ [e3,b3] ~ [g2,d3] ~ d3 ~, ~@3 e2@2 ~@6 g2@2 ~@3", J: "[a2,e3] ~ e3 ~ [c3,g3]@3 c2, ~@3 a2@2 ~@11",
  K: "[e3,e4] ~@3 b3@2 [b3,e4]@2 ~@2 [g2,d3,g3]@2 ~@2 [g2,d3,g3]@2, b3 e3@3 ~@4", // E E5 G5
  L: "~ [a2,e3,a3] ~ [a2,e3,a3] ~ [c3,g3,c4] ~ [c3,g3,c4]", // A5 C5
  M: "[e3,e4] ~@3 b3@2 [b3,e4]@2 [g2,d3]@2 ~@2 d3@2 ~@2, b3@2 e3@6 ~@3 g2@2 ~@3", // E E5 G5
  N: "[e3,b3]@6 e2@2 [g2,g3] ~@3 d3@2 [d3,g3]@2, ~@4 d3 g2@3", // E5 G G5
  O: "[e3,b3]@2 ~@2 [e3,b3]@2 ~@2 [g2,g3] ~@3 d3@2 [d3,g3]@2, ~@3 e2@2 ~@3 d3@2 g2@6", // E5 G G5
  P: "~ [a2,e3,a3] ~ [a2,e3,a3] [c3,g3] ~ [c3,g3] ~, ~@11 c2@2 ~@3", // A5 C5
  Q: "[a2,a3] ~@3 e3@2 [e3,a3]@2 ~@2 [c3,g3,c4]@2 ~@2 [c3,g3,c4]@2, e3 a2@3 ~@4", // A A5 C5
  R: "[e3,b3,e4] ~ e2@2 [e3,b3,e4]@2 [e3,b3,e4] ~ [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~", // E5 G5 A5
  S: "[e3,b3,d#4,e4]@2 e2@2 [e3,b3,e4]@2 ~@2 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~", T: "[e3,b3,e4]@6 e2 ~ [g2,d3,g3]@6 ~@2",
  U: "a3 e3 a2 ~ e3 a2 a3 e3 [c3,g3,c4]@6 c2 ~, ~@3 a3@2 ~@11", V: "[e3,b3,d#4,e4] e2 [e3,b3,e4] ~ [g2,d3,g3]@3 ~",
  W: "[a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~ [c3,g3,c4] ~ c2@2 [c3,g3,c4]@2 [c3,g3,c4] ~", // A5 C5
  X: "[e3,b3,d#4,e4] e2 [e3,b3,e4] ~ [g2,d3,f#3,g3] ~ [g2,d3,g3] ~", // Emaj7 E5 Gmaj7 G5
  Y: "a3 e3 a2 ~ e3 a2 a3 e3 [c3,g3,c4] ~ c2@2 [c3,g3,c4]@2 [c3,g3,c4] ~, ~@3 a3@2 ~@11", // C5
  Z: "e4 b3 e3 ~ b3 e3 e4 b3 [g2,d3,g3] ~ g2@2 [d3,g3]@2 [g2,d3,g3] ~, ~@3 e4@2 ~@11", // G5
  AA: "[a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~ c4 g3 c3 ~ g3 c3 c4 g3, ~@11 c4@2 ~@3", // A5
  AB: "e4 b3 e3 ~ b3 e3 e4 b3 g3 d3 g2 ~ d3 g2 g3 d3, ~@3 e4@2 ~@6 g3@2 ~@3",
  AC: "[a2,e3,g#3,a3]@2 ~@2 [a2,e3,a3]@2 ~@2 [c3,g3,c4]@6 c2 ~", // Amaj7 A5 C5
  AD: "[e3,b3,e4] ~ e2@2 [e3,b3,e4]@2 [e3,b3,e4] ~ g3 d3 g2 ~ d3 g2 g3 d3, ~@11 g3@2 ~@3", // E5
  AE: "a3 e3 a2 ~ e3 a2 a3 e3 c4 g3 c3 ~ g3 c3 c4 g3, ~@3 a3@2 ~@6 c4@2 ~@3",
  AF: "[e3,b3,e4]@6 e2 ~ [g2,d3,g3] ~ g2@2 [d3,g3]@2 [g2,d3,g3] ~", AG: "[a2,e3,a3]@3 ~ [c3,g3,b3,c4] c2 [c3,g3,c4] ~",
  AH: "[e3,b3,e4] ~ e2@2 [e3,b3,e4]@2 [e3,b3,e4] ~ [g2,d3,f#3,g3]@2 ~@2 [g2,d3,g3]@2 ~@2", // E5 Gmaj7 G5
  AI: "[a2,e3,g#3,a3]@2 ~@2 [a2,e3,a3]@2 ~@2 c4 g3 c3 ~ g3 c3 c4 g3, ~@11 c4@2 ~@3", // Amaj7 A5
  AJ: "[e3,b3,e4] ~ e2@2 [e3,b3,e4]@2 [e3,b3,e4] ~ [g2,d3,g3] ~ g2@2 [d3,g3]@2 [g2,d3,g3] ~", // E5 G5
  AK: "[e3,e4] ~@3 b3@2 [b3,e4]@2 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~, b3 e3@3 ~@4", // E E5 G5 A5
  AL: "[e3,b3]@6 e2@2 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~", // E5 G5 A5
  AM: "[e3,b3]@2 ~@2 [e3,b3]@2 ~@2 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~, ~@3 e2@2 ~@11", // E5 G5 A5
  AN: "~@2 [e3,b3,e4]@2 ~@2 [e3,b3,e4]@2 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~", // E5 G5 A5
  AO: "[e3,b3,e4]@6 e2 ~ [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~", // E5 G5 A5
  AP: "e4 b3 e3 ~ b3 e3 e4 b3 [g2,d3,g3]@3 ~ [a2,e3,a3]@3 ~, ~@3 e4@2 ~@11", AQ: "[a2,e3,a3]@15 ~",
  AR: "[a2,e3,a3] ~@3 [a2,d3,a3] ~ [a2,e3,a3] ~@5 [a2,e3,a3]@4", // A5 D5 A5
})).s("gm_electric_guitar_clean").gain(0.09).pan(0)

// chords · trombone
const trombone = note(`<
  ~@2 A B A C ~@2 D E ~@2 D F ~ G ~ H ~ G ~ G I J K E A L M J ~@2 N O N P ~@2 A L ~ Q ~ Q ~ R ~ Q A E A E D S@2 J ~@2 N
  T N U N V N T W N T N@4 X ~@2
>`.pickRestart({
  A: "e3@3 ~ e3@3 ~ g3@3 ~ g3@3 ~", B: "a3@3 ~ a3@3 ~ c4@4 c4@3 ~", C: "a3@3 ~ a3@3 ~ c4@3 ~ c4@3 ~",
  D: "e3@3 ~ e3@3 ~ g3@3 ~ g3@4", E: "a3@3 ~ a3@4 c4@8", F: "a3@3 ~ a3@3 ~ c4@8", G: "~@10 [e3,g3,c4] ~ [e3,g3,c4] ~@3",
  H: "~@10 [e3,c4] g3 [e3,g3,c4] ~@3", I: "~ e3@3 e3@3 ~ g3@3 ~ g3@4", J: "a3@3 ~ a3@3 ~ c4@7 ~",
  K: "e3@4 e3@3 ~ g3@3 ~ g3@4", L: "a3@3 ~ a3@4 c4@7 ~", M: "e3@4 e3@3 ~ g3@3 ~ g3@3 ~",
  N: "[e3,b3]@4 [g3,d4]@2 [a3,e4] [g3,d4]", O: "[e3,b3]@7 ~ d4@4 [a3,e4]@2 [g3,d4]@2, ~@7 g3@4 ~@5",
  P: "[e3,b3]@4 [g3,d4]@2 [a3,e4] d4, ~@14 g3 ~", Q: "~@10 [e3,g3,c4] ~ [e3,c4]@2 ~@2, ~@12 g3 ~@3",
  R: "~@10 [e3,g3,c4] ~ [e3,g3] ~@3, ~@6 c4 ~", S: "[a3@3 ~ a3@3 ~ c4@7 e3@4 ~ e3@3 ~ g3@3 ~ g3@3 ~]/2",
  T: "[e3,b3]@4 [g3,d4]@2 ~ d4, ~@6 [a3,e4] ~, ~@13 g3@2 ~", // E5 G5 A5
  U: "[e3,b3]@7 ~ d4@4 ~@2 d4@2, ~@7 g3@4 ~ [a3,e4]@2 ~@2, ~@13 g3@2 ~", // E5 A5
  V: "[e3,b3]@7 ~ d4@4 ~@2 g3@2, ~@7 g3@4 ~ [a3,e4]@2 ~@2, ~@13 d4@2 ~", // E5 A5
  W: "[e3,b3]@4 [g3,d4]@2 ~ d4, ~@6 [a3,e4] ~, ~@13 g3@3", // E5 G5 A5
  X: "[e3,b3]@8 [g3,d4]@4 ~@2 g3 ~, ~@6 [a3,e4] ~, ~@13 d4@2 ~", // E5 G5 A5
})).s("gm_trombone").gain(0.29).pan(1)

// chords · oboe
const oboe = note("<~@18 A@4 ~@22 B@4 ~@28>".pickRestart({
  A: "[~@8 d4@8 c#4@8 c4@8 ~@8 d4@8 c#4@8 c4@7 ~, e4]/4", B: "[~@8 d4@8 c#4@8 c4@8 ~@8 d4@8 c#4@8 c4@7 ~, e4@63 ~]/4",
})).s("gm_oboe").gain(0.17)

// drums · kick
const kick = s("bd").struct("<~@2 A@11 B A@16 ~@2 A@23 C ~@2 A@3 D A@3 E A@3 D A@3 D F G>".pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x ~ x ~@3 x ~ x ~ x ~@3 x!2", C: "x!2 ~ x ~@4", D: "x!2 ~ x ~ x ~ x",
  E: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4", F: "x ~@2 x!3 ~ x", G: "~@10 x!2 ~@4",
})).gain(0.4).pan(1)

// drums · rim
const rim = s("rim").struct("<[x!2] [x!4] ~@74>").gain(0.4).pan(1)

// drums · snare
const snare = s("sd").struct("<~@2 A@23 B A@3 C ~@2 A@23 D ~@2 A@3 E A@3 F A@3 E A@3 E A G>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@2 x!6", D: "~@4 x ~@3 x!5 ~ x ~", E: "~ x!3", F: "x!2 ~@14",
  G: "x ~@2 x ~@2 x ~",
})).gain(0.4).pan(1)

// drums · low tom
const low_tom = s("lt").struct("<~@25 [~@3 x] ~@3 [~@2 x!6] ~@35 [~@12 x!4] ~@9 [~ x ~@2]>").gain(0.4).pan(1)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!8]!28 ~@2 [x!8]!24 ~@2 [x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~] [x!8]!16 [x!5 ~@3]>")
  .gain(0.4).pan(1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@65 [~@8 x!2 ~@6] ~@9 [~ x ~@6]>").gain(0.4).pan(1)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A B A@5 B A B C A@2 C A B A@2 C A@2 C A@2 B@2 A@2 ~@2 A C@2 A@3 C@2 A@3 C A C A@2 C A@2 B A B@2 A ~@2 A@6 B A@3 C
  A@6 D
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "x ~ x!3 ~ x ~", D: "x!3 ~",
})).gain(0.4).pan(1)

// drums · high tom
const high_tom = s("ht").struct("<~@65 [~@4 x!2 ~@10] ~@10>").gain(0.4).pan(1)

// drums · ride
const ride = s("rd").struct("<~@2 A ~@22 B ~@32 A ~@3 A ~@3 A ~@3 A ~@3 A C>".pickRestart({
  A: "x", B: "~@7 x", C: "~@3 x",
})).gain(0.4).pan(1)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 A@27 B ~@2 B@23 A ~@2 A@4 B@4 A@4 B@3 A@2 C>".pickRestart({
  A: "x!4", B: "x!8", C: "x!3 ~",
})).gain(0.4).pan(1)

stack(
  bass, piano, piano_soft, electric_guitar_clean, trombone, oboe, kick, rim, snare, low_tom, hihat, mid_tom, open_hat,
  high_tom, ride, tambourine
)

More by The Monkees