Strudelify
Handle With Care cover art

1988 · The Traveling Wilburys, Vol. 1

Handle With Care

Traveling Wilburys

KeyG majorTempo120 bpm
0:00/0:00
// Handle With Care — Traveling Wilburys
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 98 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B C D E F G H I J K L E F M H I H N O P Q P R P S@2 T@2 U@2 V@2 W X L E F M H I J K L E F M H I J K L E F M H I
  H N O P Q P R P S@2 T@2 U@2 V@2 W X L E F M H I J K A@2 B C D E F M H I J K ~
>`.pickRestart({
  A: "[d3 ~@8 d4 d4@2 ~@6 a4 ~@2 d4@3 ~@9 d4@2 ~ d4@3 ~@6 d4@3, ~ d3@11 c3@13 ~@8 g2@10 a4@5, ~@3 d4@6 ~@3 d3@10 ~@2 [b2,d3]@11 ~ d3@11 ~, ~@6 [f#4,a4]@8 ~ d4@4 a4@4 ~@7 [f#4,a4]@5 ~@4 g4@9, ~@18 f#4@8 ~ d4@6 ~@6 d4@3 [f#4,b4]@6]/2", // Bm F#m B5
  B: "~@3 d4 ~@2 a4 ~@2 d4@3 ~@6 [f#4,a4] ~@2 d4@3, d3 [c3,d3], ~@4 d4@5 ~@6 d4@6 ~@3, ~@6 f#4@8 ~@5 [f#4,a4]@5, ~@7 a4@4 ~@13", // F#m Csus2 F#m
  C: "~@3 d4 ~@3 d4, [b2,d3] [g2,d3], ~ d4@2 ~@2 d4@2 ~, ~@3 f#4@4 ~@2 [f#4,g4,a4,b4]@3, ~@6 a4@5 ~@13", // Bm G5 Gmaj7
  D: "~@3 d4 ~@3 d4, d3 [c3,d3], ~ d4@2 ~@2 d4@2 ~, ~@6 f#4@7 ~@5 [f#4,a4]@6, ~@6 a4@5 ~@13", // Csus2 F#m
  E: "~@3 d4 ~@3 d4, [b2,d3]@11 ~ [g2,d3]@12, ~@3 d4@5 ~@7 d4@6 ~@3, ~ [f#4,a4] ~ [f#4,g4,a4,b4]", // Bm G5 F#m Gmaj7
  F: "~@3 d4 ~@3 d4, d3 c3, ~@3 d4@6 ~@3 d3@10 ~@2, ~@6 f#4@7 ~@2 d4@5 ~@4, ~@6 a4@5 ~@7 [f#4,a4]@6", // F#m
  G: "~@3 d4 ~@3 d4, [b2,d3]@10 ~@2 [g2,d3]@11 ~, ~ d4@2 ~@2 d4@2 ~, ~@6 f#4@12 [f#4,g4,a4,b4]@5 ~, ~ a4 ~@2", // Bm G5 Gmaj7
  H: "~@7 c4, c3@12 c3@11 ~, ~@3 c4@5 ~ c4@6 c4@6 ~@3, ~ [e4,g4]@2 [e4,g4]", // Em
  I: "~@3 g3 ~ e4 ~ e4, g2 ~, ~ g3@2 ~ e3@4, ~ [b3,d4] ~ [g4,b4]", // Bm G
  J: "~@6 [e4,g4] ~@2 c4@3 d3 ~@2 d4@3 ~@3 d4@3, c3@12 ~ d3@6 ~@5, ~ c4@2 ~@5, ~@7 [e4,g4]@7 ~@4 [f#4,a4]@5 ~", // Em F#m
  K: "g2@3 [g2,g3,b3,d4]@3 [g2,g3,b3,d4]@3 [g2,g3,b3,d4]@3 [g2,g3,b3,d4]@2 ~@10", // G
  L: "[d4,f#4,g4,b4] ~@8 d4@3 ~@9 d4@3, d3 [c3,d3], ~ d4@2 ~@2 d4@2 ~, ~@6 f#4@7 ~@5 [f#4,a4]@6, ~@6 a4@5 ~@13", // Gmaj7 Csus2 F#m
  M: "~@3 d4 ~@3 d4, [b2,d3]@11 ~ [g2,d3]@11 ~, ~ d4@2 ~@2 d4@2 ~, ~@6 f#4@12 [f#4,g4,a4,b4]@5 ~, ~ a4 ~@2", // Bm G5 Gmaj7
  N: "~@15 d4@3 [f#4,a4]@3 d4@2 ~, d3@6 d3@5 ~, ~ d4@2 d4@2 ~@3, ~ [f#4,a4]@2 ~", // F#m
  O: "~@3 g3 ~@3 g3, g2@11 ~ g2@11 ~, ~ g3@2 ~@2 g3@2 ~, ~ b3@3, ~@6 d4@5 ~@7 d#4@6",
  P: "~ c4 ~ c4 ~ d4 ~ d4, c3@3 ~ d3@2 ~@2, ~ [e4,g4] ~ [f#4,a4]", // Em F#m
  Q: "~ g3 d4 g3 ~ g3 ~ g3, g2@5 ~ g2@4 ~@2, ~ b3@3, ~@3 d#4",
  R: "~ g3 ~ g3 ~ g3 ~ g3, g2@5 ~ g2@4 ~@2, ~@6 b3@8 ~ b3@9, ~ d4 ~ d#4",
  S: "[~@3 g3@3 ~@3 g3@3 ~@3 g3@3 ~@9 [g3,b3,d4]@3 [g2,g3,b3,d4,f4]@3 [g2,g3,b3,d4,f4]@3 [g2,g3,b3,d4,f4]@3 [g2,g3,b3,d4,f4]@3 [g2,g3,b3,d4,f4]@3 [g2,g3,b3,d4,f4]@2 ~, g2@10 ~@2 g2@9 g3@6 ~@21, ~@2 [b3,d4]@3 ~ [b3,d4]@3 ~@7, ~@4 g2 ~@3]/2", // G G7 Bm
  T: "[~@3 c4 ~@3 c4 ~@7 c4, c3@12 c3@12 c3@12 c3@11 ~, ~@3 c4@6 ~@6 c4@6 ~@6 c4@5 ~ c4@6 c4@6 ~@3, ~@2 [e4,g4]@3 ~ e4@4 [e4,g4]@4 [e4,g4]@2, ~@6 g4@3 ~@7]/2", // Em
  U: "[~@3 g3 ~@3 g3 ~@7 g3, g2@6 g2@6 g2@6 g2@5 ~, ~ g3@2 ~@2 g3@2 ~@2 g3@2 g3@2 g3@2 ~, ~@3 [b3,d4]@4 ~@2 [b3,d4]@4 ~@2 [b3,d4,f4]@6 [b3,d4,f4]@3]/2", // Bm Bdim
  V: "[~@15 c4, c3@12 c3@12 c3@12 c3@11 ~, ~@3 c4@6 c4@6 c4@6 c4@6 c4@5 ~ c4@6 c4@6 ~@3, ~ [e4,g4]@2 [e4,g4]@2 [e4,g4]@2 [e4,g4]]/2", // Em
  W: "~ [d4,f#4,a4] [d3,d4,f#4,a4]!6, d3 ~@3", // D
  X: "[d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@3 [d3,d4,f#4,a4]@2 ~", // D
})).s("gm_acoustic_guitar_steel").gain(0.25)

// bass · acoustic bass
const bass = note(`<
  ~ A B A B A B A B C D E F G B A B C D H I J E K E K E L K M C L K M C N O G B A B C D E F G B A B C D E F G B A B C D
  H I J P K E K P L K M C L K M C N O G B A B C D E F G B A B A B A B C D E F ~
