Strudelify
State of Independence cover art

1982 · Donna Summer

State of Independence

Donna Summer

KeyB majorTempo82 bpm
0:00/0:00
// State of Independence — Summer Donna
// 82 bpm, 8/8, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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 · brass section · "BRASS 1"
const brass_section = note(`<
  ~@5 A B A C D E A F G F H F A E I J A K L E M E N F H F H E M O H E P F H E I Q R Q I J I J S T U ~ V W S@2 X Y S Z S
  W AA AB AC@2 S V S AD V@2 AE@2 AF V AF@3 AG AE AH AF@5 V AE X AG AF@4 AG AE@2 V@2 AF@3 V AE@2 AG V AF@3 V AI
>`.pickRestart({
  A: "~ b3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@9", B: "~ b3 [g#4,b4,c#5,e5] ~@3 [g#4,b4,c#5,e5] ~@6 f#3 ~ f#3",
  C: "~ b3 [g#4,b4,c#5,e5] ~@3 [g#4,b4,c#5,e5] ~@2 [b5,b6]!4 [b3,b5,b6] [b5,b6] [b3,b5,b6]", // C#m7 B
  D: "[b5,b6] b3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@9", E: "~@2 [g#4,b4,c#5,e5] ~@3 [g#4,b4,c#5,e5] ~@9",
  F: "~ b3 [g#4,b4,c#5,e5] ~@3 [g#4,b4,c#5,e5] ~@9", G: "~@2 [b4,d#5] ~@3 [f#4,b4,d#5] ~@9, ~ f#4@2 ~@13",
  H: "~@2 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@9", I: "[a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [a4,d5,f#5] ~@9",
  J: "[g4,c5,e5,g5] ~@2 [g4,c5,e5,g5] ~@2 [g4,c5,e5,g5] ~@9", // C
  K: "~@2 [g#4,b4,c#5,e5] ~@3 [g#4,b4,c#5,e5] ~@2 [b5,b6]!7", L: "[b5,b6] ~ [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@9",
  M: "b3 ~ b3 ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~@9", N: "~@2 [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~@9",
  O: "~@2 [g#4,b4,c#5,e5] ~ [g#4,b4,c#5,e5] ~ [g#4,b4,c#5,e5] ~@9", P: "~@2 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~@6 b3 ~ b3",
  Q: "[g4,c5,e5] ~@2 [g4,c5,e5] ~@2 [g4,c5,e5] ~@9", // C
  R: "[a4,d5,f#5] ~@2 [a4,d5,f#5] ~@2 [d5,g5]@2 [a4,f#5] ~@7, ~@6 b4 ~@9", S: "[f#4,b4,d#5]@5 ~@3",
  T: "[g#4,b4,c#5,e5]@5 ~@3", U: "[a4,c#5,f#5]@15 ~", V: "[f#4,b4,d#5]@3 ~", W: "[g#4,c#5,f5]@5 ~@3",
  X: "[e4,a4,c#5]@11 ~@5", Y: "[b4,c#5,e5]@11 ~@5",
  Z: "[g#4,c#5,f5]@2 ~@5 [f#6,f#7]@7 ~@2, ~ [f4,g#4]@2 [c#7,f7]@4 ~, ~@3 [c#5,f5]@11 ~@2, ~@2 [g#5,c#6]@5 ~, ~@5 [f6,g#6]@9 ~@2", // C# F# Fm C# C#5 Fm
  AA: "[f#4,b4,d#5]@9 ~@7", AB: "[f#4,b4,d#5] ~", AC: "[e4,a4,c#5]@9 ~@7", AD: "[f#4,b4,d#5]@11 ~@5",
  AE: "[e4,a4,c#5]@3 ~", AF: "[f#4,b4,d#5]@7 ~", AG: "[f#4,b4,d#5]@13 ~@3", AH: "[e4,a4,c#5]@13 ~@3",
  AI: "[f#4,b4,d#5] ~@3", // B
})).s("gm_brass_section").gain(0.56)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~
  [~ f#3 a3 b3 a3 f#3 e3 f#3 ~ f#3 a3 b3 a3 f#3 e3 f#3]!18
  [~ a3 c4 d4 c4 a3 g3 a3 ~ a3 c4 d4 c4 a3 g3 a3]!2
  [~ f#3 a3 b3 a3 f#3 e3 f#3 ~ f#3 a3 b3 a3 f#3 e3 f#3]!20
  [~ a3 c4 d4 c4 a3 g3 a3 ~ a3 c4 d4 c4 a3 g3 a3]!8
  [~ f#3 a3 b3 a3 f#3 e3 f#3 ~ f#3 a3 b3 a3 f#3 e3 f#3]!65
>`).s("gm_acoustic_bass").gain(0.32)

// bass · fretless bass · "FRETLESS"
const bass_2 = note(`<
  A B@5 C B D B C B E B F B G C H I J K D B F B D B D B L C M B N B O B P Q R S T U V U T W X Y Z AA Z AA Z AA@2 AB@2 AC
  Z AA AD AE AF AG AH Z AI AJ AK AL AM AN AO AP AL AQ Z AA AR AS AB AE AA Z AA@3 AT AU Z AA Z AV Z AW AX AO Z AL Z@2 AL
  AA AY AU Z AV Z AZ Z AA@2
>`.pickRestart({
  A: "~@12 f#3@3 ~", B: "b2@2 ~@5 b2!2 ~@7", C: "b2 ~@6 b2!2 ~@4 f#2@3", D: "b2 ~@6 b2!2 ~@4 f#2 ~ f#2",
  E: "b2 ~@6 b2!2 ~@4 f#3 ~ f#3", F: "b2 ~@6 b2!2 ~@4 f#3@3", G: "b2 ~@6 b2!2 ~@2 b3 ~ b3 f#3 e3",
  H: "b2 ~@6 b2!2 ~@4 b2 c3 c#3", I: "d3 ~@2 d3 ~@2 c4 d4 d3 ~@5 a2 c3", J: "d3 ~@2 d3 ~@3 d3 c4 d4 ~ c4 a3 d3 c3 d3",
  K: "b2@2 ~ b2 ~@3 b2!2 ~@7", L: "b2 ~@6 b2!2 ~@4 b3 f#3 e3", M: "b2 ~@6 b2!2 ~@5 f#2@2",
  N: "b2 ~@6 b2!2 ~ d#3 ~ f#3 g#3 b3@2", O: "b2@2 ~@5 b2!2 ~@3 b3 a3 f#3 e3", P: "b2 ~@6 b2 d#2 ~ e2 ~ e2 f#2 g#2 ~",
  Q: "b2@2 ~@5 b2!2 ~@4 f#2@3", R: "b2@2 ~@5 b2!2 ~@5 b2 c3", S: "d3 ~@2 d3 ~ d3 c4 d4 d3 ~@5 a2 c3",
  T: "d3 ~@2 d3 ~@2 d3 c4 d4 d3!2 ~ d3 ~ a2 c3", U: "d3 ~@2 d3 ~@2 c4 d4 d3 ~@5 a2 e3",
  V: "d3 ~@2 d3 ~@3 c4 d4 d3!2 ~ d3 ~ a2 c3", W: "d3 ~@2 d3 ~@2 c4 d4 d3 ~@3 d3 ~ a2 e3",
  X: "d3 ~@2 d3 ~ e4 d4 a3 c4 a3 b3 ~ a3 ~ g3@2", Y: "b2 ~@2 b2@3 b2!2 ~@5 f#2@3", Z: "b2@3 ~@3 b2!2 ~@5 f#2@3",
  AA: "b2@3 ~@3 b2!2 ~@8", AB: "a2@3 ~@3 a2!2 ~@8", AC: "b2@4 ~@2 b2!2 ~@5 f#2 ~ f#2",
  AD: "b2@3 ~@3 b2!2 ~ [a3,b3] ~@2 b3@2 ~@2", AE: "b2@3 ~@3 b2!2 ~@6 f#2 ~",
  AF: "b2@2 ~ b2 ~@2 b2 ~@3 a3 a#3 b3 c#4 b3 a#3", AG: "a3@2 ~ a3 ~@2 a2 a2@2 ~@5 e2 f#2", AH: "a2@2 ~ a2 ~@2 a2!2 ~@8",
  AI: "b2@3 ~@3 b2!2 ~ f#3 ~@2 [f#3,g#3] g#3 f#3 ~", AJ: "b2@3 ~@3 [a2,b2] b2 ~@5 f#2@3",
  AK: "b2@3 ~@3 b2!2 ~@5 f#2@2 f#2", AL: "b2@3 ~@3 b2!2 ~@5 f#3@3", AM: "b2@3 ~@3 b2!2 ~@6 b2 ~",
  AN: "a2@3 ~@3 a2!2 ~@5 e3@3", AO: "a2@3 ~@3 a2!2 ~@5 a3 a2 ~", AP: "b2@3 ~@3 b2!2 ~@5 f#2 ~@2",
  AQ: "b2@3 b2 ~@2 b2!2 ~@8", AR: "b2@3 ~@3 b2!2 ~@2 a3 a#3 b3 c#4 b3 a#3", AS: "a3@3 a3 ~@2 a2 a2@2 ~@4 e2@3",
  AT: "a2@3 c#3@3 e3@2 a2@3 c#3@3 e3@2", AU: "a2@3 c#3@2 ~ e3@2 a2@3 c#3@2 ~ e3 ~", AV: "b2@3 ~@3 b2!2 ~@5 f#3@2 ~",
  AW: "b2@3 ~@3 b2!2 ~@5 c#4 b3 a#3", AX: "a3@3 a3 ~@2 a2!2 ~@5 e2@2 ~", AY: "a2@2 ~ c#3@2 ~ e3 ~ a2@2 ~ c#3@2 ~ e3@2",
  AZ: "b2@3 b2 ~@2 b2!2 ~@5 f#3@2 ~",
})).s("gm_fretless_bass").gain(0.39)

// other · trumpet
const trumpet = note("<~@11 A@2 ~@2 A B ~@8 C ~ D ~@2 B ~@2 D ~@3 D B ~@75>".pickRestart({
  A: "~@13 b5 g#5 f#5", B: "~@13 b5 g#5 ~", C: "~@5 b5 g#5 ~@9", D: "~@13 b5 ~@2",
})).s("gm_trumpet").gain(0.16)

// other · trumpet · soft notes
const trumpet_soft = note("<~@16 A ~@8 B ~ C ~@2 A ~@2 C ~@3 C A ~@75>".pickRestart({
  A: "~@15 f#5", B: "~@7 f#5 ~@8", C: "~@14 g#5 f#5",
})).s("gm_trumpet").gain(0.08)

// chords · clavinet
const clavinet = note("<~@8 A B ~@12 A B ~@28 A B ~@60>".pickRestart({
  A: "[e5,f#5,b5] [f#5,a5] f#5 [e5,a5] f#5 [e5,f#5,b5] [f#5,a5] f#5 ~ f#5 [e5,f#5,b5] [f#5,a5] f#5 [e5,a5] f#5 [e5,b5]", // Esus2 F#m A5 Esus2 F#m Esus2 F#m A5 …
  B: "f#5 ~@15",
})).s("gm_clavinet").gain(0.15)

// chords · clavinet · soft notes
const clavinet_soft = note("<~@8 A B ~@12 A B ~@28 A B ~@60>".pickRestart({
  A: "~@15 f#5", B: "a5 ~@15",
})).s("gm_clavinet").gain(0.07)

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

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

// drums · clap
const clap = s("cp").struct("<~@5 [~ x ~@3 x ~ x]!109>").gain(0.4)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@4
  [~@15 x]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!108
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3]
>`).gain(1.22)

stack(brass_section, bass, bass_2, trumpet, trumpet_soft, clavinet, clavinet_soft, kick, snare, clap, cabasa)

More by Donna Summer