Strudelify
Allentown Jail cover art

The Stewart Years

Allentown Jail

The The Kingston Trio

KeyB♭ minorTempo83 bpm
0:00/0:00
// Allentown Jail — The The Kingston Trio
// 83 bpm, 3/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// chords · acoustic guitar nylon · "Ac Guitar"
const acoustic_guitar_nylon = note(`<
  A B A C D E F G H I J K D E L G M N O@2 P Q R S T U V W X Y Z W AA AB AC AD AE AF AE AG AH AI AJ AK D E F G H I J K D
  E L G M N O@2 P Q R S T U V W X Y Z W AA AB AC AD AE AF AE AG AH AI AL ~@3
>`.pickRestart({
  A: "[ab3,db4,f4]@7 ~ [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@3 db3@3 ~, db3@17 ~@7", // Db
  B: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@3 ab2@4, ab2@3 ~", // Ebm
  C: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@7, ab2", // Ab
  D: "[ab3,db4,f4]@7 ~ [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@3 db3@4, db3 ~@2", // Db
  E: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4]@2 ~@2 bb2@4, bb2@13 ~@11", // Bbm
  F: "[ab3,c4,f4]@6 ~@2 [ab3,c4,f4] ~@7 [ab3,c4,f4] ~@3 f2@4, f2@11 ~@13", // Fm
  G: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4] ~@3 bb2@3 ~, bb2@2 ~", // Bbm
  H: "[gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@3 eb3@4, eb3@17 ~@7", // Ebm
  I: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@3 ab2@3 ~, ab2@2 ~", // Ab
  J: "[f3,ab3,c4,eb4]@7 ~ [f3,ab3,c4,eb4] ~@7 [f3,ab3,c4,eb4] ~@7", // Fm7
  K: "[f3,ab3,bb3,db4]@7 ~ [f3,ab3,bb3,db4] ~@7 [f3,ab3,bb3,db4] ~@7", // Bbm7
  L: "[ab3,c4,f4]@6 ~@2 [ab3,c4,f4] ~@7 [a3,c4,gb4] ~@3 f2@4, f2@11 ~@13", // Fm Gbdim
  M: "[ab3,db4]@7 ~ [ab3,db4] ~@7 [ab3,db4]@2 ~@2 bb2@4, bb2 ~", // Db5
  N: "[g3,db4]@3 ~ [g3,db4] ~@3 [g3,db4] ~@3, eb3@17 ~@7", // Gdim
  O: "[ab3,c4,eb4]@7 ~ [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@7, ab2@11 ~", // Ab
  P: "[gb3,bb3,db4]@7 ~ [gb3,bb3,db4] ~@7 [gb3,bb3,db4] ~@7, gb2@17 ~@7", // Gb
  Q: "[gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4] ~@7 [gb3,c4,eb4] ~@7, ab2@7 ~", // Ebm Cdim
  R: "[ab3,db4,f4]@6 ~@2 [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@7, db3@7 ~", // Db
  S: "[ab3,eb4]@4 b3 ~@3 [ab3,b3,eb4] ~@7 [ab3,b3,eb4] ~@7, db3@7 ~", // Ab5 Abm
  T: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@7", U: "[gb3,a3,eb4]@7 ~ [gb3,a3,eb4] ~@7 [gb3,a3,eb4] ~@7",
  V: "[f3,ab3,eb4]@7 ~ [f3,ab3,eb4] ~@7 [f3,ab3,eb4] ~@7", W: "[f3,ab3,db4]@7 ~ [f3,ab3,db4] ~@7 [f3,ab3,db4] ~@7",
  X: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@7, gb2@2 ~", // Ebm
  Y: "[a3,eb4]@7 ~ [a3,eb4] ~@7 [gb3,a3,db4] ~@7, gb3 ~@2", Z: "[gb3,c4,f4]@7 ~ [gb3,c4,f4] ~@7 [gb3,c4,eb4] ~@7",
  AA: "[gb3,bb3,eb4]@13 ~@3 [ab3,c4,f4] ~@7", AB: "[bb3,db4,gb4]@13 ~@3 [ab3,c4,eb4]@2 ~@6",
  AC: "[bb3,d4]@4 bb3@4 [bb3,d4,f4] ~@3, ~@8 f4 ~@15", AD: "[bb3,d4,f4]@7 ~ [bb3,d4,f4] ~@7 [bb3,d4,f4]@2 ~@6",
  AE: "[bb3,db4,f4]@7 ~ [bb3,db4,f4] ~@7 [bb3,db4,f4] ~@7", AF: "[ab3,db4,f4]@7 ~ [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@7",
  AG: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [gb3,c4] ~@7", AH: "[bb3,db4,f4]@7 ~ [bb3,db4,f4] ~@7 [bb3,db4]@2 ~@6",
  AI: "[a3,c4]@6 ~@2 [a3,c4,f4] ~@7 [a3,c4,eb4]@2 ~@6", AJ: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4]@2 ~@6",
  AK: "[gb3,bb3,eb4]@14 ~@2 [gb3,c4]@5 ~@3", AL: "[bb3,db4,f4] ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0)

