Strudelify

Don't You Worry 'bout a Thing

Stevie Wonder

KeyF♯ majorTempo108 bpm
0:00/0:00
// Don't You Worry 'bout a Thing — Wonder Stevie
// 108 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/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 · piano
const piano = note(`<
  ~@12 A B C D A B C E F G H I J K L M N A B C O A B C E F G H I J K L P@4 Q@3 R ~@8 S T U V F G H I J K L M N A B C D A
  B C E F G H I J K L P@4 Q@3 R ~@16
>`.pickRestart({
  A: "d#2@2 ~@2 d#2 d#3 [a#3,d#4,f#4] ~ [a#3,d4,f#4]@3 [a#3,d4,f#4]@2 ~ [a#3,d4,f#4] ~", // D#m A#aug
  B: "d#2@2 ~@2 d#2 d#3 [a#3,c#4,f#4] ~ [g#3,c4,f#4]@3 [g#3,c4,f#4]@2 ~ [g#3,c4,f#4] ~", // F# G#7
  C: "f#2@2 ~@2 f#2 f#3 [g#3,b3,e4] ~ [g#3,b3,e4]@2 ~ [g#3,b3,e4]@2 ~ [g#3,b3,e4] ~", // E
  D: "[f#3,a#3,d#4]@3 ~ [f#3,a#3,d#4]@2 ~ [a#3,d4,f#4,a#4]@2 ~ [a#3,a#4]@2 a#2 a#3 d2@2, ~@10 [d4,f#4] ~@5", // D#m A#aug A# D
  E: "[f#3,a#3,d#4]@2 ~@2 [f#3,a#3,d#4]@3 [f#3,a#3,d#4]@2 ~ [a#3,d#4]@2 [f#3,a#3,d#4] ~ [f#3,a#3,d#4] ~, ~@10 f#3 ~@5", // D#m D#5 D#m
  F: "[e3,g#3,d4] ~@3 [e3,g#3,d4] ~@2 [e3,g#3,d4] ~@2 [e3,g#3,d4]@2 ~@2 e2 e3, ~@7 [g#3,d4]", // E7 G#dim
  G: "f#2@2 [f#3,a#3,c#4]@2 f#2 [f#3,a#3,c#4]@2 f#2 [f#3,a#3,c#4]@2 f#2 [a#3,c#4]@2 f#2 [f#3,g#3,c#4,e4]@2, ~@11 f#3 ~@4", // F# A#m C#m
  H: "f#2@2 [f#3,g#3,c#4,e4]@2 [f#2,g#2] [f#3,g#3,c#4,e4]@2 f#2 [f#3,g#3,c#4,e4]@2 f#2 [f#3,g#3,c#4,e4]@2 f#2 [f#3,c#4,e4]@2, ~@14 g#3 ~", // C#m F#sus2 C#m F#7
  I: "a#2@2 [a#3,c#4,f4]@2 a#2 [a#3,c#4,f4]@2 a#2 [a#3,c#4,f4]@2 a#2 [a#3,c#4,f4]@2 a#2 [f#3,a#3,d#4]@2", // A#m D#m
  J: "b2@2 [f#3,a#3,d#4]@2 b2 [f#3,a#3,d#4]@2 b2 [f#3,a#3,d#4]@2 b2 [f#3,a#3,d#4]@2 b2 [f#3,d#4]@2, ~@14 a#3 ~", // D#m
  K: "g#2@2 [c4,d#4,f#4]@2 g#2 [c4,d#4,f#4]@2 g#2 [c4,d#4,f#4]@2 g#2 [g#3,c4,d#4]@2 g#2 [c4,d#4,f#4]@2", // Cdim G# Cdim
  L: "c#3@2 [b3,d#4,f#4]@2 c#3 [b3,d#4,f#4]@2 c#3 [b3,d#4,f#4]@2 c#3 [b3,d#4,f#4]@2 c#3 [d#4,f#4]@2, ~@14 b3 ~", // B D#m
  M: "f#2@2 [a#3,c#4,f#4]@2 f#2 [a#3,c#4,f#4]@2 f#2 [a#3,c#4,f#4]@2 f#2 [a#3,c#4,f#4]@2 f#2 [a#3,c#4,f#4]@2", // F#
  N: "a#2@2 [a#3,d4,f#4]@2 a#2 [a#3,d4,f#4]@2 a#2 [a#3,d4,f#4]@2 a#2 [a#3,d4,f#4]@2 a#2 [d4,f#4]@2, ~@14 a#3 ~", // A#aug D
  O: "[f#3,a#3,d#4]@3 ~ [f#3,a#3,d#4]@2 ~ [a#3,d4,f#4,a#4]@2 ~ [a#3,f#4,a#4]@2 a#2 a#3 d2@2, ~@10 d4 ~@5", // D#m A#aug D#m
  P: "[b4@4 a#4@2 a#4@4 a4@3 ~ a4@4 g#4@4 g#4@4 g4@3 ~ g4@4 f#4@3 ~ [c#3,g#3,c#4,f#4]@4 f4@2 [f#2,c#4,d#4]@6 [f#2,g#3,c#4,d#4]@3 [f#2,g#3,c#4,d#4]@2 ~ [f#2,g#3,c#4,d#4]@2 ~@2 [c#3,g#3,b3,d#4]@4, [f#3,c#4,f#4]@3 [f3,c4,f4]@4 [e3,b3,e4]@4 [d#3,a#3,d#4]@4 [d3,a3,d4]@4 ~@3 g#3 ~@9]/4", // C#sus4 D#m7 F#sus2 G#m F#5 F5 E5 D#5 …
  Q: "[b4@4 a#4@2 a#4@4 a4@4 a4@4 g#4@3 ~ g#4@4 g4@3 ~ g4@4 f#4@3 ~ [c#3,g#3,c#4,f#4]@4 f4@2 [f#2,g#3,c#4,d#4]@4, [f#3,c#4,f#4]@3 [f3,c4,f4]@4 [e3,b3,e4]@4 [d#3,a#3,d#4]@4 [d3,a3,d4]@4 ~@5]/3", // C#sus4 F#sus2 F#5 F5 E5 D#5 D5
  R: "f#1 ~@7", S: "d#2@2 ~@2 d#2 d#3 [d#4,f#4,a#4] ~ [d4,f#4,a#4]@3 [d4,f#4,a#4]@2 ~ [d4,f#4]@2, ~@14 a#4 ~",
  T: "d#2@2 ~@2 d#2 d#3 [c#4,f#4,a#4] ~ [c4,d#4,g#4]@3 [c4,d#4,g#4]@2 ~ [c4,d#4,f#4,g#4] ~", // F# G# G#7
  U: "f#2@3 ~ f#2 f#3 [b3,e4,g#4] ~ [b3,e4,g#4]@3 [b3,e4,g#4]@3 [b3,e4,g#4] ~", // E
  V: "[a#3,d#4]@2 ~@2 [f#3,a#3,d#4]@2 ~ [f#3,a#3,d#4] ~@2 [f#3,a#3,d#4]@2 ~ [f#3,a#3,d#4]@3, f#3 ~@15", // D#5 D#m
})).s("gm_piano").gain(0.59).pan(0.4)

