Strudelify
Why Worry cover art

Brothers In Arms

Why Worry

Dire Straits

KeyE majorTempo100 bpm
0:00/0:00
// Why Worry — Dire Straits
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 97 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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 · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L K M N O P Q@4 R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AJ AL AM AL AN AO I J K L K
  AP N O P Q@4 R S T U V W X Y AQ AA AB AC AD AE AF AG AH AI AJ AL AJ AL AM AK AN AO I J K L K AP N O P AR@2
>`.pickRestart({
  A: "~@3 g#3@3 b3@2 ~ g#3@3 e4@2 ~ g#3@3 b3@3 g#3@2 ~, [e3,g#4]@3 ~", // E
  B: "~@3 [d#3,f#4]@3 [f#3,f#4]@3 [d#3,g#4]@2 ~ [b3,a4]@3 d#3@2 a4 [f#3,a4]@3 [d#3,g#4]@3, b2@3 ~", // D#m F# G#5 B7 F#m G#5
  C: "~@3 g#3@3 b3@2 ~ g#3@2 ~ e4@3 g#3@3 b3@2 ~ g#3@3, [e3,g#4]@3 ~", // E
  D: "~ [d#3,f#4] [f#3,f#4] [d#3,g#4] [b3,a4] d#3 f#3 [d#3,g#4], b2@3 ~, ~@15 a4 ~@2 a4@2 ~@4", // D#m F# G#5 B7 G#5
  E: "b4@3 g#3@2 b4 b3@3 g#3@3 e4@3 g#3@3 [b3,g#4]@3 [g#3,f#4]@3, e3@3 ~, ~@6 b4@11 ~@7", // E G#7
  F: "~@2 [e3,a4] [a3,b4] c#5 a#4 [e3,f#4] [a#3,e4], a2@2 ~ a#2@2 ~, e4 ~@3, ~ c#3@2 ~@2 c#3@2 ~", // A5 Asus2 Esus2 A#dim
  G: "~@3 b3 ~ g#3 b3 [c#3,e4], d#4@3 e4@2 ~, b2@6 f#3@5 ~@13, ~ d#3@2 ~ c#3@2 ~@2", // C#m
  H: "[d#3,f#4]@3 d#4@3 ~@6 b4@10 ~@2, ~ b2@5 ~@2, ~@3 b3@8 ~, ~@9 d#4@13 ~@2", // D#m
  I: "e4@3 b3@3 e4@3 [b2,f#4]@3 g#4@2 ~ f#4 g#4 f#4 e4@3 d#4@2 ~, e2@23 ~, g#3@5 ~@3, e3@8 ~@4 e3@11 ~", // B5
  J: "[a3,c#4]@3 a3@3 c#4@2 ~@13 b3@2 ~, a2@9 [d#4,f#4]@9 f#3@5 ~, ~@12 b2@11 ~, ~@15 d#3@8 ~", // A D#m
  K: "e4@3 b3@3 e4@3 [b2,f#4]@3 g#4@2 ~ f#4 g#4 f#4 e4@3 d#4@2 ~, e2@23 ~, e3@8 ~@4 e3@11 ~", // B5
  L: "[a2,a3,c#4]@2 ~ [b2,b3,d#4]@2 ~ [c#3,c#4,e4]@2 ~@10 b3@4 ~@2, ~@9 b2@13 ~@2, ~@3 [b3,d#4]@3 ~@2, ~@6 d#3@5 ~, ~@15 f#3@7 ~@2", // A B C#m B
  M: "[a3,c#4]@3 ~@3 c#4@2 ~@10 f#3@3 b3@2 ~, a2@10 ~@2 b2@11 ~, ~@3 a3@5 ~ [d#4,f#4]@9 ~@6, ~@15 d#3@8 ~", // A D#m
  N: "e4@3 b3@3 e4@3 [b2,f#4]@3 g#4@2 ~ f#4 g#4 f#4 e4@3 d#4@3, e2@23 ~, e3@8 ~@4 e3@11 ~", // B5
  O: "[a2,a3,c#4]@3 [b2,b3,d#4]@2 ~ [c#3,c#4,e4]@3 [b2,b3,d#4]@12 ~@3", // A B C#m B
  P: "[a2,a3,c#4]@3 [b2,b3,d#4]@2 ~ [c#3,c#4,e4]@3 [b3,d#4]@9 ~@6, ~@3 b2@4 ~", // A B C#m B
  Q: "[[a2,a3,c#4]@3 [b2,b3,d#4]@3 c#3@33 ~@12 e6@3 d#6@3 b5@3 a5@3 c#6@3 b5@3 f#5@2 g#5 a5@3 e5@2 ~ d#5@3 b4@3 a4@3 c#5@3 b4@3 f#4@3, ~@6 [c#4,e4]@37 ~@53, ~@13 [b2,f#3]@17 ~@2]/4", // A B C#m B5
  R: "g#4 g#3 b3 e4 g#4 g#3 e4 g#3", S: "d#4 d#3 f#3 b3 d#4 f#3 b3 d#4", T: "e4 g#3 b3 e4 g#4 g#3 e4 g#3",
  U: "d#4 d#3 f#3 b3 d#4 b3 f#4 d#4", V: "e4 g#3 b3 g#3 e4 b3 g#4 f#4",
  W: "e4@3 a3@3 c#4@3 e4@3 f#4@3 c#4@3 f#4@3 e4@2 ~", X: "d#4 f#3 b3 d#4 e4 f#3 b3 e4",
  Y: "~@4 b4@3 ~, f#4 a3 ~@2, ~ d#4@2 d#4@4 ~", Z: "[g#3,e4]@3 g#3@3 b3@3 e4@3 [b3,g#4]@5 ~ [g#3,e4]@5 ~",
  AA: "d#4@3 f#3@3 b3@3 d#4@3 f#4@3 d#4@3 b3@3 f#3@2 ~", AB: "[g#3,e4]@3 g#3@3 b3@3 e4@2 ~ [b3,g#4]@5 ~ [g#3,e4]@5 ~",
  AC: "[f#3,d#4]@3 f#3@3 b3@3 d#4@3 f#4@3 d#4@3 b3@3 f#3@2 ~", AD: "[g#3,e4] g#3 b3 e4 g#4 b3 g#4 f#4",
  AE: "e4@3 c#4@3 a3@3 c#4@3 f#4@3 c#4@3 f#4@3 e4@2 ~", AF: "d#4 f#3 b3 d#4 e4 g#3 b3 e4",
  AG: "f#4 a3 b3 ~ b4@3 ~, ~@3 d#4@4 ~", AH: "~ g#3 b3 g#3 e4 b3 g#3 e3, e3@7 ~",
  AI: "a2 c#4 a3 [e3,c#4] d#4 b3 [g#3,d#4] [a3,b3], e3@8 ~@4 f#3@5 ~@7", AJ: "[g#3,e4] g#3 b3 g#3 e4 b3 g#3 e3, e3@7 ~",
  AK: "a2 c#4 a3 [e3,c#4] [b2,f#3,d#4] b3 [g#3,d#4] [a3,b3], e3@7 ~@17", // C#m B G#5 Asus2
  AL: "a2 c#4 a3 [e3,c#4] [b2,f#3,d#4] b3 [g#3,d#4] [a3,b3], e3 ~@2", AM: "e4 g#3 b3 g#3 e4 b3 g#3 e3, e3@7 ~",
  AN: "g#4 b3 e4 b3 g#4 b3 e4 [e3,b3], e3@3 ~", // E5
  AO: "[a2,a4] c#4 e4 [a3,g#4] [b2,b3,f#4] ~ [b2,d#4] b3, a3@7 ~@8 b3@6 ~@3", // A Amaj7 B5 B
  AP: "[a3,c#4]@3 ~@3 c#4@2 ~@13 b3@2 ~, a2@10 ~@2 b2@11 ~, ~@3 a3@5 ~ [d#4,f#4]@9 f#3@5 ~, ~@15 d#3@8 ~", // A D#m
  AQ: "[g#3,e4]@3 g#3@3 b3@3 e4@3 [b3,g#4]@5 ~ [g#3,e4]@4 ~@2", // C#m E C#m
  AR: "[[a2,a3,c#4] [b2,b3,d#4] c#3 b2@11 ~@2, ~@6 [c#4,e4]@37 ~@5]/2", // A B C#m
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B A B A C D E F G F H F I F J@2 K@4 L B L B L M N O P B Q B R M N S T U T U T U T U V U F G F H F I F J@2 K@4 L B L
  B L M N O P B Q B R M N S T U T U T U T U V U F G F H F I F J@2 W@2
>`.pickRestart({
  A: "e3@7 ~", B: "b2@7 ~", C: "a2@5 ~ a#2@5 ~", D: "b2@5 ~ c#3@5 ~", E: "d#3 b2@4 ~@3",
  F: "e3@8 ~ b2@3 e3@11 ~, e2@23 ~", G: "a2@10 ~@2 b2@3 d#3@2 ~ f#3@3 b3@2 ~",
  H: "a2@2 ~ b2@3 c#3@3 b2@3 d#3@3 f#3@2 ~ b3@4 ~@2", I: "a2@10 ~@2 b2@3 d#3@3 f#3@3 b3@3",
  J: "a2@2 ~ b2@3 c#3@3 b2@12 ~@3", K: "[a2 b2 c#3@11 [b2,f#3]@17 ~@2]/4", L: "e2@7 ~", M: "a2@9 a2 ~@2 a#2@9 a#2 ~@2",
  N: "b2@9 b2 ~@2 c#3@10 ~@2", O: "d#3 ~@2 b2@10 ~@2 f#3@3 g#3@3 b2 ~@2", P: "~@4 e3@3 ~, [e2,b2]@7 ~",
  Q: "~@4 e3@3 ~, e2@7 ~", R: "e2@10 ~@2 e3@9 ~@3", S: "d#3@3 b2@3 b2@10 ~@8", T: "[e2,e3]", U: "a2 b2",
  V: "e2@3 b2 e3@4", W: "[a2!2 e2@12 ~@2]/2",
})).s("gm_acoustic_guitar_steel").gain(0.33)

