Strudelify

I Do

98 Degrees

KeyG majorTempo85 bpm
0:00/0:00
// I Do — 98 Degrees
// 85 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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.

// chords · piano · "untitled"
const piano = note(`<
  A@3 B@4 C D@3 E F@3 G@3 H I@3 J K L@2 M@8 N C D@3 E F@3 G@3 H I@3 J K L@2 O@2 P@2 Q@5 R
>`.pickRestart({
  A: "[g2 d3 g3 ~@2 f#4 g4 ~ e2 b2 g3 ~@2 f#4 g4 ~ c3 g3 c4 [d4,e4]@2 [d4,b4] b4 [e4,c5], [g4,a4,b4,d5]@5 ~@2 d5@7 ~ e4@4 ~@5, ~@3 d4@5 ~@3 d4@5 ~@6 d4@2]/3", // Dsus2 G C G
  B: "[d3@2 b3@2 d4@2 g3@2 ~@2 g4@2 a4@2 ~@2 g2@2 d3@2 g3@2 a3@4 [a3,a4]@2 [b3,b4]@2 c4@2 a2@2 e3@2 a4@4 [c4,d4,g4]@4 a4 c5 ~@4 [e4,c5]@2 [d4,b4]@2 [d4,a4]@4 ~@2 [d4,b4]@2 [e4,c5]@2, [g4,a4,d5]@3 [f#4,a4,d5]@2 ~@2 [d4,b4]@2 g4@4 ~@2 [d4,c5]@2 ~@6 [g4,d5]@2 ~ a3@5 ~, ~@2 a3 d3 ~@5 g3@3 b2@4]/4", // A B Csus2 C G D5 G C …
  C: "[f#4,d5]@2 [e4,c5]@2 [g3,d4,b4]@2 [c4,e4,a4]@5 e4 g4@2 b4@2, d3@2 ~ a3@5", // D C G Am
  D: "[[g2,d4,b4]@2 d3@2 g3@2 d4@2 [d4,b4]@2 [a3,a4]@2 [b3,d4,b4]@2 c4@2 a2@2 [e3,a4]@2 g4@2 [c4,d4,g4]@4 ~@2 a4 c5 ~@4 c5@2 b4@2 [d4,g4,a4]@4 ~@2 b4@2 c5@2, ~ g4@2 a3@2 ~@2 [e4,c5]@2 ~ g3@6 b2@8, ~@15 [g4,d5]@2 ~ a3@6]/3", // G A Bm A5 Csus2 Dsus4 C G5
  E: "[g4,d5] c5 [a2,b4] [d3,d4,g4,a4]@2 [g3,g4] [f#3,f#4] [d3,d4], d2 ~@3", // G5 Asus2 Dsus4 G F# D
  F: "[c2@2 g2@2 c3@2 ~ g4 g5@2 f#5@2 g5@2 ~@2 g2@2 [d3,b4,d5]@2 [a3,b4,d5]@2 [a4,c5]@2 [a4,c5]@2 [g4,b4]@2 [g4,b4] c5 ~@2 c2@2 [g2,c5]@2 [d3,d4,b4]@2 [c4,a4]@4 [c4,d4,g4]@5 g4, [g3,d4,e4]@3 e3@5 ~@7 [g4,d5]@2 ~@7, ~@7 [g4,d5]@2 ~@2 d4@5 ~@3 e3@5]/3", // G Bm7 Am G C5 G F Csus2 …
  G: "[[d2,d4,g4,d5]@2 [a2,c5]@2 b4@2 [d4,f#4,a4]@4 ~@2 g4@2 ~@2 g2@2 [d3,a4]@2 [g3,b4]@2 [g4,b4,d5]@4 f#4@2 g4@2 g2@2 e2@2 [b2,g5]@2 [g3,f#5]@2 [g4,b4,d5]@8 d5!2, ~ d3@2 d2 ~@8, ~@7 [g4,b4,d5]@2 ~@2 d4@4 [g4,b4,d5]@2 ~@2 d4@5]/3", // G5 Am D D5 G Em Gmaj7 G
  H: "[a2,g4,d5] [e3,e4,c5] [a3,d4,b4] [c4,d4,a4]@2 g4 [e3,b4] [a2,e4,c5]", // Dsus4 C Bm7 D7 E5 Am
  I: "[[d2,g4,d5]@2 [a2,e4,c5]@2 [g3,d4,b4]@2 a2@2 d3@4 g4@2 ~@2 g2@2 [d3,a4]@2 [g3,b4]@2 [g4,b4,d5]@4 f#4@2 g4@2 b2@2 e2@2 [b2,g5]@2 [g3,f#5]@2 [g4,b4,d5]@8 d5!2, ~@3 [c4,f#4,a4]@2 ~ d2@2 ~@16, ~@7 [g4,b4,d5]@2 ~@2 d4@4 [g4,b4,d5]@2 ~@2 d4@5]/3", // G5 Am G D5 G Em Gmaj7 G …
  J: "[a2,g4,d5] [e3,e4,c5] [g3,d4,b4] [d4,g4,a4]@2 ~ [d4,b4] [e4,c5], ~@3 c4@5", // Dsus4 C G Dsus4 G C
  K: "[f#4,d5]@2 [e4,c5]@2 [e4,b4]@2 ~@5 g4 a4@2 b4@2, [b2,a3] b1, ~@6 [d#4,a4]@5 ~@5", // D C E5 B7 D#dim
  L: "[[e2,a4]@2 b2@2 g3@3 g4 [d2,f#4]@2 [b2,g4]@2 g4@2 ~@2 c#2@6 e2@2 ~@6 a4 b4, d4@4 d4@3 [c#4,e4,g4,b4]@7 ~@2, ~@2 g4@5 ~@5 g3@4 ~@8 a2@8]/2", // A5 D Em C#m7b5
  M: "[[e4,c5] ~ [e3,d4,b4]@2 [a3,c4,a4]@2 [d4,g4]@2 [d4,g4]@2 a4@2 [e3,b4]@2 a2@2 d2@2 [a2,b4]@2 g3@2 a2@2 [d4,f#4,a4]@4 [a3,f#4]@2 ~@2 g2@2 d3@2 g3@2 [g4,a4,d5]@4 f#4@2 g4@2 ~@2 e2@2 b2@2 g3@2 ~@4 f#4@2 g4@2 ~@2 c3@2 g3@2 c4@2 d4@2 b4@2 [e4,c5]@2 [g4,d5]@2 ~@2 d3@2 a3@2 d4@2 [a3,g4,d5]@2 [f#4,d5]@2 g4@2 a4@2 ~@2 g2@2 d3@2 g3@2 a3@4 [a3,a4]@2 [b3,b4]@2 c4@2 a2@2 e3@2 a4@4 [c4,d4,g4]@4 a4 c5 [g4,d5]@2, a2 ~@2 c4@3 ~ [d4,g4,a4]@2 ~ [d4,g4,a4]@2 d3@4 ~@7 d5@6 ~@2 e4@5 ~@3 [g4,d5]@4 ~@4 [d4,b4]@2 g4@4 ~@2 [d4,c5]@2 ~ g3@6, ~@15 [b3,g4]@4 d4@5 ~@3 d4@5 ~@4 d4@4 ~@4 d3@2 d2@2 ~@16]/8", // C E7 Am G5 E5 Asus2 D Gsus2 …
  N: "~ [e4,c5] [d4,b4] [d4,a4]@2 ~ [d4,b4] [e4,c5], b2, ~@2 a3@5 ~", // C G D5 G C
  O: "[[e4,c5] ~ [e3,d4,b4]@2 [a3,c4,a4]@2 [d4,g4]@2 [d4,g4]@2 a4@2 [e3,b4]@2 a2@2 d2@2 a2@2 g3@2 a2@2 [b4,g5]@2 [a4,f#5]@3 e5 [c3,d5]@2, a2 ~@2 c4@3 ~ [d4,g4,a4]@2 b4@3 d3@3 ~]/2", // C E7 Am G5 E5 Em D Csus2 …
  P: "[b2@2 g3@2 ~@6 d3@2 [f#3,c5]@2 d3@2 ~@2 g4@3 ~ c3@2 [c3,c4,d4,g4]@4 g4@2 b4@2, [g4,e5]@3 [g4,d5]@3 ~ [g4,c5,e5]@2 g3@3 ~@2 b2@2, ~@4 d4@6 ~@6 c3@6 g4 ~@9]/2", // F#dim Csus2 C G5 C
  Q: "[[e4,c5] [d4,b4] [c4,a4] [b3,g4] [c4,g4] a4 b4 ~@3 g4@2 [d4,f#4,a4]@2 e4 ~ g2 d3 g3 [g4,a4,d5]@2 f#4 g4 ~ e2 b2 g3 ~ g4 f#4 g4 ~@3 e4 g4 [d3,b3,g4]@2 [d2,a3,f#4]@2, a2@8 d2@4 d2@4 ~@7 d5@3 d5@2 ~@3 e4@3 ~@6, ~@7 [d4,g4,a4]@2 ~@6 [b3,g4]@4 d4@5 ~@3 d4@5 c3@4 ~@4, ~@33 g3@3 ~@4]/5", // C G F Em C5 D Gsus2 G …
  R: "[g2,a3,b3,d4,g4]", // G
})).s("gm_piano").gain(0.41)

// drums · kick
const kick = s("bd").struct("<~@12 [x ~@2 x!2 ~@3]!51 ~>").gain(0.41)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@12 [x!4]!51 ~>").gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@63 x>").gain(0.41)

stack(piano, kick, pedal_hat, crash)

More by 98 Degrees