// bass · acoustic bass · "Ac Bass"
const bass = note(`<
  A B C D E F G H I B E J E K L H F M N O P Q A R S T U R V W X Y Z AA K AB AC AD AE AF AG AH AI AJ E F G H I B E J E K
  L H F M N O P Q A R S T U R V W X Y Z AA K AB AC AD AE AF AG AH AK AL@2 ~
>`.pickRestart({
  A: "db2@11 ~", B: "ab1@19 ~ ab1@3 ~", C: "db2@23 ~", D: "ab1@23 ~", E: "db2@19 ~ db2@3 ~", F: "bb1@18 ~@2 bb1@3 ~",
  G: "f2@7 ~ c2@3 ~", H: "bb1@10 db2 ~", I: "eb2@18 ~@2 eb2@3 ~", J: "ab1@15 ~ ab1@6 ~@2", K: "bb1@5 ~",
  L: "f2@15 ~ a1@6 ~@2", M: "eb2@7 ~", N: "ab1@7 ~ f2@7 ~ eb2@6 ~@2", O: "c2@6 ~@2 bb1@7 ~ ab1@4 g1@3 ~", P: "gb1@23 ~",
  Q: "ab1@19 ~ ab1@2 ~@2", R: "ab2@7 ~ f2@7 ~ db2@6 ~@2", S: "gb1@7 ~", T: "gb2@23 ~", U: "ab1@7 ~",
  V: "gb2@6 db2 ~ gb2 ~ db2 ~", W: "b1@19 ~ a1@2 ~@2", X: "ab1@15 ~ c2@7 ~", Y: "db2@8 f2@3 ~", Z: "eb2@14 ~@2 f2@7 ~",
  AA: "gb2@15 ~ ab2@6 ~@2", AB: "bb1@7 ~ d2@7 ~ f2@6 ~@2", AC: "bb1@12 db2@2 ~@2 f2@2 ~@2 eb2@3 ~",
  AD: "db2@15 ~ c2@6 ~@2", AE: "bb1@9 ~ bb1 ~", AF: "ab1@7 ~ d2@3 ~", AG: "db2@11 ~ ab2@2 ~@2 gb2@6 ~@2",
  AH: "f2@7 ~ c2@7 ~ a1@6 ~@2", AI: "bb1@7 ~ db2@8 f2@6 ~@2", AJ: "eb2@7 ~ bb1@7 ~ ab1@5 ~@3",
  AK: "bb1@7 ~ f2@6 ~@2 db2@7 ~", AL: "[bb1@43 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.48)

// chords · epiano1 · "Rhodes"
const epiano1 = note(`<
  A B C D E F G H I J K L E F M H N O P Q R S T U V W X Y Z AA AB U AC AD AE@2 AF Y AF AG AH AI AJ AK E F G H I J K L E
  F M H N O P Q R S T U V W X Y Z AA AB U AC AD AE@2 AF Y AF AG AH AI AL@3 ~
>`.pickRestart({
  A: "~ ab4 f4 c5 ab4 f4, c5 ~@2", B: "bb4 gb4 eb4 bb4 gb4 eb4", C: "ab4 f4 db4 ab4 f4 db4",
  D: "gb4 eb4 c4 ab3 gb3 eb3", E: "ab3 db4 f4 ab4 f4 db4", F: "bb3 db4 f4 bb4 f4 db4",
  G: "~ c4 f4 ab4 ~ c4, ab3@5 ~@3 f4@4", H: "~ db4 f4 bb4 f4 db4, bb3 ~@2", I: "~ bb3 eb4 gb4 ~ bb3, gb3@8 ~@8 eb4@7 ~",
  J: "~ c4 eb4 ab4 [ab3,gb4] eb4, ab3 ~", K: "~@2 f4 ab4 ~ c4, db3@7 ~, ~@2 c4@5 ~ f4@4",
  L: "~ f4 ~@2 bb3 ab3, bb3@3 f4@2 ~, ~@2 ab4@3 ~", M: "~ c4 f4 ab4 eb4 c4, ab3@5 ~@7",
  N: "db4 f4 ~ f4 db4 f4, ~ bb4 ~", O: "~ eb4 ~ eb4 db4 eb4, db4@13 ~@11, ~@8 bb4@13 ~@3",
  P: "~ eb4 ab4 ~ eb4 c4, c4@3 gb4@2 ~", Q: "ab3 gb3 eb3 gb3 ab3 gb3",
  R: "~@2 gb4 ~@2 db4, bb3@7 ~, ~@4 db4@12 gb4@7 ~, ~@12 bb4@11 ~",
  S: "~@2 gb4 ~ gb4 eb4, c4@7 ~, ~@4 eb4@13 ~@7, ~@6 ab4@5 ~", T: "~@2 f4 ~@2 db4, bb3@5 ~, ~@4 db4@8 ab4@11 ~, ~@2 f4",
  U: "~@2 f4 ~@2 db4, ab3@11 ~, ~@4 db4@12 f4@7 ~, ~ ab4", V: "~@2 gb4 ~ gb4 db4, bb3@5 ~, ~ db4@2 bb4@2 ~",
  W: "~ db4 gb4 db4 ~ db4, a3@13 ~@3 gb4@8", X: "~ db4 f4 db4 ~ db4, ab3@13 ~@3 f4@8",
  Y: "~@2 f4 ~ f4 db4, ab3@5 ~, ~@4 db4@11 ~@9, ~@6 ab4@5 ~",
  Z: "~@2 gb4 ~@2 db4, bb3@5 ~, ~@4 db4@8 bb4@7 ~@5, ~@16 gb4@7 ~", AA: "~@2 gb4 db4 gb4 db4, a3@7 ~, ~@4 db4@7 ~@13",
  AB: "~ c4 f4 ~ f4 eb4, ab3@23 ~, ~@3 c4@2 ~", AC: "~ eb4 gb4 eb4 ab3 c4, bb3@7 ~@5",
  AD: "~ db4 gb4 db4 ab3 c4, bb3@7 ~@5",
  AE: "[~@2 f4 ~@2 d4 ~ d4 ~ d4 bb4 f4, bb3@21 ~@3 bb3@23 ~, ~@4 d4@8 bb4@17 ~@19, ~@16 f4@9 ~@7 f4@9 ~@7]/2",
  AF: "~ db4 f4 db4 f4 db4, bb3@7 ~", AG: "~ c4 ~ c4 a3 gb3, ab3@13 ~@11, ~@8 eb4@13 ~@3",
  AH: "~ bb3 db4 f4 ~ bb3, f3@2 db4", AI: "~@8 f4@8 ~@4 c4@3 ~, a3@7 ~, ~ c4@3 eb4@2",
  AJ: "~@2 f4 ~ f4 db4, bb3@11 ~, ~@4 db4@8 bb4@7 ~@5",
  AK: "~@2 bb3@2 ~@2 bb3 ~@3 gb3@2, eb4@16 c4@7 ~, gb3@7 ~ gb3@11 ~@5",
  AL: "[~@2 f4 ~@3 bb3@12, bb3@5 db4@13, ~ db4@2 bb4@15, ~@2 f4@7]/3",
})).s("gm_epiano1").gain(0.28).pan(1)

// drums · hihat
const hihat = s("hh").struct("<[~ x!2]!82 ~@4>").gain(0.36)

// drums · ride
const ride = s("rd").struct("<x!83 ~@3>").gain(0.36)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@4
>`.pickRestart({
  A: "~@5 x",
})).gain(0.24)

stack(acoustic_guitar_nylon, bass, epiano1, hihat, ride, ride_soft)