Strudelify
All I Really Want cover art

Jagged Little Pill

All I Really Want

Alanis Morissette

KeyB♭ majorTempo100 bpm
0:00/0:00
// All I Really Want — Alanis Morissette
// 100 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Melody 1 Doubled" synth strings 2 (copy of ch 5 "Melody Doubled #1" synth strings 2)
// note: Full arrangement: all 105 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: edit a riff to change every repeat.

// bass · fretless bass · "Bass"
const bass = note(`<
  A B C D E F G H G H G H I J K L I J M N A B M O I J C P G H I J Q R Q R Q R K S I J T U M V C U M V K U A B T W X Y Z
  AA AB AC I J Q R Q R I J Q R M V Q R T O M V C D A B I O E F AD AE I Q AF W K E F N I@2 J N AG AH ~
>`.pickRestart({
  A: "bb1 ~ bb1@2 bb1 ~ bb1@2 bb1 ~ bb1@2 bb1 ~ bb1@2", B: "bb1 ~ bb1@2 bb1 ~ bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  C: "bb1 ~ bb1 ~ bb1 ~ bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~", D: "ab2 ab1 ab2 ~ ab2 ~ ab2 ~ eb2 eb1 eb2 ~ eb2 ~ eb2 ~",
  E: "bb1 ~ bb1@2 bb1@2 bb1 bb0 bb1 ~ bb1 ~ bb1 ~ bb1@2", F: "bb1 ~ bb1 ~ bb1 ~ bb1 bb0 bb1 ~ bb1 bb0 bb1 ~ bb1 ~",
  G: "bb1 ~ bb1 ~ bb1 ~ bb1 bb0 bb1 ~ bb1 ~ bb1 ~ bb1@2", H: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  I: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2", J: "bb1 ~ bb1 ~ bb1 ~ bb1@2 bb1 ~ bb1@2 bb1 ~ bb1 ~",
  K: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 bb0 bb1 bb0 bb1!2", L: "ab2 ~ ab2@2 ab2 ~ ab2 ab1 eb2 ~ eb2@2 eb2 ~ a1 ~",
  M: "bb1 ~ bb1 ~ bb1 ~ bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 bb0", N: "ab2 ab1 ab2 ~ ab2 ~ ab2 ~ eb2 ~ eb2@2 eb2 ~ a1 ~",
  O: "ab2 ~ ab2@2 ab2 ~ ab2 ab1 eb2 ~ eb2@2 eb2 ~ eb2 eb1", P: "ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2 ~ ab2@2 a1 ~",
  Q: "bb1 ~ bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 bb0", R: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ a1 ~",
  S: "ab2 ab1 ab2 ~ ab2 ~ ab2 ~ eb2 ~ eb2@2 eb2 ~ eb2 eb1", T: "bb1 ~ bb1 ~ bb1 ~ bb1 bb0 bb1 ~ bb1 ~ bb1@2 g2 ~",
  U: "ab2 ~ ab2@2 ab2 ~ d2 ~ eb2 eb1 eb2 ~ eb2 ~ eb2 ~", V: "bb1 ~ bb1 ~ bb1 ~ bb1 bb0 bb1 ~ bb1 ~ bb1 ~ a1 ~",
  W: "ab2 ~ ab2@2 ab2 ~ d2 ~ eb2 ~ eb2@2 eb2 ~ eb2 eb1", X: "db2 ~ db2 ~ db2 ~ db2@2 db2 ~ db2 ~ db2 ~ db2 db1",
  Y: "eb2 ~ eb2 ~ eb2 ~ eb2 eb1 eb2 ~ eb2 ~ eb2@2 c2 ~", Z: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2@2",
  AA: "eb2 ~ eb2 ~ eb2 ~ eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2 ~", AB: "db2 ~ db2 ~ db2 ~ db2@2 db2 ~ db2 ~ db2 ~ db2 ~",
  AC: "eb2 ~ eb2 ~ eb2 ~ eb2@2 eb2 ~ eb2 ~ eb2 ~ eb2 eb1", AD: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1@2 g2 ~",
  AE: "ab2 ~ ab2@2 ab2 ~ ab2 ab1 eb2 eb1 eb2 ~ eb2 ~ eb2 ~", AF: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ g2 ~",
  AG: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2!2", AH: "eb2 ~ bb2@2 db3 ~ eb3 ~@5 eb2@4",
})).s("gm_fretless_bass").gain(0.64).pan(0.7)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  A@2 B C D@2 E F G@2 H I E F J K G@2 L M D@2 B N H I J O P Q P Q G@2 R@2 D@2 L C D@2 L M H I B S R@2 B N T@2 U V W X Y
  Z AA AB AC@2 AD@2 E F D@2 E F P Q D@2 L AE A@2 B AF D@2 B AE G@2 J AG J H I AE L G@2 AH L G@2 AF AI AJ ~
