Strudelify

Dig It

The Beatles

KeyF majorTempo150 bpm
0:00/0:00
// Dig It — The Beatles
// 150 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 39 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · drawbar organ · "Organ"
const drawbar_organ = note("<A B C D E@2 F B C D E@2 F G H I J K L@3 M@3 N O@2 P@2 Q R S@2 T U@2 T V@2>".pickRestart({
  A: "~@3 [bb3,d4,f4]", B: "[bb3,d4,f4]!2 [bb3,d4,f4]@2 c4 d4 [a3,c4,f4]!2, ~@2 a3 ~", C: "[a3,c4,f4] [bb3,d4,f4] ~@2",
  D: "[c4,e4,g4]!2 [c4,e4,ab4] [c4,e4,g4] [c4,e4,g4]@2 [bb3,d4,f4]@2", // C Caug C Bb
  E: "[[bb3,d4,f4]@2 ~@2 c4 d4 [a3,c4,f4] [a3,c4,f4]@2 ~ [bb3,d4,f4]@2 ~@4, ~@2 a3 ~@5]/2", // Bb F Bb
  F: "[c4,e4,g4] ab4 [c4,e4,g4]!2 [c4,e4,g4]@2 [bb3,d4,f4]@2", G: "~@4 [a3,c4,f4]@3 ~", H: "~ [bb3,d4,f4]@2 ~",
  I: "[c4,e4,g4]@2 [c4,f4] [c4,e4,g4] [c4,e4,ab4]@2 [bb3,d4,f4]@2", J: "~@4 [a3,c4,f4]@2 [a3,c4,f4] [a3,c4,g4]",
  K: "[a3,c4,f4]@2 [bb3,d4,f4] [bb3,d4,g4]@2 [bb3,d4,f4] [bb3,d4,f4]@2", // F Bb Gm Bb
  L: "[[c4,e4,g4] [c4,e4,ab4] ~ [c4,e4,g4] [c4,e4,g4]@2 [bb3,d4,f4]@4 ~@2 [a3,c4,f4] ~ [a3,c4,f4] [a3,c4,f4]@2 ~ [bb3,d4,f4]@4 ~@2]/3", // C Caug C Bb F Bb
  M: "[[c4,e4,g4] [c4,e4,ab4]@2 [c4,e4,g4] [c4,e4,g4]@2 [bb3,d4,f4]@4 ~@2 c4 d4 [a3,c4,f4] [a3,c4,f4]@2 d4 [bb3,d4,f4]@4 ~@2]/3", // C Caug C Bb F Bb
  N: "[c4,e4,g4] [c4,e4,ab4] [c4,e4,g4] f4@2 d4 [bb3,d4,f4]@2", // C Caug C Bb
  O: "[[bb3,d4,f4]!2 [bb3,d4,f4]@2 [c4,f4] d4 [a3,c4,f4] [a3,c4,f4]@2 d4 [bb3,d4,f4]@3 [bb3,d4,f4]@3]/2", // Bb F5 F Bb
  P: "[[c4,e4,g4] [c4,e4,ab4] [c4,e4,g4] [c4,e4,g4]@2 ~ [bb3,d4,f4]@3 [bb3,d4,f4] ~@2 c4 d4 [c4,f4]@2]/2", // C Caug C Bb F5
  Q: "[c4,f4]@2 ~ [bb3,f4]@2 [bb3,f4]!2 g4", R: "[c4,g4] [c4,ab4] [c4,g4] [c4,f4]@3 [bb3,f4] [bb3,g4]",
  S: "[[bb3,f4] ~ [bb3,f4]@2 c4 d4 [c4,f4] [c4,f4]@2 eb4 [bb3,d4] e4 [bb3,f4]@2 [bb3,f4]@2]/2", // Bb5 F5 Bb Bb5
  T: "[c4,g4] ab4 [c4,g4]@2 [c4,f4] eb4 [bb3,d4] e4", // C5 F5 Bb
  U: "[[bb3,f4]@2 [bb3,f4] d4 [a3,c4] d4 [a3,c4,f4] [a3,c4,f4]@2 eb4 [bb3,d4] e4 [bb3,f4]@2 [bb3,f4]@2]/2", // Bb5 Am F Bb Bb5
  V: "[[bb3,f4]@2 [bb3,f4] d4 [a3,c4] d4 [a3,c4,f4] [a3,c4,f4]@2 eb4 ~@6]/2", // Bb5 Am F
})).s("gm_drawbar_organ").gain(0.29)

