Strudelify
Babe It's Up to You cover art

Babe It's Up to You

Smokie

KeyB♭ majorTempo116 bpm
0:00/0:00
// Babe It's Up to You — Smokie
// 116 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B A B C D E F G A E H G A I J K L M B E N O A B A B E F G A E H G A I J K L M B E N O A B A B E F G A E H G A I J K
  L M B E N O A B A B A B A B A B A B A B A B P@2
>`.pickRestart({
  A: "bb2@7 ~ bb2@3 ~ bb2@3 ~", B: "g2@7 ~ g2@3 ~ g2@3 ~", C: "bb2@7 ~ bb2@3 ~ bb2 ~ bb2@2", D: "g2 ~@7",
  E: "eb2@7 ~ eb2@7 ~", F: "eb2@3 ~ eb2@2 f2@2", G: "bb2@7 ~ f2@6 ~@2", H: "eb2@7 ~ eb2@3 ~ f2@4", I: "g2@7 ~ g2@7 ~",
  J: "g2@6 ~@2 g2@3 ~ bb2 ~ bb2 ~", K: "c2@7 ~ c2@7 ~", L: "c2@7 ~ c2@3 ~ c2@3 ~", M: "bb2@7 ~ bb2@8",
  N: "f2@7 ~ f2@3 ~ f2@3 ~", O: "f2 ~@7", P: "[bb1@7 ~]/2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B A C A D E F G H E F G A I J K L G J M N O A B A C E F G H E F G A I J K L G J M N O A B A C E F G H E F G A I J K
  L G J M N O A B A C A B A C A B A C A B A C P@2
>`.pickRestart({
  A: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
  B: "~@4 [d4,g4,bb4] ~ [d4,g4] ~@5 [d4,g4,bb4]@2 ~@2, ~@3 bb4 ~@4", // Gm G5 Gm
  C: "~@4 [d4,g4,bb4] ~ [d4,g4,bb4]@2 ~@4 [d4,g4,bb4] ~@3", D: "[d4,g4,bb4] ~@15",
  E: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@5 [bb3,eb4,g4] ~@3", // Eb
  F: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [c4,f4,a4] ~ [c4,f4] ~, ~@7 a4", // Eb F F5
  G: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@3", // Bb
  H: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@5 [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
  I: "~@4 [d4,g4,bb4] ~ [d4,g4,bb4] ~@5 [d4,g4,bb4] ~@3", // Gm
  J: "~@4 [d4,g4,bb4] ~ [d4,g4] ~@3 [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g4,bb4]@2, ~@6 bb4@2 ~@6 d4 ~", // Gm G5 Gm
  K: "~@4 [eb4,g4,c5] ~ [eb4,g4] ~@5 [eb4,g4,c5] ~@3, ~@3 c5 ~@4", // Cm Eb Cm
  L: "~@4 [eb4,g4,c5] ~ [eb4,g4,c5] ~@3 [eb4,g4,c5] ~ [eb4,g4,c5] ~ [eb4,c5]@2, ~@14 g4 ~", // Cm
  M: "~@4 [bb3,eb4,g4] ~ [eb4,g4]@2 ~@4 [bb3,eb4,g4]@2 ~@2, ~@6 bb3 ~@9", // Eb
  N: "~@4 [c4,f4,a4] ~ [c4,f4,a4]@2 ~@2 [c4,f4,a4] ~ [c4,f4,a4]@2 ~@2", O: "[c4,f4,a4] ~@7", P: "[[d4,f4,bb4]@31 ~]/2",
})).s("gm_piano").gain(0.28)

// chords · electric guitar muted · "STEEL GTR"
const electric_guitar_muted = note(`<
  A B A B A C D E A@2 D E A@2 B@2 F@2 A B D G ~ A B A B D E A@2 D E A@2 B@2 F@2 A B D G ~ A B A B D E A@2 D E A@2 B@2
  F@2 A B D G ~ A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@4 [d5,f5,bb5] ~@7 [d5,f5,bb5] ~@3", B: "~@4 [d5,g5,bb5] ~@7 [d5,g5,bb5] ~@3", C: "[d5,g5,bb5] ~@15",
  D: "~@4 [eb5,g5,bb5] ~@7 [eb5,g5,bb5] ~@3", E: "~@4 [eb5,g5,bb5] ~@7 [c5,f5,a5] ~@3",
  F: "~@4 [eb5,g5,c6] ~@7 [eb5,g5,c6] ~@3", G: "~@4 [c5,f5,a5] ~@7 [c5,f5,a5] ~@3",
})).s("gm_electric_guitar_muted").gain(0.14)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@47 A B@2 C@2 D@2 E F ~@27>".pickRestart({
  A: "~@4 bb5 c6 bb5 a5", B: "[g5 ~@3 d6 c6 bb5 c6, g4@31 ~, ~@4 g5@8 bb4@19 ~, ~@6 bb5@10 eb5@15 ~, ~@8 eb6@9 ~@15]/2",
  C: "[d6 eb6 d6 c6 d6@8 bb5 c6 bb5 a5, [bb4,d5], f4@15 ~]/2", // Bb
  D: "[g5@3 ~@13 d6@4 c6@4 bb5@4 c6@4, g4, ~ g5@2 bb4@5, ~@6 bb5@7 ~@3 eb5@16, ~ eb6 ~@2]/2",
  E: "[f5,d6]@10 [f5,bb5] ~ [g5,bb5,eb6]@2 ~@2, bb5@9 ~@7", F: "[bb5,d6]@2 [a5,c6] bb5, f5",
})).s("gm_rock_organ").gain(0.47)

// drums · kick
const kick = s("bd").struct("<A@4 B C A@15 B C A@19 B C A@19 B C A@16 C ~>".pickRestart({
  A: "x!2", B: "x ~@3 x ~ x!2", C: "x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  A B A B C ~ B A B A B A B A B A B A B A B C ~ A B A B@2 A B A B A B A B A B A B A B C ~ A B A B@2 A B A B A B A B A B
  A B A B C ~ A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2", B: "~@2 x!2 ~@2 x ~", C: "~@2 x!2 ~ x ~@2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<A@5 B A@16 B A@20 B A@20 B A@16 B ~>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@81 x ~>").gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A B A B A C B A B A B A B A B A B A B A B A C A B A B@2 A B A B A B A B A B A B A B A C A B A B@2 A B A B A B A B A B
  A B A B A C A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2", B: "~@2 x!2 ~@2 x ~", C: "x",
})).gain(0.45)

stack(bass, piano, electric_guitar_muted, rock_organ, kick, snare, hihat, ride, tambourine)

More by Smokie