Strudelify
KeyG♯ minorTempo159 bpm
0:00/0:00
// Eye — The Smashing Pumpkins
// 159 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 "Dist Guitar" distortion guitar (copy of ch 1 "Bright Piano" piano); ch 3 "Harpsichord" harpsichord (copy of ch 1 "Bright Piano" piano); ch 12 "String Ensemble 1" string ensemble 1 (copy of ch 14 "Choir Pad 4" pad choir); ch 15 "Xylophone" marimba (copy of ch 14 "Choir Pad 4" pad choir)
// note: Full arrangement: all 192 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(159/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 · "Bright Piano"
const piano = note(`<
  A@2 B@2 C@2 B@2 ~@16 C@2 B@2 C@2 B@2 C@2 D@2 A@2 E@2 ~@12 A@2 B@2 C@2 B@2 A@2 B@2 C@2 B@2 ~@16 F G B@2 C@2 B@2 C@2 D@2
  A@2 E@2 ~@92
>`.pickRestart({
  A: "[~@7 b3, g#3@3 g#3@5, ~ g#4@5 g#4@2, ~@2 b3@3 b3@2 ~, ~ a#3]/2",
  B: "[~@28 b3@3 ~, f#4@31 ~, ~@4 e4@8 e4@8 b3@4 e4@7 ~, ~@8 d#4@23 ~, ~@16 c#4@15 ~]/2",
  C: "[~@28 b3@3 ~, g#3@12 g#3@19 ~, ~@4 g#4@20 g#4@7 ~, ~@2 b3@3 b3@2 ~, ~@16 a#3@15 ~]/2",
  D: "[~@7 b3, f#4, ~ e4@2 e4@2 b3 e4@2, ~ d#4@3, ~ c#4]/2",
  E: "[~@14 b3 ~, f#4@15 ~, ~@2 e4@4 e4@4 b3@2 e4@3 ~, ~@4 d#4@11 ~, ~@8 c#4@7 ~]/2", F: "g#3@4 g#4 ~@3 b3 ~@3 g#3 ~@3",
  G: "a#3@2 ~@2 b3@2 ~@2 g#4 ~@3 b3 ~@3",
})).s("gm_piano").gain(0.22).pan(1)

// chords · string ensemble 2 · "Bright Piano"
const string_ensemble_2 = note("<~@144 A B@4 C@8 D@4 E@2 F@5 G@5 ~@19>".pickRestart({
  A: "[d#5,g#5,b5]", B: "[[f#5,a#5]@15 ~@17 b4@16 [d#5,b5]@16, c#5 ~, ~@15 e5@32 ~@17, ~ g#5@3]/4",
  C: "[[f#5,a#5] ~@2 d#5 [f#5,a#5] ~ b4 [d#5,b5], c#6@32 b5@33 ~@15 e5@32 ~@16, ~@16 g#5@49 ~@15 g#5@48, ~ e5@2 ~ c#5@2 ~@2]/8", // F# G#m
  D: "[[f#5,a#5] ~@2 d#5, c#6 b5, ~ g#5@3, ~ e5@2 ~]/4", E: "[[f#5,a#5]@16 [e5,g#5]@15 ~, c#5@31 ~]/2",
  F: "[[b4,e5]@16 [d#5,b5]@15 ~ a#5@16 ~@16 b5@15 ~, g#5@2 c#6@2 ~, ~@31 f#5@17 [e5,g#5]@31 ~]/5", // E5 G#m E
  G: "[d#5@73 ~@7, a#5@27 ~@13, d#6 ~]/5",
})).s("gm_string_ensemble_2").gain(0.19).pan(0)

