Strudelify
Inside cover art

1995 · The Mind’s Eye

Inside

Stiltskin

KeyE minorTempo120 bpm
0:00/0:00
// Inside — Stiltskin
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@5 A B A C D E D F D F D F D F G H G I G H G I A B A C A B A C@2 D F D F D F D F G H G I G H G I A B A C A B A C D E
  D E G H G J K L M A B A C A B A C A C A B A C A B A C N
>`.pickRestart({
  A: "d2!4 a1!4", B: "e2@2 e2@2 e2@2 e2!2 e2@2 e2!6", C: "e2@2 e2@2 e2@2 e2@2 e2@2 e2!6", D: "e1!4 c2!4",
  E: "a1!4 c2!4", F: "a1@2 a1@2 a1@2 a1@2 c2@2 c2@2 c2@2 c2 ~", G: "e1!2 ~@2 g1!2 ~@2",
  H: "a1@2 a1@2 ~@2 c2!2 c2@2 c2!2 c2@2 c2!2", I: "a1@2 a1@2 ~@2 c2!2 c2@2 c2!4 g1 f#1",
  J: "a1@2 a1@2 ~@2 c2!2 c2@2 c2!4 g1 a1", K: "c2", L: "e1 b1 e2 e1 g1 b1 d2 g1", M: "a1 c#2 d2 a1 g1 b1 d2 g1",
  N: "e2@10 [d2,d#2] [c2,c#2] [a#1,b1] [g#1,a1] [f#1,g1] [e1,f1]", // D#maj7 C#maj7 Bmaj7 Amaj7 Gmaj7 Fmaj7
})).s("gm_fretless_bass").gain(0.35)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@4 A B C D C ~@10 E F G F G F G F H C D C D C D C I ~@8 E F G F J K E F H C D C D C D C L M L M E N G N O ~@2 D C D C
  D C D C D C D C D C D C D C P
>`.pickRestart({
  A: "[d3,d4]@13 c#3 [b2,c3] [a2,a#2]", // D Cmaj7 A#maj7
  B: "d3@2 d3@2 d3@2 ~ d4 a2@2 a2@2 a2@2 ~ a3, [a3,d4]@2 [a3,d4]@2 ~@3 a2, g#2 ~@5 d3@2 [e3,a3]@4 [e3,a3]@4", // D5 A5
  C: "e3@2 e3@2 e3@2 ~ e4 [e3,b3,e4]@2 ~ e4 ~ e4 [e3,b3,e4] [b3,e4], e2!2, [b3,e4]!2 ~@2, ~@3 e3 ~ [e3,b3] [e3,b3,e4] ~", // E5
  D: "d3@2 d3@2 d3@2 ~ d4 a2@2 a2@2 a2@2 ~ a3, [a3,d4]@2 [a3,d4]@2 ~@3 a2, ~@3 d3 [e3,a3]@2 [e3,a3]@2", // D5 A5
  E: "[e2,b2,e3]@2 [e2,b2,e3]@2 [e3,b3,e4] e2 [b2,e3] [d3,g3] [g2,d3,g3]@2 [g2,d3,g3] ~ [g3,d4,g4] g2 [d3,g3] [e3,a3]", // E5 G5 A5
  F: "~ a3 [a2,e3,a3]@2 a3 a2 [e3,a3] [g3,c4] [c3,g3,c4]@2 ~ c4!3 [g3,b3,c4] [e3,f3,f#3,g#3,a3,a#3], [a2,e3,a3] ~@3 g2@4, ~@5 [c3,g3] c3@2, ~@6 g3 ~", // A5 C5 Cmaj7 A5 C5
  G: "[e2,b2,d3,d#3,e3,g3]@2 [e2,b2,e3]@2 [e3,b3,e4] e2 [b2,e3] [d3,g3] [g2,d3,g3]@2 [g2,d3,g3] ~ [g3,d4,g4] g2 [d3,g3] [e3,a3]", // Em7 E5 G5 A5
  H: "[d3,d#3,g3] ~ d3@2 d3@2 ~ d4 a2@2 a2@2 a2@2 ~ a3, [a3,d4]@2 [a3,d4]@2 ~@3 a2, ~@3 d3 [e3,a3]@2 [e3,a3]@2", // D#maj7 D5 A5
  I: "e2@2 e2@2 e2@2 e2@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 ~ b2, b2@2 b2@2 ~@3 [e2,b2]", // E5
  J: "[e2,b2,d#3,e3]@2 [e2,b2,e3]@2 [e3,b3,e4] e2 [b2,e3] [d3,g3] [g2,d3,g3]@2 [g2,d3,g3] ~ [g3,d4,g4] g2 [d3,g3] [e3,a3]", // Emaj7 E5 G5 A5
  K: "~ a3 [a2,e3,a3]@2 a3 a2 [e3,a3] [g3,c4] [c3,g3,c4]@2 ~ c4!3 [g3,b3,c4] [e3,f3,f#3,a3,a#3], [a2,e3,a3] ~@3 g2@4, ~@5 [c3,g3] c3@2, ~@6 g3 ~", // A5 C5 Cmaj7 A5 C5
  L: "e2@2 e2@2 e2@2 ~ e3 g2@2 g2@2 g2@2 ~ [e3,g3], [b2,e3]!2 [c3,e3,g3]!2, ~@3 e2 ~@3 g2", // Em E5 C
  M: "a2@2 a2@2 a2@2 ~ a3 [c3,g3,c4]@2 ~ c4 ~ c4 [c3,g3,c4] [g3,c4], [e3,a3]!2 ~@2, ~@3 a2 ~ [c3,g3] [c3,g3,c4] ~", // C5 A5 C5
  N: "~ a3 [a2,e3,a3]@2 a3 a2 [c3,g3,c4]@4 ~ c4!3 [g3,b3,c4] [e3,f3,f#3,g#3,a3,a#3], [a2,e3,a3] ~@2 g2@4 ~, ~@5 [c3,g3] c3@2, ~@6 g3 ~", // A5 C5 Cmaj7 A5 C5
  O: "[g2,c3,g3,c4]@15 ~", // C5
  P: "[e2,e3,b3,e4]@8 [f#3,a#3] [d#3,e3,f3,g3,g#3,a3] [c#3,d3,f3,f#3] [a#2,b2,c3,d#3,e3] [g2,g#2,a2,c3,c#3,d3] [a2,a#2,b2] [g2,g#2] ~", // E5 F# Dmaj7 G#maj7
})).s("gm_distortion_guitar").gain(0.12).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@4 A B C D E F ~@9 G H G H G H G H I C D E J C K E F ~@8 G H G H G H G H I C B E J C K E L M N M O P Q R@2 ~@2 B C D
  E J C K E K E J C D E J C K S T
