Strudelify

Show Me Love

Robyn

KeyE majorTempo92 bpm
0:00/0:00
// Show Me Love — Robyn
// 92 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 ocarina (copy of ch 1 fretless bass)
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · fretless bass
const bass = note("<A B A B C D A B A B A B C D A B A B A B C D A B A B A B C D A B ~>".pickRestart({
  A: "e2@3 e2@3 a1@2 b1@4 ~@2 b1!2", B: "d2@3 d2@3 g#1@2 a1@6 g1@2", C: "e2@3 e2@3 a1@2 b1@2 b1@2 ~@2 b1!2",
  D: "c#2@2 c#2!2 c#2@2 g#1@2 a1@2 a1@2 g#2@2 e2@2",
})).s("gm_fretless_bass").gain(0.59)

// other · piano · "Sample SMF"
const piano = note("<A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@2 B A ~@3 A ~@2 B A ~@4>".pickRestart({
  A: "[e2,e3]@5 ~@11", B: "~@7 [e2,e3]",
})).s("gm_piano").gain(0.54).pan(0.6)

// chords · epiano2 · "Cat #TT1038"
const epiano2 = note("<A B A C D E A B A B A C D E A B A B A C D E A B A B A C D E A B ~>".pickRestart({
  A: "[b3,e4,g#4]@5 ~ [b3,d#4,f#4]@9 ~", B: "[b3,d4,f#4]@5 ~ [a3,c#4,e4]@9 ~", C: "[b3,d4,f#4]@6 [a3,c#4,e4]@9 ~",
  D: "[e4,g#4,b4]@6 [d#4,f#4,b4]@9 ~", E: "[c#4,e4,g#4,b4]@5 ~ [c#4,e4,a4]@10",
})).s("gm_epiano2").gain(0.38).pan(0.6)

// other · electric guitar muted
const electric_guitar_muted = note("<~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~>".pickRestart({
  A: "~@2 e3 ~ e3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.3).pan(0.3)

// chords · synth brass 1
const synth_brass_1 = note("<A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4>".pickRestart({
  A: "[b4,e5]@3 ~@5", // E5
})).s("gm_synth_brass_1").gain(0.54).pan(0.7)

// chords · synth brass 1 · soft notes
const synth_brass_1_soft = note("<A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4>".pickRestart({
  A: "e4@3 ~@5",
})).s("gm_synth_brass_1").gain(0.3).pan(0.7)

// chords · drawbar organ
const drawbar_organ = note("<A@2 B@3 C D@2 A@2 B@3 C D@2 A@2 B@3 C D@2 A@2 B@3 C D@2 ~>".pickRestart({
  A: "[[e5,g#5]@3 d#5@5 d5@3 [c#5,e5]@5, ~@6 f#5@17 ~@9]/2", // E C#m
  B: "[[e5,g#5]@3 d#5@5 d5@3 c#5@5 g#5@3 [d#5,f#5]@5, ~@3 f#5@8 e5@8 ~@5]/3", C: "b5@3 a5@5, e5",
  D: "[[e5,g#5]@3 d#5@5 d5@3 [c#5,e5]@5, ~@3 f#5@8 ~@5]/2", // E C#m
})).s("gm_drawbar_organ").gain(0.07)

// chords · pad new age · "Tran WHitley"
const pad_new_age = note("<A@2 B@2 C D B@2 A@2 B@2 C D B@2 A@2 B@2 C D B@2 A@2 B@2 C D B@2 ~>".pickRestart({
  A: "[[e4,g#4]@3 [d#4,f#4]@5 [d4,f#4]@3 [c#4,e4]@5, b4@31 ~]/2", // E D#m D C#m
  B: "[[e4,g#4]@6 [d#4,f#4]@10 [d4,f#4]@6 [c#4,e4]@9 ~, b4@31 ~]/2", C: "[e4,g#4]@3 [d#4,f#4]@5, b4@15 ~",
  D: "[g#4,b4]@3 [c#4,a4]@5, e4", // G#m F#m
})).s("gm_pad_new_age").gain(0.14).pan(0.3)

// drums · kick
const kick = s("bd").struct("<[x!2 ~@3 x ~@2]!32 ~>").gain(0.66)

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

// drums · hihat
const hihat = s("hh").struct("<[x!4]!32 ~>").gain(0.52)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@3 x ~ x ~ x]!32 ~>").gain(0.33)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~@6]!32 ~>").gain(0.52)

// drums · crash
const crash = s("cr").struct("<x ~@7 x ~@7 x ~@7 x ~@8>").gain(0.39)

// drums · shaker
const shaker = s("sh").struct("<[x ~ x!3 ~ x!7 ~ x!2]!32 ~>").gain(0.33)

// drums · triangle
const triangle = s("triangles:30").struct("<[~@3 x ~@3 x ~@3 x ~@4]!32 ~>").gain(2.29)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<[~@7 x]!32 ~>").gain(2.29)

stack(
  bass, piano, epiano2, electric_guitar_muted, synth_brass_1, synth_brass_1_soft, drawbar_organ, pad_new_age, kick,
  snare, hihat, hihat_soft, open_hat, crash, shaker, triangle, triangle_2
)