Strudelify

Sweet Georgia Brown

Atkins Chet

KeyE minorTempo200 bpm
0:00/0:00
// Sweet Georgia Brown — Atkins Chet
// 200 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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 · electric bass finger · "Bass"
const bass = note(`<
  A B A B A B C D E F E F G H G H I@2 J I D@2 K L E F E F G H G M E L E L A B C N E F E F G H G H I@2 J I D@2 K L E F E
  F G H G H E L E L A B C D E F E F G H G H I@2 J I D@2 K L E F E F G H G H E L E L A B A B A B C D@2 O
>`.pickRestart({
  A: "g2 f#2", B: "f2 e2", C: "a1 d2", D: "g2 d2", E: "e2 b1", F: "e2@8 b1@7 ~", G: "a1 e2", H: "a1@8 e2@7 ~",
  I: "d2 a2", J: "d2@8 a2@7 ~", K: "g2 e2", L: "b1 f#2", M: "a1 b1", N: "g2 b1", O: "g2@3 ~@4 g2@9",
})).s("gm_electric_bass_finger").gain(0.28)

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M@2 N O P Q R S H T U V W@4 M@2 X Y Z V Z V AA D G AB AC AD K L AE AF N O AG AH AI AJ H T AK V
  W@2 I J M@2 AL AM Z V Z V A F AN T W@2 I J N O AL AM P AO@2 AG H T AP V AC AD AC AD M@4 Z V Z V AQ B AR F AS AT AN H
  AU@2
