0:00/0:00
// I Can Love You Like That — All-4-One
// 135 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 159 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 · "FRETLESS"
const bass = note(`<
~@40 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@32 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@12 E F G H E F D@2 ~@10 I@2 J@2 K@2 L@2
I@2 J@2 K@2 L@2 I@2 J@2 K@2 M@2 ~
>`.pickRestart({
A: "a1/2", B: "f#1/2", C: "b1/2", D: "[e1@31 ~]/2", E: "b1", F: "c#2", G: "d2", H: "e1", I: "a#1/2", J: "g1/2",
K: "c2/2", L: "[f1@31 ~]/2", M: "f1/2",
})).s("gm_fretless_bass").gain(0.49)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
A@4 B@4 C@6 D@2 C@6 D@2 E@2 F G H@2 I@2 J@2 F G K@2 L@2 A@4 B@4 A@4 B@4 C@6 D@2 C@6 D@2 E@2 F G M@4 J@2 F G K@2 L@2
A@4 B@4 A@4 B@4 N@2 O P Q@2 R S T@2 U S V W X Y Z AA AB@2 AC@2 AD@4 AE@4 AD@4 AE@4 AD@4 AE@4 AD@4 AF@4 ~
>`.pickRestart({
A: "[~@32 f#3 ~@31, [c#4,e4]]/4", B: "[b2 e2, [b3,d4,f#4]]/4",
C: "[~@34 f#3@27 ~@3 [b2,d4,f#4]@32, c#4@31 ~, e4@61 ~@35]/6", D: "[[e2,f#3,b3,d4,e4]@15 ~]/2",
E: "[f#2,a3,c#4,e4]/2", F: "[g3,e4]@5 ~ [f3,d4]@6 [e3,c#4]@4", G: "[b2,b3,d4,f4]",
H: "[[e2,c#4,e4]@5 ~ [d2,d4,f#4]@26]/2", I: "[e2@24 [f2,g#3,b3]@7 ~, f#4@11 ~@5]/2", J: "[f#2,c#4,f#4]/2",
K: "[[a2,c#4,e4] [d2,d4,f#4]@3]/2", L: "[[e2,f#4], [a3,d4] ~]/2",
M: "[[a2,c#4,e4]@8 [d2,f#4]@24 e2@24 [f2,g#3,b3]@7 ~, ~@4 d4@23 ~@5, ~@16 f#4@11 ~@5]/4", N: "[d2,d4]/2",
O: "[c#2,b3,e4]", P: "[f#2,a3,c#4]", Q: "[[d2,a3], [d4,f#4]@29 ~@3]/2",
R: "[a3,c#4,e4]@5 ~ [g#3,b3,e4]@5 ~ [a3,c#4,e4]@4, c#2", S: "[f#2,a3,c#4,f#4]",
T: "[[b3,e4,g#4]@11 ~ [a3,d4,f#4]@19 ~, d2]/2", U: "[c#2,b3,e4,g#4]@5 ~ [d2,a3,d4,f#4]@6 [e2,b3,e4,g#4]@3 ~",
V: "[b2,a3,d4,f#4]", W: "[c#3,e4,g#4], b3@7 ~", X: "[d3,a4], f#4@9 ~@7", Y: "~@4 e3@11 ~, [e2,d4,e4,f#4]",
Z: "[b2,d4,f#4], a3@13 ~@3", AA: "[c#3,b3,e4,g#4]", AB: "[[e2,a3,b3,d4,f#4,a4]@25 ~@7]/2",
AC: "[[a#3,g4]@5 ~ [f2,c4,f4]@10, d#4, d#2@3 ~@5]/2", AD: "[~@32 g3 ~@31, [d4,f4]]/4", AE: "[c3 f2, [c4,d#4,g4]]/4",
AF: "[[c3,d#4,g4]@2 [d#4,g4] ~, c4@3 ~, ~ f2]/4", // Cm D#
})).s("gm_string_ensemble_2").gain(0.25)
// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note(`<
A@4 B@4 C@2 ~@2 D@2 ~@2 C@2 ~@2 D@2 ~@5 E ~@3 F C@2 ~ E C@2 ~@2 A@4 B@4 A@4 B@4 C@2 ~@2 D@2 ~@2 C@2 ~@2 D@2 ~@5 E G@4
C@2 ~ E C@2 ~@2 A@4 B@4 A@4 B@4 C@2 ~@12 H I ~@6 J@4 K@4 J@4 K@4 J@4 K@4 J@4 L@3 ~@2
>`.pickRestart({
A: "[~@36 f#3@27 ~, a3]/4", B: "a4/4", C: "a3/2", D: "[~ a3@14 ~]/2", E: "a3", F: "~@4 e4@3 ~",
G: "[a3@27 ~ e4@3 ~]/4", H: "~@5 f#4@3, d4", I: "a4", J: "[~@36 g3@27 ~, a#3]/4", K: "a#4/4", L: "a#4/3",
})).s("gm_string_ensemble_2").gain(0.12)
// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note(`<
~@27 A B@2 ~@5 A B@2 ~@2 C@4 D E F@2 C@4 D E F@2 ~@19 A B@2 ~@5 A B@2 ~@2 C@4 D E F@2 C@4 D E F@2 ~ G H I@3 J K ~@22
L@4 M@2 N@2 L@4 O@4 L@4 O@4 ~
>`.pickRestart({
A: "~@3 e3", B: "[c#4@6 a3@25 ~]/2", C: "[~@8 c#4@4 b3@7 ~ c#4@14 ~@6 c#4@4 b3@7 ~ c#4@10 ~@2]/4",
D: "~@8 b3@3 ~ c#4@4", E: "d4@4 e4@4 f#4@4 g#4@3 ~", F: "[a4@7 ~]/2", G: "a3@3 ~ b3@2 c#4@5 ~ d4@3 ~",
H: "[a3,c#4]@3 ~ [a3,c#4]@4 [b3,d4]@4 [a3,c#4]@4", // A Bm A
I: "[[g#3,b3]@2 ~@6 [b3,d4]@3 ~ c#4@2 [a3,d4]@10 [a3,d4,f#4]@4 [d4,f#4] ~ [c#4,d4,f#4]@4 [a3,b3,d4]@6 [b3,c#4,e4]@4 [c#4,d4,f#4]@4, ~@2 [f#3,a3]@10 e4 ~ f#4@8 ~@6 b3@2 ~@18]/3", // G#m Bm D5 D Dmaj7 Bm7 C#m7 Dmaj7 …
J: "[b3,g#4]@5 ~ [a3,f#4]@4 [b3,g#4]@5 ~, e4@15 ~, ~@3 c#4 ~@4", K: "[c#4,a4]@3 ~",
L: "[~@8 d4@4 c4@7 ~ d4@14 ~@6 d4@4 c4@7 ~ d4@10 ~@2]/4",
M: "[~@8 [d#4,g4] ~ [d#4,g4] ~@3 [d#4,g4]@6 [d4,f4]@4 d#4@4 [d4,f4]@4, ~@24 c4@3 ~@5]/2", // D# Dm
N: "[~ d4@2 [c4,d#4]@16 ~@13, f4 ~@15]/2", O: "[~@8 g4@2 f4 ~@3 d#4@6 f4@2 g4 ~@3 a4 ~@3 a#4@34]/4",
})).s("gm_lead_3_calliope").gain(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@8 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ C ~ 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 ~ A ~ B ~
A ~@9 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~ A ~ C ~@2
>`.pickRestart({
A: "x ~@2 x", B: "x ~@2 x ~@2 x ~", C: "x",
})).gain(0.6)
// drums · rim
const rim = s("rim").struct("<~@8 [~ x]!46 ~@2 [~ x]!69 ~@9 [~ x]!22 ~@3>").gain(0.45)
// drums · snare
const snare = s("sd").struct("<~@40 [~ x]!14 ~@34 [~ x]!37 ~@9 [~ x]!22 ~@3>").gain(0.53)
// drums · hihat
const hihat = s("hh").struct("<~@8 A@46 ~@2 A@69 ~@9 B C@3 D C E F G C H F G C H F I C J C K C ~@3>".pickRestart({
A: "x!2", B: "x ~ x ~ x!2 ~ x", C: "x ~ x!6", D: "x!5 ~@2 x", E: "x!2 ~ x!5", F: "x!8", G: "x!6 ~ x",
H: "x ~@2 x!2 ~ x!2", I: "x!3 ~ x!2 ~ x", J: "x ~ x!3 ~ x!2", K: "x!3 ~ x ~@2 x",
})).gain(0.3)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@134 A B@3 C B D ~ E B F ~ E B F ~ G B H B I B ~@3>".pickRestart({
A: "~ x ~ x ~@2 x ~", B: "~ x ~@6", C: "~@5 x!2 ~", D: "~ x ~@2", E: "~@3 x", F: "~ x!2 ~@2 x ~@2",
G: "~@3 x ~@2 x ~", H: "~ x ~@3 x ~@2", I: "~@3 x ~ x!2 ~",
})).gain(0.23)
// drums · open hat
const open_hat = s("oh").struct("<~@128 x ~@2 [~@3 x ~@4] ~ [~@3 x ~ x ~@2] ~@25>").gain(0.3)
// drums · ride
const ride = s("rd").struct("<~@54 A B ~@69 C D E D F G H G H ~@22 C ~@2>".pickRestart({
A: "x ~ x ~ x ~@2 x", B: "~ x!2 ~ x ~@3", C: "x", D: "x ~@2 x!2 ~ x ~", E: "~@2 x ~@2 x!2 ~", F: "~@2 x ~ x ~@2 x",
G: "x ~@3 x ~@2 x", H: "x!4",
})).gain(0.3)
// drums · claves
const claves = s("clave:2").struct(`<
~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~
A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
~ B@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4
>`.pickRestart({
A: "~@3 x ~@4", B: "~ x",
})).gain(1.84)
stack(
bass, string_ensemble_2, string_ensemble_2_soft, lead_3_calliope, kick, rim, snare, hihat, hihat_soft, open_hat, ride,
claves
)
More by All-4-One
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.