Strudelify
Atomic cover art

Eat To The Beat

Atomic

Blondie

KeyD minorTempo129 bpm
0:00/0:00
// Atomic — Blondie
// 129 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 33 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(129/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, A@4 for four bars: edit a riff to change every repeat.

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~ A@4 B@2 C@4 D@2 E@2 F G H@2 I@2 J@4 H@2 I@2 J@4 H@2 I@2 K@4 L@4 M@3 ~ A@4 B@2 C@4 D@2 E@2 F G H@2 I@2 J@4 H@2 I@2
  K@4 N@7 ~ O@4 P@2 Q@2 R@2 S@2 T@2 U V@3 W@2 X@2 U Y Z@3 AA E@2 AB@4 AC AA AD@2 AE@8 AF@5
>`.pickRestart({
  A: "[a3@32 bb3@31 ~, [d4,f4]@63 ~]/4", B: "[[g3,b3,d4]@31 ~, c4 ~@31]/2",
  C: "[[g3,c4]@16 db4@15 ~ [d4,f4]@32, e4@31 ~@33, d4 ~@15 a3@47 ~]/4", D: "[[bb3,d4,f4]@31 ~]/2", E: "[g3,b3,d4]/2",
  F: "[g3,c4,e4]@15 ~", G: "[a3,db4,e4]", H: "[[a3,d4,gb4]@31 ~]/2", I: "[[a3,bb3,b3] b3@30 ~, [e4,g4]@15 ~]/2",
  J: "[[g3,c4] [a3,db4], e4@63 ~]/4", K: "[[g3,c4]@31 ~ [a3,db4]@31 ~, e4@63 ~]/4",
  L: "[[a3,f4]@31 ~ [g3,e4]@30 ~@2, c4@63 ~]/4", M: "[[a3,d4,f4]@31 ~ [g3,b3]@16, ~@31 d4@17]/3",
  N: "[[a3,f4]@31 ~ [g3,e4]@30 ~@2 [d4,f4]@31 ~ b3@16, c4@63 a3@31 ~ [g3,d4]@17]/7", // Dm C Dm G5
  O: "[a3@32 bb3@31 [c4,d4], [d4,f4]@63 ~]/4", P: "[[g3,b3,d4]@31 ~]/2",
  Q: "[[g3,c4]@15 a3 a3@16, e4@31 ~, d4 ~@15 db4@14 ~@2, ~@16 b3 ~@15]/2", R: "[[a3,d4,f4]@31 ~, db4 ~@31]/2",
  S: "[[d4,f4]@29 ~@2 [c4,d4], bb3@31 ~]/2", T: "[[gb3,g3] g3@30 [c4,e4], [b3,d4]@31 ~]/2",
  U: "[g3,c4,e4]@15 a3, d4 ~@15", V: "[[db4,e4]@15 ~ [d4,f4]@31 ~, a3]/3", W: "[[bb3,d4,f4]@31 [c4,d4]]/2",
  X: "[[b3,db4] b3@30 ~, [g3,d4]]/2", Y: "[a3,e4], db4@7 ~", Z: "[[a3,d4]@31 ~ [bb3,d4]@16, f4]/3",
  AA: "[bb3,d4,f4]@15 [c4,d4]", AB: "[[g3,c4]@15 a3 db4@15 d4 [d4,f4]@31 ~, e4@31 ~@33, d4 ~@15 a3@47 ~]/4",
  AC: "[bb3,d4,f4]", AD: "[[g3,b3,d4]@31 e4]/2",
  AE: "[[g3,c4]@15 a3 db4@15 d4 d4@31 ~ [bb3,d4]@31 [b3,c4] b3@31 g3, e4@31 ~ f4@62 ~@34, d4 ~@15 a3@47 ~@32 [g3,d4]@32 ~]/8", // C5 Bb Cmaj7 G5
  AF: "[c4@15 a3 db4@15 d4 [d4,f4]@41 ~@7, e4@31 ~@49, d4 ~@15 a3@57 ~@7]/5", // Dm
})).s("gm_synth_strings_2").gain(0.51)

// bass · electric bass finger
const bass = note(`<
  ~ A@2 B@2 C@2 D E F A B@2 C@2 D E A@2 G@2 D@2 E H A@2 G@2 D@2 E H A@2 G@2 D@2 E I J@2 D@2 A@2 K L A@2 B@2 C@2 D E F A
  B@2 C@2 D E A@2 G@2 D@2 E H A@2 G@2 D@2 E M J@2 D@2 A@2 K L A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2
  C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E N ~@2