>`.pickRestart({
  A: "[~@2 [bb2,f3,bb3] ~@5 [bb2,f3,bb3]@4 f2@2 [bb2,f3,bb3]@4 ~@2 bb2@2 ~@2 f3@2 ~@2 bb2@2 f3 ~]/2", // Bb5
  B: "~@2 [bb2,f3] ~@3 bb1@2 ~@2 bb1@2 ~@2 f3 ~, ~@2 [bb2,f3] bb2", // Bb5
  C: "~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] [eb3,bb3]@3 eb2", // Ab5 Eb5
  D: "[[bb2,f3,bb3]@2 ~@4 [bb2,f3,bb3]@2 ~@2 [bb2,f3,bb3]@2 bb1 ~ [bb2,f3,bb3]@4 bb1@2 bb2@2 bb1@2 [bb2,f3,bb3]@2 ~@2 bb2@2 f3 ~]/2", // Bb5
  E: "~@2 [bb2,f3] ~@3 bb1@2 [bb2,f3]@4 bb1@2 [bb2,f3]@2", F: "~ [bb2,f3] ~ [bb2,f3]@2 bb1 bb2 [bb2,f3]",
  G: "[~@2 [bb2,f3] ~@2 [bb2,f3] ~@2 bb1 ~@4 f3 bb2 [bb2,f3], ~@14 [bb2,f3]@4 bb3@4 bb2@5 ~@5, ~@20 f3@4 bb3@5 ~@3]/2", // Bb5
  H: "~@4 [bb2,f3]@2 ~@2 bb1@2 [bb2,f3] ~@3 [bb2,f3]@2", I: "~ [bb2,f3] ~ bb1 [bb2,f3] ~ [bb2,f3] ~",
  J: "~@2 [bb2,f3] ~@3 bb1@2 [bb2,f3]@6 ~@2", K: "[ab2,eb3]@3 ~ [eb3,bb3] ~ [eb3,bb3] ~",
  L: "~@2 [bb2,f3]@2 ~@4 [bb2,f3]@7 ~", M: "~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [eb3,bb3,eb4] ~ [eb3,bb3,eb4]",
  N: "[ab2,eb3]@3 ~@2 [eb3,bb3,eb4] ~ [eb3,bb3,eb4]", // Ab5 Eb5
  O: "ab2@2 eb3 ~@7 eb3@2 ~@2 eb3@2, ~@6 ab2@5 ~ ab2@4, ~@4 ab3@3 ~", P: "~@4 [bb2,f3]@2 ~@4 [bb2,f3]@3 ~ [bb2,f3]@2",
  Q: "~@2 [bb2,f3]@3 ~ bb1@2 [bb2,f3]@2 bb1@2 f3 ~ f3 ~, ~@3 bb2", // Bb5
  R: "[~@4 [bb2,f3]@2 ~@4 [bb2,f3]@2 ~@2 f3@4 bb2@2 ~@2 bb2@2 ~@2 bb2@2 f3@2 bb2 ~, ~@14 bb2@3 ~@3 f3@4 bb3@5 ~@3]/2", // Bb5
  S: "[ab2,eb3] ~ eb3 ~@2 [eb3,bb3,eb4] ~ [eb3,bb3,eb4]", // Ab5 Eb5
  T: "[[bb2,f3] ~@6 f3@2 bb2 f3 bb2 ~ bb2 f3 bb2, ~@4 bb1@5 ~ bb1@22, ~@3 bb2@4 ~@9, ~@3 f3@3 ~@6 bb3@2 ~@2]/2", // Bb5
  U: "~@2 [bb2,f3] ~ [bb2,f3]@2 bb1@2 ~@4 bb2@2 f3 ~, bb1@5 ~@3 [bb2,f3]@4 ~@4, ~@5 bb1@2 ~", // Bb5
  V: "ab3 eb3 ab2 ~ eb3 ab2 ab3 eb3 [eb3,bb3,eb4]@6 eb2@2, ~@3 ab3@2 ~@11", // Eb5
  W: "~@2 [db3,ab3] ~ [db3,ab3]@2 db2@2 ~@4 db3@2 ab3 ~, db2@5 ~@3 [db3,ab3]@4 ~@4, ~@5 db2@2 ~", // Db5
  X: "~@2 [eb3,bb3] ~ [eb3,bb3]@2 eb2@2 ~@4 eb3@2 bb3 ~, eb2@5 ~@3 [eb3,bb3]@4 ~@4, ~@5 eb2@2 ~", // Eb5
  Y: "~@2 db4 ~ ab3@2 db3@2 db4 ~@2 db4 ~@2 db4 ab3, ~@9 ab3@2 ~ ab3@2 ~@2, ~@10 db3@2 ~ db3@2 ~",
  Z: "f3 ~@5 eb3@4 ~@2 eb3@2 [bb3,eb4]@2, eb3@4 eb2@5 ~ eb2@4 ~@2, ~ bb3@2 ~@5", // Eb5
  AA: "~@2 [db3,ab3,db4] ~ [db3,ab3,db4]@2 ~@2 [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~ [db3,ab3,db4] ~, ~@3 db2@5", // Db5
  AB: "~@2 eb4 ~ bb3@2 eb3@2 eb4 ~@2 eb4 ~@2 eb4 bb3, ~@9 bb3@2 ~ bb3@2 ~@2, ~@10 eb3@2 ~ eb3@2 ~",
  AC: "[~@2 [bb2,f3] ~@17 f3@2 ~@8 f3@2, bb1@5 ~ bb1@7 ~ bb1@11 ~ bb1@6, ~@8 [bb2,f3]@8 bb3@5 ~ bb3@8 ~@2, ~@18 bb2@9 ~ bb2@4]/2", // Bb5
  AD: "[~@2 bb1@2 ~@2 bb1@2 ~@6 f3@3 ~ [bb2,f3,bb3] ~@9 [bb2,bb3]@3 ~, ~@4 bb2@6 bb1@10 ~@2 bb1@4 bb1@5 ~, ~@8 f3@4 bb2@5 ~@7 [bb2,f3]@4 ~@4]/2", // Bb5 Bb Bb5
  AE: "[ab2,eb3]@6 ~@2 [eb3,eb4] ~@3 bb3@2 [bb3,eb4]@2, ~@4 bb3 eb3@3", // Ab5 Eb Eb5
  AF: "[ab2,ab3] ~@3 eb3@2 [eb3,ab3]@2 [eb3,eb4] ~@3 bb3@2 [bb3,eb4]@2, eb3 ab2@3 bb3 eb3@3", // Ab Ab5 Eb Eb5
  AG: "~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] [eb3,bb3] ~ [eb3,bb3] ~", // Ab5 Eb5
  AH: "[ab2,ab3] ~@3 eb3@2 [eb3,ab3]@2 [eb3,bb3]@6 eb2@2, eb3 ab2@3 ~@4", AI: "[bb3,eb4]",
  AJ: "[eb3,bb3,eb4] ~@3 [db3,ab3,eb4] ~ [eb3,bb3,eb4] ~@5 [eb3,bb3,eb4]@4", // Eb5 Dbsus2 Eb5
})).s("gm_electric_guitar_muted").gain(0.64).pan(0.3)

// chords · electric guitar muted · "Guitar" · soft notes
const electric_guitar_muted_2 = note(`<
  A B C ~ D E F G H ~@3 F G I J H ~ K ~ D E C ~@3 I ~ L ~ L ~ H ~@3 D E K ~ D E K ~@3 C M ~@2 C ~ N O P ~ Q R S T U V ~
  W X Y F G D E F G L ~ D E K ~ A B C ~ D E C ~ H ~ I J I ~@3 K H ~@2 K H ~@2 Z AA ~
