Strudelify
The Man Who Sold the World cover art

2023 · In Utero

The Man Who Sold the World

Nirvana

KeyD minorTempo123 bpm
0:00/0:00
// The Man Who Sold the World — Nirvana
// 123 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 27, 4/4 at bar 27, 2/4 at bar 57, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "Square Wave" lead 1 square (copy of ch 1 "Overdrv Guitar" overdriven guitar); ch 9 "Steel Gtr" acoustic guitar steel (copy of ch 2 "Harpsichord" harpsichord)
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · harpsichord
const harpsichord = note(`<
  ~@4 A@2 B ~ C@2 D@2 C@2 E@2 F@2 C G H I ~ J K L M N K L O ~@3 P Q R@2 S T U V W T X Y Z AA AB AC AD V ~@2 AE AF AG AF
  AE AF AG ~@4 AH@2 D@2 AI@2 D@2 AJ@2 D@2 AI@2 D@2 AJ@2 D@2 AI@2 D@2 AK@2
>`.pickRestart({
  A: "[f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5] ~", // F Fsus2
  B: "[d4,a4,d5,f5]@11 ~@5", // Dm
  C: "[a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@3 [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5] ~", // A
  D: "[d4,a4,d5,f5] ~ [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~", // Dm
  E: "[c4,f4,a4,c5,f5] ~ [c4,f4,a4,c5,f5] ~@3 [c4,f4,a4,c5,f5]@3 ~ [c4,f4,a4,c5,f5]@3 ~ [c4,f4,a4,c5,f5] ~", // F
  F: "[c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~@3 [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5] ~", // C
  G: "[a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@5 [d4,a4,d5,f5]@3 ~@3 [d4,a4,d5,f5]@2", // A Dm
  H: "~@2 [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~", // Dm
  I: "[d4,a4,d5,f5] ~ [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@3 ~@7", J: "~@8 c4 ~ d4 ~ e4 ~ f4 ~",
  K: "g4 ~ a4 ~ bb4 ~ c5 ~ f3 ~ g3 ~ a3 ~ bb3 ~", L: "c4 ~ d4 ~ e4 ~ f4 ~ [bb3,d4,f4,bb4]@4 ~@2 [bb3,d4,f4,bb4] ~",
  M: "[d4,d5]@3 ~ [bb3,d4,f4,bb4]@3 ~ f3 ~ g3 ~ a3 ~ bb3 ~", N: "c4 ~ d4 ~ e4 ~ f4 ~ c4 ~ d4 ~ e4 ~ f4 ~",
  O: "[d4,d5]@3 ~ [bb3,d4,f4,bb4]@3 ~@9", P: "~@8 [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,g4,c5,f5]@2",
  Q: "~@2 [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [f4,g4,c5,f5]@2", // Fsus2 F Fsus2
  R: "[~@2 [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5] ~ [d4,a4,d5,f5]@11 ~@13]/2", // Fsus2 Dm
  S: "~@8 [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@3 [a3,e4,a4,db5,e5]@2", // A
  T: "~@2 [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@3 [a3,e4,a4,db5,e5]@2", // A
  U: "~@2 [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5] ~ [d4,a4,d5,f5] ~ [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@2", // A Dm
  V: "~@2 [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~ [d4,a4,d5,f5] ~ [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@2", // Dm
  W: "~@2 [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@3 [a3,e4,a4,db5,e5]@2", // Dm A
  X: "~@2 [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5] ~ [c4,f4,a4,c5,f5] ~ [c4,f4,a4,c5,f5] ~@3 [c4,f4,a4,c5,f5]@2", // A F
  Y: "~@2 [c4,f4,a4,c5,f5]@3 ~ [c4,f4,a4,c5,f5] ~ [c4,f4,a4,c5,f5] ~ [c4,f4,a4,c5,f5] ~@3 [c4,f4,a4,c5,f5]@2", // F
  Z: "~@2 [c4,f4,a4,c5,f5]@3 ~ [c4,f4,a4,c5,f5] ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~@3 [c4,g4,c5,e5]@2", // F C
  AA: "~@2 [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~@3 [c4,g4,c5,e5]@2", // C
  AB: "~@2 [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5] ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@3 [a3,e4,a4,db5,e5]@2", // C A
  AC: "~@2 [a3,e4,a4,db5,e5]@3 ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~ [a3,e4,a4,db5,e5] ~@5", // A
  AD: "[d4,a4,d5,f5]@3 ~@3 [d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~@3 [d4,a4,d5,f5]@2", // Dm
  AE: "c4 ~ d4 ~ e4 ~ f4 ~ g4 ~ a4 ~ bb4 ~ c5 ~", AF: "f3 ~ g3 ~ a3 ~ bb3 ~ c4 ~ d4 ~ e4 ~ f4 ~",
  AG: "[bb3,d4,f4,bb4]@4 ~@2 [bb3,d4,f4,bb4] ~ [d4,d5]@3 ~ [bb3,d4,f4,bb4]@3 ~", // Bb D Bb
  AH: "[f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~@3 [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5]@3 ~ [f4,g4,c5,f5] ~", // F Fsus2
  AI: "[e4,a4,db5,e5] ~ [e4,a4,db5,e5] ~@3 [e4,a4,db5,e5]@3 ~ [e4,a4,db5,e5]@3 ~ [e4,a4,db5,e5] ~", // A
  AJ: "[f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~@3 [f4,a4,c5,f5]@3 ~ [f4,a4,c5,f5]@3 ~ [f4,a4,c5,f5] ~", // F
  AK: "[[d4,a4,d5,f5]@27 ~@5]/2", // Dm
})).s("gm_harpsichord").gain(0.46)

