Strudelify
Stupid Girl cover art

Garbage

Stupid Girl

Garbage

KeyF♯ minorTempo120 bpm
0:00/0:00
// Stupid Girl — Garbage
// 120 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Guitar 1 Track Overdub" distortion guitar (copy of ch 1 "Guitar 1" electric guitar clean)
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// other · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  ~@4 A B A B A B A B ~@20 C@8 A B A B A B A B ~@16 C@8 A B A B A B A B D E D E D E D E ~@8 C@16 F@8 D E D E D E D E ~
>`.pickRestart({
  A: "~ f#3 e4 f#3 e4 f#3 e4 f#3", B: "d#4",
  C: "[~@15 e4 ~@15 e4 ~@15 e4 ~@15 e4, [f#2,c#3,f#3], ~@3 d#4 ~@3 d#4 ~@3 d#4 ~@3 d#4]/8", // F#5
  D: "f#2@2 c#3@2 e3@3 f#3 ~ e3 a2@4 f#2@2, ~@10 f#2 ~@5", E: "a2",
  F: "[f#3 ~ e4 ~ e4 ~ e4 ~ d#4@4 ~@3 e4 ~@2 e4 ~ e4 ~ e4 ~ d#4@4 ~@3 e4 ~@2 e4 ~ e4 ~ e4 ~ d#4@4 ~@3 e4 ~@2 e4 ~ e4 ~ e4 ~ d#4@4 ~@3 e4, [f#2,c#3], ~ f#3@2 f#3@2 f#3@2 f#3@10 f#3@2 f#3@2 f#3@2 f#3@10 f#3@2 f#3@2 f#3@2 f#3@10 f#3@2 f#3@2 f#3@2 f#3@9, ~@3 d#4 ~@3 d#4 ~@3 d#4 ~@3 d#4]/8", // F#5
})).s("gm_electric_guitar_clean").gain(0.41).pan(0.2)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A
  B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C
>`.pickRestart({
  A: "f#1!2 f#2 ~ e2 c#2 ~ a1", B: "b1@3 ~ b1@3 ~ a1@2 b1@2 b1@2 a1@2", C: "f#1@3 ~@13",
})).s("gm_electric_bass_pick").gain(0.41)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@4 A B A B A B A B ~@10 A B C@7 D A B A B A B A B A B A B A B A B ~@8 C@7 D A B A B A B A B A B A B A B A B A B A B A
  B A B C@7 D A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "[f#3,c#4]", B: "[f#3,b3]", C: "[d#3 g#3 d#3 g#3 d#3 g#3 d#3, [d#4,f#4,a#4]]/7", D: "[b2,b3,d#4,f#4,b4]",
})).s("gm_string_ensemble_2").gain(0.41)

// other · piano
const piano = note("<~@71 A@16 ~@16 A@16 ~@10>".pickRestart({
  A: "[~@4 [c#4,c#5] [f#3,f#4] [b3,b4] [a#3,a#4]@8 [a3,a4]@4 ~ [c#4,c#5] [f#3,f#4] [b3,b4] [a#3,a#4]@8 [a3,a4]@4 ~ [c#4,c#5] [f#3,f#4] [b3,b4] [a#3,a#4]@8 [a3,a4]@4 ~ [c#4,c#5] [f#3,f#4] [b3,b4] [a#3,a#4]@8 [a3,a4]]/8", // C# F# B A# A C# F# B …
})).s("gm_piano").gain(0.41)

// other · woodblock · "Environmenal Sounds (Woodblock)"
const woodblock = note(`<
  ~@24 A B C B C B C B D ~@23 A B C B C B C B D ~@23 A B C B C B C B D ~@7 A B C B C B C B C B C B C B C B D ~@8
>`.pickRestart({
  A: "~ d4!4 ~ g4!10", B: "g4 ~ b4!6 [d4,b4]!8", C: "[d4,b4] d4!4 ~ g4!10", D: "[d4,b4] ~@15",
})).s("gm_woodblock").gain(0.36)

// other · woodblock · "Environmenal Sounds (Woodblock)" · soft notes
const woodblock_soft = note(`<
  ~@24 A B C B C B C B ~@24 A B C B C B C B ~@24 A B C B C B C B ~@8 A B C B C B C B C B C B C B C B ~@9
>`.pickRestart({
  A: "d4 ~@3 g4!2 ~@10", B: "b4!2 ~@14", C: "~@4 g4!2 ~@10",
})).s("gm_woodblock").gain(0.2)

// drums · kick
const kick = s("bd").struct("<A@39 B A@31 B A@31 B A@7 B A@7 B A@8 C>".pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@6 x ~@8", C: "x",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct("<A@39 B A@31 B A@9 B A B A@3 B A@15 B A@7 B A@7 B A B A B A@3 B ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!8",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct("<[~@7 x]!128 x>").gain(0.41)

// drums · ride
const ride = s("rd").struct("<[x ~ x ~ x ~ x!3 ~ x ~ x ~@3]!128 ~>").gain(0.41)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 A@20 ~@8 A@24 ~@8 A@24 ~@8 A@32 ~>".pickRestart({
  A: "x!16",
})).gain(2.08)

stack(
  electric_guitar_clean, bass, string_ensemble_2, piano, woodblock, woodblock_soft, kick, snare, crash, ride, cabasa
)

More by Garbage