Strudelify

There Goes My Everything

Engelbert Humperdinck

KeyB♭ majorTempo87 bpm
0:00/0:00
// There Goes My Everything — Humperdinck Engelbert
// 87 bpm, 3/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(87/3)

// 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 · epiano2 · "#FM.Piano"
const epiano2 = note(`<
  A B A B C D E F A G H ~@14 I J K L M N O P Q R S T U V W X Y ~@15 I J K L M N O P Q R S T U V W Z AA R S T U V AB AC
  AD AE AF@2
>`.pickRestart({
  A: "~@5 bb3@3 f3@5 bb3@3 ~@3 bb3@2 f3@2 ~, bb2@11 ~, [c4,d4,f4]@14 ~@2 [c4,d4,f4]@7 ~", // Dm7
  B: "~@5 bb3@3 f3@5 bb3@3 ~@3 bb3@2 f3@2 ~, bb2@23 ~, [c4,d4,f4]@14 ~@2 [c4,d4,f4]@7 ~", // Dm7
  C: "~@5 eb4@3 bb3@5 eb4@3 ~@3 eb4@2 bb3@2 ~, eb3@11 ~, [f4,g4,bb4]@14 ~@2 [f4,g4,bb4]@7 ~", // Gm7
  D: "~@5 eb4@3 bb3@5 eb4@3 ~@3 eb4@2 bb3@2 ~, eb3@23 ~, [f4,g4,bb4]@14 ~@2 [f4,g4,bb4]@7 ~", // Gm7
  E: "~@5 bb3@3 f3@5 bb3@3 ~@3 bb3@2 f3@2 ~, f2@11 ~, [d4,f4]@14 ~@2 [d4,f4]@7 ~", // Dm
  F: "~@5 a3@3 f3@5 a3@3 ~@3 a3@2 f3@2 ~, f2@23 ~, [d4,f4]@14 ~@2 [c4,eb4]@7 ~", // Dm Cm
  G: "~@5 a4@3 ~@5 bb4@3 ~@5 a4@2 ~, [f2,a3,f4,f5]@7 ~ [g2,bb3,e4,e5]@7 ~ [a2,c4,eb4,eb5]@7 ~, ~@3 c5@5 ~@3 db5@5 ~@3 c5@5", // F Edim Adim
  H: "[bb2,f4,bb4,d5]@2 ~", I: "[f2,f4,a4,f5]@7 ~ [g2,g4,bb4,f5]@7 ~ [a2,a4,c5,f5]@7 ~",
  J: "[d4,f4,bb4]@13 ~@8 bb4@3, [bb2,d5]@23 ~, ~@13 bb3@10 ~, ~@16 d4@7 ~, ~@19 f4@5", // Bb
  K: "[g4,eb5]@7 ~ [f4,d5]@8 [eb4,c5]@8, f3@23 ~", L: "bb4@13 ~@3 bb4@5 c5@2 ~, [bb2,d4]@23 ~, f4@11 ~@2 f4@9 ~@2",
  M: "bb2@7 ~ c3@5 bb4@3 ~@5 bb4@2 ~, f4@23 ~, [ab4,d5]@2 [d3,c5]", // Abdim D7
  N: "[eb4,g4]@13 ~@8 bb4@2 ~, eb3@23 ~, bb4@2 g4, ~@13 eb4@10 ~", // Eb
  O: "~@16 f4@5 a4@3, [f2,c4], [f4,a4]@2 ~, ~@13 eb4@10 ~", P: "d5@13 f4@3 d5@5 f4@2 ~, [bb2,bb4]@23 ~, f4@5 ~@7",
  Q: "[f2,f4,a4]@5 ~@3 [g2,g4,bb4]@5 ~@3 [a2,a4,c5]@5 f5@2 ~, ~@5 f5@7 ~ f5@6 ~@5", // F Gm Am
  R: "[f4,bb4]@13 ~@3 bb4@5 d5@2 ~, [bb2,d5]@11 ~, ~@13 f4@9 ~@2", // Bb5 Bb
  S: "bb2@7 ~ b2@5 ~@3 [c3,f4]@5 ab4@2 ~, ab4@5 ~, [d4,f4]@13 d4@9 ~@2", // F5 Dm
  T: "[eb4,g4]@13 ~@3 g4@5 bb4@2 ~, [eb3,bb4]@11 ~, ~@13 eb4@8 ~@3", // Eb Eb5
  U: "eb3@7 ~ d3@5 eb5@2 ~ [c3,bb4,g5]@5 [g4,eb5]@2 ~, [g4,bb4,eb5]@5 ~@3", // C7 Cm Eb
  V: "[f4,bb4]@13 ~@3 bb4@5 d5@2 ~, bb2@11 ~, d5@3 ~, ~@13 f4@8 ~@3", // Bb5
  W: "[f4,a4,d5]@13 f4@2 ~ a4@5 f4@2 ~, f2@11 ~, ~@2 [eb4,c5]", // Dm Cm
  X: "[d4,f4]@13 ~@8 bb4@2 ~, bb2@11 ~, bb4@2 f4, ~@13 d4@11", Y: "[f2,c4,a4]@7 ~ [f3,a4,f5]@15 ~",
  Z: "[d4,f4]@13 ~@3 f4@5 bb4@2 ~, bb2@11 ~, bb4@17 ~@7, ~@13 d4@10 ~", // Dm
  AA: "~@5 a4@3 ~@3 db5@2 bb4@3 ~@5 a4@3, [f2,a3,f4,f5]@3 ~ [g2,bb3,e4,e5]@4 [a2,c4,eb4,eb5]@4, ~@3 c5@4 ~@12 c5@5", // F Edim Adim
  AB: "[f3,f4,a4,d5]@11 ~", AC: "[f2,eb4,f4,a4,c5]@11 ~",
  AD: "[d4,f4]@13 ~@3 f4@5 d4@2 ~, [bb2,bb4]@11 ~, ~@13 d4@6 ~@5", AE: "~@16 d5@7 ~, [bb2,d4,f4,bb4], ~ c5@2",
  AF: "[[bb2,d4,f4,bb4]@47 ~]/2", // Bb
})).s("gm_epiano2").gain(0.48)

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  ~@9 A B C D E B F G A B C D@2 H I G A J K D L M N G O P L Q R G I G S B C D T U V G O B C D G F I G A J W D L X N G O
  P L Q R G I G A P L X R G Y Z D@2 AA@2
