Strudelify
Jukebox in My Mind cover art

Jukebox in My Mind

Alabama

KeyF majorTempo120 bpm
0:00/0:00
// Jukebox in My Mind — Alabama
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "A.PIANO 1" named as a piano, played on piano (its electric bass finger patch is not one)
// note: Full arrangement: all 95 bars on a 24-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 · piano · "A.PIANO 1"
const bass = note(`<
  ~@3 A@3 B C D E F G H I B J D K E I@3 L K M K E N O@2 P I Q R S A T A B C D E F G H I B J D K U I V A B C W K E N O@2
  P I Q R S A T A B C D E F G H I B J X Y ~@5 A@3 B C D Z@2
>`.pickRestart({
  A: "f1@7 ~@5 c2@7 ~@5", B: "f1@7 ~@5 f1@7 ~@5", C: "bb1@7 ~@5 f2@7 ~@3 f2 ~", D: "bb1@4 ~@2 f1@5 ~ g1@5 ~ a1@5 ~",
  E: "bb1@7 ~@5 bb1@7 ~@5", F: "f2@7 ~@5 bb1@7 ~@5", G: "eb2@7 ~@5 d2@7 ~@5", H: "c2@7 ~@5 c2@3 ~ d2 ~ eb2@5 ~",
  I: "f2@7 ~@5 c2@7 ~@5", J: "bb1@7 ~@5 f2@9 ~ f2 ~", K: "bb1@7 ~@5 f2@7 ~@5", L: "f2@7 ~@5 f2@7 ~@5",
  M: "bb1@7 ~@5 f2@5 ~ f1@5 ~", N: "eb2@7 ~@5 eb2@7 ~@5", O: "c2@7 ~@5 g2@7 ~@5", P: "c2@7 ~@5 c2@7 ~@5",
  Q: "f2@4 ~@2 f1@5 ~ g1@5 ~ a1@5 ~", R: "bb1@7 ~@5 f1@7 ~@5", S: "bb1@7 ~@3 bb1 ~ bb1@7 ~@5",
  T: "f1@7 ~@3 c2 ~ c2@7 ~@5", U: "bb1@7 ~@3 bb1 ~ d2@5 ~ g2@5 ~", V: "f2@7 ~@3 d2 ~ c2@5 ~ a1@5 ~",
  W: "bb1@5 ~ f1@5 ~ g1@5 ~ a1@5 ~", X: "bb1@4 ~@2 bb1@5 ~ a1@5 ~ g1@5 ~", Y: "f1@7 ~@5 f1@2 ~@10", Z: "bb1/2",
})).s("gm_piano").gain(0.48)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@3 A@4 B@3 C D E A@2 B@4 A@4 B F B C D E G@2 H A B@2 A@4 B@3 C D E A@2 B I B@2 A@4 B F B C D E G@2 H J B@2 A@4 B@3 C
  D E A@2 B K L ~@5 A@4 B@2 M@2