>`.pickRestart({
  A: "[g2,b3,d4,f4,g4] [f#2,c#4,e4,f#4,a#4]", B: "~@4 [c4,d#4,f4,a4] ~@3 [e2,b3,d4,e4,g#4]@8, f2 ~",
  C: "~@4 [b3,d4,f4,g4] ~@7 [c#4,e4,f#4,a#4] ~@3, g2 f#2", D: "~@4 [c4,d#4,f4,a4] ~@7 [b3,d4,e4,g#4] ~@3, f2 e2",
  E: "[g2,b3,d4,f4,g4]@8 ~@4 [e4,f#4,a#4,c#5] ~@3, ~ f#2", F: "[f2,c4,d#4,f4,a4]@8 ~@4 [b3,d4,e4,g#4] ~@3, ~ e2",
  G: "[a2,c#4,e4,g4,a4]@8 ~@4 [c4,d4,f#4,a4] ~@3, ~ d3", H: "~@4 [g3,b3,d4] ~@7 [g3,b3,d4] ~@3, g2 d2",
  I: "~@4 [b3,d4,e4,g#4] ~@7 [b3,d4,e4,g#4] ~@3, e2 b1", J: "~@4 [b3,d4,e4,g#4] ~@7 [b3,d4,e4,g#4] ~@3, e2@8 b1@7 ~",
  K: "~@4 [b3,d4,e4,g#4] ~@7 [b4,d5]@2 ~ [e4,g#4], e2 e3", // E7 Bm E
  L: "~@4 [b3,d4,e4,g#4] ~@7 [b4,d5]@3 [e4,g#4], e2 e3, ~@12 g#4 ~@3", // E7 Bm E
  M: "[~@4 [c#4,e4,g4,a4] ~@3 e3@4 [c#4,e4,g4,a4]@3 ~@5 [c#4,e4,g4,a4] ~@3 e3@4 [c#4,e4,g4,a4] ~@3, a2@8 ~@7 e3@3 ~@14, ~@2 a2 ~]/2", // A7
  N: "~@4 [c#4,e4,g4,a4] ~@7 [a4,c#5]@2 ~ [e4,g4], a2 e3", // A7 A Em
  O: "~@4 [c#4,e4,g4,a4] ~@7 [a4,c#5]@3 [e4,g4], a2 e3, ~@12 g4 ~@3", // A7 A Em
  P: "~@4 [c4,d4,f#4,a4] ~@7 [c4,d4,f#4,a4] ~@3, d3 a2", Q: "~@4 [c4,d4,f#4,a4] ~@7 [d5,f#5]@2 ~ [a4,c5], d3 a3",
  R: "~@4 [c4,d4,f#4,a4] ~@7 [d5,f#5]@3 [a4,c5], d3 a3, ~@12 c5 ~@3", // D7 D Am
  S: "[d4,f#4,a4]@2 ~@2 e3@3 ~ f3@3 ~ [f#3,c4,d4,f#4,a4]@3 ~, d3 ~@3, c4 ~@15", // D D7
  T: "~@4 [g3,b3,d4] ~@7 [c4,d4,f#4,a4] ~@3, g2 d3", U: "~@4 [g3,b3,d4] ~@7 [b3,d4,e4,g4] ~@3, g2 e2",
  V: "~@4 [a3,b3,d#4,f#4] ~@7 [a3,b3,d#4,f#4] ~@3, b2 f#2", // B7
  W: "[~@4 [b3,d4,e4,g#4] ~@3 e3@4 [b3,d4,e4,g#4]@3 ~@5 [b3,d4,e4,g#4] ~@3 e3@4 [b3,d4,e4,g#4] ~@3, e2@8 ~@7 e3@3 ~@14, ~@2 e2 ~]/2", // E7
  X: "~ e3, a2 ~, ~ [c#4,e4,g4,a4]@3", Y: "[a2,c#4,e4,g4,a4]@8 b2@4 [a3,b3,d#4,f#4] ~@3",
  Z: "~@4 [g3,b3,e4] ~@7 [g3,b3,e4] ~@3, e2 b1", AA: "~@4 [b3,d4,f4,g4] ~@7 [e4,f#4,a#4,c#5] ~@3, g2 f#2",
  AB: "~@4 [g3,b3,d4] ~@7 [a3,b3,d#4,f#4] ~@3, g2 b2", AC: "~@4 [b3,d4,e4,g#4] ~@7 [b3,d4,e4,g#4] ~@3, e2@7 ~ b1@8",
  AD: "~@4 [b3,d4,e4,g#4] ~@7 [b3,d4,e4,g#4] ~@3, e2@4 b1@3 ~", AE: "~@4 [c#4,e4,g4,a4] ~@7 [c#4,e4,g4,a4] ~@3, a2 e2",
  AF: "~@4 [c#4,e4,g4,a4] ~@7 [c#4,e4,g4,a4] ~@3, a2@8 e2@7 ~", // A7
  AG: "~@4 [c4,d4,f#4,a4] ~@7 [c4,d4,f#4,a4] ~@3, d3@7 ~ a2@8", // D7
  AH: "~@4 [a3,c4,d4,f#4] ~@7 [a3,c4,d4,f#4] ~@3, d3@7 ~ a2@8", // D7
  AI: "~@4 [a3,c4,d4,f#4] ~@7 [a3,c4,d4,f#4] ~@3, d3@4 a2@3 ~", AJ: "~ a3, d3 ~, ~ [c4,d4,f#4,a4]@3",
  AK: "~@4 [g3,b3,d4] ~@3 [e2,b3,d4,e4,g4]@8, g2 ~", AL: "~@4 [c#4,e4,g4,a4] ~@7 [c#4,e4,g4,a4] ~@3, a2@7 ~ e2@8",
  AM: "~@4 [c#4,e4,g4,a4] ~@7 [c#4,e4,g4,a4] ~@3, a2@4 e2@3 ~", AN: "~@4 [c#4,e4,g4,a4] ~@7 [c4,d4,f#4,a4] ~@3, a2 d3",
  AO: "[~@4 [c4,d4,f#4,a4] ~@3 a3@4 [c4,d4,f#4,a4]@3 ~@5 [c4,d4,f#4,a4] ~@3 a3@4 [c4,d4,f#4,a4] ~@3, d3@8 ~@7 a3@3 ~@14, ~@2 d3 ~]/2", // D7
  AP: "[g2,g3,b3,d4]@8 ~@4 [b3,d4,e4,g4] ~@3, ~ e2", AQ: "~@4 [b3,d4,f4,g4] ~@3 [f#2,c#4,e4,f#4,a#4]@8, g2 ~",
  AR: "[g2,b3,d4,f4,g4]@8 ~@4 [c#4,e4,f#4,a#4] ~@3, ~ f#2", AS: "~@4 [b3,d4,f4,g4] ~@7 [a#3,c#4,e4,f#4] ~@3, g2 f#2",
  AT: "[f2,c4,d#4,f4,a4] [e2,b3,d4,e4,g#4]", AU: "[[g3,b3,d4]@14 ~@2 [g3,b3,d4]@2 ~@5 [g3,b3,d4]@9, g2]/2",
})).s("gm_piano").gain(0.24)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M N M N O P Q P R S T U I J V W X@2 Y Z AA U AB U AC AD AE AF V@2 K L X@4 O P Q AG AH AI AJ U
  I J V W M N Y AK AB AL AM U AN AD AE AO V@4 X@2 Y AK AG@4 AP AQ AR U V@2 I J M N Y AK AB AS AM AS AT AU AT AV AW AV AE
  H AX AY
>`.pickRestart({
  A: "[f3,b3]@2 ~@2 [f3,b3] ~@3 [e3,a#3]@4 [e3,a#3] ~@3", B: "[d#3,a3]@4 [d#3,a3] ~@3 [d3,g#3]@4 [d3,g#3] ~@3",
  C: "[f3,b3]@4 [f3,b3] ~@3 [e3,a#3]@4 [e3,a#3] ~@3", D: "[d#3,a3]@3 ~ [d#3,a3] ~@3 [d3,g#3]@4 [d3,g#3] ~@3",
  E: "[f3,b3]@3 ~ [f3,b3] ~@3 [e3,a#3]@2 ~@2 [e3,a#3] ~@3", F: "[d#3,a3]@4 [d#3,a3] ~@3 [d3,g#3]@3 ~ [d3,g#3] ~@3",
  G: "[c#3,g3]@3 ~ [c#3,g3] ~@3 [f#3,c4]@4 [f#3,c4] ~@3", H: "[g3,d4]@4 [g3,d4] ~@3 [g3,d4]@4 [g3,d4] ~@3",
  I: "[d3,g#3]@4 [d3,g#3] ~@3 [d3,g#3]@4 [d3,g#3] ~@3", J: "[d3,g#3]@4 g#3 ~@3 [d3,g#3]@4 [d3,g#3] ~@3",
  K: "[d3,g#3]@4 [d3,g#3] ~@3 [d3,g#3]@4 [d3,g#3]@2 ~@2", L: "[d3,g#3]@4 [d3,g#3]@2 ~@2 [d3,g#3]@3 ~ [d3,g#3]@2 ~@2",
  M: "[c#3,g3]@4 [c#3,g3] ~@3 [c#3,g3]@4 [c#3,g3]@2 ~@2", N: "[c#3,g3]@4 [c#3,g3]@2 ~@2 [c#3,g3]@3 ~ [c#3,g3]@2 ~@2",
  O: "[f#3,c4]@2 ~@2 [f#3,c4] ~@3 c4@2 ~@2 [f#3,c4] ~@3", P: "[f#3,c4]@4 [f#3,c4] ~@3 [f#3,c4]@4 [f#3,c4] ~@3",
  Q: "[f#3,c4]@4 c4 ~@3 [f#3,c4]@4 [f#3,c4] ~@3", R: "~@4 [g3,d4] ~@7 [g3,d4] ~@3",
  S: "[g3,d4]@2 ~@2 [g3,d4] ~@3 [f#3,c4]@3 ~ [f#3,c4] ~@3", T: "[g3,d4]@4 [g3,d4] ~@3 [d3,g3]@2 ~@2 [d3,g3] ~@3",
  U: "[d#3,a3]@2 ~@2 [d#3,a3] ~@3 a3@2 ~@2 [d#3,a3] ~@3", V: "~@4 [d3,g#3] ~@7 [d3,g#3] ~@3",
  W: "~@4 [d3,g#3] ~@3 [d3,g#3] ~@3 [d3,g#3] ~@3", X: "~@4 [c#3,g3] ~@7 [c#3,g3] ~@3",
  Y: "[c#3,g3]@4 [c#3,g3] ~@3 [c#3,g3]@4 [c#3,g3] ~@3", Z: "[c#3,g3]@2 ~@2 [c#3,g3] ~@3 [d#3,a3]@2 ~@2 [d#3,a3] ~@3",
  AA: "[e3,b3]@2 ~@2 [e3,b3] ~@3 b3@2 ~@2 [e3,b3] ~@3", AB: "[e3,b3]@4 [e3,b3] ~@3 [e3,b3]@4 [e3,b3]@2 ~@2",
  AC: "[f3,b3]@3 ~ [f3,b3] ~@3 [e3,a#3]@4 [e3,a#3] ~@3", AD: "[d#3,a3]@2 ~@2 [d#3,a3] ~@3 [d3,g#3]@3 ~ [d3,g#3] ~@3",
  AE: "[c#3,g3]@4 [c#3,g3] ~@3 [f#3,c4]@2 ~@2 [f#3,c4] ~@3", AF: "[g3,d4]@2 ~@2 [g3,d4] ~@3 [d#3,a3]@4 [d#3,a3] ~@3",
  AG: "~@4 [f#3,c4] ~@7 [f#3,c4] ~@3", AH: "[g3,d4]@4 [g3,d4] ~@3 [g3,d4]@4 [g3,d4]@2 ~@2",
  AI: "[g3,d4]@2 ~@2 [g3,d4] ~@3 [f#3,c4]@4 [f#3,c4] ~@3", AJ: "[g3,d4]@2 ~@2 [g3,d4] ~@3 [d3,g3]@3 ~ [d3,g3] ~@3",
  AK: "[c#3,g3]@4 g3 ~@3 [c#3,g3]@4 [c#3,g3] ~@3", AL: "[d#3,a3]@4 [d#3,a3] ~@3 [d#3,a3]@4 [d#3,a3] ~@3",
  AM: "[e3,b3]@4 [e3,b3] ~@3 [e3,b3]@4 [e3,b3] ~@3", AN: "[f3,b3]@4 [f3,b3] ~@3 [e3,a#3]@2 ~@2 [e3,a#3] ~@3",
  AO: "[g3,d4]@3 ~ [g3,d4] ~@3 [f#3,c4]@4 [f#3,c4] ~@3", AP: "[g3,d4]@2 ~@2 [g3,d4] ~@3 d4@2 ~@2 [g3,d4] ~@3",
  AQ: "[g3,d4]@4 [g3,d4] ~@3 [f#3,c4]@2 ~@2 [f#3,c4] ~@3", AR: "[g3,d4]@3 ~ [g3,d4] ~@3 [d3,g3]@4 [d3,g3] ~@3",
  AS: "[d#3,a3]@4 [d#3,a3] ~@3 [d#3,a3]@4 [d#3,a3]@2 ~@2", AT: "[f3,b3]@4 [f3,b3] ~@3 [e3,a#3]@3 ~ [e3,a#3] ~@3",
  AU: "[d#3,a3]@2 ~@2 [d#3,a3] ~@3 [d3,g#3]@4 [d3,g#3] ~@3", AV: "[d#3,a3]@4 [d#3,a3] ~@3 [d3,g#3]@2 ~@2 [d3,g#3] ~@3",
  AW: "[f3,b3]@2 ~@2 [f3,b3] ~@3 [e3,a#3]@3 ~ [e3,a#3] ~@3", AX: "~@4 [b2,g3] ~@7 [b2,g3] ~@3",
  AY: "[b2,g3] ~@6 [b2,g3]@8 ~", // Em
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// drums · kick
const kick = s("bd").struct("<[x!2]!109 [x ~@6 x ~@8]>").gain(0.27)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@8 A@2 ~ A ~@17 A ~@11 A ~@3 A ~ A ~ A@2 ~@6 A ~ A ~@13 A ~ A ~@6 A ~@5 A ~@4 A ~@16
>`.pickRestart({
  A: "~@7 x ~@7 x",
})).gain(0.09)

// drums · crash
const crash = s("cr").struct("<~@6 A ~ A ~@40 A ~@38 A ~@21>".pickRestart({
  A: "x",
})).gain(0.13)

// drums · ride
const ride = s("rd").struct("<A@6 B A ~@12 A@4 ~@8 A@8 ~@12 A@4 ~@8 A@8 ~@12 A@4 ~@8 A@13 C>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "~@4 x ~@2 x!2 ~@3 x ~@2 x", C: "x ~@2 x!2 ~@2 x ~@8",
})).gain(0.22)

stack(bass, piano, acoustic_guitar_nylon, kick, snare, hihat, hihat_soft, crash, ride)

More by Atkins Chet