>`.pickRestart({
  A: "d2@3 d2@3 d2@3 d2 ~@2 c2@3 c2@3 c2@3 c2 ~@2", B: "b1@3 b1@3 b1@3 b1 ~@2 g1@3 g1@3 g1@3 g1 ~@2",
  C: "c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2 ~@2", D: "g1@3 g1@3 g1@3 g1 ~@2 e2@3 e2@3 e2@3 e2 ~@2",
  E: "c2@3 c2@3 c2@3 c2 ~@2 d2@3 d2@3 d2@3 d2 ~@2", F: "g1@3 g1@3 g1@3 g1@3 g1 ~@11",
  G: "d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 c2@3 c2@3 c2@3 c2 ~@2", H: "c2@3 ~ c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2 ~",
  I: "~ d2@3 d2@2 d2@3 d2@3 d2@3 ~ d2@2 d2@3 d2 ~@2", J: "~ g1@2 g1@3 g1@3 g1@3 g1@3 g1@3 g1@3 g1@2 ~",
  K: "g1@3 g1@3 g1@3 g1@3 g1@3 g1@3 g1@3 g1@2 ~", L: "g1!8", M: "~ c2@2 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3", N: "d2!8",
  O: "d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2 ~@2", P: "c2@3 c2@3 c2@3 c2@2 ~ d2@3 d2@3 d2@3 d2@2 ~",
})).s("gm_acoustic_bass").gain(0.17)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B A C A D A C ~@3 E A D A C ~@18 F ~ A D A C ~@3 E A D A C ~@3 E A D A C ~@18 F ~ A D A C ~@3 E A B A C A D A C
  ~@3 E ~
>`.pickRestart({
  A: "~@7 c3", B: "~@5 a2 ~ [c3,g3], ~@3 d4", C: "~@15 [a2,g3]@3 ~@3 [c3,g3]@2 ~, ~@9 g2@9 d4@5 ~",
  D: "~@5 [a2,g3] d4 [c3,g3], ~@9 g2@11 ~@4", E: "~@8 g2@3 ~@13",
  F: "~ [d3,d4]@3 [d3,d4,a4]@3 [d3,d4,f#4,a4]@3 [d4,a4]@3 a4@2 ~ d4@2 ~@4 a4@2, f#4 ~@7", // D D5 D D5
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · drawbar organ
const drawbar_organ = note(`<
  ~ A@8 B C D E F@4 B C B G H I H J H K L@2 ~@6 M@2 N@4 B C D E N@4 B C D E F@4 B C B G H I H J H K L@2 ~@6 M@2 N@4 B C
  D E O@8 B C D E ~
>`.pickRestart({
  A: "[~ d3@12 c3@11 b2@9 [g2,g4,b4]@15 ~@12 c3@12 b2@9 [g2,g4,b4]@15 d3@12 c3@12 b2@9 [g2,g4,b4]@15 ~@12 c3@12 b2@9 [g2,g4,b4]@15, ~ d4@191, ~ [f#4,a4]@32 ~@15 d3@12 ~@84 d3@12 ~@36, ~@49 [f#4,a4]@32 ~@15 [f#4,a4]@32 ~@17 [f#4,a4]@32 ~@15]/8", // G F#m
  B: "[c3,c4,e4,g4]", C: "[g3,b3,d4]@5 ~ [e3,e4,g4,b4]@6, g2 ~", D: "[c3,c4,e4,g4]@6 [d4,f#4,a4]@5 ~, ~ d3",
  E: "[g2,g3,b3,d4]@7 ~@5", // G
  F: "[~@4 c3@4 b2@3 [g2,g4,b4]@5 ~@4 c3@4 b2@3 [g2,g4,b4]@5, d3 ~@3 d3 ~@3, ~ d4@95, ~ [f#4,a4]@32 ~@16 [f#4,a4]@32 ~@15]/4", // G F#m
  G: "~ [d3,d4,f#4,a4]@22 ~", H: "d4@5 ~ d#4@5 ~, [g3,b3]@11 ~", I: "~ [c4,e4,g4]@11 [d4,f#4,a4]@10 ~@2",
  J: "[c4,e4,g4]@11 ~ [d4,f#4,a4]@10 ~@2", K: "[c4,e4,g4]@12 ~ [d4,f#4,a4]@9 ~@2",
  L: "[~@24 f4@23 ~, [g3,b3,d4]@47 ~]/2", M: "[[d4,f#4,a4]@23 ~]/2",
  N: "[d3@4 c3@4 b2@3 [g2,g4,b4]@5 ~@4 c3@4 b2@3 [g2,g4,b4]@5, d4@95 ~, [f#4,a4]@32 ~@17 [f#4,a4]@32 ~@15, g2 ~@47 d3@12 ~@36]/4", // G F#m
  O: "[d3 d3@12 c3@11 b2@9 [g2,g4,b4]@15 ~@12 c3@12 b2@9 [g2,g4,b4]@15 d3@12 c3@12 b2@9 [g2,g4,b4]@15 ~@12 c3@12 b2@9 [g2,g4,b4]@15, ~ d4@191, ~ [f#4,a4]@32 ~@15 d3@12 ~@84 d3@12 ~@36, ~@49 [f#4,a4]@32 ~@15 [f#4,a4]@32 ~@17 [f#4,a4]@32 ~@15]/8", // G F#m
})).s("gm_drawbar_organ").gain(0.25)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@21 A B A C D E F G ~@32 A B A C D E F G ~@29>".pickRestart({
  A: "d4@10 ~@2 d#4@11 ~, [g3,b3]", B: "~ [c4,e4,g4]@11 [d4,f#4,a4]@10 ~@2",
  C: "[c4,e4,g4]@11 ~ [d4,f#4,a4]@10 ~@2, a4 ~@23", D: "d4@10 ~@2 d#4@11 ~, [g3,b3]@23 ~",
  E: "a4 f4 ~@11 [d4,f#4,a4]@9 ~@2, [c4,e4,g4]@11 ~@13", F: "[g3,b3,d4]@23 ~", G: "[g3,b3,d4,f4]@11 ~",
})).s("gm_string_ensemble_2").gain(0.25)

// other · taiko drum
const taiko_drum = note("<~@96 A@2>".pickRestart({
  A: "[~@9 g2@11 ~@4]/2",
})).s("gm_taiko_drum").gain(0.25)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@12 A ~@7 B ~@23 A ~@7 A ~@7 B ~@23 A ~@11 A ~>".pickRestart({
  A: "~@3 x", B: "~@17 x ~@3 x ~@2",
})).gain(0.28)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[x!3 ~] ~@97>").gain(0.28)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 [~@5 x!2 ~] ~@39 [~@5 x!2 ~] ~@37>").gain(0.28)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@7 A ~@3 A ~@7 A ~@5 A ~@5 A ~@7 A ~@7 A ~@3 A ~@7 A ~@5 A ~@5 A ~@11 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.28)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@29 [x!4]!8 ~@32 [x!4]!8 ~@21>").gain(0.4)

stack(
  acoustic_guitar_steel, bass, electric_guitar_clean, drawbar_organ, string_ensemble_2, taiko_drum, kick, snare,
  low_tom, pedal_hat, mid_tom, open_hat, crash, woodblocks
)

More by Traveling Wilburys