>`.pickRestart({
  A: "[f3,a3,c4]@5 ~ [f3,a3,c4]@4 ~@2 [f3,a3,c4]@3 ~ [a3,c4]@2 [f3,a3,c4]@3 ~ [a3,c4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // F Am F Am
  B: "[f3,bb3,d4]@5 ~ [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@3 ~ [bb3,d4]@2 [f3,bb3,d4]@3 ~ [bb3,d4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // Bb
  C: "[f3,ab3,d4]@5 ~ [f3,ab3,d4]@4 ~@2 [f3,ab3,d4]@3 ~ [ab3,d4]@2 [f3,ab3,d4]@3 ~ [ab3,d4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // Ddim Abdim Ddim Abdim
  D: "[eb3,g3,bb3]@5 ~ [eb3,g3,bb3]@4 ~@2 [eb3,g3,bb3]@3 ~ [g3,bb3]@2 [eb3,g3,bb3]@3 ~ [g3,bb3]@2, ~@6 eb4@3 ~ eb4@5 ~@3 eb4@4 ~@2", // Eb Gm Eb Gm
  E: "[eb3,g3,c4]@5 ~ [eb3,g3,c4]@4 ~@2 [eb3,g3,c4]@3 ~ [g3,c4]@2 [eb3,g3,c4]@3 ~ [g3,c4]@2, ~@6 eb4@3 ~ eb4@5 ~@3 eb4@4 ~@2", // Cm C5 Cm C5
  F: "[f3,bb3,d4]@5 ~ [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@3 ~ [bb3,d4]@2 [f3,a3,c4]@3 ~ [a3,c4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // Bb F Am
  G: "[e3,g3,c4]@5 ~ [e3,g3,c4]@4 ~@2 [e3,g3,c4]@3 ~ [g3,c4]@2 [e3,g3,c4]@3 ~ [g3,c4]@2, ~@6 g4@3 ~ g4@5 ~@3 g4@4 ~@2", // C C5 C C5
  H: "c4@5 ~ [f3,a3,c4]@4 ~@2 [f3,a3,c4]@3 ~ [a3,c4]@2 [f3,a3,c4]@3 ~ [a3,c4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // F Am F Am
  I: "[f3,bb3,d4]@5 ~ [f3,a3,c4]@4 ~@2 [f3,bb3,d4]@3 ~ [bb3,d4]@2 [f3,a3,c4,f4]@3 ~ [a3,f4]@2, ~@6 f4@3 ~ f4@5 ~@9", // Bb F Bb F Dm
  J: "[f3,a3,c4]@5 ~ [f3,a3,c4]@4 ~@2 [f3,bb3,d4]@3 ~ [bb3,d4]@2 [f3,a3,c4]@3 ~ [a3,c4]@2, ~@6 f4@3 ~ f4@5 ~@3 f4@4 ~@2", // F Bb F Am
  K: "[f3,bb3,d4]@5 ~ [f3,bb3,d4]@4 f4@2 [a3,c4,f4]@3 ~ c4@2 [g3,bb3,d4]@4 [f3,f4]@2, ~@6 f4@3 ~@7 f3@6 ~@2", // Bb F Gm F
  L: "[f3,a3,c4]@5 ~ [f3,a3,c4]@4 f4@2 [f3,a3,c4,f4]@2 ~@10, ~@2 f4 ~@5", M: "[[f3,bb3,d4,f4]@47 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.3)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@3 A B@3 C@3 D E F B@2 C@2 G C B@4 C H I J@2 K L M N O P@2 Q R@2 S P@3 T U V W X@2 Y Z C B@4 C H I J@2 K L M AA@2 AB
  P Q AC R S P@3 T U AD AE AF AG AH AI ~@5 A B@3 C@2 AJ@2
>`.pickRestart({
  A: "~@2 a3 ~@3 [a3,c4,f4]@2, f2 f3, ~@6 [c4,f4]@11 ~@7, ~@5 a3@2 ~@5", // F F5
  B: "~@2 a3 ~@3 [a3,c4,f4]@2, f2 f3, ~ [c4,f4]@2 ~, ~@5 a3@2 ~@5", // F F5
  C: "~@2 bb3 ~@3 [bb3,d4,f4]@2, bb2 f3, ~ [d4,f4]@2 ~, ~@5 bb3@2 ~@5", // Bb Dm
  D: "~@2 ab3 ~@3 [ab3,d4,f4]@2, bb2 f3, ~ [d4,f4]@2 ~, ~@5 ab3@2 ~@5", // Ddim Dm
  E: "~@2 g3 ~@3 [g3,bb3,eb4]@2, eb2 d3, ~ [bb3,eb4]@2 ~, ~@5 g3@2 ~@5", // Eb Eb5
  F: "~@2 bb3 ~@3 [bb3,eb4,g4]@2, c3 g3, ~ [eb4,g4]@2 ~, ~@5 bb3@2 ~@5", // Eb
  G: "~@2 bb3 ~@3 [bb3,d4,f4]@2, bb2 f3, ~@6 [d4,f4]@11 ~@7, ~@5 bb3@2 ~@5", // Bb Dm
  H: "~@2 bb3 ~@3 [a3,c4,f4]@2, bb2 f3, ~ [d4,f4]@2 ~, ~@5 bb3@2 ~@5", // F Dm
  I: "[d4,f4]@2 bb3 ~@3 [bb3,d4,f4]@2, bb2 f3, ~ [d4,f4]@2 ~, ~@5 bb3@2 ~@5", // Dm Bb Dm
  J: "[~@6 ab3@3 ~@33 g4@4 g4@2, bb2 f3 eb2 eb3, ~@3 [d4,f4]@6 ~@2 bb4@4 ~@2 g3@2 ~@5, ~@5 ab3@2 ~@2 [ab3,d5,f5]@3 ~@3 [bb3,eb4,g4]@6 [bb3,eb4]@3]/2", // Dm Ddim Eb Eb5
  K: "~@3 [g3,g4,d5]@2 ~ c5@2 ~ bb4@2 g4, c3!2, ~@6 c4@11 ~ [g3,c4,eb4]@6, ~@5 g4@2 ~ g4@2 ~@2", // G5 Cm
  L: "[e4,c5]@2 c4 ~@3 [c4,e4,g4]@2, c3 g3, ~ [e4,g4]@2 ~, ~@5 c4@2 ~@5", // C Em
  M: "~@2 c4 ~@3 [c4,e5,g5]@2, c3 g3, ~ [e4,g4]@2 ~, ~@5 c4@2 ~ c5@2 ~@2", // C Em
  N: "f5 ~@2 [c4,a4,f5], f2 f3, ~ [c4,a4,f5]@2 ~, ~@5 f4@2 ~@5", // F
  O: "~@11 f4, f2 f3, ~ [c4,a4,f5]@2 [c4,a4,f5], ~@5 f4@2 ~@5", // F
  P: "~@2 bb4 ~@3 [d4,f4,bb4]@2, bb2 f3, ~ [d4,f4]@2 ~, ~@5 bb3@2 ~@5", // Bb Dm
  Q: "~@2 a4 ~@3 [c4,f4,a4]@2, f2 f3, ~@6 [c4,f4]@11 ~@7, ~@5 a3@2 ~@5", // F F5
  R: "~@2 a4 ~@3 [c4,f4,a4]@2, f2 f3, ~ [c4,f4]@2 ~, ~@5 a3@2 ~@5", // F F5
  S: "~@2 a4 ~@3 [a3,c4,f4]@2, f2 f3, ~ [c4,f4]@2 ~, ~@5 a3@2 ~ g4@2 ~@2", // F F5
  T: "~@2 ab4 ~@3 [f4,ab4,d5]@2, bb2 f3, ~ [f4,d5]@2 ~, ~@5 ab3@2 ~ bb4@2 ~@2", // Ddim Dm
  U: "~@2 g5 ~@3 [bb4,d5,g5]@2, eb2 d3, ~ [bb4,eb5]@2 ~, ~@5 g3@2 ~@5", // Gm Eb5
  V: "~@2 c5 ~@3 [eb4,g4,c5]@2, c3 g3, ~ [eb4,g4]@2 ~, ~@5 c4@2 ~@5", // Cm Eb
  W: "~@2 a4 ~@3 [f4,a4,c5]@2, f2 f3, ~ [f4,c5]@2 ~, ~@5 a3@2 ~@5", // F F5
  X: "[~@2 f5 ~@7 bb5 ~@3 [d4,bb4,f5]@2, f2 f3 bb2 f3, ~@3 [c5,a5]@6 [c5,f5,a5]@3 ~@5 bb3@2 ~@5, ~@5 f4@2 ~@4 f4@2 ~@2 [f4,d5]@6 ~@3]/2", // Bb F Dm
  Y: "bb2@2 f3 ~ [g4,bb4]@2 [a3,a4,c5]@2, ~ [f4,a4] g3@2, ~@5 c4@2 ~@5", // Gm Am F
  Z: "~@2 bb3 ~@3 [bb3,d4,f4]@2, [bb2,bb4,d5] f3, ~@6 [d4,f4]@11 ~@7, ~@5 bb3@2 ~@5", // Bb Dm
  AA: "[f5@3 ~@5 c5 [c4,g5]@3 [f2,f5]@3 f4@2 f4 g3@2 ~@3 f4, f2@2 f3@2 ~ [f3,a4] ~ [f3,a4,c5], ~@6 [c4,a4,f5]@12 ~@18 f4@3 ~ f4@6 ~@2, ~@5 f4@2 ~@2 a4@6 ~@3 bb4@6]/2", // C5 F
  AB: "[bb2,bb4]@2 bb4 ~@3 [d4,f4,bb4]@2, d5 f3, ~ [d4,f4]@2 ~, ~@5 bb3@2 ~@5", // Bb Dm
  AC: "g5@3 ~ [g5,a5]@2 [f4,g5]@4 ~@8 [c4,f4,a4]@6, f2 f3, ~@6 c4@11 ~@7, ~@5 f5@4 ~@3, ~@5 a3@2 ~@5", // Gsus2 Fsus2 F
  AD: "~@6 [bb4,d5]@4 c4@2 [a4,c5]@5 ~ [c3,g4,bb4]@4 c4@2, c3@6 c4@5 ~, ~ g3@3", // Bb Am C7
  AE: "[f4,a4]@5 ~ a4@3 ~@9 [f4,a4,c5]@6, f2 f3, ~ [f4,c5]@2 ~, ~@5 a3@2 ~@5", // F F5
  AF: "~@6 a4@3 ~@3 [f4,bb4]@5 ~ [c4,a4,c5]@6, f2 f3, ~@6 c4@11 ~@7, ~ f4 ~@2, ~@5 a3@2 ~@5", // Bb5 F
  AG: "f4@2 bb5 ~@3 [d4,bb4,f5]@2, bb2 f3, bb4 ~ [f4,d5]@4 ~@2, ~@5 bb3@2 ~@5", // Bb Dm
  AH: "[bb2,d4,f4,bb4]@6 bb3@3 ~ bb3@2 [a3,a4,c5]@6 [g3,g4,bb4]@6, ~ [bb4,d5] ~@2", // Bb Am Gm Bb
  AI: "[f4,a4]@6 a4@3 ~ c3@2 [f2,f3,c4,f4,a4]@3 ~@9, f2 ~, ~ [c4,f4] ~@2", AJ: "[bb2,bb3,d4,f4,bb4]/2",
})).s("gm_piano").gain(0.36).pan(0.8)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@3 A B ~@2 C@2 ~@6 D E ~@18 F G ~@2 C@2 ~@7 H I@2 J K L M N O ~@10 P Q ~@2 R S@2 ~@17 T U@3
>`.pickRestart({
  A: "~@3 a3", B: "f3@7 ~@5", C: "[~@12 c4@4 ~@8 a4@21 ~@3, ~@16 db4@29 ~@3]/2", D: "~@2 bb5 f5", E: "d5@11 ~",
  F: "~@6 c4@3 bb3 ~@2", G: "f3@5 ~ f3@12 ~@6", H: "~@6 [f4,a4]@3 ~@3 [g4,bb4]@4 ~@2 [a4,c5]@3 ~@3",
  I: "[[bb4,d5]@5 ~ [a4,c5]@3 ~ [a4,c5]@8 bb4@4 f4@11 ~@3 bb3@5 d4@3 ~ f4@3, ~@9 g4 ~@14]/2", // Bb Am
  J: "bb3@5 ~ a3@10 [d4,f4]@4 [db4,e4]@4", K: "~ [c4,eb4]@14 ~@7 c5 ~", L: "a4@6 ~ c5@2 ~@2 c5@2 a4@5 f4@6",
  M: "f4@3 ~ a4@2 f4@11 ~ db4@4 d4@2", N: "bb3@10 ~@3 bb4@3 ~@5 c5@3, ~@17 eb4@7", O: "[f4,d5]@19 ~@5",
  P: "~@6 a4@3 g4@2 ~", Q: "g4@2 f4 ~@3 f4@7 ~@11", R: "~@12 [d4,f4]@11 ~",
  S: "[[e4,g4]@2 ~@2 [db4,e4]@2 ~@2 [d4,f4]@2 ~@2 [bb3,db4]@3 ~ [a3,c4]@2 ~@2 bb3@11 ~@17]/2", // Em Dbm Dm Bbm Am
  T: "~@4 f4@2 d5@2 f4@2 d5@2 ~ d5@2 ~@2 d5@2 ~@2 d5@2 ~, ~@8 f4 ~@3", U: "[~ d5@3 ~ db5@2 ~@3 c5@2 ~@2 bb4@57 ~]/3",
})).s("gm_electric_guitar_jazz").gain(0.37).pan(0.7)

// other · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<~@55 A ~@11 B C ~@3 D@2 ~@17 E F ~@2>".pickRestart({
  A: "~@8 d4 ~@3", B: "~@11 c4", C: "~@2 d4 ~@9", D: "[~@20 f3@11 ~@17]/2", E: "~@6 f4 ~@3 f4 ~",
  F: "f4@2 ~@2 f4@3 ~ f4@2 ~@2 f4@2 ~@10",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.7)

// other · fiddle
const fiddle = note(`<
  ~@9 A B C D ~@6 E F G ~ H I@2 J K L M N O P Q ~@7 A R C D ~@2 S T ~@2 U V ~@4 A R C W ~@12 A R C W X Y Z AA AB ~@5 AC
  AD AE ~@5
