Strudelify

Pickin' My Way

Atkins Chet

KeyC majorTempo113 bpm
0:00/0:00
// Pickin' My Way — Atkins Chet
// 113 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 28 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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 · banjo
const banjo = note("<~ A@3 B@3 C D E@3 F@2 G H I J K E@3 F@2 G H L M>".pickRestart({
  A: "[~ e4@2 [g3,c4,e4]@2 e4 c4@3 [c4,e4]@2 ~ c4@2 ~ [c4,e4]@2 [c4,e4] c4@2 [c4,e4] [c4,e4]@2 e4 [g3,c4,e4]@3 ~@2 c4 ~ c4@2 [g3,c4,e4]@2 e4 ~@3 e4@2 [e3,g3] ~@3 [c4,e4]@2 [g3,c4,e4] c4@3 [c4,e4]@2 c4 [g3,c4]@2 [c4,e4] [g3,c4,e4]@2 ~ c4@2 ~ c4@2 e4 [g3,c4,e4]@2 e4 [g3,c4,e4]@2 [b3,e4], [g3,c4]@3 ~@3 e3@12 e3@10 e3@2 e3@6 [e3,g3,c4]@6 e3@18 e3@11 ~, ~@6 g3@5 e4@4 ~@38 e4@3 ~@3 e4@4 e4 ~@8, ~@12 g3@6 g3@6 ~@3 [g3,c4,e4]@3 g3@2 ~@11 g3@4 ~ g3@6 ~@6 g3@5 ~@7]/3", // C Em C C5 C E5 C5 C
  B: "[b3@3 [b3,f4]@2 f4 [b3,f4]@3 [b3,f4]@2 f4 [b3,f4]@3 [g3,b3,f4]@2 ~ [g3,b3]@3 [g3,b3,f4]@2 b3 b3@3 b3@3 g3@3 [g3,b3,f4]@2 f4 [g3,b3]@3 [g3,b3,f4]@2 ~@4 [g3,b3]@2 ~ g3@3 [b3,f4]@3 b3@2 f4 [g3,b3,f4]@2 f4 [g3,b3,f4]@3 [g3,b3,f4]@2 ~ [g3,b3]@2 b3 [e3,g3]@3, g3@6 g3@9 ~@2 f4@4 ~@2 f4@4 f4@5 ~@9 f4@3 e3@3 ~ d3@21 ~@3, ~@24 d3@12 d3@7 b3@2 f4 ~ f4@4 ~@3 f4 ~@10 f4@3 f4@4, ~@8 g3@2 ~@4 g3 ~@2 g3@2 ~@5]/3", // Bdim G7 G G7 G G7 G Bdim …
  C: "~ b3@2 [b3,f4]@2 f4 [b3,f4]@2 f4 [g3,b3,f4]@2 f4 [g3,b3]@3 [g3,b3,f4]@2 f4 [g3,b3,f4]@3 [g3,b3,f4]@2 [b3,e4], d3@23 ~, g3@3 ~@5", // Bdim G7 G G7 E5
  D: "[g3,c4]@3 [g3,c4,e4]@2 c4 g3@3 [g3,c4,e4]@2 e4 [e3,g3,c4]@2 e4 [g3,c4,e4]@2 [g3,e4] [g3,c4,e4]@2 [c4,e4] [c4,e4]@2 [g3,c4,e4], e3@5 e4@4 ~@11 g3@3 ~, ~@2 e3@2 ~ e3@3", // C5 C
  E: "[g3@3 [g3,c4,e4]@3 ~ c4@2 [c4,e4]@2 [g3,c4] [e3,g3,c4]@3 [g3,c4,e4]@2 [g3,e4] [c4,e4]@2 [c4,e4] [c4,e4]@2 e4 [g3,c4,e4]@3 [g3,c4,e4]@2 e4 ~ e4@2 [g3,c4,e4]@2 c4 [g3,c4]@3 [g3,c4,e4]@2 e4 [g3,c4]@2 [c4,e4] [g3,c4,e4]@2 e4 [g3,c4]@3 [g3,c4,e4]@2 e4 [g3,c4]@2 [c4,e4] [g3,c4,e4]@2 e4 [a#3,c4,e4]@3 [a#3,c4,e4]@2 [c4,e4] [a#3,c4,e4]@2 [c4,e4] [e3,a#3,e4] ~ [a3,f4], e3@12 a#2 ~@2 e3@15 e3@27 ~@15, ~@6 g3@5 e4@4 ~@3 g3@6 ~@6 [g3,c4]@3 ~@9 e4 ~@11 e4 ~@14 c4@2 ~]/3", // C C5 C C5 C C5 C C5 …
  F: "[[c4,f4]@3 [c4,f4]@2 [c4,f4] [a3,c4,f4]@3 [a3,c4,f4]@2 [c4,f4] [a3,c4,f4]@3 [c4,f4]@2 f4 c4@2 [c4,f4] [a3,c4,f4]@2 f4 c4@3 [c4,f4]@2 f4 [a3,c4]@2 [c4,f4] [a3,c4,f4] ~ d#4 [a3,d#4,f#4]@3 [a3,d#4,f#4]@2 [d#4,f#4] [a3,d#4]@2 [d#4,f#4] [f#3,a3,d#4,f#4] [c#4,d4] [g3,b3], a3@6 ~@9 a3@6 f3@6 f3@7 ~@2 f#3@8 ~@4, ~@18 f4 ~@5 a3@6 f4 ~@11 f#4 ~@5]/2", // F5 F F5 F F5 F F5 Am …
  G: "[c4,e4]@3 [c4,e4]@2 [c4,e4] [c4,e4]@2 [c4,e4]!2 ~ [b3,e4] e4@3 [g3,c#4,e4]@2 e4 [g3,c#4]@2 [g3,c#4,e4] [g3,e4]@2 e4, e3@6 e3@5 ~, g3@9 g3@2 ~ c#4 ~@5 e4 ~@2 c#4 ~@2", // C E5 C#dim Gdim C#dim C
  H: "[c4,f#4]@3 [c4,f#4]@2 f#4 [c4,f#4]@2 f#4 [c4,f#4] b3 [b3,f4] [g3,b3,f4]@3 [b3,f4]@2 f4 [b3,f4]@2 f4 [g3,b3]@2 e4, d3@23 ~, a3@10 ~@5 g3@6 f4 ~@2", // Cdim Bdim G7 Bdim G
  I: "c4 ~@2 e4@3 e4@2 e4 [g3,c4,e4]@2 e4 [e3,g3]@2 [c4,e4] [e3,g3,c4,e4]@2 c4 g3@3 e4 c3 f4, c3@11 ~, e3 ~, g3@3 ~@4 [g3,c4], ~@3 c4@6 ~@3 c4 ~@4 e4@4 ~@3", // C Em C C5
  J: "c4@3 [c4,f4]@2 f4 [a3,c4,f4]@2 [a3,f4] [a3,c4,f4]@2 [g3,c4,f4] ~ c4@2 [c4,e4]@2 [c4,e4] [c4,e4]@2 e4 [g3,c4,e4]@2 [c4,e4], a3@6 ~@6 e3@11 ~, ~@4 g3@3 ~", // F5 F Dm F Csus4 C
  K: "[a3,c4]@3 f#4@2 f#4 f#4@2 [c4,f#4] f#4 e4 [g3,c4,e4] [b3,g4]@2 g4 [b3,g4]@3 [g3,b3,g4]@2 g4 [g3,b3]@2 e4, f#4 ~@2 a3@7 ~@2 d3@11 ~, ~@3 c4@5 ~ c4@2 ~ g3@6 ~@3 g4 ~@2, ~@12 b2 ~@11", // Am Cdim C Em G
  L: "c4@3 [g3,c4,e4]@2 e4 [g3,c4]@2 e4 [g3,c4,e4]@2 [c4,e4] [g3,c4,e4]@2 [c4,e4] [g3,c4,e4]@2 e4 ~ e4@2 ~@3, e3@2 e3@2 e3@3 ~, ~@6 e4 ~@11 [g3,c4]@3 ~@3", // C C5 C C5
  M: "~@14 [d3,g3,b3] [d3,g3,b3,g4]@3 [c3,e3,g3,c4,e4]@5 ~, ~@15 a#2 ~@8", // G C
})).s("gm_banjo").gain(0.22).pan(0.1)