// other · piano · "Grand Piano"
const piano_2 = note("<~@40 A B C D E F G H I@2 J K ~@48 L M N O P Q R S T@2 U V W ~@79>".pickRestart({
  A: "~@2 b4 ~", B: "a#4 d#5 g#4@2", C: "~@3 g#5, ~@4 d#5@3 ~", D: "c#5@2 g#5@2 b4@3 ~", E: "~@2 b4 d#5",
  F: "g#4 d#5 b4 d#5", G: "~@2 d#5 b4", H: "d#5 g#4 e5 d#5",
  I: "[b4@3 ~ b4@2 ~@2 a#4@2 d#5@2 g#4@2 d#5@2, ~@6 d#5@3 ~@7]/2", J: "~@2 a#4 d#5", K: "b4 d#5 f#4 d#5",
  L: "~@2 g#4 d#5", M: "a#4 d#5 b4 ~", N: "~@2 c#5 g#5", O: "d#5 g#5 c#5 g#5", P: "~@2 d#5 f#5",
  Q: "c#5 ~ b4 g#4, ~@2 d#5@3 ~@3", R: "c#5 ~ e5 g#4", S: "c#5@3 ~ g#4@2 c#4@2",
  T: "[~@2 g#5 ~ e5 g#4 g#5 e5, ~@6 b4@3 ~@7]/2", U: "a#5 e5 b5 e5", V: "a#5 e5 f#5 ~", W: "d#5@3 ~@5",
})).s("gm_piano").gain(0.23).pan(1)

// other · piano · "Grand Piano" · soft notes
const piano_soft = note("<~@40 A ~@60 A ~@5 B ~@3 C ~@80>".pickRestart({
  A: "~@3 d#5", B: "~ e4 ~@2", C: "~@3 e5",
})).s("gm_piano").gain(0.14).pan(1)

// bass · synth bass 1
const bass = note(`<
  ~@16 A ~ B C A ~ B C A@2 B C A@2 B C A@2 B C A@2 B C ~@12 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2
  B C A@2 B C A@2 B C A@2 B C A@2 B C ~@12 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D A B C D A B C D E F E@5 G E F E@5 G ~@8
>`.pickRestart({
  A: "g#1 ~ g#1 ~@5", B: "f#1 ~ f#1 ~@5", C: "c#1 ~ c#1 ~@5", D: "e1 ~ e1 ~@5", E: "d#1 ~ d#1 ~@5",
  F: "d#1 ~ d#1 ~@2 f#1 g#1!2", G: "d#1 ~ d#1 ~@2 c#1!3",
})).s("gm_synth_bass_1").gain(0.51)

// chords · pad sweep · "Sweep Pad 8"
const pad_sweep = note("<~@40 A@2 B@2 C@2 D@2 E@2 F@2 ~@48 A@2 B@2 C@2 D@2 E@2 F@2 ~@80>".pickRestart({
  A: "[g#3,b3,d#4]/2", B: "[f#3,a#3,d#4]/2", C: "[f#3,b3,d#4]/2", D: "[c#3,e3,g#3,c#4]/2", E: "[e3,g#3,b3,d#4]/2",
  F: "[d#3,f#3,a#3,c#4]/2", // D#m7
})).s("gm_pad_sweep").gain(0.28)

// bass · electric bass finger · "Electric Bass"
const bass_2 = note("<~@40 A B C D E F G H I B C@2 ~@48 A B C D E F G H I B C@2 ~@80>".pickRestart({
  A: "e1@4 e1@3 ~ e1@4 e1@4", B: "e1@4 e1@4 e1@4 e1@3 ~", C: "d#1!4", D: "d#1@4 d#1@4 d#1@4 d#1@3 ~", E: "b0!4",
  F: "b0@4 b0@4 b0@4 b0@3 ~", G: "c#1!4", H: "c#1@2 c#1@2 c#1@2 c#1 ~", I: "e1!4",
})).s("gm_electric_bass_finger").gain(0.2)

// other · glockenspiel
const glockenspiel = note(`<
  ~@24 A B C D A B C E A B C D A B C E ~@44 A B C D A B C E A B C D A B C E ~@20 F G H I F G H I F G H I F G H I F G H I
  F G H I F G H I F G H I F G H I F G H I F G H I F G H I ~@24
>`.pickRestart({
  A: "g#5 ~ g#6 ~ b5 ~ g#5 ~", B: "a#5 ~ b5 ~ g#6 ~ b5 ~", C: "f#6 ~ e6 ~ d#6 ~ e6 ~", D: "c#6 ~ b5 ~ e6 ~ b5 ~",
  E: "a#5 ~ b5 ~ a#5 ~ f#5 ~", F: "g#5 ~ d#6 ~ g#6 ~ d#6 ~", G: "f#6 ~ f#6 ~ a#6 ~ f#6 ~", H: "g#5 ~ g#6 ~ b6 ~ d#6 ~",
  I: "e6 ~ e6 ~ a#6 ~ e6 ~",
})).s("gm_glockenspiel").gain(0.11)

