Strudelify

We Work the Black Seam

Sting

KeyA minorTempo122 bpm
0:00/0:00
// We Work the Black Seam — Sting
// 122 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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
const bass = note(`<
  A B@8 C D E B@2 F G B C D E B@2 F G B C D E B@2 F G B C D E B@2 F G H I J K H I J K H I J K H I L M B C D E B@2 F G B
  C D E B@2 F G B C D E B@2 F G B C D E B@2 F G B C D E B@2 F G H I J K H I J K H I J K H I L M B C D E B@2 F G B C D E
  B@2 F G B C D E B@2 F G H I J K H I J K H I J K H I L M B C D E B@2 F N
>`.pickRestart({
  A: "~ e2 ~ e2 ~ e2 ~ e2", B: "a2 e2 ~ e2 ~ e2 ~ e2", C: "a2 e2 ~ e2 ~ e2 ~ d2", D: "c2 g2 ~ g2 ~ g2 ~ g2",
  E: "e2 b2 ~ b2 ~ b2 ~ b2", F: "f2 c3 ~ c3 ~ c3 ~ c3", G: "d2 a2 ~ a2 ~ a2 ~ a2", H: "f2@5 ~ f2@9 ~",
  I: "c2@5 ~ c2@9 ~", J: "d2@5 ~ d2@9 ~", K: "a1@5 ~ a1@9 ~", L: "d2@5 ~ d2@7 ~ d2@2", M: "~ d2 ~ d2!2 ~ d2!2",
  N: "d2@2 a2@2 ~@2 a2@4 ~@2 d2 ~ a1@2",
})).s("gm_electric_bass_finger").gain(0.79)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@40 A@8 B@8 ~@40 A@8 B@8 ~@24 A@8 B@8 ~@8>".pickRestart({
  A: "[[f1,f2,f3,a3,f4] [c2,g3,e4] [d2,f4] [a1,b3,e4] [f1,f2,f3,f4] [c2,g3,e4] [d2,f4] [a1,b3,e4], c4 c4, ~ g4@3 ~ g4@3, ~ d4@2 ~@2 d4@2 ~, ~@2 a3@3 ~ a3@2]/8", // F C Dm Asus2 F C Dm Asus2
  B: "[[f1,f2,f3,f4] [c2,g3,e4] [d2,f4] [a1,b3,e4] [f1,f2,f3,f4] [c2,g3,e4] [d2,a3,f4]@2, c4 c4, ~ g4@3 ~@4, ~ d4@2 ~@2 [d4,g4]@3, ~@2 a3@3 ~@3]/8", // F C Dm Asus2 F C Dm G5
})).s("gm_string_ensemble_2").gain(0.3).pan(1)

// chords · percussive organ
const percussive_organ = note("<~@40 A@8 B@8 ~@40 A@8 B@8 ~@24 A@8 B@8 ~@8>".pickRestart({
  A: "[[f2,f3,f4,a4,f5] [c3,g4,e5] [d3,f5] [a2,b4,e5] [f2,f3,f4,f5] [c3,g4,e5] [d3,f5] [a2,b4,e5], c5 c5, ~ g5@3 ~ g5@3, ~ d5@2 ~@2 d5@2 ~, ~@2 a4@3 ~ a4@2]/8", // F C Dm Asus2 F C Dm Asus2
  B: "[[f2,f3,f4,f5] [c3,g4,e5] [d3,f5] [a2,b4,e5] [f2,f3,f4,f5] [c3,g4,e5] [d3,a4,f5]@2, c5 c5, ~ g5@3 ~@4, ~ d5@2 ~@2 [d5,g5]@3, ~@2 a4@3 ~@3]/8", // F C Dm Asus2 F C Dm G5
})).s("gm_percussive_organ").gain(0.17).pan(1)

// chords · kalimba
const kalimba = note(`<
  A@14 B@2 A@6 B@2 A@6 B@2 A@6 B@2 ~@15 C A@6 B@2 A@6 B@2 A@6 B@2 A@6 B@2 A@6 B@2 ~@15 C A@6 B@2 A@6 B@2 A@6 B@2 ~@15 C
  A@6 B D
>`.pickRestart({
  A: "[e4,a4] ~ [e4,a4] ~ [d4,g4] ~ [f#4,b4] ~ [e4,a4] ~@5 [a3,d4] ~", // A5 G5 B5 A5 D5
  B: "[e4,a4] ~ [e4,a4] ~ [d4,f4] ~ [f4,b4] ~ [e4,a4] ~@5 [a3,d4] ~", C: "~@7 [a3,d4]",
  D: "[e4,a4] ~ [e4,a4] ~ [d4,f4] ~ [f4,b4] ~ [e4,a4] ~@3 [f4,b4] ~ [e4,a4]@2", // A5 Dm Fdim A5 Fdim A5
})).s("gm_kalimba").gain(0.26)

