Strudelify

Itchycoo Park

Small Faces

KeyB♭ majorTempo132 bpm
0:00/0:00
// Itchycoo Park — Small Faces
// 132 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Bruce Bundy" synth choir (copy of ch 4 "Itchcoo Park" synth choir)
// note: Full arrangement: all 95 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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 Gtr"
const bass = note(`<
  ~@2 A B C D E F G D E F H I@4 J@2 K L K M K N K M O P Q R S T U V@2 D E F G D E F H I@4 J@2 K L K M K N K M O P Q R S
  T U V@2 K L K M K N K W@3 X@2 Y@2 Z@2 AA AB AC@2 AD@4 AE@3 ~
>`.pickRestart({
  A: "~@6 g2@2 f2 g2@2 f2, ~@12 gb2 ~@11", B: "bb1@3 ~@2 f1 bb1@3 ~@2 f1", C: "g1@3 ~@2 f1 g1@2 f1 g1@2 f1",
  D: "bb1@7 ~@3 f1@2 bb1@7 ~@3 bb1@2", E: "d2@3 ~@3 d2@4 a1@2 d2@3 ~@3 d2@4 a1@2",
  F: "ab1@3 ~@3 ab1@3 ~ eb2@2 ab1@3 ~@3 ab1@3 ~@3", G: "eb2@3 ~@3 eb2@3 ~@3 eb3 f3@4 ~ eb3 f3@5",
  H: "eb2@3 ~@3 eb2@3 ~@3 g1@4 f1@2 g1@4 f1@2",
  I: "[bb1@3 ~@3 bb1@3 ~@3 bb1@2 ~@2 ab1@3 ~@3 eb2@10 ~@2 g2@6 f2@2 g2@4 f2@2, ~@34 gb2 ~@13]/2",
  J: "[bb1@3 ~@3 bb1@2 ~@4 bb1@3 ~ ab1@3 ~@3 eb2@10 ~@2 g2@6 f2@2 g2@4 f2@2, ~@34 gb2 ~@13]/2",
  K: "bb1@2 ~@2 bb1@2 g2@3 ~@3 bb1@2 ~@2 bb1@2 g2@3 ~@3", L: "g2@7 ~@3 g2@6 f2@2 g2@4 f2@2, gb2 ~@23",
  M: "g2@7 ~@3 g2@6 f2@2 g2@4 f2@2, ~@10 gb2 ~@13", N: "g2@7 ~@3 g2@6 f2@2 g2@4 f2@2", O: "bb2", P: "ab2@23 ~",
  Q: "ab2@4 bb2@5 ab2@3 g2@4 f2@4 eb2@4", R: "bb1", S: "bb2@23 ~", T: "ab2@11 ~",
  U: "ab2@4 bb2@5 ab2@3 g2@4 f2@4 eb2@3 ~", V: "[f2@23 ~]/2",
  W: "[g2@42 ~@4 bb1@4 ~@2 bb1@2 g2@5 ~ bb1 ~@3 bb1@2 g2@4 ~@2]/3",
  X: "[g2@6 ~@4 g2@6 f2@2 g2@2 ~@2 bb1@4 ~@2 bb1@2 g2@5 ~ bb1@2 ~@2 bb1@2 g2@4 ~@2]/2",
  Y: "[g2@6 ~@4 g2@6 f2@2 g2@3 ~ bb1@4 ~@2 bb1@2 g2@4 ~@2 bb1@2 ~@2 bb1@2 g2@4 ~@2]/2",
  Z: "[g2@3 ~@2 g2@3 f2 g2@2 bb1@2 ~ bb1 g2@3 bb1 ~ bb1 g2@2 ~]/2", AA: "g2@3 ~@2 g2@3 f2 g2@2 f2",
  AB: "bb1@2 ~@2 bb1@2 g2@5 ~ bb1@2 ~@2 bb1@2 g2@4 ~@2",
  AC: "[g2@5 ~@5 g2@6 f2@2 g2@3 ~ bb1@4 ~@2 bb1@2 g2@5 ~ bb1@2 ~@2 bb1@2 g2@4 ~@2]/2",
  AD: "[g2@5 ~@5 g2@6 f2@2 g2@3 ~ bb1@4 ~@2 bb1@2 g2@6 bb1@2 ~@2 bb1@2 g2@3 ~@3]/2",
  AE: "[g2@4 ~@6 g2@6 f2@2 g2@3 ~ bb1@50]/3",
})).s("gm_electric_bass_pick").gain(0.8)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~@3 A B ~ C D E ~ C D E F@6 G H I J I K I L M N O P M N Q R@2 ~ C D E ~ C D E F@6 G H I J I K I L M N O P M N Q R@2 G
  H I J I K I ~ S@2 T I T I U I V I W I V X V I Y@3 ~