>`.pickRestart({
  A: "[d3,d4]@13 c#3 [b2,c3] [a2,a#2]", B: "d3 f#3 g3 a3 a2 c#3 d3 d#3",
  C: "e5@2 b4@2 g4@2 ~@6 [d#3,a3,a#3] [c#3,d3,g3,g#3] [b2,c3,f3,f#3] [a2,a#2,d3,e3], [e2,e3,b3]@13 ~@3, ~@3 e5@5", // D# Asus4 E5
  D: "[g2,d3] f#3 g3 a3 a2 c#3 d3 d#3", E: "[e3,b3]@12 [d#3,a3,a#3] [c#3,d3,g3,g#3] [b2,c3,f3,f#3] [a2,a#2,d3,e3]",
  F: "g2 ~@15",
  G: "[e2,b2,e3]@2 [e2,b2,e3]@2 [e3,b3,e4] e2 [b2,e3] [d3,g3] [g2,d3,g3]@2 [g2,d3,g3]@2 [g3,d4,g4] g2 [d3,g3] [e3,a3]", // E5 G5 A5
  H: "~ a3 [a2,e3,a3]@2 a3 a2 [e3,a3] [g3,c4] [c3,g3,c4]@2 ~ c4!3 [g3,b3,c4] f#3, [a2,e3,a3] ~@3 g2@4, ~@5 [c3,g3] c3@2, ~@6 g3 ~", // A5 C5 Cmaj7 A5 C5
  I: "d3 ~ f#3@2 g3@2 a3@2 a2@2 c#3@2 d3@2 d#3@2", J: "[g2,d3] ~ f#3@2 g3@2 a3@2 a2@2 c#3@2 d3@2 d#3@2",
  K: "[g2,d3] f#3 g3 a3 a2 c#3 d3 e3", L: "e3@4 e3@4 g3@3 ~ e3@4, g2 ~@11 f3 ~@3",
  M: "g3@3 f#3 e3@4 g3@7 [c#3,d#3,e3,f3], ~@4 f3 ~@11", N: "[b2,c3] ~@3 e3@4 g3@3 f#3 e3@4, e3@4 ~@8 f3 ~@3",
  O: "[e2,b2,c3,e3]@2 [e2,b2,e3]@2 [a#2,d#3,e3] [g2,g#2,a2,c3,c#3,d3] [f2,f#2,a#2,b2] [e2,g3] [g2,d3,g3]@2 [g2,d3,g3]@2 [g3,d4,g4] g2 d3 a3", // Cmaj7 E5 D# F#maj7 Em G5
  P: "~ a3 [a2,e3,a3]@2 a3 a2 [c3,g3,c4]@4 ~ c4!3 [g3,c4] ~, [a2,e3,a3] ~@4 [c3,g3] c3@2, ~@6 g3 ~", // A5 C5 A5 C5
  Q: "[e2,b2,e3]@2 [e2,b2,e3]@2 [e3,b3,e4] e2 b2 g3 [g2,d3,g3]@2 [g2,d3,g3]@2 [g3,d4,g4] g2 d3 a3", // E5 G5
  R: "[~ a3 [a2,e3,a3]@2 a3 a2 [c3,g3,c4]@26, [a2,e3,a3] ~@15]/2", S: "[e3,b3]",
  T: "[e2,e3,b3,e4]@8 [f#3,a#3] [d#3,e3,f3,g3,g#3,a3] [c#3,d3,f#3] [a#2,b2,c3,d#3,e3] d3 [a#2,b2] ~@2", // E5 F# Dmaj7 Bmaj7
})).s("gm_overdriven_guitar").gain(0.2).pan(0.7)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@5 A ~@14 B C B C B C B D ~@17 B C B E B C B D ~@11 F G H I@2 ~@20 J
>`.pickRestart({
  A: "g#2 ~@7", B: "~@15 [e3,f3,g#3,a3,a#3]", C: "[d3,d#3,g3] ~@7", D: "[d#3,g3] ~@15", E: "d#3 ~@7",
  F: "~@7 [a2,d3] ~@6 g3 e3", G: "~@6 g2@8 b3 [e3,f3,f#3,g#3,a3,a#3]", H: "[d3,d#3,g3]@2 ~@4 e3 d3 ~@6 g3 e3",
  I: "[~@3 g2@13]/2", J: "~@12 [g2,g#2,a2,c3,c#3] a2 [g2,g#2] ~",
})).s("gm_overdriven_guitar").gain(0.1).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@9 A B A B A B A B A B ~@17 A B A B A B A B ~@25 C D ~@19>".pickRestart({
  A: "e2@2 ~@2 b2@2 [e2,a2]@2 [c3,e3,g3]@2 ~ g3 ~@3 e3, b2@2 ~@3 c3@3, ~ e2@2 ~@2 e3 [e3,g3] g3, ~@13 e3@2 ~", // A5 C Em
  B: "a2@2 ~@4 a2@2 g3@2 ~ e3!2 ~@2 e3, a3@4 ~ g3!3, e3@4 e3@4 ~@5 e3@2 ~, ~ a2@2 ~ [c3,e3]@2 c3@2", // C
  C: "e2 b2 e3 e2 g2 b2 d3 g2", D: "a2 c#3 d3 a2 g2 b2 d3 g2",
})).s("gm_electric_guitar_muted").gain(0.11)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@40 A@2 B@2 ~@3 C D@2 E@2 F ~@37>".pickRestart({
  A: "[b5 ~ a5 g5, e5, g5 ~, ~ c6@3]/2",
  B: "[b5@8 ~@16 e6@5 [b4,c5,d5] [e4,f4,g4,a4] [a3,b3,c4,d4], e5@29 ~@3, g5@16 a5@13 ~@3, ~@8 c6@21 ~@3]/2", // Bm Fmaj7 D7
  C: "~@14 [f3,g3,a3,b3,c4,d4,e4,f4] [g4,a4,b4,c5,d5,e5,f5,g5,a5,b5,c6]", // Fmaj7 G7
  D: "[e6@8 d6@8 c#6@6 c6@7 ~ [g3,a3,b3,c4,d4,e4,f4,g4,a4] [b4,c5,d5,e5,f5,g5,a5,b5,c6], g6@29 ~@3, d6 ~@31]/2", // G7 Bm7b5
  E: "[e6@8 d6@8 c#6@6 c6@6 [d6,e6] [e5,f5,g5,a5,b5,c6] [g4,a4,b4,c5,d5] [c4,d4,e4,f4], g6@7 ~, d6 ~@31]/2", // Dsus2 Cmaj7 G Dm7
  F: "[a3,b3] ~@15", // Asus2
})).s("gm_rock_organ").gain(0.15)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@9 A@8 B@2 ~@18 C@4 D@3 ~@25 E F ~@19>".pickRestart({
  A: "[[e4,b4]@25 ~@3 e5@27 ~@7 [e4,b4]@26 ~@8 b5@8 ~@8 e5@12 e5@4, ~@13 [e4,b4]@14 ~@17 e5@12 b4@8, ~@13 b5@3]/8", // E5
  B: "[~ b5, ~@8 [b4,e5]@23 ~]/2", C: "[~@7 [e4,b4]@13 ~@4 b5@4 ~@4, ~@5 e5@3]/4",
  D: "[e5@12 e5@12 [b4,e5]@23 ~, b4 ~@2]/3", E: "e2 b2 e3 e2 g2 b2 d3 g2", F: "a2 c#3 d3 a2 g2 b2 d3 g2",
})).s("gm_electric_guitar_clean").gain(0.16)