// bass · electric bass finger · "Fingered Bass"
const bass = note(`<
  ~@4 A B C ~ D E F G D E H I J K L M N O P@2 Q R S T Q R U ~@3 V W X@2 Y Z AA AB AC Z AD AE AF AG AH AI AJ AK AL@3 AM
  AN AM AL AM AN ~@4 A@2 AO AP ~@2 AO AQ AR AS AT AU AV@2 AO AQ AW@2 AO@2 AX@2 AO AY AZ ~
>`.pickRestart({
  A: "f2@4 ~@2 c2@3 ~ c2@3 ~ c2 ~", B: "f2@4 ~@2 c2@3 ~ f2 ~ e2 ~ eb2 ~", C: "d2@11 ~@5",
  D: "a1@4 ~@2 e2@3 ~ a2 ~ e2 ~ b1 ~", E: "a1@4 ~@2 e2@3 ~ a1@3 ~ a1 ~", F: "d2@4 ~@2 d2@3 ~ d2 ~ d2 ~ d2 ~",
  G: "d2 ~ d2 ~ d2 ~ d2@3 ~ a2 ~ g2 ~ f2 ~", H: "f1@4 ~@2 f1@3 ~ f1 ~ c2 ~ a1 ~", I: "f1@4 ~@2 f1@3 ~ f1 ~ a1 ~ c2 ~",
  J: "c2@4 ~@2 g2@3 ~ c2@3 ~ c2 ~", K: "c2 ~ c2 ~ c2 ~ g2@3 ~ g2 ~ c2 ~ b1 ~", L: "a1@4 ~@2 e2@3 ~ a2 ~ e2 ~ bb1 ~",
  M: "a1@3 ~ a1 ~ db2 ~ d2@4 ~@2 d2@2", N: "~@2 a1@3 ~ a1 ~ d2@4 ~@2 a1 ~", O: "d2@4 ~@2 a1 ~ c2 ~ d2 ~ e2 ~ f2 ~",
  P: "g2 ~ a2 ~ bb2 ~ c3 ~ c2 ~ d2 ~ e2 ~ f2 ~", Q: "g2 ~ a2 ~ bb2 ~ c3 ~ f1 ~ g1 ~ a1 ~ bb1 ~",
  R: "c2 ~ d2 ~ e2 ~ f2 ~ bb1@4 ~@2 bb1 ~", S: "d2@3 ~ bb1@3 ~ f1 ~ g1 ~ a1 ~ bb1 ~",
  T: "c2 ~ d2 ~ e2 ~ f2 ~ c2 ~ d2 ~ e2 ~ f2 ~", U: "d2@3 ~ bb1@3 ~@9", V: "~@4 f2@2 ~ c2",
  W: "~@2 c2@3 ~ c2 ~ f2@4 ~@2 c2@2", X: "[~@2 f2 ~ e2 ~ eb2 ~ d2@11 ~@13]/2", Y: "~@4 a1@2 ~ e2",
  Z: "~@2 a2 ~ e2 ~ b1 ~ a1@4 ~@2 e2@2", AA: "~@2 a1@3 ~ a1 ~ d2@4 ~@2 d2@2",
  AB: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2", AC: "~@2 a2 ~ g2 ~ f2 ~ a1@4 ~@2 e2@2",
  AD: "~@2 a1@3 ~ a1 ~ f1@4 ~@2 f1@2", AE: "~@2 f1 ~ c2 ~ a1 ~ f1@4 ~@2 f1@2", AF: "~@2 f1 ~ a1 ~ c2 ~ c2@4 ~@2 g2@2",
  AG: "~@2 c2@3 ~ c2 ~ c2 ~ c2 ~ c2 ~ g2@2", AH: "~@2 g2 ~ c2 ~ b1 ~ a1@4 ~@2 e2@2",
  AI: "~@2 a2 ~ e2 ~ bb1 ~ a1@3 ~ a1 ~ db2 ~", AJ: "d2@4 ~@2 d2@3 ~ a1@3 ~ a1 ~", AK: "d2@4 ~@2 a1 ~ d2@4 ~@2 a1 ~",
  AL: "c2 ~ d2 ~ e2 ~ f2 ~ g2 ~ a2 ~ bb2 ~ c3 ~", AM: "f1 ~ g1 ~ a1 ~ bb1 ~ c2 ~ d2 ~ e2 ~ f2 ~",
  AN: "bb1@4 ~@2 bb1 ~ d2@3 ~ bb1@3 ~", AO: "d2@4 ~@2 a1@3 ~ a1@3 ~ a1 ~", AP: "d2@4 ~@2 a1@3 ~ a1 ~ bb1 ~ b1 ~",
  AQ: "d2@4 ~@2 a1@3 ~ ab1 ~ g1 ~ gb1 ~", AR: "f1@4 ~@2 c2@3 ~ c2@3 ~ f1 ~", AS: "f2@4 ~@2 c2@3 ~ c2@3 ~ db2 ~",
  AT: "d2@4 ~@2 a2@3 ~ d2@3 ~ a1 ~", AU: "d2@4 ~@2 a1@3 ~ a1@3 ~ d2 ~", AV: "e2 ~ a1@3 ~ e2@3 ~ a1@3 ~ a1 ~",
  AW: "f1 ~ f2@3 ~ f1 ~ f2 ~ c2 ~ f2 ~ c2 ~", AX: "a1@4 ~@2 e2@3 ~ e2@3 ~ e2 ~",
  AY: "d2@4 ~@2 a1 ~ bb1 ~ b1 ~ c2 ~ db2 ~", AZ: "d2",
})).s("gm_electric_bass_finger").gain(0.51)