>`.pickRestart({
  A: "~@6 f2 ~@9", B: "~@2 f2 ~@3 f2@2 bb2@2 f2@2 ~@4", C: "bb1 ~@11 f3 ~@3", D: "bb1@2 ~@2 bb1 ~@11",
  E: "~@2 f3 ~@2 bb1 ~@2", F: "bb1@2 e3 ~@13", G: "~@4 bb1 ~@11", H: "~@3 bb1 ~@4 bb1 ~@3 bb1 ~@3", I: "~@2 e3 ~@13",
  J: "~@11 eb2@2 ~@3", K: "bb1@5 ~ bb1@9 ~", L: "~@4 bb1 ~@3", M: "~@3 ab2@2 ~@11", N: "~@7 bb2", O: "~@6 g3 ~@9",
  P: "~@13 f3 ~@2", Q: "~@13 ab3 ~@2", R: "~@13 bb3 ~@2", S: "db2", T: "~@7 b3 ~@8", U: "db2@5 ~@11", V: "eb2",
  W: "~@10 f2 ~@5", X: "~@12 g3 ~@3", Y: "~@12 f3 ~@3", Z: "eb3", AA: "~@4 eb3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B C A C A C A@2 C B A@2 B C A C A@3 C A@3 B@2 A D C A@3 B C@2 A@2 C@2 A C@3 A@3 C A C B C D A@4 C A C A@2 C@2 A C D
  A@2 B@2 C A C@2 B A B A@2 C A C A C A C A C D A B C A@5 C B C@2 D A C ~
>`.pickRestart({
  A: "x ~@2 x ~@3 x ~ x ~ x ~@4", B: "x ~ x ~@3 x!2 ~ x!2 ~@5", C: "x ~@5 x!2 ~ x!2 ~@5", D: "x ~@2 x ~@12",
})).gain(0.8).pan(0.6)

