Strudelify

Alice (Who the X Is Alice) (Living Next Door to Alice)

Gompie

KeyA majorTempo123 bpm
0:00/0:00
// Alice (Who the X Is Alice) (Living Next Door to Alice) — Gompie
// 123 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 126 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.

// bass · electric bass finger · "Fing.Bass"
const bass = note(`<
  ~@21 A B C D E F G H A B C D I J G K A B C D E F L M A B C D E F L M A B C D E F G H A B C D I J G K A B C D E F L M A
  B C D N@3 A B C D E F G H A B C D I J G K A B C D E F G H A B C D I J G K A B C D E F O P ~@2
>`.pickRestart({
  A: "a2@5 ~ a2@2 e2@5 ~ e2@2", B: "a2@5 ~ a2@2 e2@4 a2@2 e2@2", C: "d2@5 ~ d2@2 a1@5 ~ a1@2",
  D: "d2@5 ~ d2@2 a1@4 d2@2 d#2@2", E: "e2@5 ~ e2@2 b1@5 ~ b1@2", F: "e2@5 ~ e2@2 b1@3 ~ e2@2 g#2@2",
  G: "a2@5 ~ a2@2 e2@4 ~@4", H: "~@5 e2 f#2 e2", I: "e2@5 ~ e2@2 b1@4 e2@2 d#2@2", J: "d2@5 ~ d2@2 a1@3 ~@3 a1@2",
  K: "~@10 c#2 ~ b1@4", L: "a2@5 ~ a2@2 e2@4 a2@2 a2@2", M: "e2!2 d2@2 c#2@2 b1@2",
  N: "[e2@36 e2@3 ~ f#2@3 ~ g#2@3 ~]/3", O: "a2@5 ~ a2@2 e2@4 d2@2 d#2@2", P: "e2@5 ~ e2@2 b1@2 e2@2 f#2@2 e2@2",
})).s("gm_electric_bass_finger").gain(0.62).pan(0.6)