// other · bagpipe
const bagpipe = note(`<
  ~@6 A B@2 C@2 B@2 C@2 D@2 E F G H I ~ J@2 K@2 J@2 L@2 ~@6 M N O@2 M N O@2 P Q R S T U V@2 W@3 X@4 Y ~@30
>`.pickRestart({
  A: "~@3 a3", B: "[g3@4 f3@4 e3@4 d3 ~ e3@4 ~@12 e3 ~]/2", C: "[g3@4 g3 ~ bb3@4 g3 ~ g3 ~ a3@4 ~@10 a3@4]/2",
  D: "[c4@4 c4@4 bb3@4 a3 ~ g3@4 ~@12 c4 ~]/2", E: "d4!2 c4 bb3", F: "a3!4", G: "bb3@4 ~@2 f3 ~ f3@4 ~@4, ~ a3 ~@2",
  H: "~@6 a3 ~ g3@4 f3@4", I: "f3@4 g3 ~ e3@4 ~@6", J: "~@4 d4 ~ c4@4 ~@6",
  K: "[~@6 c4 ~ c4 ~ bb3@4 bb3@4 ~@2 c4 ~ a3@4 ~@6]/2", L: "[~@6 c4 ~ c4@4 bb3 ~ bb3@4 c4 ~ a3@4 ~@8]/2",
  M: "~ a3 g3 f3", N: "e3@4 d3 ~ e3@4 ~@6", O: "[~@6 e3 ~ g3@4 g3 ~ bb3@4 g3 ~ g3 ~ a3@4 ~@6]/2", P: "~ a3 c4!2",
  Q: "bb3@4 a3 ~ g3@4 ~@6", R: "~@6 c4 ~ d4@4 d4@4", S: "c4 bb3 a3!2", T: "a3@4 a3@4 bb3@4 ~@2 f3 ~, ~@3 a3",
  U: "f3@4 ~@10 a3 ~", V: "[g3@4 f3@4 f3@4 g3 ~ e3@4 ~@14]/2", W: "[~@12 d4 ~ c4@4 ~@10 d4 ~ c4@4 ~@12 c4 ~]/3",
  X: "[c4 ~ bb3@4 bb3@4 ~@2 c4 ~ a3@4 ~@10 d4 ~ c4@4 ~@10 d4 ~ c4@4 ~@12 c4 ~]/4", Y: "c4@4 bb3 ~ bb3@4 c4 ~ a3@4",
})).s("gm_bagpipe").gain(0.41).pan(0.3)

