0:00/0:00
// I'll Be Your Baby Tonight — Robert Palmer
// 96 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order, A@4 for four bars: edit a riff to change every repeat.
// bass · acoustic bass
const bass = note(`<
~@5 A B C B D@2 E F G H I J D@2 E F G H I@2 K L M N D@2 E F G H I J D@2 E F G H I@2 K L M N D@2 E F G H I J D@2 E F G
H I J D@2 E F G H I J G H I J G H O
>`.pickRestart({
A: "eb2 ~@2 c2 eb2 ~@2 c2 eb2 eb2@2 bb1 ~@2 c2@2", B: "eb2@2 ~ c2 eb2@2 ~ c2 eb2!2 ~ bb1 ~@2 c2@2",
C: "eb2 ~@2 c2 eb2@2 ~ c2 eb2!2 ~ bb1 ~ bb1 c2@2", D: "eb2@2 ~ c2 eb2@2 ~ c2 eb2 eb2@2 bb1 ~@2 c2@2",
E: "f2@2 ~ c2 f2@3 c2 f2 f2@2 c2 ~@2 c2@2", F: "f2@2 ~ c2 f2@2 ~ c2 f2!2 ~ c2 ~@2 c2 ~",
G: "ab1@2 ~ eb2 ab1@2 ~ ab1 eb2!2 ~ ab1 ~@2 ab1@2", H: "bb1@2 ~ f2 bb1@2 ~ bb1 f2 f2@2 bb1 ~@2 bb1@2",
I: "eb2@2 ~ c2 eb2@3 c2 eb2 eb2@2 bb1 ~@2 bb1 ~", J: "f2@3 bb1 f2@3 bb1 f2!2 ~ bb1 ~@2 bb1 ~",
K: "ab1@2 ~ ab1@2 ~ ab1@2 ab1@2 ~ ab1@2 ~ ab1@2", L: "eb2@2 ~ eb2@2 ~ eb2@2 eb2@2 ~ eb2@2 ~ eb2 e2",
M: "f2@2 ~ f2@2 ~ f2@2 f2@2 ~ f2@2 ~ f2 ~", N: "bb1@2 ~ bb1@2 ~ bb1@2 bb1@2 ~ bb0@5",
O: "eb2@2 ~ c2 eb2 bb1!2 ~ eb2@2 ~@6",
})).s("gm_acoustic_bass").gain(0.45)
// chords · percussive organ
const percussive_organ = note(`<
~@5 A@6 B@2 C D A E A@2 B@2 C D A F G H I J A@2 B@2 C D A E A K B@2 C D A F L H I J A@2 B@2 C D A E A@2 B@2 C D A E
A@2 B@2 C D A E C D A E C D M
>`.pickRestart({
A: "~ bb4 [eb5,g5] bb4 ~ bb4 [eb5,g5] ~@2 bb4 [eb5,g5] bb4 ~ bb4 [eb5,g5] ~", // Eb
B: "~ c5 [f5,a5] c5 ~ c5 [f5,a5] ~@2 c5 [f5,a5] c5 ~ c5 [f5,a5] ~", // F
C: "~ c5 [eb5,ab5] c5 ~ c5 [eb5,ab5] ~@2 c5 [eb5,ab5] c5 ~ c5 [eb5,ab5] ~", // Ab5
D: "~ d5 [f5,bb5] d5 ~ d5 [f5,bb5] ~@2 d5 [f5,bb5] d5 ~ d5 [f5,bb5] ~", // Bb5
E: "~ bb4 [d5,f5] bb4 ~ bb4 [d5,f5] ~@2 bb4 [d5,f5] bb4 ~ bb4 [d5,f5] ~", // Dm
F: "~ bb4 [db5,eb5,g5] bb4 ~ bb4 [db5,eb5,g5] ~@2 bb4 [db5,eb5,g5] bb4 ~ bb4 [db5,eb5,g5] ~", // Eb7
G: "[ab4,c5,eb5]@2 ~ [ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~ [ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~", // Ab
H: "[g4,bb4,eb5]@2 ~ [g4,bb4,eb5] ~@2 [g4,bb4,eb5] ~ [g4,bb4,eb5]@2 ~ [g4,bb4,eb5] ~@2 [g4,bb4,eb5] ~", // Eb
I: "[a4,c5,f5]@2 ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~ [a4,c5,f5]@2 ~ [a4,c5,f5] ~@2 [a4,c5,f5] ~", // F
J: "[bb4,d5,f5]@2 ~ [bb4,d5,f5] ~@2 [bb4,d5,f5] ~ [bb4,d5,f5] ~@7", // Bb
K: "~ bb4 [eb5,g5] ~ bb4!2 [eb5,g5] ~@2 bb4 [eb5,g5] bb4 ~ bb4 [eb5,g5] ~", // Eb
L: "[ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~ [ab4,c5,eb5]@2 ~ [ab4,c5,eb5] ~@2 [ab4,c5,eb5] ~", // Ab
M: "~ bb4 [eb5,g5] bb4 ~ bb4 [eb5,g5] ~ [bb4,eb5,g5]@2 ~@6", // Eb
})).s("gm_percussive_organ").gain(0.4).pan(0.3)
// chords · percussive organ · Dm Eb Ebsus2 Eb Ebsus2 Eb Ebsus2
const percussive_organ_2 = note(`<
~@5
[~@13 [d4,f4] [eb4,g4] f4]
[~@13 [eb4,g4] [eb4,f4] ~]
[~@13 [eb4,g4] [eb4,f4]@2]
[~@13 [eb4,g4] [eb4,f4] ~]
~@71
>`).s("gm_percussive_organ").gain(0.4)
// chords · string ensemble 1
const string_ensemble_1 = note(`<
~@13 A@3 ~@5 A@3 ~@9 A@3 ~ B@3 C A@3 ~@9 A@3 ~ B@3 C A@3 ~ B@3 C A@3 ~ A@3 ~ D@3
>`.pickRestart({
A: "[[c5,eb5,ab5]@12 [c5,eb5,ab5]@2 [bb4,d5,f5]@10 ~@3 [eb5,g5]@2 [eb4,g4] [g4,c5] [ab4,bb4]@2 [g4,bb4] [eb4,g4]@13 ~]/3", // Ab Bb Eb C5 Absus2 Gm Eb
B: "[~@8 [g4,g5]@2 [f4,f5] ~ [f4,f5]@2 [eb4,eb5]@4 ~@6 [g4,g5]@2 [f4,f5] ~ [f4,f5]@2 [eb4,eb5]@4 ~@6 [g4,g5]@2 [f4,f5] ~ [f4,f5]@2 [eb4,eb5]@2]/3", // G F Eb G F Eb G F …
C: "~@8 [g4,g5]@2 [f4,f5] ~ [f4,f5]@2 [eb4,eb5]@2", // G F Eb
D: "[[c5,eb5,ab5]@12 [c5,eb5,ab5]@2 [bb4,d5,f5]@10 ~@3 [eb5,g5]@2 [eb4,g4] [g4,c5] [ab4,bb4]@2 [g4,bb4] [eb4,g4]@4 ~@10]/3", // Ab Bb Eb C5 Absus2 Gm Eb
})).s("gm_string_ensemble_1").gain(0.4)
// other · electric guitar clean
const electric_guitar_clean = note(`<
~@9 A@2 B C D E F G A@2 B C D E F H I J K L A@2 B C D E F G A@2 B C D E F H I J K L A@2 B C D E F G A@2 B C D E F G
A@2 B C D E F G D E F G D E M
>`.pickRestart({
A: "eb3!2 ~ eb3!3 ~ eb3!3 ~ eb3!3 f3 eb3", B: "f3!2 ~ f3!3 ~ f3!3 ~ f3!3 g3 f3", C: "f3!2 ~ f3!3 ~ f3!3 ~ f3!4 g3",
D: "ab3!2 ~ ab3!3 ~ ab3!3 ~ ab3!3 g3 ab3", E: "bb3!2 ~ bb3!3 ~ bb3!3 ~ bb3!2 ab3 g3 f3",
F: "eb3!2 ~ eb3!3 ~ eb3!3 ~ eb3!3 d3 eb3", G: "f3!2 ~ f3!3 ~ ab3 bb3!2 ~ bb3!2 ab3 g3 f3",
H: "eb3!2 ~ eb3!3 ~ eb3!3 ~ eb3!2 f3 g3 ab3", I: "ab3@2 ~ ab3@2 ~ ab3@2 ab3@2 ~ ab3@2 ~ ab3@2",
J: "eb3@2 ~ eb3@2 ~ eb3@2 eb3@2 ~ eb3@2 ~ eb3 e3", K: "f3@2 ~ f3@2 ~ f3@2 f3@2 ~ f3@2 ~ f3 ~",
L: "bb3@2 ~ bb3@2 ~ bb3@2 bb3@2 ~@2 bb3 ab3 g3 f3", M: "eb3!2 ~ eb3!3 ~ eb3!2 ~@7",
})).s("gm_electric_guitar_clean").gain(0.3)
// chords · electric guitar muted
const electric_guitar_muted = note(`<
~@5 A@6 B@2 C D A E A@2 B@2 C D A F G H I J A@2 B@2 C D A E A@2 B@2 C D A F G H I J A@2 B@2 C D A E A@2 B@2 C D A E
A@2 B@2 C D A E C D A E C D K
>`.pickRestart({
A: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb
B: "~@2 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~", // F
C: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
D: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // Bb
E: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
F: "~@2 [bb3,db4,eb4,g4] ~@3 [bb3,db4,eb4,g4] ~@3 [bb3,db4,eb4,g4] ~@3 [bb3,db4,eb4,g4] ~", // Eb7
G: "[ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~ [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~", // Ab
H: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~ [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~", // Eb
I: "[a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~", // F
J: "[bb3,d4,f4] ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4] ~ [bb3,d4,f4] ~@7", // Bb
K: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 ~@6", // Eb
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.7)
// chords · brass section
const brass_section = note(`<
~@24 A B ~@10 C D E F G H I J A B ~@10 C D E F G H I J C D E F G H I J K H I J K H I L
>`.pickRestart({
A: "[g4,bb4,db5]@15 ~", B: "[ab4,c5,eb5] ~@15", C: "~@14 [d4,f4]!2",
D: "[d4,f4] [bb3,eb4] ~ [bb3,eb4]!2 ~@9 [d4,f4]!2", E: "[d4,f4] [bb3,eb4] ~ [bb3,eb4] ~@10 [eb4,g4]!2",
F: "[eb4,g4] [c4,f4] ~ [c4,f4]!2 ~@9 [eb4,g4]!2", G: "[eb4,g4] [c4,f4] ~ [c4,f4] ~@10 [c5,eb5]!2",
H: "[c5,eb5] [ab4,c5] ~ [ab4,c5]!2 ~@9 [c5,eb5] [c5,f5]", I: "[c5,eb5] [bb4,d5] ~ [bb4,d5] ~@10 [ab4,c5]!2",
J: "[ab4,c5] [g4,bb4] ~ [g4,bb4]!2 ~@11", K: "~@14 [c5,eb5]!2",
L: "[ab4,c5] [g4,bb4] ~ [g4,bb4] ~ [ab4,c5] [g4,bb4] ~ [g4,eb5] ~@7", // Ab Gm Ab Gm Cm
})).s("gm_brass_section").gain(0.6)
// other · trombone
const trombone = note("<~@25 A B C D ~@16 A B C D ~@31>".pickRestart({
A: "~@13 c4 db4 c4", B: "bb3!2 ~ bb3 ~ bb3!5 ~ bb3 ~ bb3!2 ~", C: "f3!2 ~ a3 ~ a3!3 c4!2 ~ eb4 ~ c4!2 eb4",
D: "d4!2 ~ d4 ~ d4!3 ~@8",
})).s("gm_trombone").gain(0.5)
// drums · kick
const kick = s("bd").struct(`<
~
[x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!27
[x ~@2 x ~@2 x ~ x ~@5 x!2]
[x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!19
[x ~@2 x ~@2 x ~ x ~@5 x!2]
[x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~]!30
[x ~@2 x!4 ~ x ~@7]
>`).gain(0.45)
// drums · snare
const snare = s("sd").struct("<~ [~@10 x!2 ~@4]!24 ~@4 [~@10 x!2 ~@4]!16 ~@4 [~@10 x!2 ~@4]!30 [~@6 x!3 ~@7]>")
.gain(0.45)
// drums · clap
const clap = s("cp").struct("<~ A@24 B@2 C D A@16 B@2 C D A@30 E>".pickRestart({
A: "~ x ~@2", B: "x!2 ~@3 x!5 ~@3 x!3", C: "x!2 ~@3 x!5 ~ x ~ x!3", D: "x!2 ~@3 x!5 ~@6", E: "~@4 x ~@2 x!2 ~@7",
})).gain(0.3)
// drums · hihat
const hihat = s("hh").struct("<~ [x!16]!78 [x!6 ~@2 x ~@7]>").gain(0.25)
// drums · mid tom
const mid_tom = s("mt").struct("<A B C@2 A B C@19 ~@3 C@17 ~@3 C@31 D>".pickRestart({
A: "~@13 x!3", B: "x ~@12 x!2 ~", C: "~@13 x!2 ~", D: "~@7 x!2 ~@7",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct("<~@79 [~@3 x ~@4]>").gain(0.45)
// drums · ht
const ht = s("ht").struct("<~ [~@3 x]!24 ~@4 [~@3 x]!16 ~@4 [~@3 x]!30 [~@7 x!2 ~@7]>").gain(0.3)
// drums · agogo bells
const agogo_bells = s("agogo:2").struct("<~ A@24 ~@3 B A@16 ~@3 B A@30 ~>".pickRestart({
A: "~@14 x!2", B: "~@9 x!2 ~@5",
})).gain(1.9)
// drums · agogo bells
const agogo_bells_2 = s("agogo:4").struct("<~ [~@10 x!2 ~@4]!24 ~@4 [~@10 x!2 ~@4]!16 ~@4 [~@10 x!2 ~@4]!30 ~>")
.gain(1.9)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x!2 ~ x ~ x ~ x!3 ~ x ~ x!3]!78 [x!2 ~ x ~ x ~ x!2 ~@7]>").gain(1.01)
stack(
bass, percussive_organ, percussive_organ_2, string_ensemble_1, electric_guitar_clean, electric_guitar_muted,
brass_section, trombone, kick, snare, clap, hihat, mid_tom, open_hat, ht, agogo_bells, agogo_bells_2, cabasa
)
More by Robert Palmer
Addicted To Love1986 · A major · 110 bpmSimply IrresistibleA major · 141 bpmBad Case Of Lovin' You ( Doctor, Doctor)E major · 153 bpmEarly in the MorningE minor · 120 bpmEvery Kind of PeopleG major · 161 bpmKnow By NowE major · 118 bpmMercy Mercy Me I Want YouG♯ minor · 100 bpmSome Guys Have All the LuckA major · 92 bpm
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.