// chords · piano
const piano = note("<A@3 B@15 C@3 D E@2 F G@2 H I J K L@2 K L@2 K M@2>".pickRestart({
  A: "[~@4 [f3,bb3,d4] [bb3,d4,f4] ~ [f3,a3,c4] [a3,c4,f4] ~ [f3,bb3,d4] [bb3,d4,f4], ~ [bb1,bb2] [f1,f2] [bb1,bb2]]/3", // Bb F Bb F Bb
  B: "[~ [g3,c4,e4] [c4,e4,g4] ~ [f3,bb3,d4] [bb3,d4,f4] ~ [f3,a3,c4] [a3,c4,f4] ~ [f3,bb3,d4] [bb3,d4,f4], [c2,c3] [bb1,bb2] [f1,f2] [bb1,bb2]]/3", // C Bb F Bb C Bb F Bb
  C: "[~@2 [g3,c4,e4]@2 [c4,e4,g4]@2 ~@2 [f4,bb4,d5]@2 [bb4,d5,f5]@2 ~ [f4,a4,c5] [f1,f2,f4,a4,c5] [f1,f2,f4,a4,c5]@2 [f1,f2,f4,a4,c5] [bb1,bb2]@2 [bb1,bb2,bb3,d4,f4,bb4]@2 [bb1,bb2,bb3,d4,f4,bb4]@2, [c2,c3]@3 [bb1,bb2]@3 [f1,f2] ~@5]/3", // C Bb F Bb C Bb F
  D: "[c2,c3,g4,c5,e5]!2 [c2,c3,g4,c5,e5,g5]!3 [c2,c3,g4,c5,e5] [bb1,bb2,f4,bb4,d5]!2", // C Bb
  E: "[[bb1,bb2,f4,bb4,d5]@2 ~@2 [f1,f2,f4,a4,c5]!3 [f1,f2,f4,a4,c5]@2 ~ [bb1,bb2,f4,bb4,d5]@2 [bb1,bb2,f4,bb4,d5]@2 [bb1,bb2,f4,bb4,d5,f5]@2]/2", // Bb F Bb
  F: "[c2,c3,g4,c5,e5,g5]!3 [c2,c3,g4,c5,e5,g5]@2 [c2,c3,g4,c5,e5,g5] [bb1,bb2,f4,bb4,d5]!2", // C Bb
  G: "[[bb1,bb2,f4,bb4,d5]@2 ~@2 [f1,f2,f4,a4,c5]!3 [f1,f2,f4,a4,c5]@2 [f1,f2,f4,a4,c5] [bb1,bb2,f4,bb4,d5] ~ [bb1,bb2,f4,bb4,d5]@2 ~@2, ~@8 ab4 ~@23]/2", // Bb F Bb
  H: "[c2,c3,g4,c5,e5,g5]!3 [c2,c3,g4,c5,e5,g5]@2 [c2,c3,g4,c5,e5,g5] [bb1,bb2,f4,bb4,d5]@2", // C Bb
  I: "[bb1,bb2,f4,bb4,d5]@2 [bb1,bb2,f4,bb4,d5]@2 [f1,f2,f4,a4,c5]@2 ~ [f1,f2,f4,a4,c5]", // Bb F
  J: "[f1,f2,f4,a4,c5]@2 [bb1,bb2,d4,f4,bb4,d5]@2 ~ [bb1,bb2,d4,f4,bb4,d5]@2 ~", // F Bb
  K: "[c2,c3,g4,c5,e5,g5]@2 ~ [c2,c3,g4,c5,e5,g5]@2 ~ [bb1,bb2,d4,f4,bb4,d5]@2", // C Bb
  L: "[~ [bb1,bb2,d4,f4,bb4,d5]@2 ~ [f1,f2,c4,f4,a4,c5]@2 ~ [f1,f2,c4,f4,a4,c5]@2 ~ [bb1,bb2,d4,f4,bb4,d5]@2 ~ [bb1,bb2,d4,f4,bb4,d5]@2 ~]/2", // Bb F Bb
  M: "[~ [bb1,bb2,d4,f4,bb4,d5]@2 ~ [f1,f2,c4,f4,a4,c5]@2 ~ [f1,f2,c4,f4,a4,c5]@2 ~@7]/2", // Bb F
})).s("gm_piano").gain(0.4)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B E
>`.pickRestart({
  A: "~@3 [bb2,d3,f3,bb3]", // Bb
  B: "[bb2,d3,f3,ab3,bb3] [bb2,d3,f3,bb3] [bb2,d3,f3,ab3,bb3]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2", // Bb7 Bb Bb7 F
  C: "[f3,a3,c4,f4]@2 [bb2,d3,f3,bb3]@2 [bb2,d3,f3,ab3,bb3] [bb2,d3,f3,bb3] [bb2,d3,f3,bb3]@2", // F Bb Bb7 Bb
  D: "[c3,e3,g3,c4]@2 [c3,e3,g3,c4]!2 [c3,e3,g3,c4]@2 [bb2,d3,f3,bb3]@2", E: "[f3,a3,c4,f4] ~@3",
})).s("gm_electric_guitar_clean").gain(0.36)

// bass · fretless bass · "Bass"
const bass = note("<A B C D B C D B C D B C D B C D B C D B C D B C D B C E B F G B H I J K I J L>".pickRestart({
  A: "~@3 bb2", B: "bb2!2 bb2@2 f2@2 f2!2", C: "f2@2 bb2@2 bb2!2 bb2@2", D: "c3!2 e3 c3 c3@2 bb2@2", E: "c3!6 bb2@2",
  F: "f2@2 bb2@2 bb2!3 c3", G: "c3@2 c3!2 c3@2 bb2@2", H: "f2@2 bb2@2 bb2!4", I: "c3@2 c3!4 bb2@2",
  J: "bb2!4 f2@2 f2!2", K: "f2!2 bb2@2 bb2!4", L: "f2!2 ~@6",
})).s("gm_fretless_bass").gain(0.45)

// drums · kick
const kick = s("bd").struct(`<
  A B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B C D B ~
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "~ x ~@2", D: "x ~@2 x",
})).gain(0.32)

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

// drums · ride bell
const ride_bell = s("rd").struct("<A B@15 C D E C D E C D E C D E C D E C D E C D E C F>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x!3 ~ x ~ x!2", D: "x ~ x ~ x!3 ~", E: "x ~ x!3 ~ x ~", F: "x",
})).gain(0.32)

stack(drawbar_organ, piano, electric_guitar_clean, bass, kick, snare, ride_bell)

More by The Beatles