// chords · banjo · soft notes
const banjo_soft = note("<~ A B C D E F G H I J K L M N O P Q R I J K L M N O S ~>".pickRestart({
  A: "~@2 c2 e3!2 [b2,e3] e4@3 ~@9 e4@2 ~@4, ~ c3@2 c3@2 ~@19", B: "~ c3@3 ~@3 e4@2 ~@3 e4 c3@3 ~@2 e4 [c4,e4]@2 ~@3",
  C: "c3@3 ~@17 g3 ~@3", D: "f4 ~@7", E: "~@3 a2 ~@2 b3@2 f4 ~@3 f4@3 ~ b2 ~@7, ~@6 b2@5 ~@13",
  F: "b3 b3@2 ~@5 b3 ~@15", G: "f4@3 ~ a2@2 ~@2 b3 ~@3 f4@3 ~@9", H: "c3 c2 [c2,c3] c3 ~ a2 ~ c4@2 ~@3 e4 c3 ~@10",
  I: "~ c4@2 c3 a1@2 ~ e4@2 ~@4 c3@3 a1@2 ~@6, e4 ~@7", J: "~ c3@3 ~@8 e4@2 c3 ~@9",
  K: "~ c3@3 ~@8 c3 ~@2 c3 ~ a#3 ~@2 c3@2 ~ g3, e4@3 ~@13 c3@4 ~@4", L: "f3@13 ~@11",
  M: "f4@3 ~@8 [f#3,d4] ~@8 f#3 ~@3", N: "~ [c2,c3] ~ c3@4 c3 ~ c2 a2@2 g3@3 ~@3 a1@2 ~@2 b3@2", O: "~@11 [g3,a3] ~@12",
  P: "~@13 e4 ~@5 c4@2 ~@3", Q: "~@12 c3@3 c3@2 ~ c3@5 a2", R: "a2@5 ~@6 [d3,d#3] ~@12",
  S: "~ g3@2 ~ a2@2 ~@2 c4 ~@3 c2 [c2,c3] c3@7 ~@3, e4 ~@7", // C
})).s("gm_banjo").gain(0.14).pan(0.1)