>`.pickRestart({
  A: "d2@2 d3!2 d2@2 d3!2 d2@2 d3!2 d2@2 d3!2", B: "bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2 bb1@2 bb2!2",
  C: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 g1@2 g2!2", D: "c2@2 c3!2 c2@2 c3!2 c2@2 c3!2 c2@2 c3!2",
  E: "a1@2 a2!2 a1@2 a2!2 a1@2 a2!2 a1@2 a2!2", F: "d2@2 d3@2 ~@2 d3!2 d2@2 d3!2 d2@2 d3!2, ~@5 d2@2 ~@9",
  G: "e2@2 e3!2 g2@2 g3!2 b2@2 b3@2 d2@2 d3@2", H: "a1 a2 b1 b2 c2 c3 db2 db3", I: "a2 a3 b1 c3 c2 c3 e2 e3",
  J: "f2@2 f3!2 f2@2 f3!2 f2@2 f3!2 f2@2 f3!2", K: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 g1@2 g2!2, gb1 ~@15", L: "g1 ~@15",
  M: "a2 a3 b1 b2 c2 c3 e2 e3", N: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.51)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  A B@6 C D B@6 C E ~@31 A B@6 C D B@6 C E ~@23 A B@6 C D B@6 C D ~@15 A B@6 C D B@6 C D F@2 ~
>`.pickRestart({
  A: "~@3 a3 f4 e4@3", B: "[d4@11 a3 f4 e4@3]/2", C: "g4", D: "a4@3 a3 f4 e4@3", E: "a4", F: "[d4@11 ~@5]/2",
})).s("gm_lead_8_bass_lead").gain(0.51)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note("<~@17 A@2 B@2 C@6 B@2 D@6 E@8 F@4 G ~@17 H@4 I@6 J@2 K@8 L@2 G ~@52>".pickRestart({
  A: "[[a3,d4,gb4]@31 ~]/2", B: "[a3 [b3,e4,g4]@29 ~@2]/2",
  C: "[gb4 ~@31 db4@31 ~ d4@31 ~, [g3,c4]@32 a3@63 ~, ~ e4@62 ~@33]/6", // C5
  D: "[gb4 ~@31 db4@31 ~ [d4,gb4]@31 ~, [g3,c4]@32 a3@63 ~, ~ e4@62 ~@33]/6", // D C5
  E: "[[b3,e4,g4]@30 ~@2 c4@32 db4@31 ~ [c4,f4]@32, ~@31 g3@32 ~ a3@63 ~, ~@16 e4@31 ~@17]/8", // Em F5
  F: "[e4@31 ~@2 f4@29 ~@2, g3@29 ~@2 a3@32 ~, ~@16 d4@15 ~]/4", G: "[g3,b3,d4]",
  H: "[[a3,d4,gb4]@31 ~@2 g4@30 ~, ~@31 b3@31 ~@2, ~@32 e4@31 ~]/4", // D
  I: "[[g3,c4]@31 ~ db4@31 ~ [d4,gb4]@31 ~, e4@21 ~@11, ~@32 a3@63 ~]/6", J: "[[b3,e4,g4]@15 ~]/2",
  K: "[[g3,c4]@31 ~ db4@30 ~@2 f4@31 ~ [g3,e4]@31 ~, e4@63 ~ c4@63 ~, ~@32 a3@63 ~@33]/8", // C5 C
  L: "[[bb3,d4] ~ f4@28 ~@2, a3@31 ~, ~ d4@29 ~@2]/2", // Bb
})).s("gm_lead_2_sawtooth").gain(0.51)