>`.pickRestart({
  A: "f1@7 ~ g1@7 ~ a1@7 ~", B: "bb1@17 ~@4 d2@2 ~", C: "eb2@17 ~@4 f1@2 ~", D: "bb1@17 ~@4 f1@2 ~",
  E: "bb1@7 ~ g1@7 ~ f1@7 ~", F: "f2@17 ~@4 f1@2 ~", G: "bb1@17 ~@4 bb1@2 ~", H: "f2@17 ~@4 f2@2 ~",
  I: "f1@17 ~@4 f1@2 ~", J: "bb1@14 ~@2 f1@4 ~ bb1@2 ~", K: "f2@11 ~@2 f2@2 ~ f2@7 ~", L: "bb1@7 ~ c2@6 ~@2 d2@7 ~",
  M: "eb2@17 ~@4 eb2@2 ~", N: "f1@7 ~ f1@3 ~", O: "f1@7 ~ g1@6 ~@2 a1@7 ~", P: "bb1@16 ~@5 f1@2 ~",
  Q: "eb2@17 ~@4 bb1@2 ~", R: "eb2@3 ~ d2@3 ~ c2@3 ~", S: "f1@7 ~ f2@14 ~@2", T: "bb1@14 ~@2 f1@7 ~",
  U: "bb1@11 ~@2 bb1@2 ~ d2@4 ~ f2@2 ~", V: "f1@14 ~@2 f2@7 ~", W: "f1@11 ~@2 f2@2 ~ f1@7 ~",
  X: "eb2@11 ~@2 bb1@2 ~ eb1@6 ~@2", Y: "f2@11 ~", Z: "f1@11 ~", AA: "[bb1@47 ~]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · string ensemble 2 · "#Sl.Strin"
const string_ensemble_2 = note(`<
  A@6 B@4 C@5 D E@2 F@8 G@5 H@3 I@6 J K C@5 D E@2 F@8 L M N@3 H@3 I@6 J O P@7 Q@4
