Strudelify

You Ain't Goin' Nowhere

The Byrds

KeyG majorTempo132 bpm
0:00/0:00
// You Ain't Goin' Nowhere — The Byrds
// 132 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 3, 4/4 at bar 3) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24.
setcpm(132/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.

// chords · bandoneon
const bandoneon = note(`<
  ~@9 A B C D E F G@2 H I J K L M N@2 O P Q R S T U@2 H I J K L M N@2 ~@8 V W X Y Z AA AB@2 H I J K L M N@2 AC T AD AE
  AF AG AH@2 AI I J K L M N@2 H I J K L M N@2 ~@16 H I J K L M N@2 H I J K L M N@2 ~
>`.pickRestart({
  A: "a4@3 b4@4 ~@2 b4@4 ~@9 a4@2", B: "b4@3 a4@6 b4@4 ~@9 e4 ~", C: "e4@4 g4@6 a4@6 g4@3 ~@3 e4@2",
  D: "g4@3 ~ g4@6 d4@4 ~@10", E: "a4@4 b4@5 ~ b4@8 g4@4 ~@2", F: "b4@4 a4@5 ~ a4@7 ~@7",
  G: "[e4@4 g4@5 ~ g4@5 ~ g4@2 a4@4 g4@6 ~@20]/2", H: "[b4,d5]@4 ~ [b4,d5]@3 ~@4",
  I: "[a4,c5]@3 [g4,c5]@2 [e4,c5]@3 ~@3 [d4,b4]", J: "[e4,c5]@4 [g4,c5]@5 ~ [g4,c5] ~ [g4,c5]@5 ~@5 [a4,c5]@2",
  K: "[g4,c5]@5 ~ [g4,b4]@4 [e4,b4]@2 [d4,b4]@4 ~@8", L: "[b4,d5]@4 ~ [b4,d5]@3 ~@3 [g4,b4]",
  M: "[a4,c5]@4 [a4,c5]@5 ~ g4@2 e4@5 ~@7, ~@10 c5@7 ~@7", // Am
  N: "[[e4,c5]@6 [g4,c5]@3 ~ [g4,c5]@2 [a4,d5]@6 [g4,c5]@3 ~ [g4,b4]@5 ~@21]/2", // C C5 D5 C5 G
  O: "~@4 b4 ~ b4@3 ~ b4 ~ b4@3 ~@5 g4 ~ g4 ~", P: "b4@3 a4 ~ a4@2 ~@5", Q: "~@6 g4@3 ~ g4@4 ~@8 e4@2",
  R: "g4@2 ~ g4 ~ g4@2 ~@5", S: "~@4 b4 ~ b4@4 d5@6 ~@2 b4@3 ~ b4 ~", T: "b4@6 a4@4 b4@5 ~@9",
  U: "[e4@4 g4@5 ~ g4@4 ~@2 g4@2 g4@3 ~ g4@5 ~@21]/2", V: "e5@6 d5@3 ~ d5@5 ~@3 b4 ~ b4 ~ b4@2",
  W: "b4@3 ~ b4@2 a4@4 b4@4 ~@8 d4@2", X: "e4@4 g4@6 a4@6 ~@2 g4@3 ~ g4 ~", Y: "g4@2 ~ g4@2 d4@2 ~@5",
  Z: "b4@2 ~@2 b4@3 ~ b4 ~ b4@3 ~ b4@3 ~@7", AA: "b4 ~ b4@2 a4 ~ a4@2 ~@4",
  AB: "[e4@6 g4@6 a4@4 g4@2 g4@3 ~ g4@5 ~@21]/2", AC: "e5@6 d5@2 ~@2 d5@8 b4@3 ~@3",
  AD: "~@4 g4 ~ g4@2 ~@2 g4@5 ~@7 e4@2", AE: "g4@5 ~ g4@4 b4@5 ~@7 d5@2", AF: "e5@3 d5 ~ d5@2 ~ d5@2 e5@2",
  AG: "~@4 d5@2 e5@4 g4@5 ~@9", AH: "[~@2 e5@3 d5!2 ~ d5@2 ~ d5@3 b4@2 ~@8]/2", AI: "[b4,d5]@4 ~ [b4,d5]@3 ~@3 g4",
})).s("gm_bandoneon").gain(0.39)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D A B C D A B C D A B C D A B C D A E C D A B C D A E C D A B C D A B C D A F C D A B C D A B C D A B C D A B
  C D A B C D A B C D A B C G A B C D A B C G A B C D A B C G A F C D A B C D A F C D A B C D A B C D A B C G A B C D A
  B C G ~
>`.pickRestart({
  A: "g1 ~ g1 ~", B: "a1@5 ~@7 a1@6 ~@6", C: "c2 ~ c2 ~", D: "g1 ~ d1 ~", E: "a1@5 ~@7 a1@6 b1@4 ~@2",
  F: "a1@5 ~@7 a1@6 b1@2 ~@4", G: "g1@4 ~@2 d1@3 ~@3 e1@3 ~@3 f#1@3 ~@3",
})).s("gm_acoustic_bass").gain(0.3).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B
  C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2
  B C D ~
>`.pickRestart({
  A: "[d3,g3,g4]@2 [b3,d4] [d3,d4]@2 g3 [d3,g3,d4]@2 [g3,b3,g4] [d3,b3,g4]@2 [g3,b3,d4], [b3,d4]@3 ~ g3@5 ~@9 [g3,d4]@3 ~@3, ~@6 [b3,g4]@3 ~ [b3,g4]@6 ~@8", // G5 Bm D G5 G Bm G5 Em
  B: "[e3,a3,a4]@2 [c4,e4] [e3,e4,a4]@2 a3 [e3,a3]@2 [a3,c4,a4] [e3,c4,a4]@2 [a3,c4,e4], [c4,e4]@3 ~ a3@5 ~@3 a4@3 ~@9, ~@6 c4@3 ~ [c4,e4]@7 ~ [a3,e4]@3 ~@3", // A5 C A5 Am C A5
  C: "[e3,g3,g4]@2 [c4,e4] [e3,e4,g4]@2 g3 [e3,g3]@2 [g3,c4,g4] [e3,c4,g4]@2 [g3,c4,e4], [c4,e4]@3 ~ g3@5 ~@3 g4@3 ~@9, ~@6 c4@3 ~ [c4,e4]@7 ~ [g3,e4]@3 ~@3", // Em C Em C5 C
  D: "[d3,g3,g4]@4 [b3,d4]@2 [d3,d4]@4 g3@2 [d3,g3,d4]@4 [g3,b3,g4]@2 [d3,b3,g4]@5 ~, [b3,d4]@3 ~ g3@5 ~@9 [g3,d4]@3 ~@3, ~@6 [b3,g4]@3 ~ [b3,g4]@6 ~@8", // G5 Bm D G5 G Bm G5 Em
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2
  B@2 A@2 B ~
>`.pickRestart({
  A: "~@12 c4@4 e4@5 ~@3", B: "~@12 b3@4 d4@5 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.7)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G H@2 I ~@6 J@2 ~@2 K@2 ~@2 L ~@7 M@2 ~@22 N O ~@30 P Q R@2 S T U V@3 ~@24
>`.pickRestart({
  A: "~@8 e4 d4 e4 g4", B: "b4@6 d5@3 ~@3 b4@4 a4@2 g4@3 ~ g4@2", C: "a4@4 b4@2 ~@6 e4@7 ~@3 c4 ~, ~@5 g4@3 ~@4",
  D: "~@4 g4@5 ~@3 g4@3 ~ b4@6 ~@2, e4@3 ~@2 e4@2 ~@5", E: "g4@4 e4@2 g4@4 e4@2 d4@7 ~@3 d5@2",
  F: "e5@4 ~@2 d5@3 ~@3 b4@4 a4@2 g4@3 ~ d4@2", G: "a4@4 b4@2 a4@4 g4@2 e4@7 ~@3 c4@2",
  H: "[e4@4 g4@6 e4@2 a4@6 ~@4 g4@11 ~ e4@2 d4@2 b3@2 a3@2 g3@4 e3@2, ~@3 e4 ~@4]/2", I: "g3@13 ~@11",
  J: "[~@6 b4@4 d5@5 ~@7 g4@20 ~@6, ~@16 d5@5 ~@27, ~@18 b4@13 ~@17]/2", K: "[~@18 c4@4 b3@21 ~@5, ~@16 g3@27 ~@5]/2",
  L: "~@5 [g4,b4]@7", M: "[~@3 c5@2 b4@3 g4 e4@2 d4@6 ~@7]/2", N: "~@3 b4@3 a4@2 g4 e4 g4 e4", O: "d4@5 ~@7",
  P: "~@4 e4@2 [d4,g4] ~, ~@3 d4@5 ~@4", Q: "[b4,d5]@3 ~@3 [b4,d5]@10 g4@2 d5@2 ~@4, ~@4 g4@5 ~@15",
  R: "[c5@3 ~ c5@2 b4@6 g4@4 e4@2 a4@4 g4@9 ~@5 b4@4 c5@2 b4@4 a4@2, ~@33 e4@2 ~@13, ~@34 g4@5 ~@9]/2",
  S: "g4 e4 g4 ~@3 e4@2 d4 b3@2 a3", T: "g3@2 e3 g3@2 e3 d3 e3 g3 a3 g3 e3", U: "g3@2 e3 a3@2 g3 a3 e3 g3 a3 g3 e3",
  V: "[g3@2 e3@2 g3@2 b3@2 e4@2 d4@2 g4@3 ~ g4 ~ b4@2 ~@2 g4@4 e4@2 d4@2 b3@3 ~ a3 ~ g3@4 e3@2 ~@4 d3@14 ~@12, ~@42 g3@13 ~@17]/3",
})).s("gm_acoustic_guitar_steel").gain(0.39)

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

// drums · snare
const snare = s("sd").struct("<~ A@23 B A@7 C A@39 D A@31 E A@16 ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x!2 ~@2", C: "~@3 x ~@4 x!2 ~ x", D: "~@3 x ~ x ~@2 x!2 ~@2", E: "~@3 x ~@3 x!5",
})).gain(0.3)

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

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~ x]!120 ~>").gain(0.3)

stack(
  bandoneon, bass, acoustic_guitar_steel, acoustic_guitar_nylon, acoustic_guitar_steel_2, kick, snare, hihat, tambourine
)

More by The Byrds