Strudelify

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: edit a riff to change every repeat.

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

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D A E F G H I F G J K L M N O H P Q R S A B C D F T H I F G U K L M N O H P Q V S A B C W F G H I F G J K L M N
  O H P Q R S A B X D A B X W A B C D A B X W Y@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,f4,bb4] ~ [d4,f4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4] ~, ~@3 bb4 ~@3 bb4", // Bb Dm Bb Dm
  D: "~@4 [d4,g4,bb4] ~ [d4,g4,bb4]@2 ~@4 [d4,g4,bb4] ~@3", E: "[d4,g4,bb4] ~@15",
  F: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@5 [bb3,eb4,g4] ~@3", // Eb
  G: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [c4,f4,a4] ~ [c4,f4] ~, ~@7 a4", // Eb F F5
  H: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@3", // Bb
  I: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@5 [d4,f4,bb4] ~ [d4,f4,bb4] ~", // Bb
  J: "~@4 [d4,f4,bb4] ~ [d4,f4]@2 ~@4 [d4,f4,bb4] ~@3, ~@6 bb4 ~@9", // Bb Dm Bb
  K: "~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [f4,bb4] ~, ~@7 d4", // Bb Bb5
  L: "~@4 [d4,g4,bb4] ~ [d4,g4,bb4] ~@5 [d4,g4,bb4] ~@3", // Gm
  M: "~@4 [d4,g4,bb4] ~ [d4,g4] ~@3 [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g4,bb4]@2, ~@6 bb4@2 ~@6 d4 ~", // Gm G5 Gm
  N: "~@4 [eb4,g4,c5] ~ [eb4,g4] ~@5 [eb4,g4,c5] ~@3, ~@3 c5 ~@4", // Cm Eb Cm
  O: "~@4 [eb4,g4,c5] ~ [eb4,g4,c5] ~@3 [eb4,g4,c5] ~ [eb4,g4,c5] ~ [eb4,c5]@2, ~@14 g4 ~", // Cm
  P: "~@4 [d4,g4,bb4] ~ [d4,g4] ~@3 [d4,g4,bb4] ~ [d4,g4,bb4] ~ [g4,bb4] ~, ~@3 bb4 ~@3 d4", // Gm G5 Gm
  Q: "~@4 [bb3,eb4,g4] ~ [eb4,g4]@2 ~@4 [bb3,eb4,g4]@2 ~@2, ~@6 bb3 ~@9", // Eb
  R: "~@4 [c4,f4,a4] ~ [c4,f4,a4]@2 ~@2 [c4,f4,a4] ~ [c4,f4,a4]@2 ~@2", S: "[c4,f4,a4] ~@7",
  T: "~@4 [bb3,eb4,g4] ~ [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~", // Eb F
  U: "~@4 [d4,f4,bb4] ~ [f4,bb4] ~@5 [d4,f4,bb4] ~@3, ~@3 d4 ~@4", // Bb Bb5 Bb
  V: "~@4 [c4,f4,a4] ~ [f4,a4]@2 ~@2 [c4,f4,a4] ~ [c4,f4,a4]@2 ~@2, ~@6 c4 ~@9", // F
  W: "~@4 [d4,g4,bb4] ~ [d4,bb4]@2 ~@4 [d4,g4,bb4] ~@3, ~@6 g4 ~@9", // Gm
  X: "~@4 [d4,f4,bb4] ~ [d4,f4] ~@3 [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~, ~@3 bb4 ~@4", Y: "[[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