Strudelify

Come Home (With Me Baby)

Dead Or Alive

KeyB♭ minorTempo120 bpm
0:00/0:00
// Come Home (With Me Baby) — Dead Or Alive
// 120 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A B C D E F G H I F G H I J K L M N O P Q R S P T B C D E F G H I F G H I J K L M N O P Q R S P T N O P Q R S P T
  N O P Q R S P T F G H I J K L M N O P Q R S P T N O P Q R S P T B C D E F G H I B C D E F G H I U
>`.pickRestart({
  A: "bb2 ~ bb2 ~ bb2 ~ bb2 ~", B: "bb1!3 bb2 ~ bb1 bb2 bb1 bb2@2 bb1@2 bb2 bb1 bb2!2",
  C: "ab1!3 ab2@2 ab1 ab2 ab1 ab2@2 ab1@2 ab2 ab1 ab2!2", D: "gb1!3 gb2@2 gb1 gb2 gb1 gb2@2 gb1@2 gb2 gb1 gb2!2",
  E: "ab1!3 ab2@2 ab1 ab2!2 ab1 ab2!2 ab1 ab2@2 ab1 ~", F: "bb1!4 ~ bb1 ~ bb1 bb2 ~ bb1 ~ bb2@2 bb1 ~",
  G: "ab1!4 ~ ab1 ~ ab1 ab2 ~ ab2 ~ ab2 ab1 ab2 ~", H: "gb1!4 ~ gb1 ~ gb1 gb2 ~ gb2 ~ gb2 gb1 gb2 gb1",
  I: "ab1!4 ~ ab1 ~ ab1 ab2 ~ ab2 ~ ab2 ab1 ab2 ab1", J: "bb2 bb1 bb2 ~ bb2@2 bb1 bb2 ~ bb2@2 bb1 bb2 bb1@3",
  K: "eb2 eb1 eb2 ~ eb2@2 eb1 eb2 ~ eb2@2 eb1 eb2 eb1 eb2@2",
  L: "ab1@2 ab2 ~ ab2@2 ab1 ab2 ~ ab2 ~ ab1 ab2 ab1 ab2 ab1",
  M: "bb2 bb1 bb2 ~ bb2@2 bb1 bb2 ~ bb2 ~ bb1 bb2 bb1 bb2 ~",
  N: "bb2@2 bb1 ~ bb2@2 bb1 bb2 ~ bb2@2 bb1 bb2 bb1 bb2 bb1",
  O: "ab2 ab1 ab2 ~ ab2@2 ab1 ab2 ~ ab2@2 ab1 ab2 ab1 ab2 ab1",
  P: "gb2 gb1 gb2 ~ gb2 ~ gb1 gb2 ~ gb2 ~ gb1 gb2 gb1 gb2 gb1",
  Q: "ab2 ab1 ab2 ~ ab2 ~ ab1 ab2@2 ab1 ab2 ab1 ab2 ab1 ab2 ab1",
  R: "bb1 bb2 bb1 ~ bb2@2 bb1 bb2 ~ bb2@2 bb1 bb2 bb1 bb2 bb1",
  S: "ab2 ab1 ab2 ~ ab2 ~ ab1 ab2 ~ ab2 ~ ab1 ab2 ab1 ab2 ab1",
  T: "ab2 ab1 ab2 ~ ab2 ~ ab1 ab2 ~ ab2 ~ ab1 ab2 ab1 ab2 ~", U: "bb1 ~@7",
})).s("gm_acoustic_bass").gain(0.66)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  A B C D E B F G H I J K H I J K L M N O P Q R S T Q U V E B F G H I J K H I J K L M N O P Q R S T Q U V P Q R S T Q U
  V P Q R S T Q U V H I J K L M N O P Q R S T Q U V P Q R S T Q U V E B F G H I J K E B F G H I J W X
>`.pickRestart({
  A: "bb4!2 ~ bb4 ~ bb4 ab4 ~ bb4@2 ab4 ~ db5 ~ bb4 ~", B: "ab4 bb4 ~ bb4 ~ bb4 ab4 ~ bb4@2 ab4 ~ f4@2 ab4 ~",
  C: "bb4!2 ~ bb4 ~ bb4 ab4 ~ bb4@2 ab4 ~ db5 ~ ab4 ~", D: "bb5 ~ [bb4,bb5] ~ [bb4,bb5] ~ [bb4,bb5] ~, bb4 ~@15",
  E: "bb4!2 ~ bb4 ~ bb4 ab4 ~ bb4@2 ab4 ~ db5 ~ ab4 ~, bb5 ~@7", F: "f4 ab4 ~ bb4 ~ bb4 ab4 ~ bb4@2 ab4 ~ db5 ~ ab4 ~",
  G: "ab4 f4 ab4 bb4 ~ ab4 f4 ~ eb4@2 f4 ~ db4@2 eb4 ~", H: "~@2 db4 ~ db4 eb4 ~ db4 ~ bb3 ~@3 bb3 db4!2",
  I: "~@2 eb4 ~ eb4 db4 ~ eb4 ~ f4 ~ eb4 ~ eb4 db4 bb3", J: "~@2 bb3 ~ db4 eb4 ~ db4 ~ bb3 ~ bb3 ~ bb3 db4 bb3",
  K: "~@2 db4 ~ eb4 db4 ~ db4 ~ eb4 ~ f4 ~ eb4 db4 ~", L: "bb4@7 ~ c5@4 db5@4", M: "bb4@3 ~ bb4@4 c5@3 ~ db5@3 ~",
  N: "ab4@3 ~ bb4@3 ~ c5@3 ~ db5@3 ~", O: "f5@4 eb5@4 db5@4 eb5@3 ~",
  P: "[f3,bb3,db4] ~ [f3,bb3,db4] ~ [f3,bb3,db4] ~ [f3,bb3,db4]!2 ~ [f3,bb3,db4]@3 [f3,bb3,db4] ~ [f3,bb3,db4] ~", // Bbm
  Q: "[eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4] ~ [eb3,ab3,c4]!2 ~ [eb3,ab3,c4] ~ [eb3,ab3,c4]!2 ~ [eb3,ab3,c4] ~", // Ab
  R: "[bb3,db4] bb3!2 ~ bb3 ~ bb3!2 ~ bb3 ~ bb3!5", S: "bb3!3 ~ bb3 ~ bb3!2 ~ bb3 ~ bb3!5",
  T: "[f3,bb3,db4] ~ [f3,bb3,db4] ~ [f3,bb3,db4] ~ [f3,bb3,db4] [f3,bb3,db4]@2 ~ [bb3,db4] ~ [f3,bb3,db4] ~ [f3,bb3,db4] ~", // Bbm
  U: "[f3,bb3,db4] bb3!4 ~ bb3!2 ~ bb3 ~ bb3!5", V: "bb3 ~ bb3 ~ bb3 ~ bb3!2 ~ bb3 ~ bb3!5",
  W: "~@2 db4 ~ eb4 db4 ~ db4 ~ eb4 ~ f4 ~ eb4 db4 ~, ~@6 [ab3,ab4] ~", X: "[bb3,bb4] ~@7",
})).s("gm_brass_section").gain(0.72)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note(`<
  A ~@2 B A ~@2 C A ~@6 C A ~@3 A ~@3 A ~@2 C A ~@2 C A ~@6 C A ~@3 A ~@3 A ~@2 C A ~@3 A ~@2 C A ~@3 A ~@2 C A ~@2 C A
  ~@3 A ~@3 A ~@2 C A ~@3 A ~@2 C A ~@2 C A ~@3 A ~@2 C A ~@2 C A
>`.pickRestart({
  A: "bb4 ~@15", B: "bb4 ~@3 bb4 ~@3 bb4 ~@3 bb4 ~@3", C: "~@12 ab4 ~@3",
})).s("gm_orchestra_hit").gain(0.69)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@3 A B C D E B C D E B C D E F G H I J K L M J N L M B C D E B C D E B C D E F G H I J K L M J N L M J K L M J N L M
  J K L M J N L M B C D E F G H I J K L M J N L M J K L M J N L M B C D E B C D E B C D E B C D E O
