Strudelify

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: edit a riff to change every repeat.

// chords · acoustic guitar nylon · "Ac Guitar"
const acoustic_guitar_nylon = 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 AC AD AE AF AG AH AI AJ AK AL AM AN AO 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 AC AD AE AF AG AH AI AJ AK AL AM AP ~@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,db4,f4]@6 ~@2 [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@3 db3@4, db3@3 ~", // Db
  D: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@7, ab2", // Ab
  E: "[ab3,db4,f4]@7 ~ [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@3 db3@4, db3 ~@2", // Db
  F: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4]@2 ~@2 bb2@4, bb2@13 ~@11", // Bbm
  G: "[ab3,c4,f4]@6 ~@2 [ab3,c4,f4] ~@7 [ab3,c4,f4] ~@3 f2@4, f2@11 ~@13", // Fm
  H: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4] ~@3 bb2@3 ~, bb2@2 ~", // Bbm
  I: "[gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@3 eb3@4, eb3@17 ~@7", // Ebm
  J: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@3 ab2@3 ~, ab2@2 ~", // Ab
  K: "[f3,ab3,c4,eb4]@7 ~ [f3,ab3,c4,eb4] ~@7 [f3,ab3,c4,eb4] ~@7", // Fm7
  L: "[f3,ab3,bb3,db4]@7 ~ [f3,ab3,bb3,db4] ~@7 [f3,ab3,bb3,db4] ~@7", // Bbm7
  M: "[ab3,c4,f4]@6 ~@2 [ab3,c4,f4] ~@7 [a3,c4,gb4] ~@3 f2@4, f2@11 ~@13", // Fm Gbdim
  N: "[ab3,db4]@7 ~ [ab3,db4] ~@7 [ab3,db4]@2 ~@2 bb2@4, bb2 ~", // Db5
  O: "[g3,db4]@3 ~ [g3,db4] ~@3 [g3,db4] ~@3, eb3@17 ~@7", // Gdim
  P: "[ab3,c4,eb4]@7 ~ [ab3,c4,eb4] ~@7 [ab3,c4,eb4] ~@7, ab2@11 ~", // Ab
  Q: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [ab3,c4,eb4]@2 ~@6, ab2@7 ~", // Ab
  R: "[gb3,bb3,db4]@7 ~ [gb3,bb3,db4] ~@7 [gb3,bb3,db4] ~@7, gb2@17 ~@7", // Gb
  S: "[gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4] ~@7 [gb3,c4,eb4] ~@7, ab2@7 ~", // Ebm Cdim
  T: "[ab3,db4,f4]@6 ~@2 [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@7, db3@7 ~", // Db
  U: "[ab3,eb4]@4 b3 ~@3 [ab3,b3,eb4] ~@7 [ab3,b3,eb4] ~@7, db3@7 ~", // Ab5 Abm
  V: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@7", W: "[gb3,a3,eb4]@7 ~ [gb3,a3,eb4] ~@7 [gb3,a3,eb4] ~@7",
  X: "[f3,ab3,eb4]@7 ~ [f3,ab3,eb4] ~@7 [f3,ab3,eb4] ~@7", Y: "[f3,ab3,db4]@7 ~ [f3,ab3,db4] ~@7 [f3,ab3,db4] ~@7",
  Z: "[gb3,bb3,eb4]@7 ~ [gb3,bb3,eb4] ~@7 [gb3,bb3,eb4] ~@7, gb2@2 ~", // Ebm
  AA: "[a3,eb4]@7 ~ [a3,eb4] ~@7 [gb3,a3,db4] ~@7, gb3 ~@2", AB: "[gb3,c4,f4]@7 ~ [gb3,c4,f4] ~@7 [gb3,c4,eb4] ~@7",
  AC: "[f3,ab3,db4]@8 [f3,ab3,db4] ~@7 [f3,ab3,db4] ~@7", AD: "[gb3,bb3,eb4]@13 ~@3 [ab3,c4,f4] ~@7",
  AE: "[bb3,db4,gb4]@13 ~@3 [ab3,c4,eb4]@2 ~@6", AF: "[bb3,d4]@4 bb3@4 [bb3,d4,f4] ~@3, ~@8 f4 ~@15",
  AG: "[bb3,d4,f4]@7 ~ [bb3,d4,f4] ~@7 [bb3,d4,f4]@2 ~@6", AH: "[bb3,db4,f4]@7 ~ [bb3,db4,f4] ~@7 [bb3,db4,f4] ~@7",
  AI: "[ab3,db4,f4]@7 ~ [ab3,db4,f4] ~@7 [ab3,db4,f4] ~@7", AJ: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4] ~@7",
  AK: "[ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4] ~@7 [gb3,c4] ~@7", AL: "[bb3,db4,f4]@7 ~ [bb3,db4,f4] ~@7 [bb3,db4]@2 ~@6",
  AM: "[a3,c4]@6 ~@2 [a3,c4,f4] ~@7 [a3,c4,eb4]@2 ~@6", AN: "[bb3,db4,f4]@6 ~@2 [bb3,db4,f4] ~@7 [bb3,db4,f4]@2 ~@6",
  AO: "[gb3,bb3,eb4]@14 ~@2 [gb3,c4]@5 ~@3", AP: "[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 J K E L M H F N O P Q R S T U V W T X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM E F G H I B J K E
  L M H F N O P Q R S T U V W T X Y Z AA AB AC AD AE AF AG AH AI AJ AK AN AO@2 ~