// chords · church organ · "CHURCH ORG"
const church_organ = note("<A B@2 C@2 ~@85>".pickRestart({
  A: "[g1,g3,d4]@3 ~", // G5
  B: "[[c5,e5] ~ [c5,e5] ~ [g4,c5]@2 [e5,g5]@2 [d5,f5]@4 [c5,e5]@4 [e5,g5]@8 [c5,e5]@5 ~@3, [c2,g3]@29 ~@3, e4@4 c4@3 ~, g4@4 e5 ~@27]/2", // C C5 Em Dm C Em C C5
  C: "[[g4,b4] ~ [g4,b4] ~ b4@2 d5@2 [e4,c5]@4 [d4,b4]@4 d5@8 b4@7 ~, g3@15 ~, g1@7 ~, d4@4 ~@4 b3@7 ~, ~@2 g4@13 ~]/2", // G C G
})).s("gm_church_organ").gain(0.14)

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

// drums · rim
const rim = s("rim").struct("<~@9 A@9 B ~@17 A@7 B ~@16 A@4 ~@5 A@2 ~@19>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.59)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@34 A B ~@7 C ~@15 A ~@18 A ~ A ~@7 A ~>".pickRestart({
  A: "~@11 x ~@4", B: "~@7 x ~@5 x ~@2", C: "~@13 x ~@2",
})).gain(0.26)

// drums · low tom
const low_tom = s("lt").struct("<~@26 [~@13 x!3] ~@16 [~@7 x] ~@7 [~@13 x!3] ~@38>").gain(0.33)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@69 [~ x!7] [x!8] ~@19>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A@4 ~@10 A@7 B A@8 ~@8 C A@4 D A@2 B A@8 ~@4 A@4 ~@3 D A@9 D A@7 ~>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "~@7 x", D: "~ x!7",
})).gain(0.33)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~ A ~@10 B A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@10 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~@3 A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct("<~@21 x ~@24 x ~@19 x ~@23>").gain(0.33)

// drums · ride
const ride = s("rd").struct("<~@9 A@9 B ~@16 C A@7 B ~@16 A@4 ~@4 D ~@21>".pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x ~ x ~ x ~ x ~ x ~ x!3 ~@3", D: "~ x!3",
})).gain(0.33)

stack(
  bass, distortion_guitar, overdriven_guitar, overdriven_guitar_soft, electric_guitar_muted, rock_organ,
  electric_guitar_clean, church_organ, kick, rim, snare, snare_soft, low_tom, pedal_hat, open_hat, crash, high_tom, ride
)