Strudelify
Torn cover art

1997 · Left of the Middle

Torn

Natalie Imbruglia

KeyF majorTempo100 bpm
0:00/0:00
// Torn — Natalie Imbruglia
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "Chorus Guitar 2" electric guitar clean (copy of ch 9 "Chorus Guitar" electric guitar jazz); ch 13 "Choir2" pad choir (copy of ch 14 "Choir Aahs" choir aahs); ch 8 "Acoustic Guitar 2" acoustic guitar nylon (copy of ch 2 "Acoustic Guitar" acoustic guitar steel)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// chords · acoustic guitar steel · "Acoustic Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D E@2 F@2 G@2 E@2 F@2 G@2 H I F I E I H J E I H J E I H J E@2 F@2 G@2 H I F I E I H J E I H J E I H J H J K@2
  E I H I F I E I H J E I H J E I H J E I H J H I@2 E I H J E I H J E I H J E I L ~@5
>`.pickRestart({
  A: "~ [c5,f5]@15, [c4,f4]", B: "~ [c5,f5]@15, [f4,bb4]", C: "~ [c5,f5]@15, [f4,a4]", D: "~ [c5,g5]@15, [f4,bb4]",
  E: "[f3,c4,f4,a4,c5,f5]!4 [f3,c4,f4,a4,c5,f5]@3 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5] [f3,c4,f4,a4,c5,f5]@4", // F
  F: "[a3,e4,g4,c5,e5]!4 [a3,e4,g4,c5,e5]@3 [a3,e4,g4,c5,e5]@2 [a3,e4,g4,c5,e5]@2 [a3,e4,g4,c5,e5] [a3,e4,g4,c5,e5]@4", // Am7
  G: "[bb3,f4,ab4,d5,f5]!4 [bb3,f4,ab4,d5,f5]@3 [bb3,f4,ab4,d5,f5]@2 [bb3,f4,ab4,d5,f5]@2 [bb3,f4,ab4,d5,f5] [bb3,f4,ab4,d5,f5]@4", // Bb7
  H: "[d4,a4,d5,f5]!4 [d4,a4,d5,f5]@3 [d4,a4,d5,f5]@2 [d4,a4,d5,f5]@2 [d4,a4,d5,f5] [d4,a4,d5,f5]@4", // Dm
  I: "[c4,e4,g4,c5,e5]!4 [c4,e4,g4,c5,e5]@3 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5] [c4,e4,g4,c5,e5]@4", // C
  J: "[bb3,f4,bb4,d5]!4 [bb3,f4,bb4,d5]@3 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5] [bb3,f4,bb4,d5]@4", // Bb
  K: "[d4,a4,d5]!4 [d4,a4,d5]@3 [d4,a4,d5]@2 [d4,a4,d5]@2 [d4,a4,d5] [d4,a4,d5]@4", L: "[d4,a4,d5,f5]!3 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.4)

// chords · acoustic guitar steel · "Acoustic Guitar" · soft notes · Dm Bb F C Dm Bb
const acoustic_guitar_steel_2 = note(`<
  ~@98
  [~@3 [d4,a4,d5,f5] [d4,a4,d5,f5]@3 [d4,a4,d5,f5]@2 [d4,a4,d5,f5]@2 [d4,a4,d5,f5] [d4,a4,d5,f5]@4]
  [[bb3,f4,bb4,d5]!4 [bb3,f4,bb4,d5]@3 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5] [bb3,f4,bb4,d5]@4]
  [[f3,c4,f4,a4,c5,f5]!4 [f3,c4,f4,a4,c5,f5]@3 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5] [f3,c4,f4,a4,c5,f5]@4]
  [[c4,e4,g4,c5,e5]!4 [c4,e4,g4,c5,e5]@3 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5]@2 [c4,e4,g4,c5,e5] [c4,e4,g4,c5,e5]@4]
  [[d4,a4,d5,f5]!4 [d4,a4,d5,f5]@3 [d4,a4,d5,f5]@2 [d4,a4,d5,f5]@2 [d4,a4,d5,f5] [d4,a4,d5,f5]@4]
  [[bb3,f4,bb4,d5]!4 [bb3,f4,bb4,d5]@3 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5]@2 [bb3,f4,bb4,d5] [bb3,f4,bb4,d5]@4]