>`.pickRestart({
  A: "~@6 [f5,bb5,d6]@5 ~@7 [f5,bb5,d6]@5 ~", B: "~@12 [g5,bb5]@4 f5 ~ [eb5,bb5]@5 ~",
  C: "~@6 [a5,d6]@5 ~ [f5,a5]@4 ~@2 [d5,f5]@4 ~@2", D: "[bb4,c5,f5]@7 ~",
  E: "[bb4,f5]@2 [g4,eb5] [g4,bb4,f5]@2 [g4,bb4,eb5]@7, g4 ~@7", // Bb5 Cm Gm7 Eb
  F: "[~@6 [f5,bb5,d6]@3 ~@7 [eb5,ab5,c6]@3 ~@3 [eb5,g5,bb5]@27 ~@5 [f5,bb5,d6]@3 ~@7 [eb5,ab5,c6]@3 ~@3 [eb5,g5,bb5]@27 ~@5 [f5,bb5,d6]@3 ~@7 [eb5,ab5,c6]@3 ~@3 [eb5,g5,bb5]@26]/6", // Bb Ab Eb Bb Ab Eb Bb Ab …
  G: "~@6 [f5,bb5,d6]@5 ~@13", H: "~@8 f5 [eb5,bb5]@3, ~@5 [g5,bb5]@4 ~@3", I: "~@3 [f5,bb5,d6]@2 ~@7",
  J: "~@5 g5@3 f5 [eb5,bb5]@3, ~@5 bb5@4 ~@3", K: "~@5 [g5,bb5]@3 f5 [eb5,bb5]@3",
  L: "~@10 g5@6 f5@2 [eb5,bb5]@5 ~, ~@5 bb5@4 ~@3", M: "[f5,bb5,d6]", N: "[f5,ab5,db6]",
  O: "ab5@5 bb5@4 ab5@3 g5@4 f5@4 eb5@4, c6 bb5", P: "[d5,f5,bb5]@23 ~",
  Q: "ab5@4 bb5@4 ab5@4 g5@4 ~ f5@4 eb5@3, c6 bb5", R: "[[c5,f5,a5]@47 ~]/2",
  S: "[~@12 g5@4 f5@2 eb5@4 [f5,bb5]@7 ~ [f5,bb5,d6]@3 ~@15, ~@4 bb5@3 ~@9]/2", T: "~@12 [g5,bb5]@4 f5@2 [eb5,bb5]@5 ~",
  U: "~@6 [g5,bb5]@2 f5 [eb5,bb5]@2 ~", V: "~@6 g5@2 f5 [eb5,bb5]@2 ~, ~@2 bb5 ~",
  W: "~@12 g5@4 f5@2 [eb5,bb5]@5 ~, ~@2 bb5 ~", X: "~@2 [f5,bb5,d6] ~@5",
  Y: "[~@6 g5@2 f5 [eb5,bb5]@2 [f5,bb5]@25, ~@2 bb5 ~@9]/3", // Eb5 Bb5
})).s("gm_rock_organ").gain(0.5).pan(0.2)

// chords · electric guitar clean · "Acc.Guitr"
const electric_guitar_clean = note(`<
  A B C D E F G H I J K L M N@2 O@2 P@2 Q R S R S R S T U V W X Y Z AA AB@2 F G H I J K L M N@2 O@2 P@2 Q R S R S R S T
  U V W X Y Z AA AB@2 Q R S R S R S AC@2 AD AE@2 AF@2 AG@2 AH@2 AG@2 AI@2 AJ@2 AK@3 ~