// bass · synth bass 2
const bass = note(`<
  ~@8 A B C D A B C E A B C F G H I J K L M N O A B C E A B C F G H I J K L P Q@4 R@3 S A T U V A T U V A B C F G H I J
  K L M N O A B C E A B C F G W ~@2 X Y P Q@4 R@3 S A T U V A T U V A T U V A T U Z
>`.pickRestart({
  A: "d#1@2 ~@2 d#1@2 ~ a#1 ~@2 a#1@3 ~ a#1@2", B: "d#1@3 ~ d#1@2 ~ g#1 ~@2 g#1@3 ~ g#1 ~",
  C: "f#1@3 ~ f#1@2 ~ f#1@2 ~ f#1@3 ~ f#1 c#2", D: "b1@2 ~@2 b1@2 ~ e1@2 ~ e1@3 ~ d#1@2",
  E: "b1@2 ~@2 b1@2 ~ e1@2 ~ e1@3 ~ c#1@2", F: "b1@2 ~@2 b1@2 ~ b1@2 ~ b1@3 ~ f#1@2",
  G: "e1@2 ~@2 e1@2 ~ e1 ~@2 e1@3 ~ e1@2", H: "f#1@2 ~@2 f#1@2 ~ f#1 ~@2 f#1@2 ~@2 a#1 c#2",
  I: "f#1 ~@3 f#1@2 ~ f#1 ~ f#1 f#1@2 ~@2 g#1@2", J: "a#1@2 ~@2 a#1@2 ~ a#1 ~@2 a#1@2 ~@2 b1@2",
  K: "b0@2 ~@2 b0@2 ~ b0 ~@2 b0@2 ~@2 f1 f#1", L: "g#1@2 ~@2 g#1@2 ~ g#1 ~@2 g#1@2 ~@2 f#1 d#1",
  M: "c#1@2 ~@2 c#1@2 ~ c#1 ~@2 c#1@2 ~@2 c#1@2", N: "f#1@2 ~@2 f#1@2 ~ f#1@2 ~ f#1@2 ~@2 g#1 a1",
  O: "a#1@2 ~@2 a#1@2 ~ a#1!4 ~ a#2@2 f1@2", P: "c#1@2 ~@2 c#1@2 ~ c#1 ~@2 c#1@2 ~@2 c#2 d#2",
  Q: "[f#2@2 c#2@2 f#2@2 f2@4 c2@2 f2@2 e2@4 b1@2 e2@2 d#2@4 a#1@2 d#2@2 d2@4 a1@2 d2@2 c#2@4 c#2@2 f#1@6 ~ f#1 ~ f#1!2 ~ f#1@2 ~@2 c#2@4]/4",
  R: "[f#2@2 c#2@2 f#2@2 f2@4 c2@2 f2@2 e2@4 b1@2 e2@2 d#2@4 a#1@2 d#2@2 d2@4 a1@2 d2@2 c#2@3 ~ c#2@2 f#1@4]/3",
  S: "f#1 ~@7", T: "d#1@3 ~ d#1@2 ~ g#1 ~@2 g#1@3 ~ f#1 ~", U: "e1@3 ~ e1@2 ~ e1@2 ~ e1@3 ~ e1@2",
  V: "e1@3 ~ e1@2 ~ e1@2 ~ e1@2 a#1@2 d1@2", W: "f#1@15 ~", X: "~@13 f1!2 f#1",
  Y: "g#1@2 ~@2 g#1@2 ~ g#1!3 g#1@2 ~@2 f#1 d#1", Z: "e1@3 ~ e1@2 ~ e1@2 e1 e1@2 a#1 a#1@2 ~",
})).s("gm_synth_bass_2").gain(0.72)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<~@9 A@2 ~@50 A@2 ~@49>".pickRestart({
  A: "[[a#4,d#5]@2 d#4 [g#4,c#5] ~@6 c#4 d#4 f#4 g#4 ~ f#4@3 d#4 ~@13]/2", // D#5 C#5
})).s("gm_lead_8_bass_lead").gain(0.38).pan(0.6)

