Strudelify

Left of the Middle

Natalie Imbruglia

KeyE♭ majorTempo76 bpm
0:00/0:00
// Left of the Middle — Natalie Imbruglia
// 76 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 70 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · acoustic guitar steel · "Staff-1"
const acoustic_guitar_steel = note("<A@8 B@8 C@7 D@7 E@6 C@7 F@8 G@8 H@7 I@4>".pickRestart({
  A: "[~@4 [g3,d4]@5 ~ [f3,bb3]@25 ~ [g3,d4]@5 ~ [f3,bb3]@25 ~ [bb3,eb4,f4]@5 ~ [c4,eb4,g4]@25 ~ [g3,d4]@5 ~ [f3,bb3]@17 ~@5]/8", // G5 Bb5 G5 Bb5 Bbsus4 Cm G5 Bb5
  B: "[~@4 [g3,d4]@5 ~ [f3,bb3]@25 ~ [g3,d4]@5 ~ [f3,bb3]@25 ~ [bb3,eb4,f4]@5 ~ [c4,eb4,g4]@25 ~ [g3,d4]@5 ~ [f3,bb3]@22]/8", // G5 Bb5 G5 Bb5 Bbsus4 Cm G5 Bb5
  C: "[~@4 [bb3,eb4,f4]@15 ~ [ab3,bb3,eb4]@15 ~ [bb3,eb4,f4]@15 ~ [ab3,bb3,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@4]/7", // Bbsus4 Absus2 Bbsus4 Absus2 Bb Eb Ab Bb …
  D: "[~@4 [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [bb3,c4,eb4,ab4]@15 ~ [g3,d4]@5 ~ [f3,bb3]@25 ~ [g3,d4]@5 ~ [f3,bb3]@22]/7", // Ab Bb Eb Ab G5 Bb5 G5 Bb5
  E: "[~@4 [g3,d4]@5 ~ [f3,bb3]@25 ~ [bb3,eb4,f4]@5 ~ [c4,eb4,g4]@25 ~ [g3,d4]@5 ~ [f3,bb3]@22]/6", // G5 Bb5 Bbsus4 Cm G5 Bb5
  F: "[~@4 [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [bb3,c4,eb4,ab4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@4]/8", // Ab Bb Eb Ab Bb Eb Ab Bb …
  G: "[~@4 [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@7 ~ [ab3,bb3,c4,eb4]@15 ~ [bb3,d4,f4]@7 ~ [bb3,eb4,g4]@4]/8", // Ab Bb Eb Ab Bb Eb Ab Bb …
  H: "[~@4 [bb3,c4,eb4,ab4]@15 ~ [g3,d4]@5 ~ [f3,bb3]@25 ~ [g3,d4]@5 ~@11 [ab5,d6]@5 ~ [f5,bb5]@9 ~ [g3,d4]@5 ~ [f3,bb3]@22, ~@58 [f3,bb3]@25 ~@29]/7", // Ab G5 Bb5 G5 Abdim Bb5 G5 Bb5
  I: "[~@4 [g3,d4]@5 ~@11 [ab5,d6]@5 ~ [f5,bb5]@9 ~ [g3,d4]@5 ~ [f3,bb3]@17 ~@5, ~@10 [f3,bb3]@25 ~@29]/4", // G5 Abdim Bb5 G5 Bb5
})).s("gm_acoustic_guitar_steel").gain(0.72)

// other · acoustic guitar steel · "Staff-2"
const acoustic_guitar_steel_2 = note(`<
  A B@3 C D E F A B@3 C D E B G H I J K H K H K L@2 F M B@3 C D E B G H I J K H K H K N@2 H K H K H K H K H K H K L@2
  B@8 F
>`.pickRestart({
  A: "~@2 eb2!6", B: "eb2!8", C: "eb2!2 ab2!6", D: "ab2!8", E: "ab2!2 eb2!6", F: "eb2!7 ~", G: "eb2!2 g2!6",
  H: "g2!2 ab2!6", I: "ab2!2 c3!6", J: "c3!2 ab2!6", K: "ab2!2 bb2!4 g2!2",
  L: "[g2@2 g2@2 ab2@2 ab2@2 ab2@2 ab2@2 ab2@7 ~ eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2]/2",
  M: "bb2@3 ~ eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2",
  N: "[g2@2 g2@2 ab2@2 ab2@2 ab2@2 ab2@2 ab2@7 ~ bb2@2 bb2@2 bb2@2 bb2@2 g2@2 g2@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.72)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2)

More by Natalie Imbruglia