>`.pickRestart({
  A: "db2@23 ~", B: "ab1@19 ~ ab1@3 ~", C: "db2", 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: "db2@19 ~ db2@2 ~@2", K: "ab1@15 ~ ab1@6 ~@2",
  L: "bb1@5 ~", M: "f2@15 ~ a1@6 ~@2", N: "eb2@7 ~", O: "ab1@7 ~ f2@7 ~ eb2@6 ~@2", P: "c2@6 ~@2 bb1@7 ~ ab1@4 g1@3 ~",
  Q: "gb1@23 ~", R: "ab1@19 ~ ab1@2 ~@2", S: "db2@11 ~", T: "ab2@7 ~ f2@7 ~ db2@6 ~@2", U: "gb1@7 ~", V: "gb2@23 ~",
  W: "ab1@7 ~", X: "gb2@6 db2 ~ gb2 ~ db2 ~", Y: "b1@19 ~ a1@2 ~@2", Z: "ab1@15 ~ c2@7 ~", AA: "db2@8 f2@3 ~",
  AB: "eb2@14 ~@2 f2@7 ~", AC: "gb2@15 ~ ab2@6 ~@2", AD: "bb1@7 ~", AE: "bb1@7 ~ d2@7 ~ f2@6 ~@2",
  AF: "bb1@12 db2@2 ~@2 f2@2 ~@2 eb2@3 ~", AG: "db2@15 ~ c2@6 ~@2", AH: "bb1@9 ~ bb1 ~", AI: "ab1@7 ~ d2@3 ~",
  AJ: "db2@11 ~ ab2@2 ~@2 gb2@6 ~@2", AK: "f2@7 ~ c2@7 ~ a1@6 ~@2", AL: "bb1@7 ~ db2@8 f2@6 ~@2",
  AM: "eb2@7 ~ bb1@7 ~ ab1@5 ~@3", AN: "bb1@7 ~ f2@6 ~@2 db2@7 ~", AO: "[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 AC AD AE AF@2 AG AH AI AJ AK AL AM AN 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 AC AD AE AF@2 AG AH AI AJ AK AL AO@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: "~@2 f4 ~@2 db4, ab3@7 ~, ~ db4@3 f4@2, ~ ab4",
  AD: "~ eb4 gb4 eb4 ab3 c4, bb3@7 ~@5", AE: "~ db4 gb4 db4 ab3 c4, bb3@7 ~@5",
  AF: "[~@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",
  AG: "~ db4 f4 db4 f4 db4, bb3@7 ~", AH: "~@2 f4 ~ f4 db4, ab3@7 ~, ~ db4@3 ~@2, ~@6 ab4@5 ~",
  AI: "~ db4 f4 db4 f4 db4, bb3@11 ~", AJ: "~ c4 ~ c4 a3 gb3, ab3@13 ~@11, ~@8 eb4@13 ~@3",
  AK: "~ bb3 db4 f4 ~ bb3, f3@2 db4", AL: "~@8 f4@8 ~@4 c4@3 ~, a3@7 ~, ~ c4@3 eb4@2",
  AM: "~@2 f4 ~ f4 db4, bb3@11 ~, ~@4 db4@8 bb4@7 ~@5",
  AN: "~@2 bb3@2 ~@2 bb3 ~@3 gb3@2, eb4@16 c4@7 ~, gb3@7 ~ gb3@11 ~@5",
  AO: "[~@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)