Strudelify

Your Wildest Dreams

The Moody Blues

KeyE minorTempo150 bpm
0:00/0:00
// Your Wildest Dreams — The Moody Blues
// 150 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 146 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 · acoustic guitar steel · "Steel-stGt"
const acoustic_guitar_steel = note(`<
  A B C D A B C D E F G H E I J H K L M N O@2 P A B C D E Q R H E I S H K L M T U@2 V W X Y@2 Z AA AB@2 AC AA AD@3 E F R
  AE E I AF H AG AH AI T AJ@2 V A B C D E F R AE E I S H K L M T AJ@2 V W X Y@2 Z AA AK@2 AL AM AB@2 Z AA AN AO AP E F R
  H E F AQ@4 AR@7 AS@16 AT@6 ~
>`.pickRestart({
  A: "[b3,d4,g4]@5 ~@5 [d4,g4,b4] ~@5", B: "[c4,e4,g4] ~", C: "[c4,e4,g4]@5 ~@5 [e4,g4,c5] ~@5",
  D: "[d4,g4,b4]@5 ~@3 [d4,f#4,a4]@5 ~@3", E: "[b3,d4,g4]@3 ~ g4 ~ a4@3 ~ [d4,g4,b4]@5 ~", F: "[g3,c4,e4] ~",
  G: "~@4 e4 ~ e4@3 ~ [c4,e4,g4]@5 ~, [g3,c4]@9 ~@7", H: "[d4,f#4,a4]@5 ~ b4 ~ g4@3 ~ a4@3 ~",
  I: "[g3,c4,e4]@8 ~@6 f#4 ~", J: "e4 ~ e4@3 ~ e4@2 [g3,c4] ~ [c4,e4,g4]@5 ~, [g3,c4] ~",
  K: "a4@3 ~ a4 ~ a4@3 ~ [c4,f4,b4]@5 ~, [c4,f4]@9 ~@7", L: "[c4,e4,g4]@8 ~@6 g4 ~",
  M: "a4@3 ~ a4 ~ a4@3 ~ [d4,g4,b4]@5 ~, [c4,f4]@9 ~@7", N: "[e4,g4,d5]@3 ~ c5 ~ [c4,e4,g4]@3 ~ e4@5 ~",
  O: "[[g3,b3,d4]@3 ~ d4 ~ [g3,b3,d4]@3 ~ e4@3 ~ [g3,c4,e4]@7 ~@5 g4@5 ~, ~@24 [c4,e4]@5 ~@3]/2", // G C
  P: "[c4,f#4]@5 ~ b4 ~ g4@3 ~ f#4@3 ~", Q: "[g3,c4,e4]@8 ~@6 d4 ~",
  R: "e4@3 ~ e4 ~ e4@3 ~ [c4,e4,g4]@5 ~, [g3,c4]@9 ~@7", S: "e4 ~ e4@2 e4 ~ e4@3 ~ [c4,e4,g4]@5 ~, [g3,c4]@9 ~@7",
  T: "[e4,g4,d5]@3 ~ c5@2 [c4,e4,g4]@3 ~ e4@5 ~", // Em7 C
  U: "[[g3,b3,d4]@3 ~ d4 ~ [g3,b3,d4]@3 ~ e4@3 ~ [g3,c4,e4]@7 ~@5 g4@6, ~@24 [c4,e4]@5 ~@3]/2", // G C
  V: "[c4,f#4,a4]@5 ~ b4 ~ g4@3 ~ f#4@3 ~", W: "b3@5 ~@3 d4@5 ~@3, g4@11 ~@5",
  X: "[c4,e4,g4]@5 ~@3 [b3,d4,g4]@4 ~@2 d5 ~", // C G
  Y: "[[g4,b4,d5]@3 ~ d5 ~ [g4,b4,d5]@3 ~ b4@3 ~ [g4,c5,e5]@10 ~@6 e5 ~]/2", // G C
  Z: "[g4,e5]@3 ~ [g4,e5] ~ [a4,f#5]@3 ~ [b4,g5]@3 ~ [a4,f#5]@2", AA: "~@2 [g4,e5]@3 ~ [g4,d5]@3 ~ [d4,b4]@5 ~",
  AB: "[[g4,b4,d5]@3 ~ d5 ~ [g4,b4,d5]@3 ~ b4@3 ~ [c5,e5]@3 ~ d5 ~ c5@3 ~@7 e5 ~, ~@14 g4@7 ~@11]/2", // G C
  AC: "[g4,e5]@4 [g4,e5]@2 [a4,f#5]@3 ~ [b4,g5]@3 ~ [a4,f#5]@2", // C D Em D
  AD: "[[g4,b4,d5]@3 ~ d5 ~ [g4,b4,d5]@3 ~ b4@3 ~ [f#4,a4,c5]@6 ~@2 [f#4,a4,c5] ~ [f#4,a4,c5]@4 ~@2 [c4,f#4,a4]@10 ~@4 [c4,f#4,a4]@3 ~]/3", // G F#dim
  AE: "[d4,f#4,a4]@4 a4 ~ b4@2 g4@3 ~ a4@3 ~", AF: "[g3,c4,e4]@9 ~ [c4,e4,g4]@5 ~", AG: "[c4,f4,a4]@9 ~ [c4,f4,b4]@5 ~",
  AH: "[c4,e4,g4]@8 ~@4 e4 ~ g4 ~", AI: "[c4,f4,a4]@9 ~ [d4,g4,b4]@5 ~",
  AJ: "[[g3,b3,d4]@3 ~ d4 ~ [g3,b3,d4]@3 ~ e4@2 e4 ~ [g3,c4,e4]@7 ~@5 g4@5 ~, ~@24 [c4,e4]@5 ~@3]/2", // G C
  AK: "[[d4,g4,b4]@3 ~ b4 ~ [d4,a4]@3 ~ [d4,g4,b4]@3 ~ [c4,e4,g4]@10 ~@8]/2", // G D5 G C
  AL: "[g4,c5,e5]@3 ~ [g4,c5,e5] ~ [a4,d5,f#5]@3 ~ [b4,e5,g5]@3 ~ [f#5,a5]@2", // C D Em F#m
  AM: "~@2 [e5,g5]@3 ~ [d5,f#5] ~ [c5,e5] ~ [b4,d5] ~ [a4,c5] ~ [b4,d5] ~", // Em D C Bm Am Bm
  AN: "[g4,b4,d5]@3 ~ d5 ~ [g4,b4,d5]@3 ~ b4@3 ~ [f#4,a4,c5]@2", AO: "~@2 c5 ~ b4 ~ g4 ~ a4 ~ c5 ~ b4 ~ g4 ~",
  AP: "a4 ~ g4 ~ f#4 ~ g4 ~ a4 ~ f#4 ~ d4 ~ c4 ~",
  AQ: "[e4 ~ e4@4 e4@4 ~@6 [d4,f#4,a4]@5 ~ b4 ~@5 a4@3 ~ a4@3 ~ a4 ~@5 c4@6 g4@14 g4@2, g3, c4@9 ~ e4@32 [f4,b4]@22, ~@5 c4@11 [c4,f4]@3 a4@13, ~@5 g4@7 g4@12 [c4,e4]@8]/4", // D Fdim F5 C
  AR: "[a4@4 a4@2 ~@4 g4@6 d5@3 ~ c5 ~ e4@4 ~@6 [b3,d4]@4 d4@2 ~@4 e4@4 [c4,e4]@10 ~@8 f#4@5 ~@7 f#4@3 ~@31 b4@2, f4@10 g4 b4 [c4,e4,g4]@2, c4@5 d4@3 [e4,g4]@3 [c4,g4]@2 e4@3 g3@3 [b3,d4]@9 c4 g4@3 a4@24, ~@3 a4@16 g3@4 g3@33, ~@5 b4@23 e4@4 c4@3 b4 g4@4 [b3,d4]@16]/7", // Bm C Em C5 Bm
  AS: "[e4@5 ~@27 e4@5 ~@26 b4, g4@6 g4 f#4@4 b4 g4@2 f#4@10 [e4,g4]@7 b4@8 a4@25, c5@5 ~@5 e4@22 [b3,d4]@46 f#4@8 b4@2 g4@4 f#4@36, ~@7 a4@25 [g4,c5]@5 e4@11 [b3,d4]@16, ~@7 c4@9 g4@4 b4@4 c4@14 g4 c4@9 g4@4 b4@4 [c4,e4,g4]@8]/8", // Em Bm C5 Bm C
  AT: "[e4@10 ~@54 e4@10 ~@18 f#4@3 ~, g4@12 g4@2 f#4@8 b4@2 g4@4 f#4@20 [e4,g4]@14 b4@16 [c4,a4]@10 g4@7 ~, c5@5 ~@5 e4@22 [b3,d4]@63 ~, ~@14 a4@50 [g4,c5]@10 e4@21 ~, ~@14 c4@18 g4@8 b4@8 c4@28 g4@2 f#4@8 b4@9 ~]/6", // Em F Bm C5
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.1)

// bass · synth bass 1 · "Bass"
const bass = note(`<
  A B C D A B C D A B C D A B C E F G H I J K L A B C D A B C D A B C E F G H M J N L J O P@2 Q R P@2 Q R S@2 T A B C D
  A B C E F G H M J K L J B C D A B C D A B C E F G H M J K L J O P@2 Q R P@2 Q R P@2 Q R U@2 V W ~@3 A B C E F G H M J
  K L A B C D A B C D A B C D A B C D A B C D A B C X ~
>`.pickRestart({
  A: "g1@9 ~ b1@5 ~", B: "c2@4 ~@2 g1 ~ c2 ~ e2 ~ g2 ~ b1 ~", C: "c2@9 ~ c2@5 ~", D: "d2@5 ~@3 a1 ~ b1 ~ d2 ~ f#1 ~",
  E: "d2@5 ~@3 a1 ~ b1 ~ d2 ~ e2 ~", F: "f2@9 ~ f2@5 ~", G: "e2@4 ~@2 d2 ~ c2@3 ~ g1@3 ~", H: "f1@9 ~ g1@5 ~",
  I: "c2@9 ~ e2 ~ g2 ~ f#1 ~", J: "g1@4 ~@2 g1 ~ b1 ~ d2 ~ g2 ~ b1 ~", K: "c2@4 ~@2 g1 ~ c2 ~ e2 ~ g2 ~ c2 ~",
  L: "d2@11 ~@5", M: "c2@5 ~@3 c2 ~ e2 ~ g2 ~ f#1 ~", N: "c2@4 ~@2 g1 ~ c2 ~ e2 ~ g2 ~ c2@2",
  O: "c2 ~ b1 ~ a1@3 ~ g1@3 ~ g2@3 ~", P: "[g1@3 ~ g1 ~ a1@3 ~ b1@3 ~ c2@6 ~@2 g2 ~ c2@3 ~ g1@3 ~]/2",
  Q: "c2@3 ~ c2 ~ d2@3 ~ e2@3 ~ d2@2", R: "~@2 c2@3 ~ b1@3 ~ g1@5 ~",
  S: "[g1@3 ~ g1 ~ g2@3 ~ g1@3 ~ d2@6 ~@2 a1 ~ d2 ~ d2@3 ~ d2@2]/2", T: "~@2 d2 ~ c2 ~ b1 ~ a1@3 ~ d2@3 ~",
  U: "[g1@3 ~ g1 ~ g2@3 ~ g1@3 ~ d2@6 ~@2 a1 ~ d2 ~ d2@3 ~ d2 ~]/2", V: "d2 ~ d2 ~ c2 ~ b1 ~ a1@3 ~ d2@3 ~", W: "g1 ~",
  X: "d2@5 ~@3 a1 ~ b1 ~ d2 ~@3",
})).s("gm_synth_bass_1").gain(0.21).pan(0.9)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@27 A B C D A B C D E B E B A B F G H I@3 J K@3 J L@3 ~@8 E B E B A B F G M@2 N A B C D A B C D E B E B A B F G H O@2
  P Q R@3 S@4 T L@3 ~@15 U V@2 W U V@2 W U V@2 W U V@2 W U V@2 W U V@2 W ~
>`.pickRestart({
  A: "[d4,g4,b4]", B: "[c4,e4,g4]@11 ~@5", C: "[c4,e4,g4]", D: "[d4,f#4,a4]@11 ~@5", E: "[f4,a4,c5]",
  F: "[e4,f#4,a4,c5]", G: "[d4,g4,b4]@11 ~@5", H: "[c4,e4,g4] ~ [d4,g4,b4] ~",
  I: "[[d4,g4,b4]@12 ~@2 [c4,e4,g4]@22 ~@2 [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4,a4]@2]/3", // G C D Em D
  J: "~@2 [c4,e4,g4]@3 ~ [d4,g4,b4]@3 ~ [d4,b4]@2 [d4,b4]@3 ~", // C G
  K: "[[d4,b4]@13 ~ [c4,e4,g4]@22 ~@2 [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4,a4]@2]/3", // G C D Em D
  L: "[[d4,b4]@13 ~ [d4,f#4,a4,c5]@29 ~@5]/3", M: "[[c4,e4,g4]@27 ~@5]/2", N: "[d4,g4,b4] ~ [d4,f#4,a4] ~",
  O: "[[d4,b4]@13 ~ [c4,e4,g4]@13 ~@5]/2", P: "[c4,e4,g4]@6 [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4,a4]@2",
  Q: "~@2 [c4,e4,g4]@3 ~ [d4,b4]@3 ~ [d4,g4,b4]@6", // C G
  R: "[[d4,g4,b4]@13 ~ [c4,e4,g4]@24 [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4,a4]@2]/3", // G C D Em D
  S: "[~@2 [e4,g4,b4]@3 ~ [d4,f#4,b4] ~ [d4,b4]@21 ~ [c4,e4,g4]@24 [d4,f#4,a4]@3 ~ [e4,g4,b4]@3 ~ [d4,f#4,a4]@2]/4", // Em Bm G C D Em D
  T: "~@2 [c4,e4,g4]@3 ~ [d4,b4]@3 ~ [d4,b4] ~ [d4,b4]@2 ~@2", U: "[b3,d4,g4]", V: "[c4,e4,g4]/2",
  W: "[c4,f#4,a4]@11 ~@5", // F#dim
})).s("gm_string_ensemble_1").gain(0.27)

// drums · kick
const kick = s("bd").struct("<A@7 B A@18 B A@16 B A@10 B A@18 B A@16 B A@14 B C ~@11 D@2 A@8 E A@16 ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@3 x ~@2 x", C: "x", D: "x!2", E: "x ~@3 x!2 ~ x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<A@7 B A@18 B A@16 B A@10 C A@18 B A@16 C A@14 B ~@14 D A@24 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@2 x ~ x!4", D: "~@3 x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A@7 B A@18 C A@16 B A@10 B A@18 B A@16 B A@14 C ~@12 D@2 E A@23 F ~>".pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "x!4 ~@4", D: "x!2", E: "x ~@3 x!2 ~@2", F: "x!7 ~",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@18 A ~@16 A ~@10 A ~@18 A ~@16 A ~@14 A ~@14 A ~@24>".pickRestart({
  A: "x",
})).gain(0.64)

stack(acoustic_guitar_steel, bass, string_ensemble_1, kick, snare, hihat, crash)

More by The Moody Blues