// bass · slap bass 1 · "SLAPBASS 1"
const bass = note("<A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB>".pickRestart({
  A: "c2@3 ~@12 g1@2 ~ a1@2 ~ b1@2 ~", B: "c2@3 ~@3 g1@2 ~@4 c2@3 ~@3 g1@3 ~@3",
  C: "c2@3 ~@3 g1@3 ~@3 c2@3 ~@3 g1@2 ~ a1@2 ~", D: "c2@2 ~@4 g1@3 ~@3 c2@3 ~@3 c2@3 ~@3",
  E: "g1@4 ~@2 d2@3 ~@3 g1@3 ~@3 d2@3 ~@3", F: "g1@3 ~@3 d2@2 ~@4 g1@3 ~@3 d2@3 ~@3",
  G: "g1@3 ~@3 d2@4 ~@2 g2@3 ~@3 d2@2 ~@4", H: "g1 ~@2 d2@2 ~ g2@2 ~ g1@2 ~",
  I: "c2@3 ~@3 g1@3 ~@3 c2@2 ~ g1@2 ~ a1@2 ~ b1@2 ~", J: "c2 ~ g1 ~ c2 ~ g1 ~",
  K: "c2@2 ~@4 g1@3 ~@3 c2@3 ~@3 g1@3 ~@3", L: "c2@3 ~@3 g2@6 c2@3 ~@3 g1@4 ~@2",
  M: "f1@3 ~@3 c2@3 ~@3 f2@4 ~@2 c2@2 ~@4", N: "f1@3 ~@3 f1@3 ~@3 f#1@3 ~@3 f#1@2 ~@4",
  O: "g1@4 ~@2 g1@3 ~@3 a1@4 ~@2 a1@3 ~@3", P: "d2 ~ d2 ~ g1 ~ g1 ~",
  Q: "c2@3 ~@3 g1@3 ~@3 c2@2 ~ c2@2 ~ d2@2 ~ e2@2 ~", R: "f2@4 ~@2 f2@4 ~@2 c2@6 c2@3 ~@3",
  S: "d2@6 d2@5 ~ g1@6 g1@2 ~ f#1@2 ~", T: "c2@3 ~@3 g1@3 ~@3 c2@2 ~@4 g1@3 ~@3",
  U: "c2@2 ~@4 g1@3 ~@3 c2@2 ~@4 g1@2 ~ a1@2 ~", V: "c2@3 ~@3 a#1@3 ~@3 a1@3 ~@3 g1@4 ~@2",
  W: "f1@4 ~@2 c2@3 ~@3 f2@3 ~@3 c2@3 ~@3", X: "f1@5 ~ f1@4 ~@2 f#1@5 ~ f#1@4 ~@2", Y: "g1@5 ~ g#1@6 a1@6 c#2@6",
  Z: "d2@6 d2@4 ~@2 g1@6 a1@2 ~ b1@2 ~", AA: "c2@5 ~ g1@6 c2@2 ~ g1@3 c2@3 ~@3", AB: "~@15 g1@2 ~ c2@4 ~@2",
})).s("gm_slap_bass_1").gain(0.72).pan(0.7)