// other · synth brass 2
const synth_brass_2 = note(`<
  ~@44 A@4 ~@36 B@3 C ~@17 D@2 E@2 F@2 G H D@2 E@2 I@2 G H D@2 E@2 J@2 G H D@2 E@2 K@2 G H L@3
>`.pickRestart({
  A: "[~@2 ab3@2 a3@2 e4@3 ~ a4@2 ~@2 f4@34 g4@16]/4", B: "[~@2 ab3 ~ a3@2 e4@2 ~@2 a4@2 ~@2 f4@34]/3", C: "g4",
  D: "[d4@8 a3@11 ~ a3@4 d4@4 f4@4]/2", E: "[d4@8 bb3@11 ~ bb3@4 d4@4 f4@4]/2", F: "[d4@8 b3@11 ~ b3@8 b3@4]/2",
  G: "c4", H: "db4", I: "[d4@8 b3@11 ~ b3@4 b3@3 ~ b3@4]/2", J: "[d4@8 b3@11 ~ b3@4 b3@8]/2",
  K: "[d4@8 b3@11 ~ b3@3 b3@8 ~]/2", L: "[d4@17 ~@7]/3",
})).s("gm_synth_brass_2").gain(0.51)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A@7 B A@7 B A@7 B A@7 B A@7 C A@7 D A@7 B A@7 B A@15 C A@7 D A@7 B A@7 C A@7 C A@7 C A@7 C A@7 E D ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x!4 ~@4", D: "x", E: "~ x ~ x ~ x ~ x",
})).gain(0.51)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@40 A ~@39 A ~@23 A ~@7 A ~@7 A ~@7 A ~@11>".pickRestart({
  A: "~ x ~ x ~ x ~ x!2 ~@7",
})).gain(0.26)

// drums · clap
const clap = s("cp").struct(`<
  ~ A@7 B A@7 B A@7 B A@7 B A@7 B A@7 C A@7 B A@7 B A@15 B A@7 C A@7 B A@7 B A@7 B A@7 B A@7 B A@7 D C ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x", D: "x!4",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~@3
>`.pickRestart({
  A: "~@14 x!2", B: "~@6 x!2 ~@6 x!2",
})).gain(0.41)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  [x ~@3 x ~@3 x!8]
  [x!8]!47
  [x ~@3 x ~@3 x!8]
  [x!8]!39
  [x ~@3 x ~@3 x!8]
  [x!8]!47
  ~@4
>`).gain(0.26)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!47
  ~
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!39
  ~
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!47
  ~@4
>`).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~@3
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~@4 x!2 ~@6 x!2 ~@2",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct(`<
  A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~@3
>`.pickRestart({
  A: "~@9 x!4 ~@3", B: "x!4 ~@4 x!4 ~@4",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@48 x ~@39 x ~@48 x ~@2>").gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<[x!4]!136 ~@4>").gain(0.26)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<[~ x ~ x ~ x ~ x]!136 ~@4>").gain(0.15)

// drums · bongos
const bongos = s("bongo:4").struct("<A B@39 A B@7 A B@31 A B@7 A B@15 A B@7 A B@7 A B@7 A B@7 ~@4>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@3 x ~@2",
})).gain(1.08)

// drums · congas
const congas = s("conga:33").struct(`<
  [~@14 x!2]
  [~@6 x!2 ~@6 x!2]!47
  [~@14 x!2]
  [~@6 x!2 ~@6 x!2]!39
  [~@14 x!2]
  [~@6 x!2 ~@6 x!2]!47
  ~@4
>`).gain(1.31)

stack(
  synth_strings_2, bass, lead_8_bass_lead, lead_2_sawtooth, synth_brass_2, kick, snare, snare_soft, clap, low_tom,
  pedal_hat, pedal_hat_soft, mid_tom, high_tom, crash, tambourine, tambourine_soft, bongos, congas
)

More by Blondie