Strudelify
About a Girl cover art

Nirvana

About a Girl

Nirvana

KeyF minorTempo134 bpm
0:00/0:00
// About a Girl — Nirvana
// 134 bpm, 1/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 electric guitar clean (copy of ch 1 "Kurdt Kobain -Guitar Ryth" electric guitar muted)
// note: Full arrangement: all 351 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/1)

// 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 · electric guitar muted · "Kurdt Kobain -Guitar Ryth"
const electric_guitar_muted = note(`<
  A B C D A B E F G B E F A B E F H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J
  K H I J K L M N O P Q@2 P L M N O P Q@2 P G R G R S T@2 U H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I
  J K H I J K H I J K H I J K H I J K L M N O P Q@2 P L M N O P Q@2 P G R G R S T@2 U H I J K H I J K H I J K H I J K H
  I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K L M N O P Q@2 P L M N O P Q@2 P G R G R S T@2 U H I J K
  H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K L M N O P Q@2 P L M N O P Q@2
  P G R G R S T@2 U G R G R S T@2 U@5 H I J K H I J K H I J K H I J K H I J K H I J K H I J K H I J K V@2 ~
>`.pickRestart({
  A: "[f2,c3]", B: "[f2,c3,f3] e2", C: "eb3 [ab2,ab3]", D: "[ab2,eb3] e2", E: "[ab2,eb3] [ab2,eb3,ab3,ab4]",
  F: "[ab2,eb3,ab3] e2", G: "[f2,c3,f3]", H: "[f2,c3,f3,c4]", I: "[f2,c3,f3] [e2,b2,e3]",
  J: "[ab2,eb3,ab3,eb4] [ab2,eb3,ab3,ab4]", K: "[ab2,eb3,ab3,ab4] [e2,b2,e3]", L: "[d3,a3,d4]", M: "[d3,a3,d4]!2",
  N: "[a2,e3,a3]", O: "[a2,e3,a3]!2", P: "[g2,d3,g3]!2", Q: "[~ [g2,d3,g3]@2 [g2,d3,g3]]/2", R: "[f2,c3,f3]!2",
  S: "[bb2,f3,bb3]!2", T: "[~ [db3,ab3]@2 [db3,ab3]]/2", U: "[db3,ab3,db4]!2", V: "[[f2,c3,f3,c4]@21 ~@11]/2",
})).s("gm_electric_guitar_muted").gain(0.4)

// bass · electric bass finger · "Chris Novoselic -Bass-"
const bass = note(`<
  ~@16 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 G H I J@2 I E
  F G H I J@2 I K@4 L M@2 N A O 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 G H I J@2 I E F G H I J@2 I K@4 L M@2 N A O 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 G H I J@2 I E F G H I J@2 I K@4 L M@2 N A O 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 G H I J@2 I E F G H I J@2 I K@4 L M@2 N K@4 L M@2 N@5 A O C D A B
  C D A B C D A B C D A O C D A B C D A B C D A B C D P@2 ~
>`.pickRestart({
  A: "f1", B: "f1 e1", C: "ab1!2", D: "ab1 e1", E: "d2 ~", F: "d2!2", G: "a1 ~", H: "a1!2", I: "g1!2",
  J: "[~ g1@2 g1]/2", K: "f1 ~", L: "bb1!2", M: "[~ db2@2 db2]/2", N: "db2!2", O: "~ e1", P: "[f1@21 ~@11]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · overdriven guitar · "Kurdt Kobain -Lead Guitar-"
const overdriven_guitar = note(`<
  ~@176 A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H I J K L M N@2 ~ I J K L M N@2 ~ O P O P Q R@2 S
  T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 ~@100 V@2 ~
>`.pickRestart({
  A: "f3@11 ~@5", B: "ab2@5 ~@3 bb2@5 ~@3", C: "c3@8 [c3,f3]@5 ~@3", D: "[c3,f3]@5 ~@3 c3@5 ~@3",
  E: "[f3,ab3]@5 ~@3 [f3,ab3]@5 ~@3", F: "ab3@8 c3@5 ~@3, f3@5 ~@11", G: "[g3,bb3]@5 ~@3 [g3,bb3]@5 ~@3",
  H: "bb3@8 c3@5 ~@3, g3@5 ~@11", I: "d3", J: "d3!2", K: "[a2,e3]", L: "[a2,e3]!2", M: "[g2,d3,g3]!2",
  N: "[~ [g2,d3,g3]@2 ~]/2", O: "[f2,c3]", P: "[f2,c3]!2", Q: "[bb3,f4] [bb2,f3]", R: "[~ [db3,ab3]@2 [db3,ab3]]/2",
  S: "[db3,ab3]!2", T: "[[f2,c3,f3]@21 ~@11]/2", U: "[[ab2,eb3,ab3]@21 ~@11]/2", V: "[[f2,c3,f3,c4]@21 ~@11]/2",
})).s("gm_overdriven_guitar").gain(0.56)

// chords · overdriven guitar · "Kurdt Kobain -Lead Guitar-" · soft notes · G5
const overdriven_guitar_soft = note("<~@214 [~ [g2,d3,g3]] [[g2,d3,g3]!2] ~@6 [~ [g2,d3,g3]] [[g2,d3,g3]!2] ~@127>")
  .s("gm_overdriven_guitar").gain(0.32)

// drums · kick
const kick = s("bd").struct(`<
  ~@15 A B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~
  B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B
  ~ B ~ A C B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B A
  B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B ~ A C B
  A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B A B ~ B A B ~ B ~ A C B A B ~
  B ~ A D E@2 F G B A B ~ B A B ~ B A B ~ B ~ A C B A B ~ B A B ~ B A B ~ B ~ A C B ~@2
>`.pickRestart({
  A: "~ x", B: "x", C: "~ x ~ x", D: "~ x ~@2", E: "x!2", F: "x ~ x!2", G: "x!3 ~",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@134 [~ x] [x!4] ~@215>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@64 [x!2]!24 ~@48 [x!2]!24 ~@120 [x!2]!32 ~@39>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@64 A ~@71 B ~@39 A ~@31 A ~ C ~@5 B D ~@98 A ~@31 B ~@2>".pickRestart({
  A: "x", B: "~ x ~@6", C: "~ x ~@14", D: "~@15 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@16 A@48 ~@24 A@48 ~@24 A@16 ~@32 A@24 B A@47 ~@36 A@32 ~@3>".pickRestart({
  A: "x!2", B: "~ x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@176 [x!4]!31 [x!3 ~] ~@143>").gain(0.64)

stack(
  electric_guitar_muted, bass, overdriven_guitar, overdriven_guitar_soft, kick, snare, low_tom, open_hat, crash, ride,
  tambourine
)

More by Nirvana