>`.pickRestart({
  A: "~@11 f2", B: "bb2@2 [bb3,d4] bb2 ~ f2 bb2@2 [bb3,d4] bb2 ~ f2",
  C: "~@6 g2@2 ~@2 f2@2 g2@4 ~@2 g2@3 f2@2 ~, g2 ~@3, ~@2 [bb3,d4]@2 ~@4 [bb3,d4]@3 ~", // Bb
  D: "[f3,bb3,d4]@4 ~@2 [bb3,d4]@4 f3 ~ [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@3 f3 ~@5 f3 ~@2", // Bb
  E: "[g3,bb3,d4]@3 ~@3 [bb3,d4]@4 g3 ~ [bb3,d4]@4 g3 ~ [bb3,d4]@4 g3 ~, ~@3 g3 ~@2 g3 ~@2 g3 ~@2", // Gm Bb
  F: "[f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@9 f3 ~@2", // Bb
  G: "[a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~ a3 ~ [a3,d4,f4]@2 ~@2 a3 ~", // Dm
  H: "[bb3,c4,f4]@3 ~@3 [bb3,c4,f4]@3 ~@3 [bb3,c4,f4]@3 ~@3 [c4,f4]@4 bb3 ~, ~@9 bb3 ~@2", // Bbsus2 F5
  I: "[g3,bb3,eb4]@3 ~@3 [g3,bb3,eb4]@3 ~@3 [g3,bb3,eb4]@3 ~ g3 ~ [bb3,eb4]@4 g3 ~, ~@9 g3 ~@2", // Eb Eb5
  J: "[f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@9 f3 ~@2", // Bb
  K: "[a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~@3 [a3,d4,f4]@3 ~@3 [d4,f4]@4 a3 ~, ~@9 a3 ~@2", // Dm
  L: "[bb3,c4,f4]@3 ~@3 [bb3,c4,f4]@3 ~@3 [bb3,c4,f4]@3 ~@3 [bb3,c4,f4]@3 ~ bb3 ~", // Bbsus2
  M: "[g3,bb3,eb4]@3 ~@3 [g3,bb3,eb4]@3 ~@3 [g3,bb3,eb4]@4 g3 ~ [bb3,eb4]@4 g3 ~, ~@9 g3 ~@2", // Eb Eb5
  N: "[[f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@4 f3 ~ [f3,bb3,d4]@2 ~@2 [eb3,ab3,c4]@4 ~@2 [g3,bb3,eb4]@6 ~@2 [g3,bb3,eb4]@4 g3 ~ [g3,bb3,eb4]@4 g3 ~ [bb3,eb4]@4 g3 ~, ~@21 g3 ~@2]/2", // Bb Ab Eb Eb5
  O: "[[f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@4 f3 ~ [f3,bb3,d4]@2 ~@2 [eb3,ab3,c4]@3 ~@3 [g3,bb3,eb4]@6 ~@2 [bb3,eb4]@4 g3 ~ [g3,bb3,eb4]@4 g3 ~ [bb3,eb4]@4 g3 ~, ~@15 g3 ~@5 g3 ~@2]/2", // Bb Ab Eb Eb5 Eb Eb5
  P: "[[f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@2 ~@2 [eb3,ab3,c4]@4 ~@2 [g3,bb3,eb4]@6 ~@2 [g3,bb3,eb4]@4 g3 ~ [bb3,eb4]@4 g3 ~ [bb3,eb4]@4 g3 ~, ~@36 g3@3 ~@3 g3@2 ~@4]/2", // Bb Ab Eb Eb5
  Q: "[f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@2 ~@2 f3 ~", // Bb
  R: "[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@2 ~@2 [g3,bb3,d4] ~ [g3,bb3,d4]@2 ~@2 [g3,bb3,d4] ~", // Gm
  S: "[f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3", // Bb
  T: "[g3,bb3,d4]@2 ~@4 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@2 ~@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 ~@2 [g3,bb3,d4]@2", // Gm
  U: "f3 d4 bb3 f3 d4 bb3 f3 d4 bb3 f3 ~ bb3, ~@5 d4",
  V: "f3@2 ~@2 ab3@2 f3@2 db4@2 ab3@2 f3@2 db4@2 ab3@2 f3@2 ~@2 ab3 ~, ~@2 db4@5 ~@13 db4@4",
  W: "ab3@4 bb3@4 ab3@4 g3@4 f3@4 eb3@3 ~", X: "f3 d4 bb3 f3 d4 bb3 f3 d4 bb3 f3 d4 bb3",
  Y: "f4 d5 bb4 f4 d5 bb4 f4 d5 bb4 f4 d5 bb4",
  Z: "f4@2 db5@2 ab4@2 f4@2 db5@2 ab4@2 f4@2 db5@2 ab4@2 f4@2 db5@2 ab4 ~", AA: "ab4@4 bb4@4 ab4@4 g4@4 f4@4 ~ eb4@3",
  AB: "[f4@5 ~]/2", AC: "[[g3,bb3,d4]@7 ~]/2", AD: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~",
  AE: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@2 ~@2 [f3,bb3,d4]@7 f3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@21 f3 ~@2]/2", // Gm Bb
  AF: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@4 g3 ~ [g3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 f3 ~ [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@21 f3 ~@2]/2", // Gm Bb
  AG: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@4 ~@2 [g3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 f3 ~ [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 f3 ~, ~@21 f3 ~@2]/2", // Gm Bb
  AH: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4] ~@3 [f3,bb3,d4]@6 f3 ~ [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3]/2", // Gm Bb
  AI: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@2 ~@2 [bb3,d4]@6 f3 ~ [f3,bb3,d4]@2 ~@4 [f3,bb3,d4]@3 ~@3 [bb3,d4]@4 ~@2, ~@22 f3@5 ~@15 f3@2 ~@4]/2", // Gm Bb
  AJ: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@2 ~@2 [f3,bb3,d4]@7 ~ [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~@3 [f3,bb3,d4]@3 ~ f3 ~]/2", // Gm Bb
  AK: "[[g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@3 ~@3 [g3,bb3,d4]@2 ~@2 [f3,bb3,d4]@50]/3", // Gm Bb
})).s("gm_electric_guitar_clean").gain(0.5).pan(0.7)

// other · pad choir · "redone by"
const pad_choir = note(`<
  ~@12 A B A B A B ~@5 C D E@2 ~@10 F G@2 ~ H I@2 B A B A B ~ J K L@2 M D E@2 ~@9 J K L@2 M D ~@3 J K L@2 M D E@2 J K
  L@2 M D E@2 ~@3