// other · brass section
const brass_section = note(`<
  ~@8 A ~ B C ~@8 D ~@6 E F ~@4 G@2 ~ H I ~@16 J K ~@2 J K A ~ B L I ~@6 E F ~@4 G@2 ~ H I ~@16 J K ~@2 J K ~@2 J K ~@2
  J K
>`.pickRestart({
  A: "[d#4,d#5]@2 ~@5 [g#4,a#4]@2 ~ [g#4,a#4] ~@5", B: "~@5 c#4 d#4 f#4 g#4@2 f#4 d#4 c#4 d#4 f#4 ~",
  C: "[g#4,a#4]!2 ~@6 g#4@2 ~ a#4@2 ~ d#5 ~", D: "[e4,g#4] ~@3 [e4,g#4] ~@2 [e4,g#4]@9",
  E: "~@4 a#3@2 c#4 ~ d#4@2 f#4 ~ g#4@2 a#4 ~", F: "d5", G: "[[d#4,d#5]@3 [d4,d5]@4 [c#4,c#5]@4 [c4,c5]@5]/2",
  H: "~@14 a#5 [b5,c6]", I: "c#6 ~@7", J: "~@4 g#4!2 f#4 g#4 ~ f#4 ~ g#4 ~ c#4 d#4 f#4",
  K: "[g#4,g#5]!2 [f#4,f#5] [g#4,g#5] ~ [d#4,d#5] ~ [g#4,g#5]@2 [f#4,f#5] [d#4,d#5] ~ [a#4,a#5]!2 ~@2", // G# F# G# D# G# F# D# A#
  L: "[g#4,a#4]!2 ~@10 g5 [g#5,a5] a#5 [b5,c6]", // G#sus2 Amaj7 Cmaj7
})).s("gm_brass_section").gain(0.46).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@2 B C D E F B ~@13 G@2 H@2 I@2 J@2 ~@9 G@2 H@2 I@2 K@4 L@4 ~@13 G@2 H@2 I@2 J@2 ~@9 G@2 H@2 I@2 K@4 L@4 ~@16
>`.pickRestart({
  A: "f#3", B: "a#2", C: "b2", D: "g#2", E: "c#3", F: "f#2", G: "[c#4@7 c#4@9]/2", H: "[a#3@7 b3@9]/2",
  I: "[g#3@7 g#3@9]/2", J: "a#3", K: "[c#4@3 c4@4 b3@4 a#3@4 a3@4 g#3@7 ~@6]/4",
  L: "[c#4@3 c4@4 b3@4 a#3@4 a3@4 g#3@6 ~@7]/4",
})).s("gm_string_ensemble_1").gain(0.4).pan(1)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  A@3 B C D E B ~@13 F@2 G@2 H@2 A I ~@9 F@2 G@2 H@2 ~@21 F@2 G@2 H@2 A I ~@9 F@2 G@2 H@2 ~@24
>`.pickRestart({
  A: "c#4", B: "a#3", C: "c4", D: "b3", E: "f#3", F: "[f#4@7 e4@9]/2", G: "[c#4@7 d#4@9]/2", H: "[c4@7 b3@9]/2",
  I: "d4",
})).s("gm_string_ensemble_1").gain(0.4).pan(0.7)

