Strudelify
KeyD minorTempo99 bpm
0:00/0:00
// Feel — Robbie Williams
// 99 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 14 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(99/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.

// chords · piano
const piano = note("<A@4 ~@10>".pickRestart({
  A: "[~@2 [d4,f4,a4]@3 [d4,f4,a4]@3 a4@2 ~ [a4,c5,e5]@3 [a4,c5,e5]@2 ~@2 [f4,a4,c5]@3 ~@6 [d4,g4,b4]@3 d4 ~@3 [d4,f4,a4]@3 [d4,f4,a4]@3 a4@2 ~ [a4,c5,e5]@3 [a4,c5,e5]@2 ~@2 [f4,a4,c5]@3 [f4,a4,c5]@2 ~@4 [d4,g4,b4]@3 [d4,g4,b4]@2, d2@30 [g4,b4]@17 ~@9 [f4,a4,c5]@8, d3@10 d3@6 d3@6 d3@4 d3@5 ~ d2@32, ~@8 [d4,f4]@8 ~@5 [f4,a4,c5]@3 [f4,a4,c5]@7 ~ d3@10 d3@5 ~ d3@7 d3@3 d3@6, ~@40 [d4,f4]@7 ~@17]/4", // Dm Am F G Dm Am F G …
})).s("gm_piano").gain(0.8).pan(0.3)

// chords · piano
const piano_2 = note("<~@4 A B C@3 D@3 E@2>".pickRestart({
  A: "~@2 [d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 d3 [d4,f4,a4]@2, d2@7 ~, d3@4 d3@3 d3@3 d3@3 ~@3", // Dm
  B: "~@2 [c4,f4,a4]@2 ~@4 [c4,f4,a4]@2 ~ [c4,f4,a4]@2 ~ [c4,f4,a4]@2, c2, c3@4 c3@2 c3@4 c3@3 c3@2 ~, ~@5 [c4,f4,a4]@3 ~@8", // F
  C: "[~@2 [a3,db4,e4]@2 ~ [a3,db4,e4]@2 ~ [a3,db4,e4]@2 ~ [a3,db4,e4]@2 a2 ~@4 [a3,e4,g4]@2 ~ [a3,e4,g4]@2 ~ a3@2 ~ [a3,d4,f4]@2 ~@5 [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2, [db2,db3]@16 a1@15 ~ g1@15 ~, a2@4 a2@3 a2@3 a2@3 ~ [d4,f4]@13 ~@3 [a3,db4,e4]@17 ~, ~@7 a3@2 ~@3 [e4,g4]@3 ~@9, ~@16 a2@4 a2@3 a2@3 a2@3 a2@2 ~ g2@4 g2@3 g2@3 g2@3 g2@2 ~]/3", // A A7 Dm Gm Db Dm A Em
  D: "[~@2 [a3,d4,f4]@3 [a3,d4,f4]@2 ~ [a3,d4,f4]@2 ~ [a3,d4,f4]@2 ~@5 [a3,db4,e4]@2 ~ [a3,db4,e4]@2 ~ [a3,db4,e4]@2 ~ [a3,db4,e4]@2 a2 ~@4 [a3,e4,g4]@2 ~ [a3,e4,g4]@2 ~ a3@2 ~ [a3,d4,f4]@2 a2 [a3,db4,e4]@2, f2@7 f2@3 f2@3 f2@2 ~ a1@31 ~, ~@14 [d4,f4]@16 [d4,f4]@13 ~@5, ~@7 a3@2 ~@6 a3@2 ~@3 [e4,g4]@3 ~, ~@16 a2@4 a2@3 a2@3 a2@3 ~@3 a2@4 a2@3 a2@3 a2@3 ~@3]/3", // Dm A A7 Dm A Dm Em
  E: "[d2,d3]/2", // D
})).s("gm_piano").gain(0.8).pan(0.3)

// drums · shaker
const shaker = s("sh").struct("<[x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!12 x ~>").gain(0.8)

stack(piano, piano_2, shaker)

More by Robbie Williams