Strudelify
Any Dream Will Do cover art

1991 · Joseph and the Amazing Technicolor Dreamcoat (1991 London Cast Recording)

Any Dream Will Do

Jason Donovan

KeyC majorTempo126 bpm
0:00/0:00
// Any Dream Will Do — Jason Donovan
// 126 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 118 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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 finger · "FINGERDBAS"
const bass = note(`<
  ~@2 A@2 B C B D E@2 F@2 G H I@2 J K L D M N B O@2 P F@2 G H I@2 J K L D M N B O@2 P Q R S T U@2 V W X@2 F@2 G H I@2 J
  K L D M N B O@2 P F@2 G H I@2 J K L D M N B O@2 P Q R S T U@2 V W X@2 F@2 G H I@2 J K L D M N B Y A@2 B C B D Z@4
>`.pickRestart({
  A: "[c2@8 ~ c2@14 g1@9 ~ g1@14 ~]/2", B: "c2@8 ~ c2@14 ~", C: "g1@9 g1@14 ~", D: "g1@8 ~ g1@15",
  E: "[c2@9 c2@14 g1@7 ~@18]/2", F: "[c2@9 ~ c2@13 g1@9 ~ g1@14 ~]/2", G: "c2@9 c2@14 ~", H: "f2@9 f2@14 ~",
  I: "[c2@8 ~ c2@14 g1@9 ~ g1@15]/2", J: "c2@9 ~ c2@14", K: "g1@4 ~ g1@7", L: "c2@8 ~ c2@15", M: "c2@3 c2@5",
  N: "f2@9 ~ f2@14", O: "[g1@8 ~ g1@14 c2@9 ~@2 c2@14]/2", P: "g1@9 g1@13 ~@2", Q: "f2@8 ~ f2@12 ~ c2 ~",
  R: "f2@9 ~ f2@11 c2@2 ~", S: "d#2@8 ~ d#2@12 c2@2 ~", T: "f#2@3 d#2@3 f#2@2",
  U: "[c2@11 b1@6 ~ c2@5 d2@6 c2@6 b1@6 c2@6 ~]/2", V: "g1@6 a1@5 b1@6 c2@6 ~", W: "b1@5 a1@6 g1@6 a1@7",
  X: "[d2@6 e2@6 f2@5 e2@6 g2@2 ~@23]/2", Y: "g1 ~@2", Z: "[c2 ~@8 c2@14 g1@10 ~@2 g1@16 c2@44 ~]/4",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@2 A B C D C E F G H@2 I J K L M N M O I P K Q M R K N M S@2 L K N I T@5 U@2 V@2 W@2 X@2 Y@2 Z G H@2 I J K L M N M O
  I P K Q M R K N M S@2 L K N I T@5 U@2 V@2 W@2 X@2 Y@2 Z G K N M S@2 L K N I AA@5 A B C D C E A AB@3
>`.pickRestart({
  A: "~@9 c5@14 ~, g5, e5@7 ~", B: "d5@9 c5@9 d5@5 ~, f5@7 ~", C: "~@5 g5@7, [c5,e5]@23 ~", D: "d5@9 c5@9 d5@5 ~, f5",
  E: "d5@10 c5@9 d5@5, f5", F: "~@5 g5@7, [c5,e5]@11 ~", G: "[b4,d5,g5] ~@7",
  H: "[c5 c5@20 ~@3 b4@22 ~@2, e5@22 ~ e5@23 ~@2]/2", I: "e5@23 ~, c5@7 ~", J: "[c5,f5]@11 ~", K: "[c5,e5]@23 ~",
  L: "[b4,d5]@23 ~", M: "[c5,e5]@11 ~", N: "[b4,e5]@23 ~", O: "[b4,e5]@11 ~", P: "[c5,f5]@23 ~", Q: "[b4,d5]@11 ~",
  R: "[b4,e5]@7 ~", S: "[[c5,f5]@23 ~ e5@24, ~@23 c5@23 ~@2]/2",
  T: "[[b4,e5]@23 ~ c5@20 ~@4 f5@23 ~ e5@23 ~ d5@24, ~@23 e5@22 ~@2 c5@22 ~@2 c5@22 ~@2 b4@23 ~@2]/5", // E5
  U: "[c5@22 ~ [a#4,d5]@23 ~@2, e5@23 ~]/2", V: "[f5,a5]/2", W: "[d#5,f#5]/2",
  X: "[[c5,e5]@11 ~ [b4,d5]@5 ~ e5@4 ~@2 f5@5 e5@5 ~@2 d5@5 ~ e5@5 ~, ~@17 c5@5 ~ c5@11 ~ b4@5 ~ c5@4 ~@3]/2", // C Bm
  Y: "[[b4,d5,g5]@23 ~]/2", Z: "[a4,c5,f5]@11 ~",
  AA: "[[b4,e5]@23 ~ c5@20 ~@4 f5@23 ~ e5@23 ~ d5@6 ~@18, ~@23 e5@22 ~@2 c5@22 ~@2 c5@22 ~@2 b4@6 ~@19]/5", // E5
  AB: "[d5@11 c5@10 d5@6 [c4,g5]@39 ~@6, f5@25 ~@2 e5@32 ~@13]/3", // C5
})).s("gm_percussive_organ").gain(0.25)

// other · brass section · "BRASS 1"
const brass_section = note("<~@41 A@2 ~@40 A@2 ~@33>".pickRestart({
  A: "[~@5 f3@2 g3 [a3,b3] c4 d4 f4 g4 [a4,b4] c5 d5 [e5,f5] g5 [a5,b5] ~@2 [e6,f6] g6 a6@7 ~@18, ~@3 [c3,d3]@2 ~@15 d6@2 ~@26, ~@4 e3@2 ~@13 c6@2 ~@27]/2", // Asus2 Fmaj7 Asus2 Fmaj7 Csus2
})).s("gm_brass_section").gain(0.25)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@67 A B@2 C@2 D@2 E@2 F@2 C@2 G@2 H@2 ~@34>".pickRestart({
  A: "~@6 e5@5 ~ e5@6 f5@6", B: "[g5@29 ~ e6@5 ~ e6@6 d6@6]/2", C: "[c6@3 g5@7 c6@2 b5@2 a5@2]/2",
  D: "[g5@9 e5@20 ~ f5@6 e5@6 d5@6]/2", E: "[g5@30 e5@5 ~ e5@6 f5@6]/2", F: "[g5@30 e6@5 ~ e6@6 d6@6]/2",
  G: "[g5@5 e5@10 f5@3 e5@3 d5@3]/2", H: "[c5@7 ~@5]/2",
})).s("gm_tubular_bells").gain(0.25).pan(0.8)

// other · soprano sax · "SOPRAN SAX"
const soprano_sax = note(`<
  ~@9 A B C@2 D E@2 B F@2 G@2 H I@2 J K L M N O P@2 L Q R S@3 T@2 U@2 V W X Y Z@5 AA AB@2 AC AD AE@2 L Q AF@2 AG O AH@2
  AI@2 L AJ@2 AK AE@2 L AL@2 AM AN O AO@5 AP AQ@2 AR@5 AS@2 AT AU AD AV@2 AW AX AF@2 AY AZ BA@4 ~@8
>`.pickRestart({
  A: "~@5 d#4 e4@4 ~ e4@6 f4@5 ~ f#4", B: "g4@17 ~@7", C: "[~@4 e5@10 ~ e5@2 ~ d5@5 c5@9 g4@16, ~@4 d#5 ~@43]/2",
  D: "~@5 c5@6 ~ b4@5 ~ a4@6", E: "[g4@9 e4@20 ~ f4@5 ~ e4@6 d4@6]/2",
  F: "[~@6 e4@8 ~ e4@2 ~ f4@5 g4@19 ~@6, ~@23 f#4 ~@24]/2", G: "[~@3 d#5 e5@10 ~ e5@2 d5@5 ~ c5@10 g4@15]/2",
  H: "~@6 c5@5 ~ b4@6 a4@6", I: "[g4@8 ~ e4@20 f4@6 ~ e4@6 d4@5 ~]/2", J: "c4@19 ~@5",
  K: "~@5 d#4 e4@8 ~ e4@2 f4@6 f#4", L: "g4", M: "~@5 e5@9 ~ e5@2 ~ d5@6, ~@5 d#5 ~@18", N: "c5@9 g4@8 ~ c5@3 g4@2 ~",
  O: "a4 c5 b4 a4", P: "[g4@4 e4@10 ~ f4@3 e4@3 d4@3]/2", Q: "~@6 e4@5 ~ e4@6 f4@5 f#4", R: "g4@23 ~",
  S: "[~@5 d#5 e5@8 ~ e5@2 ~ d5@5 c5@9 ~ g4@20 c5@7 b4@6 a4@6]/3", T: "[g4@8 e4@21 ~ f4@6 e4@6 d4@6]/2",
  U: "[c4@5 ~@3]/2", V: "c5@3 a4@4 ~@2 d5@13 a4@2, ~@9 c#5 ~@14", W: "c5@4 a4@3 ~@2 d5@12 a4@2 ~, ~@9 c#5 ~@14",
  X: "c5@4 a4@2 ~@3 d5@12 a4@2 ~, ~@9 c#5 ~@14", Y: "c5@4 a4@2 ~@3 c#5 d5@13 d#5, ~@10 c5 ~@13",
  Z: "[e5@5 ~ e5@6 d5@5 e5@6 f5@5 ~ e5@6 d5@5 ~ c5@6 b4@30 g4@6 b4@6 d5@6 g5@25, ~@95 f#5 ~@24]/5",
  AA: "~@5 d#4 e4@8 ~ e4@2 ~ f4@5 f#4", AB: "[g4@27 d#5 e5@10 ~ e5@2 d5@7]/2", AC: "c5@9 g4@9 c5@4 g4@2",
  AD: "a4@5 c5@7 b4@6 a4@6", AE: "[g4@9 e4@21 f4@6 e4@6 d4@5 f#4]/2", AF: "[g4@29 d#5 e5@8 ~ e5@2 ~ d5@6]/2",
  AG: "c5@9 g4@9 c5@3 g4@2 ~", AH: "[g4@9 e4@20 f4@7 e4@6 d4@6]/2", AI: "[c4@29 d#4 e4@8 e4@4 f4@5 f#4]/2",
  AJ: "[~@3 d#5 e5@10 ~ e5@2 d5@6 c5@23 ~@2]/2", AK: "~@6 c5@6 b4@5 a4@6 ~", AL: "[~@5 e4@6 e4@6 f4@6 g4@19 ~@6]/2",
  AM: "~@4 e5@10 ~ e5@2 d5@7", AN: "c5@9 g4@8 c5@4 g4@2 g#4",
  AO: "[g4@9 e4@20 f4@6 ~ e4@5 d4@6 c4@41 ~@7 c5@4 ~ a4@4 ~ d5@12 a4@2 ~, ~@105 c#5 ~@14]/5",
  AP: "c5@4 a4@2 ~@3 [c5,c#5] ~@11 a4@2 ~, ~@3 d5@4 ~", // C#maj7
  AQ: "[c5@4 a4@3 ~@2 c#5 d5@11 a4@2 c5@4 a4@3 ~@3 d5@14 ~, ~@10 c5 ~@22 c#5 ~@14]/2",
  AR: "[e5@5 ~ e5@6 d5@5 e5@6 f5@5 ~ e5@5 ~ d5@5 ~ c5@6 b4@30 g4@6 b4@5 c#5 d5@5 f#5 g5@18 g#5 a5@5 g5, d#5 ~@119]/5",
  AS: "[~@5 d#4 e4@4 ~ e4@6 f4@6 g4@24 ~, ~@23 f#4 ~@24]/2", AT: "~@4 d#5 e5@9 ~ e5@2 d5@6 ~",
  AU: "c5@9 g4@9 c5@3 g4@2 g#4", AV: "[g4@9 e4@20 f4@6 ~ e4@6 d4@6]/2", AW: "g4@23 ~, f#4 ~@23",
  AX: "~@5 d#4 e4@8 e4@3 f4@6 f#4", AY: "c5@9 g4@8 c5@4 g4@2 g#4, ~@9 a4 ~@14", AZ: "a4@5 c5@6 ~ b4@6 a4@6",
  BA: "[g4@9 e4@21 f4@6 e4@6 d4@5 c4@26 ~@23]/4",
})).s("gm_soprano_sax").gain(0.4)

// drums · kick
const kick = s("bd").struct("<A@9 B A@37 C@3 A B A@37 C@3 A B A@13 B A@7 D E ~>".pickRestart({
  A: "x ~@4 x ~@6", B: "x", C: "x ~@4 x ~@5 x", D: "x ~@10 x ~@12", E: "~ x ~@6",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct("<A@9 ~ A@35 B A@5 ~ A@35 B A@5 ~ A@13 ~ A@7 C ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@9 x!3 ~@5", C: "~@7 x ~@13 x ~@2",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<A@9 ~ A@41 B A@41 B A@13 ~ A@7 ~ C ~>".pickRestart({
  A: "~@11 x", B: "x", C: "~ x ~@22",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@50 [~@5 x] ~@41 [~@5 x] ~@22 [~@23 x] ~@2>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<A@9 ~ A@16 B@21 C@3 B ~ B@37 C@3 B ~ B@13 ~ B@7 D ~@2>".pickRestart({
  A: "~@2 x", B: "~@3 x ~@4 x!2 ~@2", C: "~@3 x ~@4 x!2 ~ x", D: "~@7 x ~@10 x ~@2 x ~@2",
})).gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@50 [~@8 x!2 ~@2] ~@41 [~@8 x!2 ~@2] ~@22 [~@6 x!2] ~@2>").gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@43 A ~ A ~@39 A ~ A ~@30>".pickRestart({
  A: "~@11 x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@42 A ~@7 A ~@33 A ~@7 A ~@22 A B ~>".pickRestart({
  A: "x", B: "~ x ~@6",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct(`<
  A@9 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@2 x",
})).gain(0.3)

stack(
  bass, percussive_organ, brass_section, tubular_bells, soprano_sax, kick, snare, clap, low_tom, hihat, mid_tom,
  open_hat, crash, ride
)

More by Jason Donovan