Strudelify

Missing You

Chris de Burgh

KeyF majorTempo96 bpm
0:00/0:00
// Missing You — Chris de Burgh
// 96 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: 
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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(`<
  A B C D A B C D E F G H I J G K L M N O P Q R S T U E V W X Y V Z X P AA AB AC E AD AE AF AG E F G H AH J G K L M N O
  P Q R S T U E V W X Y V Z X P AA AI AC E AD AE AF E V AJ ~ A B C D A B C D A B C D A B C D A B C D A B C ~
>`.pickRestart({
  A: "f1@6 f1 e1", B: "d1@6 f1 gb1", C: "g1@6 g1 d2", D: "c2", E: "f1", F: "d2", G: "g1", H: "c2@6 c2 e2",
  I: "f2@12 ~@2 f2 ~", J: "d2@6 ~ gb1", K: "a1@6 a1 c2", L: "d2@6 ~ c2", M: "bb1@6 a1 g1", N: "a1",
  O: "bb1@4 ~@2 bb1 c2", P: "f1@6 ~ f1", Q: "d2@6 f1 gb1", R: "g1@6 bb1 d2", S: "c2@5 ~ c2@6 f1@2 gb1@2",
  T: "g1@5 ~ g1@8 g1@2", U: "c2@5 ~ c2@5 ~ c2@2 d2@2", V: "d2@5 ~ f1 gb1", W: "g1@5 ~@2 g1", X: "c2@5 ~ c2 d2",
  Y: "f1@5 ~@2 f1", Z: "g1@5 ~ bb1 d2", AA: "d1@6 ~ c2", AB: "bb1@5 ~ bb1@8 f1@2", AC: "bb1@5 ~ bb1@2 a1@4 g1@4",
  AD: "d1@5 ~ d2@6 f1@2 gb1@2", AE: "g1@5 ~ g1@6 ~@2 g1@2", AF: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", AG: "c2@5 ~ c2 ~ c2@5 ~@3",
  AH: "f2@6 ~ f2", AI: "bb1@5 ~ bb1@8 ~@2", AJ: "g1 c2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  A B C D A B C D E F G D E H G I H J K J E@2 G L G L E H M D N H M D E H J O E H P D@2 E F G D E H G I H J K J E@2 G L
  G L E H M D N H M D E H J O E H P D E H Q@3 ~@23
>`.pickRestart({
  A: "[c4,f4,a4]", B: "[d4,f4,a4]", C: "[d4,f4,g4,bb4]", D: "[c4,e4,g4]", E: "[a3,c4,f4]", F: "[a3,d4,gb4]",
  G: "[bb3,d4,g4]", H: "[a3,d4,f4]", I: "[a3,db4,e4]", J: "[bb3,d4,f4]", K: "[a3,c4,e4]", L: "[g3,c4,e4]",
  M: "[bb3,d4,f4,g4]", N: "[f3,a3,c4,e4]", O: "[bb3,db4,f4]", P: "[g3,bb3,d4,f4]", Q: "[[c4,g4]@11 ~@5]/3",
})).s("gm_synth_strings_1").gain(0.15)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@26 A B C D E B C D A B F G A B H D@2 ~@18 A B C D E B C D A B F G A B H D A B I@3 J K D L J K D L J K D L J K D L J
  K D L J K ~
>`.pickRestart({
  A: "[a3,c4,f4]", B: "[a3,d4,f4]", C: "[bb3,d4,f4,g4]", D: "[c4,e4,g4]", E: "[f3,a3,c4,e4]", F: "[bb3,d4,f4]",
  G: "[bb3,db4,f4]", H: "[g3,bb3,d4,f4]", I: "[[c4,g4]@2 [f4,a4]]/3", J: "[d4,f4,a4]", K: "[d4,f4,g4,bb4]",
  L: "[c4,f4,a4]", // F
})).s("gm_string_ensemble_2").gain(0.25)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@8 A B C D A E C F G H I J K@2 L D L D K E L M ~@2 N D A E O P K E Q@2 R A B C D A E C F G H I J K@2 L D L D K E L M
  ~@2 N D A E O P K E Q@2 K E ~@2 S T ~@2 S T ~@2 S T ~@2 S T ~@2 S T ~@2 S T ~@2
>`.pickRestart({
  A: "~@3 [a3,c4,f4]@4 ~", B: "~@3 [gb3,a3,d4]@4 ~", C: "~@3 [g3,bb3,d4,g4]@4 ~", D: "~@3 [e3,g3,c4]@4 ~",
  E: "~@3 [f3,a3,d4]@4 ~", F: "~@3 [a3,db4,e4]@4 ~", G: "~ f3 a3 d4@2 ~@3", H: "~@3 [bb3,d4,f4]@4 ~",
  I: "[a3,e4]@2 ~ a4@2 ~@3", J: "[bb3,f4]@2 ~ bb4@2 f3@3", K: "~@3 [g3,c4,f4]@4 ~", L: "~@3 [g3,bb3,d4]@4 ~",
  M: "~@3 g4@2 ~@3", N: "~@3 [bb3,d4,g4]@4 ~", O: "~@3 [d4,f4,bb4]@4 ~", P: "~@3 [db4,f4,bb4]@4 ~",
  Q: "[~ [bb3,d4,g4]@4 c4@4 ~@7]/2", R: "~@3 [c4,e4,g4]@4 ~", S: "f3 f4 a4 c5@3 ~@2", T: "d3 f4 a4 c5@3 ~@2",
})).s("gm_epiano2").gain(0.45)

// chords · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<~@81 A@4 B@16 C@3 ~>".pickRestart({
  A: "[f4@3 ~ [d4,g4]@2 ~@2 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4] ~@3 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4]@2 ~@2 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4]@2 ~@2 [f4,a4] ~ [f4,a4] ~ [d4,g4] ~ [c4,f4] ~, c4 ~@63]/4", // G5 F5 G5 F5 G5 F5 G5 F5 …
  B: "[[c4,f4]@3 ~ [d4,g4]@2 ~@2 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4] ~@3 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4]@2 ~@2 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4]@2 ~@2 [f4,a4] ~ [f4,a4] ~ [d4,g4] ~ [c4,f4] ~]/4", // F5 G5 F5 G5 F5 G5 F5 G5 …
  C: "[[c4,f4]@3 ~ [d4,g4]@2 ~@2 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ [d4,g4] ~@3 [c4,f4]@2 [d4,g4] ~@3 [c4,f4]@5 ~ g4@2 ~@2 [c4,f4]@2 [d4,g4] ~@5, ~@36 d4 ~@11]/3", // F5 G5 F5 G5 F5 G5 F5 G5 …
})).s("gm_glockenspiel").gain(0.35)

// drums · kick
const kick = s("bd").struct("<[x!2]!80 ~ [x!2]!23 ~>").gain(0.5)

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

// drums · low tom
const low_tom = s("lt").struct("<~@25 A ~@34 A ~@19 B ~@7 A ~@7 A ~@8>".pickRestart({
  A: "~@7 x", B: "~@4 x!3 ~",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A@7 B A@3 C A@7 C A@3 C A D A@3 C A@12 C A@3 C A@7 C A@3 C A D A@3 C A@15 E A@7 B A@7 B A@7 ~
>`.pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "x!7 ~", D: "x!4 ~@4", E: "x!3 ~ x!3 ~",
})).gain(0.25)

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

// drums · high tom
const high_tom = s("ht").struct("<~@25 A ~@34 A ~@27 B ~@7 B ~@8>".pickRestart({
  A: "~@5 x!2 ~", B: "~@12 x!2 ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@17 A ~@16 A ~@17 A ~@15 A ~@3 A ~@7 A ~@7 A ~@7>".pickRestart({
  A: "x",
})).gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@26 A@17 ~@18 A@18 ~@2 A@7 ~ A@7 ~ A@7 ~>".pickRestart({
  A: "~@3 x",
})).gain(0.35)

// drums · cowbell
const cowbell = s("cb").struct("<~@80 [x ~ x ~ x!3 ~] ~@24>").gain(0.3)

stack(
  bass, synth_strings_1, string_ensemble_2, epiano2, glockenspiel, kick, snare, low_tom, hihat, open_hat, high_tom,
  crash, tambourine, cowbell
)

More by Chris de Burgh