>`).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.4)

// chords · pad warm · "Synth"
const pad_warm = note(`<
  ~ A@4 B@2 C@2 D E B@2 C@2 D E F G@2 H B H I D B H I D B H I D B@2 C@2 D E F G@2 H B H I D B H I D B H I D J K L@2 M N
  ~@4 B H I D B H I D B H I D B H I D J H@2 B H I D B H I D B H I D B H I D B H I D
>`.pickRestart({
  A: "[[c4,f4,f5] [c4,f4,bb4,f5] [c4,f4,a4,f5] [c4,f4,g4,bb4,g5], c5]/4", B: "[c4,f4,a4]", C: "[g3,c4,e4]",
  D: "[bb3,f4]", E: "[bb3,g4]", F: "[a3,d4]", G: "[c4,e4]", H: "[c4,e4,g4]", I: "[a3,f4]", J: "[a3,e4]",
  K: "[bb3,d4,f4]", L: "[[a3,d4,a4]@6 a4 ~]/2", M: "[a3,c4,f4]", N: "[c4,e4,g4]@3 ~",
})).s("gm_pad_warm").gain(0.2)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@10 A B C D@2 E@2 F G D H C H I E C H I E C H I E C@2 D@2 E@2 F G D H C H I E C H I E C H I E I E J@2 K L ~@4 C H I E
  C H I E C H I E C H I E I H@2 C H I E C H I E C H I E C H M ~@5
>`.pickRestart({
  A: "~@12 f2 [d2,eb2,e2] [c2,db2] [g1,a1,bb1,b1]", B: "[f1,gb1] f1!3 f1@3 f1@2 f1@2 f1 f1@4",
  C: "f1!4 f1@3 f1@2 f1@2 f1 f1@4", D: "a1!4 a1@3 a1@2 a1@2 a1 a1@4", E: "bb1!4 bb1@3 bb1@2 bb1@2 bb1 bb1@4",
  F: "d2!4 d2@3 a2@2 c3@2 g2 f2@4", G: "c2!4 c2@3 a2@2 c3@2 g2 f2@4", H: "c2!4 c2@3 c2@2 c2@2 c2 c2@4",
  I: "d2!4 d2@3 d2@2 d2@2 d2 d2@4", J: "d1@4 d2@3 d1@3 d1@2 d2@4", K: "f1@4 f2@3 f1@3 f1@2 f2@4",
  L: "c2@2 c2@2 c2@3 c2@3 c2@2 c2@4", M: "d2!4 ~@12",
})).s("gm_electric_bass_finger").gain(0.34)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft = note(`<
  ~@98
  [~@4 d2@3 d2@2 d2@2 d2 d2@4]
  [bb1!4 bb1@3 bb1@2 bb1@2 bb1 bb1@4]
  [f1!4 f1@3 f1@2 f1@2 f1 f1@4]
  [c2!4 c2@3 c2@2 c2@2 c2 c2@4]
  [d2!4 d2@3 d2@2 d2@2 d2 d2@4]
  [bb1!4 bb1@3 bb1@2 bb1@2 bb1 bb1@4]
>`).s("gm_electric_bass_finger").gain(0.11)

