Strudelify

What You're Doing

The Beatles

KeyD minorTempo130 bpm
0:00/0:00
// What You're Doing — The Beatles
// 130 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: duplicate parts dropped: ch 8 "BASS" slap bass 2 (copy of ch 2 "BASS" synth bass 2); ch 1 "VOCAL" synth brass 2 (copy of ch 5 "VOCAL" acoustic guitar steel)
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GUITAR.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 2 · "BASS"
const bass = note("<~ A B C B D E F G F H I J K D B L G M N M O P Q R S J T H U V W X C K C Y ~>".pickRestart({
  A: "f2 ~ f2@4 f1@2 f2 ~ f2@4 c2@2, ~@14 f1 ~", B: "bb1 ~ bb1@4 f1@2 bb1@2 bb1 ~ bb1 ~ bb1 ~",
  C: "f2 ~ f2@4 f2 ~ f2 ~ f2@4 f2 ~", D: "d2 ~ d2@4 a1@2 d2 ~ d2@4 a1 ~", E: "bb1 ~ bb1@4 f1 ~ d2@2 eb2 ~ e2@2 f2 ~",
  F: "bb1 ~ bb1@4 bb0@2 bb1 ~ bb1@4 f1@2, ~@14 bb0 ~", G: "f2 ~ f2@4 c2@2 f2@2 f2 ~ f2 ~ f2 ~",
  H: "f2 ~ f2@4 c2@2 f2 ~ f2@4 c2 ~", I: "bb1 ~ bb1@4 f1 ~ d2@2 eb2@2 e2@2 f2 ~", J: "f2 ~ f2@4 c2@2 f2 ~ f2@4 f2 ~",
  K: "bb1 ~ bb1@4 bb1 ~ bb1 ~ bb1 ~ bb1@2 f1 ~", L: "bb1 ~ bb1@4 bb1 ~ bb1 ~ bb1@3 ~ bb1 ~",
  M: "bb1 ~ bb1@2 bb1 ~ bb1@2 bb1 ~ bb1@2 bb1@2 bb1 f1", N: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2 ~",
  O: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ e2 ~", P: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2@2 g2 g1",
  Q: "g2 ~ g2 ~ g2@2 g2 g1 g2 ~ g2 ~ g2@2 b1 ~", R: "c2 c1 c2 ~ c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2@2",
  S: "c2 c1 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", T: "bb1 ~ bb1@4 f1@2 bb1@2 g2 ~ bb1 ~ bb1 ~",
  U: "bb1 ~ bb1@4 f1@2 bb1@2 db2 ~ bb1 ~ bb1 ~", V: "d2 ~ d2@4 a1@2 d2 ~ d2@4 d2 ~",
  W: "bb1 ~ bb1@4 f1@2 bb1 ~ bb1@4 f1@2", X: "bb1 ~ bb1@4 f1@2 d2@2 eb2@2 e2@2 f2@2",
  Y: "bb1 ~ bb1@3 ~ bb1 ~ d1@2 eb1@2 f1@2 bb1 ~",
})).s("gm_synth_bass_2").gain(0.55).pan(0.1)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AG AI AJ
>`.pickRestart({
  A: "[f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,c5]@2 [f4,c5]@2, [f3,c4]!3 [f3,c4,a4]", // F F5 F
  B: "[bb3,d4,f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,d4,f4,bb4,d5]@2 [f4,a4,c5] ~, ~ [bb3,d4]!2 ~", // Bb F Bb
  C: "[f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [a4,c5] ~ f4 ~, [f3,c4]@4 [f3,c4]@4 [f3,c4]@4 [f3,c4,f4]@3 ~, ~@13 [a4,c5]@2 ~", // F Am F5 Am
  D: "[bb3,d4,f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,d4,f4,bb4,d5]@2 [d4,f4,a4] ~, ~ [bb3,d4]!2 ~", // Bb Dm Bb
  E: "[d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [f4,a4]@2 [f4,a4]@2 f4@2 [f4,g4,d5]@2, d3!2 [d3,d4] [d3,d4,a4]", // Dm F G7 D D5
  F: "[f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~, bb3!3 ~", // Bb
  G: "[bb3,f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 f4 ~, ~ bb3!2 ~", // Bb
  H: "[f3,f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2, ~ f3!3", // F
  I: "[bb3,d4,f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,d4,f4,bb4,d5]@2 f4 ~, ~ [bb3,d4]!2 ~", // Bb
  J: "[f3,f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f3,f4,a4,c5]@2 [f4,a4,c5]@2, ~ f3!2 ~", // F
  K: "[bb3,d4,f4,bb4,d5] ~ [f4,bb4,d5]@2 [bb3,f4,bb4,d5] ~ [f4,bb4,d5]@2 [bb3,f4,bb4,d5] ~ [f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~", // Bb
  L: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f3,f4,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f3,f4,a4,c5]@2 [f4,a4,c5] ~, f3 ~@3 f3@2 ~@2", // F
  M: "[bb3,d5]@2 [f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,f4,bb4,d5]@2 [f4,a4] ~, [f4,bb4] ~@3 bb3@4 ~@8", // Bb F Bb5
  N: "[d3,d4,f4,a4]@2 [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d3,d4,f4,a4]@2 [f4,g4,d5] ~, ~ d3!2 ~", // Dm G7
  O: "[bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~, ~@8 f4 ~@7", // Bb
  P: "[bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb4,d5]@2 [f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [f4,c5] ~, ~@2 bb3 ~, ~@8 f4 ~@7", // Bb F5
  Q: "[f3,f4,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5] ~, ~@2 f3@2 f3@2 f3 ~", // F
  R: "[bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,d4,f4,bb4,d5]@2 [d4,f4,a4] ~, ~ bb3 ~@2, ~@4 d4 ~@11", // Bb Dm
  S: "[d3,d4,f4,a4]@2 [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d3,d4,f4,a4]@2 [f4,d5] ~, ~ d3!2 ~", // Dm
  T: "[bb3,d4,bb4,d5]@2 [f4,bb4,d5] ~ [bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5] [f4,bb4,d5]@3, [f4,g4] ~@3 [bb3,d4]@4 [bb3,d4]@4 [bb3,d4]@4, ~@4 f4 ~@11", // Bb Fsus2 Bb
  U: "[a3,d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d3,a3,d4,f4,a4]@2 [g4,b4,d5] ~, d3@4 b3@11 ~, ~ [d3,a3]!2 ~", // Dm G D5
  V: "[g4,b4,d5] ~ [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2, [g3,d4]!4", // G G5
  W: "[g3,d4,g4,b4,f5]@2 [g4,b4,f5] ~ [g4,b4,f5]@2 [g4,b4,f5]@2 [g4,b4,f5]@2 [g4,b4,f5]@2 [g3,d4,g4,b4,f5]@2 [g4,c5,e5] ~, ~ [g3,d4]!2 ~", // G7 C G5
  X: "[g4,c5,e5] ~ [g4,c5,e5]@2 [g4,c5,e5]@2 [g4,c5,e5]@2 [c3,g4,c5,e5]@2 [g4,c5,e5] ~ [c3,g4,c5,e5]@2 [g4,c5,e5] ~, c3!2 ~@2", // C
  Y: "[c3,g4,c5,e5]@2 [g4,c5,e5] ~ [g4,c5,e5]@2 [g4,c5,e5]@2 [g4,c5,e5]@2 [g4,c5,e5]@2 [c3,c5,e5]@2 [f4,a4,c5] ~, ~@4 c3@4 c3@4 g4 ~@3", // C F
  Z: "[f3,f4,a4,c5]@2 [f4,a4,c5] ~ [f3,f4,a4,c5]@2 [f4,a4,c5] ~ [f3,f4,a4,c5]@2 [f4,a4,c5] ~ [f3,f4,a4,c5]@2 [f4,a4,c5] ~", // F
  AA: "[bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~ [bb3,d4,f4,bb4,d5]@2 [f4,bb4,d5] ~", // Bb
  AB: "[f3,a4,c5]@2 [f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2, f4 ~@3 f3@4 f3@4 f3@4", // F
  AC: "[f4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb3,d4,f4,bb4,d5]@2 [f4,a4] ~, [bb3,d4]!3 ~, bb4 ~@15", // Dm Bb F Bb
  AD: "[d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2 [d4,f4,a4]@2, d3!4", // Dm
  AE: "[f4,b4,d5]@2 [f4,b4,d5] ~ [bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [bb4,d5]@2 [f4,bb4,d5] ~, ~ bb3 [bb3,d4]!2, ~@4 f4 ~@7 f4 ~@3", // Bdim Bb
  AF: "[f4,bb4,d5] ~@3 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 f4@2 [f4,a4,c5]@2, bb3, ~ [f4,bb4,d5] ~@4 [bb4,d5]@2, ~@3 d4@13", // Bb F Bb
  AG: "[f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5]@2, [f3,c4]", // F F5
  AH: "[f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,c5] ~, [bb3,d4]@15 ~", // Bb F5 Bb
  AI: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5]@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2 [f4,bb4,d5] ~, [bb3,d4]@15 ~", // Bb
  AJ: "[f4,a4,c5] ~@15, [f3,c4]@9 ~@7", // F F5
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.1)

// chords · acoustic guitar steel · "GUITAR" · Bb
const acoustic_guitar_steel = note("<~@24 bb4 ~@6 [[bb3,bb4]] ~@6>").s("gm_acoustic_guitar_steel").gain(0.44).pan(0.9)

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

// drums · rim
const rim = s("rim").struct("<[~@2 x!2] ~@37>").gain(0.3)

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

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~@7 x] ~@7 [~@7 x] ~@7 [~@7 x] ~@12>").gain(0.35)

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

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

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@3 A ~@2 A ~@3 A ~@3 B@2 ~@2 B C ~@2 A ~ A D ~@3 D ~@3>".pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@3 x ~@4", D: "~ x ~@2",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@32 [~ x ~@2] ~@5>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~ A ~@8 A ~@7 A ~@7 A ~@4 A ~ A ~ A ~ A>".pickRestart({
  A: "x",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@18 [x!8]!7 ~@13>").gain(0.35)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@18 [~ x ~ x ~ x ~ x]!7 ~@13>").gain(1.51)

// drums · shaker
const shaker = s("sh").struct("<~@18 [x!4]!7 ~@13>").gain(0.35)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@18 [~ x ~ x ~ x ~ x]!7 ~@13>").gain(0.2)

stack(
  bass, electric_guitar_clean, acoustic_guitar_steel, kick, rim, snare, low_tom, hihat, mid_tom, open_hat, high_tom,
  crash, tambourine, cabasa, shaker, shaker_soft
)

More by The Beatles