// other · lead 1 square · "Square Lead 1"
const lead_1_square = note("<~@53 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@125>".pickRestart({
  A: "[~@8 g#4@11 ~@13]/2",
})).s("gm_lead_1_square").gain(0.48).pan(0.7)

// other · woodblock
const woodblock = note("<~@44 A@2 B C D E F G ~@140>".pickRestart({
  A: "~@4 d#5!4", B: "~@2 c#5!6", C: "c#5!8", D: "~@2 b4!3 ~@3", E: "~ b4!7", F: "~@2 a#4!5 ~", G: "~ a#4!6 ~",
})).s("gm_woodblock").gain(0.19)

// other · woodblock · soft notes
const woodblock_soft = note("<~@48 [~@5 b4!3] [b4 ~@7] [~@7 a#4] [a#4 ~@6 a#4] ~@140>").s("gm_woodblock").gain(0.1)

// bass · synth bass 1 · "Synth Bass 1 (2)"
const bass_3 = note(`<
  ~@52 A B C D A B C D A B C D A B E D A B C D A B C F A B C D A B C D A B C D A B C D A B C D A B E D ~@12 A G H I A G
  H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I A G H I J@2 K L J@2 K L
  J@2 K L J@2 K L M@8
>`.pickRestart({
  A: "g#1!4 g#2 f#2 g#1!2", B: "g#1!3 f#2 g#2 f#2 g#2 f#2", C: "f#1!4 g#2 f#2 c#2!2", D: "c#1!4 d#2 c#2 f#2 g#2",
  E: "f#1!4 ~ f#2 c#2!2, ~@2 g#2 ~", F: "c#1!4 d#2 c#2 b1 a1", G: "f#1!3 e2 f#2 e2 f#2 e2", H: "c#1!4 d#2 c#2 c#1!2",
  I: "e1!4 f#1 e1 f#1 g1", J: "[d#1!4 ~ d#1!3 d#1!3 c#2 d#2 c#1!2 d#1, ~@8 d#2@15 ~@9]/2", K: "d#1!3 d#2 d#1!4",
  L: "d#1!3 g#1!2 c#1!2 d#1", M: "d#1 ~ d#1!2 ~@4",
})).s("gm_synth_bass_1").gain(0.29)

// other · pad choir · "Choir Pad 4"
const pad_choir = note(`<
  ~@128 A B C@2 A B D@2 A B D@2 A B D@2 A B C@2 A B C@2 A B D@2 A B D@2 A B E@2 A B E@2 ~@24
>`.pickRestart({
  A: "d#5 e5 d#5 c#5", B: "d#5 c#5 b4 a#4", C: "[c#5@4 g#4@9 ~@3]/2", D: "[c#5@2 g#4@5 ~]/2", E: "[c#5@4 g#4@11 ~]/2",
})).s("gm_pad_choir").gain(0.25).pan(1)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@6 B A@7 B A@7 B A@7 B A@23 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7 B A@5 ~@4 A@6 B A@7 B A@7 B A@7 B A@7 B A@7 B A@7
  B A@7 B A@7 B A@5
>`.pickRestart({
  A: "x!2 ~@2", B: "x ~ x ~@2 x!3",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B ~@12 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B
  A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B ~@4 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A
  B@3 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B
>`.pickRestart({
  A: "~@4 x ~ x!2", B: "~ x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!8]!36 [x!5 ~@3]!12 [x!8]!60 ~@4 [x!8]!76>").gain(0.64)

// drums · shaker
const shaker = s("sh").struct("<~@40 [~@4 x!4] [x ~@3 x!4]!11 ~@140>").gain(0.48)

stack(
  piano, string_ensemble_2, piano_2, piano_soft, bass, pad_sweep, bass_2, glockenspiel, lead_1_square, woodblock,
  woodblock_soft, bass_3, pad_choir, kick, snare, hihat, shaker
)

More by The Smashing Pumpkins