Strudelify

Mellon Collie and the Infinite Sadness

The Smashing Pumpkins

KeyD♭ majorTempo75 bpm
0:00/0:00
// Mellon Collie and the Infinite Sadness — The Smashing Pumpkins
// 75 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 51 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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
const piano = note(`<
  A B A B C D E F G H G H G H I J A B A K L M N@2 O@2 P@2 Q R S T U V U V W X A B A B Y D E F Z AA AB AC@2
>`.pickRestart({
  A: "[db3,f3,ab3,db4,f4,ab4]@4 db3 [db3,f3] ~ [db4,f4,ab4] [db4,f4,ab4]@4 ~ gb4 f4@2, ~@3 [db3,f3,ab3]@5, ~@6 ab4 ~", // Db
  B: "gb4@3 f4@3 eb4@2 [bb3,db4]@4 bb3@4, [eb3,gb3,bb3] [gb2,db3,gb3]", // Bbm Ebm Gb5
  C: "gb4@3 f4@3 eb4@2 db4@4 bb3@4, [b2,eb3,gb3] [gb2,db3,gb3]", // B Gb5
  D: "[db3,f3,ab3]@4 db3 [db3,f3] ~ db4 eb4@4 f4@4, db4@3 [db3,f3,ab3]@5", // Db
  E: "[gb4,bb4]@3 [f4,ab4]@3 [eb4,gb4]@2 [db4,f4]@4 [bb3,db4]@4, [ab2,eb3,ab3] [gb2,db3,gb3]", // Gb Fm Ebm Db Bbm Ab5 Gb5
  F: "[e2,b2,e3,ab3,b3]@4 e2 [e2,b2] ~ ab3 eb4@3 db4@3 b3@2, ~@3 [e2,b2,e3]@5", // E E5
  G: "[bb2,db3,f3]@4 bb2@2 ~ [bb3,db4] [b3,eb4]@4 [eb4,gb4]@4, bb3@3 [bb2,db3] [b2,eb3,gb3]@4", // Bbm B Ebm Bbm B
  H: "[ab2,b2,eb3]@4 b2 ~ ab3 b3 eb4@3 db4@3 b3@2, [ab3,b3,eb4]@5 [b2,eb3]@11", // Abm B
  I: "[gb2,db3,gb3]@4 gb2 [gb2,db3] ~ bb3 ~@3 b3@3 bb3@2, bb3@3 [gb2,db3,gb3]@5, ~@4 db4@3 ~", // Gb5
  J: "[e2,b2,b3]@4 e2 [e2,b2] ~ ab3 b3@3 ~@3 gb3@2, ~@3 [e2,b2]@5, ~@3 gb3@4 ~, ~@11 bb3@5", // E5
  K: "gb4@3 f4@3 eb4@2 [bb3,db4]@4 [bb3,db4]@4, [eb3,gb3,bb3] [gb2,db3,gb3]", // Bbm Ebm Gb5
  L: "gb4@3 f4@3 eb4@2 db4@2 ~@2 bb3@2 ~@2, [b2,eb3,gb3] [gb2,db3,gb3]", // B Gb5
  M: "[db3,f3,ab3,db4]@4 db3 [db3,f3] ~ db4 eb4@4 f4@4, ~@3 [db3,f3,ab3]@5", // Db
  N: "[b3@2 bb3@2 ~@8 eb4@2 [db3,f3,ab3,db4]@6 db3 [db3,f3] ~ db4 eb4@4 f4@4, [b2,gb3]@3 [gb2,db3,gb3]@4 ~@4 [db3,f3,ab3]@5]/2", // Db B5 Gb5 Db
  O: "[b3@2 bb3@4 ~@6 eb4@2 [db3,f3,ab3,db4]@6 db3 [db3,f3] ~ db4 [eb4,ab4]@4 [f4,bb4]@4, [b2,gb3]@3 [gb2,db3,gb3]@4 ~@4 [db3,f3,ab3]@5]/2", // Db Ab5 Bb5 B5 Gb5 Db
  P: "[b3@2 bb3@2 ~@8 eb4@2 [db3,f3,ab3,db4]@6 db3 [db3,f3] ~ db4 [eb4,ab4]@4 [f4,eb5]@2 ~@2, [b2,gb3]@3 [gb2,db3,gb3]@4 ~@4 [db3,f3,ab3]@5]/2", // Db Ab5 F7 B5 Gb5 Db
  Q: "[eb4,gb4] [db4,f4]@2 [gb4,bb4]@3 db4@2, [ab2,eb3,ab3]@3 [gb2,db3,gb3]@5", // Ebm Db Gb Ab5 Gb5
  R: "[e2,b2,e3,ab3,b3]@4 e2 [e2,b2] ~@2 eb4@3 db4@3 b3@2, ~@3 [e2,b2,e3]@5, ~@7 ab3@2 ~@7", // E E5
  S: "[bb2,db3,f3,bb3]@4 bb2@2 ~ [bb3,db4] [b3,eb4]@4 [eb4,gb4]@4, ~@3 bb2@2 ~@3, ~@3 db3 [b2,eb3,gb3]@4", // Bbm B Ebm B
  T: "[ab2,b2,eb3,ab3,b3,eb4]@4 ~@2 bb3 b3 eb4@3 db4@3 b3@2, ~ ab2@3, ~@5 eb3@11", // Abm
  U: "[bb2,db3,f3]@2 bb2 [bb2,db3,bb3,db4] [b3,eb4]@2 [eb4,gb4]@2, bb3@3 ~ [b2,eb3,gb3]@4", // Bbm B Ebm B
  V: "[ab2,b2,eb3]@4 ~@2 ab3 b3 eb4@3 db4@3 b3@2, [ab3,b3,eb4]@5 eb3@11, ~ ab2@3", // Abm
  W: "[gb2,db3,gb3,bb3]@4 gb2 ~@2 bb3 db4@2 ~ b3@3 bb3@2, ~@5 [gb2,db3]@11, ~@3 gb3@5", // Gb Gb5
  X: "[e2,b2,e3,b3]@4 e2 [e2,b2] ~@2 b3@2 ~ bb3@3 gb3@2, ~@3 [e2,b2,e3]@5, ~@7 ab3@2 ~@7", // E5
  Y: "gb4@3 f4@3 eb4@2 db4@2 ~@2 bb3@4, [b2,eb3,gb3] [gb2,db3,gb3]", // B Gb5
  Z: "[eb2,bb2,eb3,bb3]@4 eb2 [eb2,bb2] ~ gb3 db4@3 b3@3 bb3@2, ~@3 [eb2,bb2,eb3]@5", // Eb5
  AA: "[e2,b2,e3,ab3,b3,eb4]@4 e2 [e2,b2] ~ b3 eb4@3 db4@3 b3@2, ~@3 [e2,b2,e3]@5", // Emaj7 E5
  AB: "[eb2,bb2,eb3,gb3,bb3]@4 eb2!2 ~ gb3 db4@3 b3@3 bb3@2, ~@5 bb2@11, ~@3 [eb2,eb3]@5", // Ebm Eb
  AC: "[~@2 c5 db5@2 c6 db6@4 db7@2 ~@4, [db2,ab2,db3,f3,ab3]]/2", // Db
})).s("gm_piano").gain(0.4)

// other · cello
const cello = note("<~@16 A B A B@2 A C@2 D@4 E F G H I H I H J F ~@13>".pickRestart({
  A: "db4", B: "eb4 db4", C: "[b3@3 gb3@4 db4@9]/2", D: "[gb3@7 f3@5 eb3@2 db3@2]/2", E: "eb3@3 db3@5", F: "e3",
  G: "bb3@3 ~ ab3@2 gb3@2", H: "eb3", I: "bb3@2 ab3 gb3", J: "gb3",
})).s("gm_cello").gain(0.12)

// other · clarinet
const clarinet = note("<~@25 A B A C D ~ E F G F G H I ~@13>".pickRestart({
  A: "~ db4 eb4 f4", B: "gb4@3 ~", C: "gb4@3 db4@3 bb3@2", D: "c4", E: "~ ab4 bb4 eb4", F: "f4@2 eb4 db4",
  G: "eb4 ab4 bb4 eb4", H: "f4@8 f4@3 eb4@2 ~ db4@2", I: "eb4 db4",
})).s("gm_clarinet").gain(0.09)

stack(piano, cello, clarinet)

More by The Smashing Pumpkins