>`.pickRestart({
  A: "[[f4,d5,f5]@2 [g4,eb5,g5], bb4]/6", // Dm Cm
  B: "[~@5 [c5,eb5] bb4@3 a4 [g4,bb4,db5,e5] [a4,c5,eb5], f4@5 ~, [d5,f5]@41 ~@7 [d5,f5]@34 ~@14, ~@24 a4@25 ~@47]/4", // Cm Gdim Adim Dm
  C: "[[f4,d5] [g4,eb5] [f4,d5]@3, bb4]/5", D: "[eb4,a4,c5,f5]",
  E: "[[bb4,d5]@3 [a4,d5,f5] [g4,bb4,db5,e5] [a4,c5,eb5], f4@31 ~@17]/2", // Bb Dm Gdim Adim
  F: "[[f4,d5]@3 [g4,eb5]@3 ~@6 f5@3 [a4,c5,eb5]@3 [bb4,d5]@3 a4 [g4,bb4] [a4,c5], bb4@59 ~@37, ~@48 f4@127 ~@17, ~@48 d5@73 ~@47 f5@23 ~]/8", // Dm Cm Adim Bb Gm Am
  G: "[[bb4,d5]@23 ~ [a4,c5,eb5]@24 ~@24 ab4@24 [g4,eb5]@24, f4@4 ~, ~@2 bb4@3, ~@2 d5@2 ~]/5", // Bb Adim Cm
  H: "[[a4,c5]@3 [bb4,d5]@3 a4 [g4,bb4] [a4,c5], f4@19 ~@5, ~@2 f5]/3", // Am Bb Gm Am
  I: "[~@3 ab4@3 [g4,eb5]@6 ~@5 [eb4,c5], bb4@5 a4, [f4,d5]@47 ~@49 f4@47 ~, ~@96 d5@41 ~@7]/6", J: "[d4,f4,bb4]",
  K: "c4 [f4,f5]@2, a4", L: "[f4,bb4,d5] ~@23", M: "[a4,c5,eb5]", N: "[~ ab4 [g4,eb5], bb4, d5@2 ~]/3",
  O: "[f4,a4,d5,f5] [g4,bb4,db5,e5] [a4,c5,eb5]", // Dm Gdim Adim
  P: "[~ ab4 [g4,eb5]@2 ~@2 [eb4,c5], bb4@5 a4@2, [f4,d5]@47 ~@49 f4@71 ~, ~@96 d5@49 ~@23]/7", // Cm Dm
  Q: "[[d4,f4,bb4]@47 ~]/4", // Bb
})).s("gm_string_ensemble_2").gain(0.18)

// chords · marimba
const marimba = note(`<
  ~@10 A B A@3 C A D A B A@3 C A E A F A G H C A E A G B@2 A C A I A B A@3 C A D A B A@3 C A E A F A G H C A E A G B@2 A
  J A D A G B@2 A ~@2 A@2 K ~