// chords · acoustic guitar steel · "#12Str.Gt"
const acoustic_guitar_steel = note(`<
  A@8 B C@2 D E@5 C@2 D F G@2 H@2 I@2 J K G@2 H@2 I H J L G@2 H@2 I@2 G I G@2 H@2 I@2 G I G@2 H@2 I@2 J K G@2 H@2 I H J
  L G@2 H@2 I@2 G I G@2 H@2 M@2 N G@2 H@2 I@2 J K G@2 H@2 I H J L G@2 H@2 I@2 J K G@2 H@2 I H J L G@2 H@2 I@2 G I ~@2
>`.pickRestart({
  A: "[~@55 c#4 ~@7 d4, ~@15 a2@15 c#4@2 e3@16 [a2,e3]@15 a2@15 c#4@2 e3@15 a2@16 ~@5 a3@6 d4@2 a3@4, ~@16 e3@15 a2@15 c#4@4 c#4@8 c#4@4 c#4@2 e3@15 a2@15 c#4@2 e3@16 d3@16, ~@18 c#4@4 e4@14 a3@6 c#4@2 a3@8 a3@8 a3@6 c#4@4 e4@14 a3@6 c#4@2 a3@6 c#4@4 e4@25 ~, ~@10 a3@3 c#4 a3@3 c#4@2 e4@8 e4@7 a3@3 c#4 a3@3 c#4@2 e4@7 a3@3 c#4 a3@2 ~ d4@2 f#4@5]/8", // A5
  B: "~@7 d4, d3@15 ~, ~ d4@4 d4@2 ~, ~ a3@2 a3, ~@3 f#4@5",
  C: "[~@15 b3, e3 e3, ~ b3@4 b3@2 b3@2 b3@4 b3@2 ~, ~ g#3@2 g#3@2 g#3@2 g#3, ~@3 e4@8 e4@5]/2",
  D: "~@7 c#4, a2, ~ c#4@4 c#4@2 ~, ~ a3@2 [a3,e4], ~@3 e4@3 ~@2", // A5
  E: "[~@23 c#4 ~@15 d4, e3@15 a2@15 c#4@2 e3@16 d3@16 d3@15 ~, ~ b3@4 b3@2 b3 ~ c#4@2 e4@7 a3@3 c#4 a3@2 ~ d4@2 f#4@8 f#4@5, ~@4 g#3@8 g#3@4 e3@15 a2@16 ~@5 a3@6 d4@2 a3@8 a3@8 a3@4, ~@3 e4@5 ~@2 a3@3 c#4 a3@3 c#4@2 e4@12 d4@2 d4@4 d4@2 ~]/5",
  F: "~@14 b3 ~, e3, ~ b3@4 b3@2 ~, ~ g#3@2 g#3, ~@3 e4@5",
  G: "[a3,c#4,e4]!2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3]!2 [a3,c#4,e4]!2, [a2,e3] ~ [c#4,e4] [a2,e3]", // A A5 A A5 C#m A5
  H: "[a3,d4,f#4]!2 [d3,f#3,a3,d4,f#4]@2 [d3,f#3,a3]!2 [a3,d4,f#4]!2, [d3,f#3] ~ [d4,f#4] [d3,f#3]", // D
  I: "[e3,g#3,b3]!2 [e2,b2,e3,g#3,b3]@2 [e2,b2,e3]!2 [e3,g#3,b3]!2, [e2,b2] ~ [g#3,b3] [e2,b2]", // E E5 E E5 G#m E5
  J: "[a3,c#4,e4]!2 [a2,e3,a3,c#4,e4]@2 [a2,e3,a3]!2 ~@2, [a2,e3] ~ [c#4,e4] ~", // A A5 C#m
  K: "~@4 [e2,b2,e3]!2 [e3,g#3,b3]!2, ~@2 [g#3,b3] [e2,b2]", L: "~@4 [a2,e3,a3]!2 [a3,c#4,e4]!2, ~@2 [c#4,e4] [a2,e3]",
  M: "[e2,b2,e3,g#3,b3]/2", N: "~@4 [e2,e3]@4 [f#2,f#3]@3 ~ [g#2,g#3]@4",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.6)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note(`<
  ~ A@4 B@2 C@2 D@2 E ~ B@2 C@2 D@2 E F ~@8 G@8 H I J K L@2 M@2 N@4 O@3 P Q@2 R@2 S@3 ~ T@3 U V W@3 ~@8 X@2 Y@2 Z ~ AA
  AB@4 AC@2 AD ~ AE@2 AF@2 AG AH@3 AB@4 AC@2 AD ~ AE@2 AF@2 AG AI@3 AB@4 AC@2 AJ@2 ~@2
>`.pickRestart({
  A: "[[e4,a4,c#5]@15 ~]/4", B: "[[e4,a4,c#5]@5 [d4,f#4,b4] [c#4,e4,a4] [g3,b3,e4]]/2", C: "[[f#3,a3,d4]@19 ~@13]/2",
  D: "[[g#3,b3,e4]@5 [f#3,a3,d4] [e3,g#3,c#4] [d3,f#3,b3]]/2", E: "[c#3,e3,a3]@15 ~", F: "[g#3,b3,e4]@15 ~",
  G: "[[a3,c#4]@31 [a3,d4,f#4]@63 ~@2 [a3,e4]@26 ~@6, ~@95 c#4@26 ~@7]/8", H: "[c#6,c#7] [a5,a6]",
  I: "[e5,e6]@2 [b5,b6] [c#6,c#7]", J: "[a5,a6] [f#5,f#6]", K: "[d6,d7]",
  L: "[[b5,b6]@8 [g#5,g#6]@15 ~ [a5,a6]@4 [c#6,c#7]@4]/2", M: "[[e5,e6]@9 ~ [e4,g#4]@2 [f#4,a4]@2 [g#4,b4]@2]/2",
  N: "[~@24 b4@3 c#5@4 ~ f#4@30 ~@2, a4@31 ~, c#5@3 ~@5, ~@8 e4@23 d4@30 ~@3]/4",
  O: "[[e4,g#4,b4]@31 [c#4,e4,a4]@15 ~@2]/3", // E A
  P: "[e4,g#4,e5,g#5] [f#4,a4,f#5,a5] [g#4,b4,g#5,b5] [a4,c#5,a5,c#6] [f#4,a4,f#5,a5] [g#4,b4,g#5,b5] [a4,c#5,a5,c#6] [b4,d5,b5,d6] [g#4,b4,g#5,b5] [a4,c#5,a5,c#6] [b4,d5,b5,d6] [c#5,e5,c#6,e6] [a4,c#5,a5,c#6] [b4,d5,b5,d6] [c#5,e5,c#6,e6] [d5,f#5,d6,f#6]", // E F#m G#m A F#m G#m A Bm …
  Q: "[a4@5 [g#4,g#5] a4 [b4,b5], [e3,a3,c#4], [a5,c#6]@12 a5@3 ~, e6 ~]/2", // G# B A
  R: "[[d5,d6]@24 [c#5,c#6]@2 ~ [c#5,c#6]@2 ~ [c#5,d5] ~, [f#3,a3,d4], ~@26 [d5,d6]@2 ~ d6@2 ~]/2", // D C# Dmaj7 D
  S: "[[e4,e5]@19 ~ d5@4 [c#4,c#5]@3 [b3,b4]@4 [a3,a4]@17, e3@47 ~, g#3@2 ~, b3@9 ~@7, ~@19 d4@4 ~@25]/3", // E C# B A
  T: "[~@16 c#5@15 ~ f#4@16, a4, [c#4,e4]@31 d5@16 ~]/3", U: "d5@12 c#5@3 ~, [d4,f#4,a4]@15 ~",
  V: "~@13 d4 ~@2, [e4,g#4,b4]", W: "[[d4,f#4,a4]@15 c#4@28 ~@5, e4 ~@14 e4@26 ~@7, ~@15 a4@22 ~@11, ~@15 g4 ~@32]/3",
  X: "[[c#5,c#6]@31 ~]/2", Y: "[[d5,d6]@31 ~]/2", Z: "[e5,e6]",
  AA: "~@5 [e2,b2,e3,b3] [f#2,g#2,c#3,d3,f#3,g#3,c#4,d4] [a2,b2,e3,f#3,a3,b3,e4,f#4] [c#3,g#3,c#4,g#4] [d3,e3,a3,b3,d4,e4,a4,b4] [f#3,g#3,c#4,d4,f#4,g#4,c#5,d5] [a3,e4,a4,e5] [b3,c#4,f#4,g#4,b4,c#5,f#5,g#5] [d4,e4,a4,b4,d5,e5,a5,b5] [f#4,c#5,f#5,c#6] [g#4,d5,g#5,d6]", // E5 F#sus2 Asus2 C#5 Dsus2 F#sus2 A5 Bsus2 …
  AB: "[[e5,c#6,e6]@20 [c#5,a5,c#6]@3 ~ [b5,d6]@3 [e5,c#6,e6]@4 ~ [a5,d6]@32, [a3,c#4,e4]@31 [a3,d4,f#4]@32 ~, ~@23 d5@4 ~@37]/4", // C#m F#m Bm C#m D5 A D
  AC: "[[b3,e4,g#4], [e5,g#5]@11 ~@5]/2", AD: "[a3,c#4,e4]",
  AE: "[[e5,c#6,e6]@5 [c#5,a5,c#6] [d5,b5,d6] [e5,c#6,e6], [a3,c#4,e4]@31 ~]/2", // C#m F#m G C#m A
  AF: "[[f#5,d6,f#6]@5 [f5,c#6,f6] [f#5,d6,f#6] [g5,d#6,g6], [a3,d4,f#4]@31 ~]/2", AG: "[g#3,b3,e4,g#5,e6,g#6]",
  AH: "[~ [e3,a3,c#4,c#6,e6]@2, [f#3,a3,d4,f#5,d6,f#6]@17 ~@31, ~@15 [a4,a5]@32 ~]/3", // A D A
  AI: "[~ [e3,a3,c#4,e6]@2, [f#3,a3,d4,f#5,d6,f#6]@17 ~@31, ~@15 [a4,a5,c#6]@32 ~]/3", // A D A
  AJ: "[[a3,c#4,e4]@15 ~ b3@16, ~@15 [g#3,e4]@16 ~]/2", // A C#m
})).s("gm_string_ensemble_1").gain(0.14)

// chords · acoustic guitar steel · "#Steel Gt"
const acoustic_guitar_steel_2 = note("<~@70 A B@5 C ~ A D@4 ~@43>".pickRestart({
  A: "~@8 [c#4,e4,b4] d4@3 [a3,c#4,e4,a4]@2 ~@2, ~@2 [f#4,a4] ~", // C#m7 A F#m
  B: "[f#4@10 d4@2 f#4@4 a4@4 ~@4 [g#4,b4]@3 ~ [f#4,b4]@3 ~ [b3,g#4]@21 ~@3 [c#5,e5]@3 ~ b4@2 ~@2 a4@16, a3@23 ~@41 e4@12 ~@4, a4@14 ~@10 f#4 ~@6 e4@20 ~@5 b4 ~@3 e5@20, d4@4 ~@27 c#5@9]/5", // G#m B5 E C#m
  C: "[e2,e3] [f#2,f#3] [g#2,g#3] [a2,a3] [b2,b3] [c#3,c#4] [d3,d4] [e3,e4]", // E F# G# A B C# D E
  D: "[f#4@10 d4@2 f#4@4 a4@4 ~@4 [g#4,b4]@3 ~ [f#4,b4]@3 ~ [b3,g#4]@21 ~@11, a3@23 ~@41, a4@14 ~@10 f#4 ~@6 e4@20 ~@13, d4 ~@7]/4", // G#m B5 E
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(1)

// chords · acoustic guitar steel · "#Steel Gt" · soft notes
const acoustic_guitar_steel_3 = note("<~@70 A B C ~@5 A B C ~@45>".pickRestart({
  A: "~@7 a3@4 ~@5", B: "~@7 d4", C: "~ f#4 ~@2 d4@3 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(1)

// drums · kick
const kick = s("bd").struct("<~@21 A@7 ~ A@7 ~ A@23 ~ A@7 ~ A@11 B ~@3 A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@8 ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x",
})).gain(0.8)

// drums · rim
const rim = s("rim").struct(`<
  ~@21 A@6 B C A@6 B C A@15 D A@6 B C A@6 B C A@11 E ~@3 A@6 B C A@6 B C A@6 B C A@6 B C A@8 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~ x!2 ~@2 x!2 ~", E: "~@2 x ~@2 x ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@21 A B C@3 D E F A@6 G H A B C@3 D I J A B C@3 D I J A B C@3 D E F A B C@3 D E F A B C@3 D I J A B C@2 ~@3 A B C@3 D
  E F A B C@3 D E F A B C@3 D E F A B C@3 D E F A B C@3 D I J ~@2
>`.pickRestart({
  A: "x!4", B: "x ~ x!3 ~ x!2", C: "x!8", D: "x!5 ~ x!2", E: "x!5 ~@3", F: "~@5 x!3", G: "x!3 ~", H: "~@3 x",
  I: "x!5 ~ x ~", J: "x ~ x ~ x!4",
})).gain(0.8)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@21 A B ~@3 C@2 ~@9 A B ~@3 C D E A B ~@3 C D E A B ~@3 C@2 ~ A B ~@3 C@2 ~ A B ~@3 C D E A B ~@5 A B ~@3 C@2 ~ A B
  ~@3 C@2 ~ A B ~@3 C@2 ~ A B ~@3 C@2 ~ A B ~@3 C D E ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@3 x ~@2", C: "~@5 x ~@2", D: "~@5 x ~ x", E: "~ x ~ x ~@4",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A ~@15 A ~@7 A ~@7 A ~@15 A ~@14 A ~@15 A ~@15 A ~@2>".pickRestart({
  A: "~@7 x",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@15 A ~@7 A ~@7 A ~@15 A ~@14 A ~@15 A ~@15 A ~@2>".pickRestart({
  A: "~@3 x",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@21 A ~@7 A ~@15 A ~@7 A ~@7 A ~@15 A ~@6 A ~@7 A ~@7 A ~@7 A ~@7 A ~@9>".pickRestart({
  A: "x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@28 A ~@15 A ~@7 A ~@7 A ~@15 A ~@14 A ~@15 A ~@15 A ~@2>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@29 A B@5 C D ~@55 A B@5 C D ~@8 A B@5 C D ~@10>".pickRestart({
  A: "x!3 ~ x ~ x ~", B: "x!4", C: "x!3 ~", D: "~@3 x",
})).gain(0.8)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@29 A B@5 C D ~@55 A B@5 C D ~@8 A B@5 C D ~@10>".pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~@5 x ~ x",
})).gain(0.4)

stack(
  bass, acoustic_guitar_steel, string_ensemble_1, acoustic_guitar_steel_2, acoustic_guitar_steel_3, kick, rim, hihat,
  hihat_soft, low_tom, mid_tom, crash, high_tom, ride, ride_soft
)