>`.pickRestart({
  A: "~@16 f3@2 ~ g3@3 bb3@2", B: "d4@6 c4@3 bb3@7 ~@8", C: "~@4 f4 ~ f4 ~",
  D: "g4@3 ~@3 d4@3 d4@6 ~@2 bb3@7, ~@4 c4 ~",
  E: "[~@6 f4@3 ~@3 f4@4 ~@2 f4@4 ~ g4@4 ~@2 d4@3 ~ d4@7 ~@2 bb3@5 ~, ~@10 c4 ~]/2", F: "~@6 a4@4 ~@2 f4@5 ~ d4@6",
  G: "[bb3@13 ~@11]/2", H: "~@6 a4@5 ~ f4@6 d4@6", I: "[bb3@29 ~@11 f3@2 ~ g3@3 bb3@2]/2",
  J: "~@6 f4@3 ~@3 f4@3 ~@3 f4@4 ~@2", K: "g4@4 ~@2 d4@3 ~ d4@5 ~@2 bb3@7, ~@5 c4@2 ~",
  L: "[~@6 f4@3 ~@3 f4@3 ~@3 f4@3 ~@2 g4@3 ~@4 d4@3 d4@6 ~@2 bb3@6 ~, ~@39 c4@4 ~@5]/2", M: "~@2 f4 ~ f4 ~ f4 ~",
})).s("gm_pad_choir").gain(0.8).pan(0.2)

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

// drums · snare
const snare = s("sd").struct("<~@2 A B@24 ~@9 B@22 ~@9 B@8 C B D B D B D B D B D B D B D B D ~@3>".pickRestart({
  A: "~@9 x!3", B: "~ x ~ x", C: "~@3 x", D: "~@3 x ~@4 x!2 ~@2",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<A ~@2 A@24 B@8 ~ A@22 B@8 ~ A@8 ~ A@16 ~@3>".pickRestart({
  A: "x!4", B: "~ x ~ x",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@35 [~@6 x!6] ~@30 [~@6 x!6] ~@8 [x!7 ~@5] ~@19>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@35 [x!6 ~@6] ~@30 [x!6 ~@6] ~@28>").gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@27 A@2 B A ~@23 A@2 C A@3 B A ~@9 D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~@3
>`.pickRestart({
  A: "x", B: "x!6", C: "x!2", D: "~@11 x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct("<~@19 A@8 B@4 ~@19 A@8 ~@9 A@7 B ~ A@16 ~@3>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.51)

stack(bass, rock_organ, electric_guitar_clean, pad_choir, kick, snare, hihat, low_tom, mid_tom, crash, ride)

More by Small Faces