// other · flute
const flute = note(`<
  ~@21 A B@2 C D E F G A H@2 I D J@2 K A L M N M N M O P Q P ~@12 A B@2 R D S F G A T@2 I D U@2 K A L M N M N M O P Q P
  ~@10
>`.pickRestart({
  A: "g#4@2 f#4 e4 ~@4", B: "[~@3 f#4@3 f#4@3 g#4@3 a4@3 a4@3 a4@3 g#4 ~ g#4@8 ~@17]/2",
  C: "~@9 a4@3 a4 ~ a4@3 a4@4 g#4@3", D: "b4 ~", E: "~@3 a4 ~ a4@4 b4@3 c#5@3 a4 ~ f#4@4 e4@3", F: "d#4 ~@3",
  G: "~@3 b3", H: "[~@3 f#4@3 f#4@3 g#4 ~ a4@4 a4@3 a4 ~ g#4@3 g#4@8 ~@17]/2",
  I: "~@3 f#4@3 f#4@3 g#4 ~ a4@4 a4@3 a4@3 g#4@3", J: "[~@3 e4 ~ a4@4 b4@3 c#5@3 a#4@4 ~ f#4@3 e4@4 d#4@9 ~@12]/2",
  K: "~@3 a4", L: "~@3 a4@3 a4@3 a4@2 f#4@4 f#4@3 e4@3 f#4@3", M: "g#4 ~@3",
  N: "~@3 a4@3 a4@3 a4@2 g#4@4 f#4@3 e4@3 f#4@3", O: "~ c#4 a4@2 g#4@2 g#4 f#4", P: "e4 ~@3",
  Q: "~@2 a4@2 g#4@2 g#4 f#4", R: "~@3 f#4@3 f#4@3 g#4@3 a4@2 a4@3 a4@4 g#4@3",
  S: "~@3 a4 ~ a4@4 b4@3 c#5@3 a4@2 f#4@4 e4@3", T: "[~@3 f#4@3 f#4@3 g#4@2 a4@4 a4@3 a4@2 g#4@3 g#4@8 ~@17]/2",
  U: "[~@3 e4 ~ a4@4 b4@3 c#5@3 a#4@5 f#4@3 e4@4 d#4@9 ~@12]/2",
})).s("gm_flute").gain(0.56).pan(1)

// chords · synth strings 1
const synth_strings_1 = note("<~@37 A@7 B C D E ~@28 A@7 B C D E ~@10>".pickRestart({
  A: "[[e3,g#3,b3,g#4,b4]@2 [a2,a4,c#5] [b2,f#3,d#4,f#4] [e3,g#4]@2 [a2,a4,c#5] [b2,d#4,f#4] [e3,g#4]@2 [a2,a4,c#5] [b2,d#4,f#4] [e3,e4,g#4]@2, e4@3 b4@3 ~ b4@3 ~ b4@3, ~@4 e4@3 ~ e4@3 ~@3]/7", // E A B E A B E A …
  B: "[a2,c#4,e4,a4] [b2,d#4,f#4,b4]", C: "[e3,e4,g#4,b4]", D: "[a2,c#4,e4,a4] [b2,f#3,b3,d#4,f#4]",
  E: "[e3,g#3,e4,g#4,b4]@3 ~", // E
})).s("gm_synth_strings_1").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!18 [x!2 ~ x] [x!4]!38 [x!2 ~ x] [x!4]!37 ~@2>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@18 [~ x] ~@38 [~ x] ~@39>").gain(0.2)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2, flute, synth_strings_1, hihat, open_hat)

More by Dire Straits