Strudelify

Give It Up

Sade

KeyE minorTempo109 bpm
0:00/0:00
// Give It Up — Sade
// 109 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "Bass" named as a bass, played on electric bass finger (its piano patch is not one); ch 3 "E.Organ" named as an organ, played on drawbar organ (its piano patch is not one); ch 4 "Trumpet" named as a brass, played on trumpet (its piano patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(109/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 · "E.Piano"
const piano = note("<~ A@3 B@14 C@2 D@2 E@2 D@8 F@2 D@2 ~@8 B@10 D@10 G@2 ~@8 D@4 H@2 I@2 J@2 K@2>".pickRestart({
  A: "[[e3,d4,e4,g4,b4]@23 ~]/3", B: "[e3,d4,e4,g4,b4]/2", C: "[[e3,d4,e4,g4,b4]@21 ~@11]/2",
  D: "[e2,e3,d4,e4,g4,b4]/2", E: "[[e2,e3,d4,e4,g4,b4], [f#4,a#4] ~@31]/2", F: "[[e2,e3,d4,e4,g4,b4]@7 ~]/2",
  G: "[e2 ~@2 e2@25 ~@4, [e3,d4,e4,g4,b4]@29 ~@3]/2", H: "[[d4,b4]@7 [b3,d4,f#4,b4], [e2,e3,e4,g4]]/2",
  I: "[d4@24 ~@5 [c#4,e4,a4]@3, [e2,e3,g4,b4], e4@29 ~@3, ~@3 [b3,d4,f#4]]/2", // A Em Bm
  J: "[~ [a3,c4,f4], [e4,g4]@31 ~, ~ b4@31]/2", K: "[~@17 d5@14 ~, [e3,d4,e4,g4,b4]@31 ~, ~ [g5,b5]]/2",
})).s("gm_piano").gain(0.36)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@37 A B C ~ A B D B D B D B D B D B D B D B D B D B D B C ~@3 A B C ~ A B D B D B D B D B C E@2 F ~
>`.pickRestart({
  A: "~@6 b2 d3", B: "e3!2 ~ e3 ~@7 e2 b2@2 d3@2", C: "e3!2 ~ d3 ~@2 e2 ~@9", D: "e3!2 ~ d3 ~@2 e2 ~@5 b2@2 d3@2",
  E: "[c3@14 a2 ~ f2@13 ~ c#3 d3, ~@15 g2@2 ~@15]/2", F: "d#3 ~@5 e2@7 ~@3, e3@7 ~",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · drawbar organ · "E.Organ"
const drawbar_organ = note("<~@36 A B C@2 A B C@2 ~@22 A B C@2 A B C@2 ~@12>".pickRestart({
  A: "[c4,e4,g4,b4]", B: "[b3,d4,f#4,a4]", C: "[d4,e4,g4,b4]/2",
})).s("gm_drawbar_organ").gain(0.36)

// other · trumpet
const trumpet = note("<~@43 A B@2 ~ C D@2 ~@23 A B@2 ~ C D@2 ~@6>".pickRestart({
  A: "~@12 [a4,e5] g4 e4 ~", B: "[a4 ~ a4 ~ a4 ~ g4 ~ a4@2 g4 d4@2 e4 ~ b3@5 ~@12]/2", C: "~@12 [a4,e5] g4 [d4,e4] ~",
  D: "[a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4@2 g4 e4@5 ~@12]/2",
})).s("gm_trumpet").gain(0.36)

// drums · hihat
const hihat = s("hh").struct("x!16").gain(0.41)

// drums · congas
const congas = s("conga:13").struct("<~ [~ x ~@2 x ~@11]!85>").gain(0.98)

// drums · congas
const congas_2 = s("conga:18").struct("<[~@12 x!4] [x ~@9 x ~ x!4]!4 [x ~@4 x ~@2] [x ~@9 x ~ x!4]!80>").gain(0.98)

// drums · congas
const congas_3 = s("conga:33").struct("<~ [~@6 x!2 ~ x ~@6]!85>").gain(0.98)

stack(piano, bass, drawbar_organ, trumpet, hihat, congas, congas_2, congas_3)

More by Sade