// other · string ensemble 1
const string_ensemble_1_3 = note(`<
  A B C D@3 E F ~@13 G@2 H@2 I@2 J K ~@9 G@2 H@2 I@2 L@4 M@3 ~@14 G@2 H@2 I@2 J K ~@9 G@2 H@2 I@2 L@4 M@3 ~@17
>`.pickRestart({
  A: "[f#4,a#4]", B: "[e4,g#4]", C: "[f4,g#4]", D: "[d#4,f#4]", E: "[c#4,a#4]", F: "[d4,f#4]",
  G: "[[a#4,a#5]@7 [g#4,g#5]@9]/2", H: "[[f4,g#5]@7 [f#4,f#5]@9]/2", I: "[[d#4,f#5]@7 [d#4,f#5]@9]/2", J: "[f#4,f#5]",
  K: "[f#4,a#5]", L: "[b4@2 a#4 a#4@2 a4@2 a4@2 g#4@2 g#4@2 g4@2 g4@2 f#4@2 f#4@2 f4 d#4@7 ~@3]/4",
  M: "[b4@2 a#4 a#4@2 a4@2 a4@2 g#4@2 g#4@2 g4@2 g4@2 f#4@2 f#4@2 f4 d#4@2]/3",
})).s("gm_string_ensemble_1").gain(0.4).pan(0)

// chords · epiano1 · D#m A#m F#sus2 D#m A#m F#sus2
const epiano1 = note(`<
  ~@47
  [~ a#6 g#6 [d#6,f#6] [a#5,c#6] [f#5,g#5] d#5 ~ g#4@2 ~@6, d#7@2 ~@5 a#4@2 ~@7, ~ c#7@2 ~@3 c#5@2 ~@8]
  ~@43
  [~ a#6 g#6 [d#6,f#6] [a#5,c#6] [f#5,g#5] d#5 ~ g#4@2 ~@6, d#7@2 ~@5 a#4@2 ~@7, ~ c#7@2 ~@3 c#5@2 ~@8]
  ~@20
>`).s("gm_epiano1").gain(0.19).pan(0)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note("<~@8 A B ~ C ~@40 D E F G D E F G ~@36 D E F G D E F G D E F G D E F H>".pickRestart({
  A: "~@2 [a#3,d#4,f#4]!2 ~ [a#3,d#4,f#4]!2 ~ [a#3,d4,f#4]@2 ~ [a#3,d4,f#4]@2 ~ [a#3,d4,f#4] ~", // D#m A#aug
  B: "~@2 [a#3,c#4,f#4]!2 ~ [a#3,c#4,f#4]!2 ~ [g#3,c4,f#4]@2 ~ [g#3,c4,f#4]@2 ~ [g#3,c4,f#4] ~", // F# G#7
  C: "~@4 [d#3,f#3,a#3] ~@2 [d4,f#4,a#4]@2 ~ [f#4,a#4]@2 ~@4, ~@10 d4 ~@5", // D#m Daug F#
  D: "~@2 [d#4,f#4,a#4]!2 ~ [d#4,f#4,a#4]!2 ~ [d4,f#4,a#4]@2 ~ [d4,f#4,a#4]@2 ~ [d4,f#4,a#4] ~", // D#m Daug
  E: "~@2 [c#4,f#4,a#4]!2 ~ [c#4,f#4,a#4]!2 ~ [c4,f#4,g#4]@2 ~ [c4,f#4,g#4]@2 ~ [c4,f#4,g#4] ~", // F# G#7
  F: "~@2 [b3,d#4,g#4]!2 ~ [b3,d#4,g#4]!2 ~ [b3,d#4,g#4]@2 ~ [b3,d#4,g#4]@2 ~ [b3,d#4,g#4] ~", // G#m
  G: "~@2 [b3,d#4,g#4] ~@2 [b3,d#4,g#4] ~ [b3,d#4,g#4]@3 [b3,d#4,g#4] ~ [d4,f#4,a#4]@4", // G#m Daug
  H: "~@2 [b3,d#4,g#4] ~@2 [b3,d#4,g#4] ~ [b3,d#4,g#4]@3 [b3,d#4,g#4] ~ [d4,f#4,a#4] [d4,f#4,a#4]@2 ~", // G#m Daug
})).s("gm_lead_2_sawtooth").gain(0.32).pan(1)