// other · fiddle
const fiddle = note(`<
  ~@6 A B@2 C@2 B@2 C@2 D@2 E F G H I ~ J@2 K@2 J@2 L@2 ~@6 M N O@2 M N O@2 P Q R S T U V@2 W@3 X@4 Y ~@30
>`.pickRestart({
  A: "~@3 a4", B: "[g4@4 f4@4 e4@4 d4 ~ e4@4 ~@12 e4 ~]/2", C: "[g4@4 g4 ~ bb4@4 g4 ~ g4 ~ a4@4 ~@10 a4@4]/2",
  D: "[c5@4 c5@4 bb4@4 a4 ~ g4@4 ~@12 c5 ~]/2", E: "d5!2 c5 bb4", F: "a4!4", G: "bb4@4 ~@2 f4 ~ f4@4 ~@4, ~ a4 ~@2",
  H: "~@6 a4 ~ g4@4 f4@4", I: "f4@4 g4 ~ e4@4 ~@6", J: "~@4 d5 ~ c5@4 ~@6",
  K: "[~@6 c5 ~ c5 ~ bb4@4 bb4@4 ~@2 c5 ~ a4@4 ~@6]/2", L: "[~@6 c5 ~ c5@4 bb4 ~ bb4@4 c5 ~ a4@4 ~@8]/2",
  M: "~ a4 g4 f4", N: "e4@4 d4 ~ e4@4 ~@6", O: "[~@6 e4 ~ g4@4 g4 ~ bb4@4 g4 ~ g4 ~ a4@4 ~@6]/2", P: "~ a4 c5!2",
  Q: "bb4@4 a4 ~ g4@4 ~@6", R: "~@6 c5 ~ d5@4 d5@4", S: "c5 bb4 a4!2", T: "a4@4 a4@4 bb4@4 ~@2 f4 ~, ~@3 a4",
  U: "f4@4 ~@10 a4 ~", V: "[g4@4 f4@4 f4@4 g4 ~ e4@4 ~@14]/2", W: "[~@12 d5 ~ c5@4 ~@10 d5 ~ c5@4 ~@12 c5 ~]/3",
  X: "[c5 ~ bb4@4 bb4@4 ~@2 c5 ~ a4@4 ~@10 d5 ~ c5@4 ~@10 d5 ~ c5@4 ~@12 c5 ~]/4", Y: "c5@4 bb4 ~ bb4@4 c5 ~ a4@4",
})).s("gm_fiddle").gain(0.46).pan(0.7)