// drums · rim
const rim = s("rim").struct("<~@27 A ~@23 A ~@13 A ~@22 A ~@12 A ~@3>".pickRestart({
  A: "~@2 x!2 ~@4",
})).gain(0.72).pan(0.6)

// drums · snare
const snare = s("sd").struct("<A@27 ~ A@23 ~ A@13 ~ A@22 ~ A@12 ~ A@2 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.8).pan(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@27 A ~@23 A ~@13 A ~@22 A ~@12 A ~@3>".pickRestart({
  A: "~@12 x!2 ~@2",
})).gain(0.8).pan(0.6)

// drums · hihat
const hihat = s("hh").struct("<~@27 A ~@23 A B@13 A ~@22 A ~@12 A ~@3>".pickRestart({
  A: "~@8 x!7 ~", B: "x!2 ~ x!3 ~ x!3 ~ x!3 ~@2",
})).gain(0.56).pan(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@23 A ~@13 A ~@22 A ~@12 A ~@3>".pickRestart({
  A: "~@10 x!2 ~@4",
})).gain(0.72).pan(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@27 A ~@23 A ~@13 A ~@22 A ~@12 A ~@3>".pickRestart({
  A: "~@8 x!2 ~@6",
})).gain(0.56).pan(0.6)

// drums · crash
const crash = s("cr").struct("<~@27 A ~@23 A ~@13 A ~@22 A ~@12 A ~@2 B>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.8).pan(0.6)

// drums · ride
const ride = s("rd").struct("<~@52 A@4 B A B A@2 B@2 A B ~@40>".pickRestart({
  A: "~@2 x ~@3 x ~@3 x ~@3 x!2", B: "~@2 x ~ x!2 ~ x ~ x ~ x!2 ~@3",
})).gain(0.64).pan(0.6)

// drums · tambourine
const tambourine = s("tb").struct("<[~ x ~ x ~ x ~ x]!104 ~>").gain(0.64).pan(0.6)

// drums · shaker
const shaker = s("sh").struct("<[x!16]!104 ~>").gain(0.48).pan(0.6)

stack(
  bass, electric_guitar_muted, electric_guitar_muted_2, kick, rim, snare, low_tom, hihat, mid_tom, high_tom, crash,
  ride, tambourine, shaker
)

More by Alanis Morissette