0:00/0:00
// Luv 4 Luv — Robin S
// 121 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "ORGAN 1" drawbar organ (copy of ch 2 "ORGAN 1" drawbar organ, 0.5 beats late)
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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 · drawbar organ · "ORGAN 1"
const bass = note(`<
~@4 A B A B A B A ~ A B A C A B A D A B A C A B A D A B A C A B A D ~@4 A B A B A B A B A B A B A B A B A B A B A B A
B A B A B A B A B ~@16 A B A C A B A D A B A C A B A D A B A C A B A D ~@2
>`.pickRestart({
A: "d2@2 ~@2 d2 ~ d2 f2@2 ~ f2 ~@2 d2 f2 g2", B: "c2@2 ~@2 c2 ~ c2 g2@2 ~ g2 ~@2 c2 g2 c2",
C: "c2@2 ~@2 c2 ~ c2 g2@2 ~ g2 ~@2 c2 g2 a2", D: "c2@2 ~@2 c2 ~ c2 a1@2 ~ a1 ~@2 a1 c2 a1",
})).s("gm_drawbar_organ").gain(0.56).pan(0.3)
// bass · lead 8 bass lead · "BASS&LEAD"
const bass_2 = note(`<
A B A C D ~ D ~ D ~ D E D ~@3 D ~ D ~ D ~@3 D F D ~ D ~@3 D F D ~ A B A G D ~@3 D ~ D ~ D ~@3 D F D ~ D ~@3 D ~ D ~ D
~@3 D F D ~ A B A C A B A C H I H I H I H I D ~@3 D F D ~ D ~@3 D F D ~ D ~@3 D F D J E K
>`.pickRestart({
A: "g1@3 ~@3 g1@2 g1@2 g1 c2@2 ~ c2 ~", B: "~ g1@2 ~ g1@3 ~ g1@2 ~ d1@2 ~ d1 ~",
C: "~ g1@2 ~ g1@3 ~ g1@2 c2 d1@2 ~ d1 ~", D: "g1 ~@7", E: "g1 ~ g1!3 ~ g1 ~", F: "~@7 f1",
G: "~ g1@2 ~ g1@3 ~ g1@2 c2 d1@3 d1@2", H: "g3 ~@4 g3 bb3 c4", I: "f3 ~@7", J: "~ g1@3 ~@4 g1 g1@2 g1@2 g1@2 ~",
K: "g1!2 ~@14",
})).s("gm_lead_8_bass_lead").gain(0.32)
// bass · lead 8 bass lead · "BASS&LEAD" · soft notes
const bass_soft = note("<~@80 A B A B A B A B ~@26>".pickRestart({
A: "g1 ~@4 g1 bb1 c2", B: "f1 ~@7",
})).s("gm_lead_8_bass_lead").gain(0.18)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~@28 A@2 B C A@2 B C ~@20 A@2 B C A@2 B C A@2 B C A@2 B C ~@8 D E F G D E F G A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C
A@2 B C ~@2
>`.pickRestart({
A: "[bb3@7 ~ a3@3 ~ [c4,e4,g4]@4, [d4,f4]@3 ~]/2", B: "[bb3,d4,f4]", C: "[c4,e4,g4]@15 ~",
D: "[g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~", // G5
E: "[g4,d5] ~ [g4,d5] f4 [g4,d5] ~ [g4,d5] f4 [g4,d5] ~ [g4,d5] f4 [g4,d5] f4 [g4,d5] f4", // G5
F: "[g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] f4 [g4,d5] ~ [g4,d5] f4", // G5
G: "[g4,d5] ~ [g4,d5] f4 [g4,d5] ~ [g4,d5] ~ [g4,d5] ~ [g4,d5] f4 [g4,d5] f4 [g4,d5] f4", // G5
})).s("gm_string_ensemble_2").gain(0.09)
// drums · kick
const kick = s("bd").struct(`<
A B A C A B A B A D A B A B A C A D A E A B A D A D A F A B A D A D A F A B A C A B A C A D A E A B A C A D A@3 B A D
A D A B A B A C A D A F A B A C A D A G ~@8 A B A D A D A F A B A D A D A F A B A D A D A F B H
>`.pickRestart({
A: "x!4", B: "x ~@3 x ~@2 x!2 ~@3 x ~@3", C: "x ~@3 x ~@2 x!2 ~@2 x!2 ~ x ~", D: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@3",
E: "x ~@3 x ~@2 x!2 ~@2 x!4 ~", F: "x!5 ~ x ~", G: "x ~ x!3 ~ x ~", H: "x",
})).gain(0.8)
// drums · snare
const snare = s("sd").struct(`<
A@13 B A@13 C A@7 C A@6 B A@11 ~ D A@7 E A@7 F A@7 G ~@7 H A@7 C A@7 C A@7 C I J
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@6 x!2 ~@3", C: "~ x ~@2 x ~@4 x!7", D: "~@11 x!4 ~", E: "~@4 x ~@4 x!7",
F: "~ x ~@2 x ~@2 x ~@3 x!5", G: "~ x!2 ~ x ~@4 x!7", H: "~ x!2 ~ x ~ x!2 ~ x!7", I: "~@4 x!2 ~@3 x ~ x!3 ~ x",
J: "x!2 ~@14",
})).gain(0.56)
// drums · clap
const clap = s("cp").struct("<~@80 [~ x ~ x]!8 ~@26>").gain(0.48)
// drums · pedal hat
const pedal_hat = s("hh").struct("<A B@35 A B@17 C ~ B@16 A B@3 A B@3 A B@3 A B@28 C>".pickRestart({
A: "~ x!3", B: "x!4", C: "x",
})).gain(0.24)
// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x ~ x ~ x]!54 ~@2 [~ x ~ x ~ x ~ x]!56 [~ x ~ x ~ x ~@2] ~>").gain(0.56)
// drums · tambourine
const tambourine = s("tb").struct("<[x!16]!28 [~ x!15] [x!16]!59 [~ x!15] [x!16]!15 [~ x!15] [x!16]!8 [x!2 ~@14]>")
.gain(0.48)
// drums · splash
const splash = s("cr").struct(`<
A@5 ~@2 B A ~@2 C A ~@2 B A ~@2 B A ~@2 B A ~@2 D A ~@2 B A ~@2 D A@5 ~@2 B A ~ A E A ~@2 F A B A G A@3 H A I A D A@3
I A@3 D A@7 D A ~@2 B A@5 ~@2 B A ~@2 D A ~@2 B A ~@2 D A ~@2 B A ~@2 D J K
>`.pickRestart({
A: "x", B: "~@7 x", C: "x ~@3 x ~ x ~ x ~@2 x!2 ~ x ~", D: "x ~@3 x ~@3 x ~@2 x!2 ~ x ~",
E: "~@4 x ~@3 x ~@2 x ~@2 x ~", F: "~@3 x", G: "~ x ~@2 x ~@3 x ~@2 x!2 ~ x ~", H: "x ~@5 x!2", I: "x ~@6 x",
J: "x ~@3 x ~ x ~ x ~@2 x!3 ~ x", K: "x!2 ~@14",
})).gain(0.64)
stack(bass, bass_2, bass_soft, string_ensemble_2, kick, snare, clap, pedal_hat, open_hat, tambourine, splash)
More by Robin S
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.