>`.pickRestart({
  A: "~@13 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@4 [f4,bb4,d5] ~@2", // Bb
  B: "~@13 [g4,bb4,eb5] ~@2 [g4,bb4,eb5] ~@4 [g4,bb4,eb5] ~@2", C: "~@13 [f4,a4,c5] ~@2 [f4,a4,c5] ~@4 [f4,a4,c5] ~@2",
  D: "~@5 [a4,c5,f5] ~@7 [a4,c5,e5] ~@2 [a4,c5,eb5] ~@4 [a4,c5,eb5] ~@2", // F Am Adim
  E: "~@5 [a4,c5,f5] ~@7 [a4,c5,f5] ~@2 [a4,c5,f5] ~@4 [a4,c5,f5] ~@2", // F
  F: "~@13 [a4,c5,eb5] ~@2 [a4,c5,eb5] ~@4 [a4,c5,eb5] ~@2", G: "~@13 [f4,ab4,d5] ~@2 [f4,ab4,d5] ~@4 [f4,ab4,d5] ~@2",
  H: "~@13 [eb4,g4,bb4] ~@2 [eb4,g4,bb4] ~@4 [eb4,g4,bb4] ~@2", I: "[a4,c5,f5] ~@7 [a4,c5,f5] ~@15",
  J: "~@13 [f4,bb4,d5] ~@2 [f4,a4,c5] ~@4 [f4,a4,c5] ~@2", K: "[f4,bb4,d5] ~@23",
})).s("gm_marimba").gain(0.4).pan(0.3)

// chords · shamisen · "#Tsugaru"
const shamisen = note("<~@12 A B ~@2 A C D ~ E F ~@18 A G ~@2 A B ~@2 A C D ~ E F ~@31>".pickRestart({
  A: "~@13 [d4,d5] ~@2 f4 ~@4 [bb4,d5] ~@2", B: "[f4,d5] ~@2 eb5 ~ [f4,d5] ~@5 [f4,d5] ~ c5 ~@2 [d4,bb4] ~@7",
  C: "[a4,f5] ~@2 c5 ~ [a4,f5] ~@2 [g4,e5] ~@7 [a4,eb5] ~@7", D: "[f4,d5] ~@23",
  E: "~@13 [f4,d5] ~@2 g4 ~@4 [f4,d5] ~@2", F: "[f4,d5] ~@7 [eb4,c5] ~@7 [d4,bb4] ~@7", G: "f4 ~@7 [a4,f5] ~@15",
})).s("gm_shamisen").gain(0.33).pan(0.6)

// chords · koto · "#Tsho Kot"
const koto = note("<~@25 A B ~@6 A B ~@22 A B ~@6 A B ~@6 C D ~@7 E F ~>".pickRestart({
  A: "[f4,a4,f5] ~@3 [g4,bb4,f5] ~@3 [a4,c5,f5] ~@3", B: "[bb4,d5,f5] ~@11", C: "[a4,f5] ~@3 [bb4,e5] ~@3 [c5,eb5] ~@3",
  D: "[f4,d5] ~@11", E: "bb4@3 ~@5 c5@2 ~@6 d5@2 ~@6", F: "bb4 ~@7",
})).s("gm_koto").gain(0.4).pan(0.6)

// other · electric guitar muted · "#Dist.Gtr"
const electric_guitar_muted = note("<~@18 A B A C@2 D C ~@17 A B A@2 C E F ~ G H I J K L M ~@28>".pickRestart({
  A: "~@3 f3 ~ bb3 ~@2 d4@2 ~ f3 ~ bb3 ~@10", B: "~@3 g3 ~ bb3 ~@2 eb4@2 ~ g3 ~ bb3 ~@10",
  C: "~@3 d3 ~ f3 ~@2 bb3@2 ~ d3 ~ f3 ~@10", D: "~@3 c3 ~ f3 ~@2 a3@2 ~ c3 ~ f3 ~@10",
  E: "~@3 f3 ~ a3 ~@2 c4@2 ~ f3 ~ a3 ~@10", F: "~@3 f3 ~ bb3 ~@2 d4@2 ~ bb3 ~ f3 ~@10",
  G: "~@3 f3 ~ bb3 ~@2 d4@2 ~ f3 ~ d4 ~@2 f3 ~@7", H: "~@3 eb4@2 bb3 ~@2 g4 ~@2 bb3 ~ eb4 ~@2 g3 ~@7",
  I: "~@3 bb3@2 d4 ~@2 f4@2 ~ bb3 ~ f4 ~@2 bb3 ~@7", J: "~@3 bb3@2 d4 ~@2 f4@2 ~ bb3 ~ d4 ~@2 bb3 ~@7",
  K: "~@3 f3 ~ bb3 ~@2 d4@2 ~ f3 ~ bb3 ~@2 f3 ~@7", L: "~@3 f3 ~ a3 ~@2 c4@2 ~ a3 ~ f3 ~@2 c3 ~@7",
  M: "~@3 f3 ~ bb3 ~@2 d4@2 ~ f3 ~ bb3 ~@2 d3 ~@7",
})).s("gm_electric_guitar_muted").gain(0.42).pan(0.3)

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

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

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@26
  [~@5 x ~@7 x ~@7 x ~@2]!15
  ~@17
  [~@5 x ~@7 x ~@7 x ~@2]!21
  ~@2
  [~@5 x ~@7 x ~@7 x ~@2]!2
  ~@2
>`).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@7 A ~@7 A ~@7 A ~@6 A@2 ~@7 A ~@7 A ~@7 A ~@7 A ~@4 A@3 ~ A ~>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@9 A B C A C A C A C B C A C A C A@2 B A@7 B A@6 D B C A C A C A C B C A C A C A C B A@7 B A@7 B A@4 D@2 B A ~@2
>`.pickRestart({
  A: "x!3", B: "~ x!2", C: "x ~@7 x ~@7 x ~@4 x ~@2", D: "~ x ~",
})).gain(0.48)

stack(
  epiano2, bass, string_ensemble_2, marimba, shamisen, koto, electric_guitar_muted, kick, snare, pedal_hat, crash, ride
)

More by Engelbert Humperdinck