// chords · piano · "A.PIANO 2"
const piano = note("<A B@3 C D@2 E F B@2 G H I J K L M N O P Q R S T U V W>".pickRestart({
  A: "[c3,e3,g3,c4]@2 ~@13 g2 ~@2 a2 ~@2 b2 ~@2", B: "~@3 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [g3,c4,e4] ~@2",
  C: "~@3 [g3,d4,f4] ~@5 [g3,d4,f4] ~@5 [g3,d4,f4] ~@5 [g3,c#4,e4]@2 ~", // G7 C#dim
  D: "~@3 [g3,d4,f4] ~@5 [g3,d4,f4] ~@5 [g3,d4,f4] ~@5 [g3,d4,f4] ~@2", // G7
  E: "~@3 [b3,d4,g4] ~@5 [b3,d4,g4] ~@5 [g3,d4,f4] ~@5 [g3,d4,f4] ~@2", // G G7
  F: "~@3 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [g3,b3,d#4]@2 ~", // C Gaug
  G: "~@3 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [a#3,e4,g4] ~@5 [a#3,e4,g4] ~@2", // C Edim
  H: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [c4,f4]@4 ~@2 [d4,f4] ~@2, ~@15 a3@2 ~@7", // F F5 Dm
  I: "~@3 [a3,c4,f4] ~@5 [a3,c4,f4] ~@5 [c4,d#4,f#4] ~@5 [a3,c4,d#4] ~@2", // F Cdim Adim
  J: "~@3 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [g3,c#4,e4] ~@5 [g3,c#4,e4] ~@2", // C C#dim
  K: "~@3 [f#3,c4] ~@5 [f#3,c4] ~@5 [f3,b3,d4] ~@5 [f3,b3,d4] ~@2", // F#dim Bdim
  L: "~@3 [g3,c4,e4] ~@5 [g3,c4,e4] ~@5 [c3,g3,c4,e4] ~@2 d3 ~@2 [e3,g3,c4,e4] ~@2", // C
  M: "f2 ~@2 [c4,f4,a4] ~@2 f3 ~@2 [c4,f4,a4] ~@2 c3 ~@2 [c4,e4,g4] ~@2 c3 ~@2 [c4,e4,g4] ~@2", // F C
  N: "d3 ~@2 [f#3,c4,d4] ~@2 d3 ~@2 [f#3,c4,d4] ~@2 g2 ~@2 [d4,g4,b4]@3 g3 ~@2 [d4,g4,b4] ~@2, ~@15 f#4 ~@8", // D7 G
  O: "c3 ~@2 [c4,e4,g4]@3 g2 ~@2 [c4,e4,g4] ~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@2", // C
  P: "c3 ~@2 [c4,e4,g4] ~@2 g2 ~@2 [c4,e4,g4] ~@2 c3 ~@2 [c4,e4,g4] ~@5 [c4,e4,g4] ~@2", // C
  Q: "c3 ~@2 [e4,g4] ~@5 [b3,e4,g4] ~@2 c3 ~@2 [a#3,e4] ~@2 c3 ~@2 [a#3,e4,g4] ~@2, c4@5 ~@19", // Em A#dim Edim
  R: "f2 ~@2 [a3,c4,f4]@3 f3 ~@2 [a#3,d4,f4] ~@2 f2 ~@2 [a3,c4,f4]@3 f3 ~@2 [a#3,d4,f4] ~@2", // F A# F A#
  S: "f2 ~@2 [a3,c4,f4] ~@2 f2 ~@2 [a3,c4,f4] ~@2 f#2 ~@2 [a3,c4,d#4] ~@5 [a3,c4,d#4] ~@2", // F Adim
  T: "g2 ~@2 [g3,c4,e4] ~@2 g2 ~@2 [g3,c4,e4] ~@2 a2 ~@2 [g3,c#4,e4] ~@2 c#3 ~@2 [g3,c#4] ~@2", // C C#dim Gdim
  U: "d3 ~@2 [f#3,c4,d4] ~@2 d2 ~@2 [f#3,c4]@2 ~ g2 ~@2 [f3,b3,d4] ~@2 g2 ~@2 [f3,b3,d4] ~@2, ~@9 d4 ~@14", // D7 F#dim Bdim
  V: "c3 ~@2 [a2,g3,c4,e4] ~@2 g2 ~@2 [e2,g3,c4,e4] ~@2 c2 ~@2 g2 ~@2 [c2,g3,c4,e4] ~@5", // Am7 C
  W: "~@14 [g2,g3,b3,d#4]@3 ~ [c2,g3,c4,e4]@6", // Gaug C
})).s("gm_piano").gain(0.49).pan(0.9)

// drums · kick
const kick = s("bd").struct("<[x!4]!27 [~@2 x!2]>").gain(0.56)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x ~ x ~ x]!26 [~ x ~ x ~ x ~@2] [~@5 x ~@2]>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!26 [x!7 ~] [x ~ x ~@2 x!2 ~]>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 [~@7 x] ~@3 [~@7 x] ~@5>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~@7 x] ~@19>").gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@22 [~@3 x] ~@5>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@19 x ~@8>").gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@17
  [~ x ~ x ~ x ~ x]!5
  [~ x ~ x ~ x ~@2]
  [~ x ~ x ~ x ~ x]!3
  [~ x ~ x ~ x!2 ~]
  [~@5 x!2 ~]
>`).gain(0.72)

stack(banjo, banjo_soft, bass, piano, kick, snare, hihat, mid_tom, open_hat, high_tom, crash, tambourine)

More by Atkins Chet