>`.pickRestart({
  A: "bb4 a4", B: "ab4 f4", C: "g4 f4", D: "eb4@23 ~", E: "~ c5", F: "g4@2 a4 g4 f4 ~ g4@4 f4@8 c4@2 b3@2 bb3@2",
  G: "a3@11 ~@13", H: "~@12 f4@6 bb4@2 ~ d5 f5@2", I: "[c5@2 d5@7 ~ bb4@2 bb4@6 a4@4 bb4@20 ~@6]/2",
  J: "~@6 f4@4 g4 ab4", K: "g4@2 ~", L: "~@12 g5@4 eb5@4 ~ d5@3", M: "c5 d5 c5@13 ~@9", N: "~@3 g4 gb4 f4 e4@6",
  O: "f4@3 ~", P: "~@6 f4@6 g4@5 ~ a4@6", Q: "bb4 ~", R: "ab4@2 bb4 ab4",
  S: "~@4 f4@2 bb4@3 ~ d5@2 c5@2 d5 c5 bb4@2 g4@3 ~ eb4@2", T: "f4 ~@3", U: "~@4 f5 e5", V: "eb5@2 ~", W: "eb4",
  X: "c4@21 b3 bb3 ~", Y: "a3", Z: "~@6 f5@5 ~ bb5@5 ~ g5 a5 g5 ~@2 c5, ~@11 f5", AA: "~ d5 c5 bb4@2 ~ bb4@6 a4@6 g4@6",
  AB: "f4@5 ~ f4 ~@5", AC: "~@6 c5@5 bb4", AD: "g4@4 a4@2 f4@5 ~ c4@3 b3@2 ~ bb3@6", AE: "a3 ~",
})).s("gm_fiddle").gain(0.27).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@3 A@13 B A@31 B A@31 B A ~@5 A@5 B C ~>".pickRestart({
  A: "x!2", B: "x ~@5 x ~@4 x", C: "x",
})).gain(0.62)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@3 A B A@3 B A@3 B A@3 ~ A@7 B A@3 B A@3 C ~@48 C ~@13>".pickRestart({
  A: "~@8 x ~@2 x", B: "~@2 x", C: "~@5 x ~@6",
})).gain(0.21)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 B ~@7 A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@3 B ~@11 A ~@3 B ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x",
})).gain(0.35)

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

// drums · ride
const ride = s("rd").struct("<~@49 [~@3 x ~@2 x ~@2 x ~ x] [x ~@2 x ~@2 x ~@2 x ~ x]!6 [x ~@2 x ~ x!2 ~@2 x ~@2] ~@38>")
  .gain(0.35)

stack(
  bass, acoustic_guitar_steel, piano, electric_guitar_jazz, electric_guitar_jazz_2, fiddle, kick, snare, hihat,
  hihat_soft, open_hat, crash, ride
)

More by Alabama