// chords · percussive organ
const percussive_organ = note(`<
  ~@8 A B C D ~@40 E F G@2 E F G@2 A B C H ~@32 E F G@2 E F G@2 E F G@2 E F I@2
>`.pickRestart({
  A: "[d#5,f#5,a#5]@3 ~ [d#5,f#5,a#5]@3 [d5,f#5,a#5]@4 [d5,f#5,a#5]@2 ~ [d5,f#5,a#5] ~", // D#m Daug
  B: "[c#5,f#5,a#5]@3 ~ [c#5,f#5,a#5]@3 ~ [c5,d#5,g#5]@3 [c5,d#5,g#5]@2 ~ [c5,d#5,g#5] ~", // F# G#
  C: "[f#4,b4,e5]@4 [f#4,b4,e5]@3 ~ [f#4,b4,e5]@3 [f#4,b4,e5]@3 [b4,e5]@2, ~@14 f#4 ~", // Esus2 E5
  D: "~@2 [f#4,a#4,d#5] ~@2 [f#4,a#4,d#5] ~@2 [a#4,d5,f#5]@3 [a#4,d5,f#5]@5", E: "[d#5,f#5,a#5] [d5,f#5,a#5]",
  F: "[c#5,f#5,a#5] [c5,d#5,g#5]", G: "[[b4,d#5,f#5]@7 [d5,f#5,a#5]]/2",
  H: "~@2 [f#4,a#4,d#5] ~@2 [f#4,a#4,d#5] ~@2 [f#4,a#4,d#5] ~@2 [f#4,a#4,d#5] ~@2 [f#4,a#4,d#5] ~", // D#m
  I: "[[b4,d#5,f#5]@28 [d5,f#5,a#5] [d5,f#5,a#5]@2 ~]/2", // B Daug
})).s("gm_percussive_organ").gain(0.25).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~@8 A@43 B A@11 C A@31 B A@15 D>".pickRestart({
  A: "x ~@7 x ~@6 x", B: "x", C: "x!2", D: "x ~@7 x ~@4 x ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@8 A@3 B A@39 ~ A@43 ~ A@15 C>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x!5 ~@2", C: "~@4 x ~ x!3 ~@3 x ~@3",
})).gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct("<~@11 A ~@16 A ~@30 A ~@12 A ~@30 A ~@7 B>".pickRestart({
  A: "~@15 x", B: "~@11 x ~@4",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@16 A ~@30 A ~@12 A ~@30 A ~@7 B>".pickRestart({
  A: "~@7 x", B: "~@9 x!2 ~@5",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@4 ~ A@16 ~ A@21 ~ A@21 ~ A@21 ~ A@16>".pickRestart({
  A: "~ x ~@6",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@8 A ~@7 A ~@8 A ~@5 A ~@7 A ~@12 A ~@7 A ~@8 A ~@5 A ~@7 A ~@7 A ~@6 B
>`.pickRestart({
  A: "x", B: "~@13 x ~@2",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@38 A B A B A B ~@8 A B A B A B A B ~@22 A B A B A B ~@8 A B A B A B A B A B A B A B A C
>`.pickRestart({
  A: "x ~@3 x ~ x!3 ~ x!3 ~ x!2", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x!2", C: "x ~ x ~ x ~ x ~ x ~ x!2 ~@4",
})).gain(0.4)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@38 A B A B A B ~@8 A B A B A B A B ~@22 A B A B A B ~@8 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 x!2 ~@12", B: "~@3 x ~@3 x ~@8",
})).gain(0.24)

// drums · congas
const congas = s("conga:13").struct("<~@4 A@8 ~@32 B@3 C B@3 ~ A@36 D@3 E D@3 F A@16>".pickRestart({
  A: "x!2", B: "~@3 x ~@3 x", C: "~@6 x ~@2 x!5 ~@2", D: "x ~@2 x!2 ~@2 x", E: "x ~@5 x ~ x!6 ~@2", F: "x",
})).gain(2.05)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
  ~@4
  [~ x ~@3 x ~@2]!8
  ~@40
// … 50 more lines

More by Stevie Wonder