// other · bassoon
const bassoon = note(`<
  ~@3 A B@2 C@3 ~@3 D E F@2 ~@12 G@2 H I@2 ~@22 A J@2 K@2 J@2 L@2 M N O P Q@4 O R S T U@4 M N O P Q@4 O R S T V@4 ~@15 A
  J@2 K@2 J@2 L@2 M N O P Q@4 O R S T V@4 ~@15 A J@2 K@2 J@2 W@2
>`.pickRestart({
  A: "~@7 e5", B: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 a4@2 ~@4 e5@2]/2",
  C: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5 ~@3 e4@11 ~@9]/3", D: "~@5 a4 b4 g4", E: "a4@2 ~ a4 b4 g4 a4 ~",
  F: "[~@10 d4@15 ~@7]/2", G: "[c5@13 ~ a4 e4]/2", H: "c5 ~ a4 e4 c5@3 ~", I: "[a4@2 e4@2 c5@5 ~@3 e4@8 ~@12]/2",
  J: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5@2 ~@4 e5@2]/2", K: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5 ~@5 e5@2]/2",
  L: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5 ~@3 a4@4]/2", M: "c5 d5 b4 g4", N: "a4@3 ~@3 a4@2", O: "c5 d5 e5 g5",
  P: "a5 f#5 d5 c5", Q: "[e5@15 a4]/4", R: "a5 f#5 d5 b5", S: "g5 e5 c5 e5", T: "d5 b4 a4 g4", U: "[a4@29 ~ a4@2]/4",
  V: "[a4@29 ~@3]/4", W: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5 ~@3 d5@2 a4@2]/2",
})).s("gm_bassoon").gain(0.36).pan(0.7)

// other · soprano sax
const soprano_sax = note(`<
  ~@40 A B C D A B C D A B C D A B E F ~@3 G H@2 I@2 ~@4 J@2 K L ~@5 M N@2 ~@4 O P Q ~@5 R S T@2 A B C D A B C D A B C D
  A B E F ~@3 G H@2 I@2 ~@5 U V W ~@8 A B C D A B C D A B C D A B E F ~@3 G H@2 I@2
>`.pickRestart({
  A: "c4@7 d4", B: "e4@7 f4", C: "g4@7 a4", D: "b4@13 ~ c5@2", E: "g4@11 ~ f4@4", F: "g4@7 ~", G: "~@7 e5",
  H: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 c5@2 d5@2 ~@4 e5@2]/2", I: "[d5 ~@3 d5@2 c5 ~@3 c5 ~@3 b4@8 a4@5 ~@5]/2",
  J: "[~@8 d5@18 ~@2 c5 d5 ~ e5]/2", K: "c5@2 ~@2 g4@2 ~@2 g4@5 e4 ~ f4", L: "e4@13 ~@3",
  M: "~@2 g4@2 a4@2 b4@2 c5@4 b4@2 g4 ~", N: "[g4@4 a4@2 e4@6 g4@2 f4@8 e4@2 d4@7 ~]/2", O: "~@4 g4 ~@3",
  P: "g4 ~@4 a4@3", Q: "g4@2 e4@3 ~ d4@2 e4@4 ~@4", R: "~@3 g4 d5 ~@2 g4", S: "d5 ~@7", T: "[~@6 c5@9 ~]/2",
  U: "b3@3 c4@4 ~", V: "b4@4 a4@7 ~ e4@4", W: "g4@15 ~",
})).s("gm_soprano_sax").gain(0.42).pan(0.3)

// chords · piano
const piano = note("<~@55 A B ~@54 A B ~@38 A B ~@7>".pickRestart({
  A: "f4@2 e4@2 d4@2 c4@2 b3@2 a3@3 ~ e4 ~", B: "[e4,a4] ~ [e4,a4] ~@3 [e4,a4] ~@9",
})).s("gm_piano").gain(0.39).pan(0.2)

// drums · kick
const kick = s("bd").struct("<[~@3 x ~@4] [~ x!3 ~@4]!159>").gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@17 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@17 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@17 ~ A ~ A ~ A ~ A
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("~@3 x").gain(0.8)

// drums · ride
const ride = s("rd").struct(`<
  A B@2 C B@3 C B@7 D B@3 D B@3 D B@7 D B@7 D B@11 E B@3 C B@7 D B@7 D B@3 D B@3 D B@7 D B@7 D B@11 E B@3 C B@7 D B@7 D
  B@7 D B@11 E B@3 C B@7 D
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~@2 x ~@3 x ~@3 x ~@3 x!2", D: "~@2 x ~@3 x ~@3 x!2 ~@2 x ~",
  E: "~@2 x ~@3 x ~@3 x!2 ~@2 x!2",
})).gain(0.4)

// drums · splash
const splash = s("cr").struct("<~@159 [~@7 x]>").gain(0.4)

stack(bass, string_ensemble_2, percussive_organ, kalimba, bassoon, soprano_sax, piano, kick, rim, snare, ride, splash)

More by Sting