// other · electric guitar jazz · "Chorus Guitar"
const electric_guitar_jazz = note(`<
  ~@17 A B C D E@3 F G@3 F G@3 H ~ I@2 J@3 A B C D F K F@3 K F@2 L M F ~@11 N K F@3 K F L F K F@3 K F@2 ~@3 F K F@3 K
  F@2 N K F@2 L K ~@6
>`.pickRestart({
  A: "~@2 [f4,a4]@13 ~, a3@15 ~, ~ d4@14 ~", B: "~ g4@6 ~, [g3,c4]@7 ~, ~ e4@13 ~@2",
  C: "~@3 a4@12 ~, a3@7 ~, ~ c4@14 ~, ~ e4@6 ~", D: "~@3 g4@13, g3, ~ c4@15, ~ e4@7",
  E: "[~@2 f4@3 g4@3 f4@3 g4@3 f4@4 e4@3 g4@3 e4@4 ~@2 e4@3 ~ f4@3 g4@3 f4@3 g4@3 f4@2, ~@28 g4@7 ~@13]/3",
  F: "~@2 f4@3 g4@3 f4@3 g4@3 f4@2",
  G: "[~@2 f4@3 g4@3 f4@3 g4@3 f4@4 e4@3 g4@3 e4@3 g4@3 e4@4 f4@3 g4@3 f4@3 g4@3 f4@2]/3",
  H: "~ f4@4 ~@3, f3 ~, ~ [bb3,d4]@8 ~@7", I: "[~@14 g3 ~ c4@2 g4@4 e4@10, ~@15 a3@2 ~@15]/2",
  J: "[~@12 [c4,e4]@2 [bb3,d4]@13 ~ [bb3,d4]@16 ~@4]/3", K: "~@2 e4@3 g4@3 e4@3 g4@3 e4@2",
  L: "~@2 f4@3 g4@3 f4@3 g4@3 f4 ~", M: "~@2 e4@3 g4@2 e4@4 g4@2 e4@2 ~", N: "~ f4@2 g4 f4@2 g4 f4",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.8)

// other · electric guitar jazz · "Chorus Guitar" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@98
  [~@2 f4@3 g4@3 f4@3 g4@3 f4@2]!3
  [~@2 e4@3 g4@3 e4@4 g4@2 e4@2]
  [~@2 f4@3 g4@3 f4@3 g4@3 f4@2]!2
>`).s("gm_electric_guitar_jazz").gain(0.06).pan(0.8)

// other · pad metallic · "Lead"
const pad_metallic = note("<~@83 A B@2 C@2 B@2 C@2 D@2 E@2 B@2 C@2 B@2 F@2>".pickRestart({
  A: "~@3 f4", B: "c5/2", C: "[a4@7 f4]/2", D: "[c5@14 d5 f5]/2", E: "[d5@7 f4]/2", F: "a4/2",
})).s("gm_pad_metallic").gain(0.52).pan(0.7)

// other · distortion guitar · "Lead Guitar"
const distortion_guitar = note("<~@34 A@2 B@3 ~@44 C D@2 E@2 D@2 E@2 F@2 G@2 D@2 E@2 D@2 H@2>".pickRestart({
  A: "[~@14 g3 ~ c4@2 g4@4 e4@10, ~@15 a3@2 ~@15]/2", B: "[~@12 [c4,e4]@2 [bb3,d4]@13 ~ [bb3,d4]@16 ~@4]/3",
  C: "~@3 f4", D: "[c5@26 ~ c5@5]/2", E: "[a4@7 f4]/2", F: "[c5@14 d5 f5]/2", G: "[d5@7 f4, e5 ~@31]/2",
  H: "[a4@31 ~]/2",
})).s("gm_distortion_guitar").gain(0.29).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~ [x ~@5 x!2 ~ x ~@6]!60 ~@2 [x ~@5 x!2 ~ x ~@6]!35 x ~@5>").gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@98 [~@6 x!2 ~ x ~@6] [x ~@5 x!2 ~ x ~@6]!5>").gain(0.13)

// drums · clap
const clap = s("cp").struct("<~@10 [~ x ~ x]!51 ~@2 [~ x ~ x]!35 ~@6>").gain(0.26)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~ [~ x ~ x]!9 ~@88 [~ x ~ x]!6>").gain(0.13)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!60 ~@2 [~ x ~ x] [~@4 x ~@7 x ~ x!2] [~ x ~ x]!33 ~@6>").gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@98 [~ x ~ x]!6>").gain(0.13)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ [x!16]!60 ~@2 [x!16]!35 [x!3 ~@13] ~@5>").gain(0.32)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@98 [~@3 x!13] [x!16]!5>").gain(0.13)

// drums · crash
const crash = s("cr").struct("<[~@4 x!12] ~@103>").gain(0.26)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, pad_warm, bass, bass_soft, electric_guitar_jazz,
  electric_guitar_jazz_2, pad_metallic, distortion_guitar, kick, kick_soft, clap, clap_soft, snare, snare_soft,
  pedal_hat, pedal_hat_soft, crash
)

More by Natalie Imbruglia