// other · cello
const cello = note("<~@61 A B@7 C D B E F G H I J D B E F G H K D@2 B@2 L ~>".pickRestart({
  A: "a3@2 a3@2 a3@2 g3@4 a3 bb3 a3 ~ g3 ~, [a2,e3] ~@3", B: "a3 ~ a3 ~ a3 ~ g3@4 a3 bb3 a3 ~ g3 ~",
  C: "~@2 d4 [d4,e4] eb4@4 e4@4 e4@4, ~@4 e4 ~@11", D: "e4", E: "a3 ~ a3 ~ a3 ~ g3@4 a3 bb3 a3 ~ c4 [db4,d4]",
  F: "[eb4,e4] f4@15", G: "f4@4 ~@2 f4@4 f4 ~ f4 ~ e4 ~", H: "e4@2 ~ d4@2 ~ d4@2", I: "d4@4 ~@2 d4@4 d4 ~ d4 ~ d4 ~",
  J: "d4 ~ e4@4 e4@4 ~@2 e4@4", K: "d4@4 ~@2 d4@4 d4 ~ d4 ~ eb4 ~", L: "a3@3 ~",
})).s("gm_cello").gain(0.46)

// drums · snare
const snare = s("sd").struct("<~ A ~ B C@2 ~@2 C@22 D ~ D E C@2 D ~ A C@21 D ~ A ~ B C@23 ~@3>".pickRestart({
  A: "~@3 x", B: "x ~@2 x", C: "~ x ~ x", D: "~ x ~@2", E: "~ x",
})).gain(0.51)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@21 A ~@38 B ~@7 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~@2>".pickRestart({
  A: "~@6 x!2 ~@8", B: "~@12 x ~ x!2", C: "~@14 x!2", D: "~@2 x ~ x ~@5 x ~ x ~ x!2",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@2 A ~ B@2 ~@2 B@22 C ~@2 C A B C ~ A B@22 ~@2 A ~ B@23 ~@3>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x!2 ~@2",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A B C ~@4 D@13 E F@8 G ~ H I J ~@3 K F@13 D@9 ~ A B C ~@2 D@19 L M N ~@2
>`.pickRestart({
  A: "~@10 x!2 ~@2 x ~", B: "~@7 x", C: "~ x ~ x ~ x ~ x", D: "x ~@2 x ~ x ~@2", E: "x ~@3 x ~@2 x",
  F: "~ x ~@2 x ~@2 x", G: "~ x ~@6", H: "~@2 x!2 ~@2 x ~@9", I: "~@3 x ~ x ~ x", J: "~ x ~ x ~@4", K: "~@4 x ~@2 x",
  L: "x ~@2 x ~@4", M: "x", N: "x!2",
})).gain(0.51)

// drums · crash
const crash = s("cr").struct("<~@2 A ~ A ~ A ~@23 B ~ B ~ B ~ B ~@24 A ~ A ~ A ~@7 A@15 C A ~>".pickRestart({
  A: "x", B: "~ x", C: "~ x ~ x",
})).gain(0.31)

stack(harpsichord, bass, bagpipe, fiddle, cello, snare, snare_soft, hihat, mid_tom, crash)

More by Nirvana