>`.pickRestart({
  A: "[bb5,f6,bb6] ~ [bb5,f6,bb6] ~ [bb5,f6,bb6] ~ [bb5,f6,bb6] ~", B: "[bb2,f3,bb3,f4,bb4,db5], f5@3 ~",
  C: "[ab2,eb3,ab3,eb4,ab4,c5,eb5]", D: "[gb2,db3,gb3,db4,gb4,bb4,db5]",
  E: "[ab2,eb3,ab3,eb4,ab4,c5,eb5]@11 ~ [ab2,eb3,ab3,eb4,ab4,c5,eb5]@3 ~", F: "[bb3,db4,f4,bb4]",
  G: "[eb3,gb3,bb3,eb4]@13 ~@3", H: "[ab2,eb3,ab3,c4,eb4,ab4]@7 ~", I: "[bb2,f3,bb3,db4,f4,bb4]@7 ~",
  J: "[bb2,bb3,f4,bb4,db5]", K: "[ab2,ab3,eb4,ab4,c5]@15 ~", L: "bb4!4 bb5 ~ bb4 bb5 ~ bb5 ~ bb4 bb5 bb4 bb5 bb4",
  M: "bb5 bb4 bb5 ~ bb5 ~ bb4 bb5 ~ bb5 ~ bb4 bb5 bb4 bb5 ~", N: "[ab2,ab3,eb4,ab4,c5]@7 ~",
  O: "[bb2,bb3,db4,f4,bb4] ~@3", // Bbm
})).s("gm_piano").gain(0.54)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note(`<
  ~@8 A B C D A B C D ~@4 E@3 ~ F@3 ~@5 A B C D A B C D ~@4 E@3 ~ F@3 ~ E@3 ~ F@3 ~ E@3 ~ F@3 ~ A B C D ~@4 E@3 ~ F@3 ~
  E@3 ~ F@3 ~@5 A B C D ~@4 A B ~@3
>`.pickRestart({
  A: "[f6,bb6]@3 ~", B: "[eb6,ab6]@13 ~@3", C: "[db6,gb6]@13 ~@3", D: "[eb6,ab6]@5 ~@3",
  E: "[f6@4 eb6@4 db6@3 ~ eb6@2 f6@6 eb6@4 db6@3 ~ eb6 ~ f6@10 ~@8]/3",
  F: "[f6@4 eb6@3 ~ db6@3 ~ eb6@2 f6@6 eb6@3 ~ db6@3 ~ eb6 ~ f6@18]/3",
})).s("gm_tubular_bells").gain(0.53)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B C A@2 D A@3 D A@3 D A D A E A D A F A D A G A D A H A@3 D A@3 D A D A E A D A E A D A F A D A H A D A F A D A H
  A D A F A D A H A D A E A D A E A D A F A D A H A D A F A D A H A D A F A D A E A D A G I
>`.pickRestart({
  A: "~ x ~ x", B: "x!4", C: "x!2 ~ x", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~@7 x!4", F: "~@4 x ~@4 x ~@2 x ~ x!2",
  G: "~@4 x ~@5 x!6", H: "~@4 x ~@9 x!2", I: "x",
})).gain(0.71)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@19 A ~@7 B ~@3 C ~@11 A ~@3 A ~@7 C ~@7 C ~@7 C ~@3 A ~@3 A ~@7 C ~@7 C ~@7 A ~@3 B ~
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@6 x!4 ~@6", C: "~@8 x!3 ~ x!2 ~@2",
})).gain(0.21)

// drums · clap
const clap = s("cp").struct(`<
  A B A ~ A B A@3 B A@3 B A@3 B A B A B A B A B A B A B A B A B A@3 B A@3 B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@4 x ~@4 x!2 ~@3 x ~", B: "~@4 x ~@2 x ~ x ~@4 x!2",
})).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A B ~@15 C@7 D C@3 D ~@16 C@7 D C@7 D C@7 D ~@8 C@7 D C@7 D C@4 ~@4 C@3 D B
>`.pickRestart({
  A: "~@2 x!2", B: "x", C: "~ x ~ x", D: "~@4 x ~@9 x!2",
})).gain(0.71)

// drums · hihat
const hihat = s("hh").struct("<[x!16]!3 ~ [x!16]!104 ~>").gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@23 B ~@3 B ~@23 B ~@7 B ~@7 B ~@15 B ~@7 B ~@11 B ~>".pickRestart({
  A: "x!2 ~@2", B: "~@12 x!2 ~@2",
})).gain(0.71)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A ~@3 A ~ A ~ A ~@3 A@2 ~@14 A ~ A ~ A ~@3 A@2 ~@2 A@2 ~@26 A@2 ~@2 A@2 ~@22 A@2 ~@5
>`.pickRestart({
  A: "x",
})).gain(0.71)

// drums · shaker
const shaker = s("sh").struct("<~@20 A@12 ~@16 A@24 ~@8 A@20 ~@4 A@4 ~>".pickRestart({
  A: "x!16",
})).gain(0.21)

stack(
  bass, brass_section, orchestra_hit, piano, tubular_bells, kick, snare, snare_soft, clap, low_tom, hihat, mid_tom,
  crash, ride, shaker
)

More by Dead Or Alive