0:00/0:00
// Don't Look Any Further — M People
// 100 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.
// other · piano
const piano = note(`<
~@13 A ~@14 B C D@2 E F G H I J@2 K L M N O ~@12 P Q ~ R S T U V ~@8 I J@2 K L M W X ~@16 I J@2 Y L M W X ~@25
>`.pickRestart({
A: "~@2 c4@3 eb4@3 f4@7 ~", B: "c4@8 ~@2 g3!3 ~ g3!2", C: "c4@3 bb3@7 ~@2 g3@2 bb3@2",
D: "[~@2 eb4@3 ~ d4@3 ~ d4@2 c4@2 d4@4 c4@4 g3@4 g3@2 g3 ~ g3!2]/2", E: "c4 ~ c4 ~@9 g3!4", F: "c4@3 bb3@4 ~@6 eb4@3",
G: "d4@2 ~ d4@3 ~@4 g3 ~ g3 ~ g3!2", H: "c4 g3 ~@6", I: "~@4 f4@2 g4@4 c4@2 eb4 ~ f4@2",
J: "[g4 ~ g4 ~ f4 ~ f4 ~@3 bb4@2 ab4@2 g4@5 ~@13]/2", K: "~@4 eb4@2 ~ eb4@2 f4@2 c4@3 ~@2",
L: "~@4 bb3@2 bb3@3 c4 g3@2 bb3 ~ c4 ~", M: "c4 ~ c4 ~ bb3 ~ bb3 ~ ab3@2 g3@2 c4@3 ~", N: "c4@2 ~@3 ab3 bb3 ab3",
O: "g3@2 bb3 ~ c4@2 eb4 ~ f4 ~ g4 ~ g4@4", P: "~@2 c4 ~ c4 ~ c4 eb4@2 f4@5 ~@2", Q: "~@3 c5@3 ~@2",
R: "~@7 g3 c4 ~ c4 c4@2 c4 ~ c4", S: "eb4@2 ~ eb4 ~@6 bb3 c4 ~ bb3 c4@2", T: "f4@3 eb4@3 ~@6 bb4@4",
U: "ab4@3 g4@3 ~@4 eb4!3 ~ eb4!2", V: "g4@2 eb4 ~@3 g4@2 eb4@2 ~@6", W: "c4 ~@3",
X: "~@2 bb3 ~ c4@2 eb4 ~ eb4 ~ f4 ~ g4@4", Y: "~@4 eb4@2 c4 eb4@2 f4@2 c4@3 ~@2",
})).s("gm_piano").gain(0.4).pan(0.8)
// chords · synth strings 1
const synth_strings_1 = note(`<
~@8 A@2 B A@2 C@3 D E F D@2 E F D ~@4 G H I G@2 H I G J E J E J E J K D E F D@2 E F D ~@4 G H I G@2 H I G@2 H I G@2 H
I G J E J E J E J K D E F D@2 E F D G H I G@2 H I G J E J E J E J K D E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D ~
>`.pickRestart({
A: "[c4,eb4,g4,g5]", B: "[d4,f4,g4,g5]", C: "[[c4,eb4,g4] [d4,f4,g4] [c4,eb4,g4], g5]/3", D: "[g3,c4,eb4]",
E: "[ab3,c4,eb4]", F: "[g3,b3,eb4]", G: "[g3,c4,eb4,g4]", H: "[ab3,c4,eb4,g4]", I: "[bb3,d4,f4,g4]", J: "[bb3,d4,f4]",
K: "[ab3,c4,eb4]@3 [b3,d4,f4]@5", // Ab Bdim
})).s("gm_synth_strings_1").gain(0.09)
// bass · synth bass 2
const bass = note(`<
~@8 A B C D A B C E A B C D A B C E A B C D A B C D A B C E F G H I F G H J A B C D A B C E A B C D A B C D A B C E A
B C D A B C E F G H I F G H J A B C D A B C E A B C D A B C E ~@7 K A B C D A B C E A B C D A B C E A B C D A B C L ~
>`.pickRestart({
A: "c2@2 ~ c2@2 bb1 c2@2 ~@2 c2@2 eb2@2 c2@2", B: "f2@2 ~ f2@2 eb2 f2@2 ~@6 f2 gb2",
C: "g2@2 ~ g2@2 f2 g2@2 ~@2 eb3@2 d3 c3 eb2 d2", D: "c2@2 ~ c2@2 bb1 c2@2 ~@6 bb2 c3",
E: "c2@2 ~ c2@2 ~ c2@2 ~@6 bb2 c3", F: "c3@2 ~ bb2 ~ f2 bb2@2 ~@4 f2 ~ bb2 ~", G: "bb2@2 ~ ab2 ~ eb2 ab2@2 ~@6 c3 ~",
H: "c3@2 ~ bb2 ~ f2 bb2@3 ~@3 f2 ~ bb2 ~", I: "bb2@2 ~ ab2 ~ eb2 ab2@3 ~@5 ab2 bb2",
J: "bb2@2 ~ ab2 ~ eb2 g2@3 ~@5 b2 c3", K: "~@14 bb2 c3", L: "c2@2 ~ c2@2 ~ c2@2 ~@4 bb2 c3 c2@2",
})).s("gm_synth_bass_2").gain(0.36)
// chords · pizzicato strings
const pizzicato_strings = note("<~@4 A B A B ~@16 A B A B ~@24 A B A B ~@73>".pickRestart({
A: "[g4,eb5,g5] ~@2 [g4,eb5,g5] ~@2 [g4,eb5,g5]!2 [eb4,c5,eb5]!2 [f4,d5,f5]!2 [g4,eb5,g5] ~@2 [g4,eb5,g5]", // Cm Dm Cm
B: "~@10 [g4,eb5,g5]!2 [eb4,c5,eb5]!2 [f4,d5,f5]!2", // Cm Dm
})).s("gm_pizzicato_strings").gain(0.13).pan(0.3)
// bass · slap bass 2
const bass_2 = note(`<
~@45 A ~ B ~ A ~ C@2 ~@4 D ~ E@2 ~@6 F ~@13 A ~ G@2 A ~ H@2 I ~ G@2 A ~ J ~@9 A ~ G@2 A ~ K@2 A ~ J ~@13
>`.pickRestart({
A: "~@9 c3@2 f3@3 ~@2", B: "~@8 bb2 ~@2 bb2@5", C: "[~@10 eb3 ~ eb3@10 ~@10]/2", D: "~@8 f2 ~ f2 ~ f2@3 ~",
E: "[~@8 c3 ~@2 bb2 ~@2 bb2@5 ~@13]/2", F: "~@8 c3 ~@2 c3 ~@2 c3@2", G: "[~@8 bb2 ~@2 bb2 ~@2 bb2@5 ~@13]/2",
H: "[~@10 g2 ~ f2@10 ~@10]/2", I: "~@11 c3@2 ~ eb3 ~", J: "~@8 bb2 ~ bb2 ~ bb2@3 ~",
K: "[~@8 c3 bb2 g2 gb2 f2 eb2 bb1@4 ~@14]/2",
})).s("gm_slap_bass_2").gain(0.26).pan(0.6)
// other · alto sax
const alto_sax = note("<~@63 A B C B C B C B D ~@39 E F G H ~@2 I J K L@2 M N O P Q R ~>".pickRestart({
A: "~@13 bb3 c4 bb3", B: "f4@3 eb4@2 ~@8 bb3 ~ bb3", C: "bb3 c4 ~@11 bb3 c4 bb3", D: "bb3 c4 ~@14", E: "~@6 f5 eb5",
F: "c5@3 ~@13", G: "~@14 c4 ~", H: "g4@2 bb4 g4@2 bb4 g4@4 ~@6", I: "~@8 c4 eb4 f4 eb4 g4@2 bb4 ~",
J: "bb4@2 c5 bb4 eb5@10 ~@2", K: "~@2 eb5 ~ bb4@11 ~",
L: "[~@2 gb4 g4 bb4 ~ bb4 g4 bb4 ~ c5@10 ~@5 eb5@2 ~ f5 eb5 ~ gb5]/2", M: "g5@13 ~@3",
N: "~@9 f5 eb5 c5 bb4 g4 f4 eb4", O: "~@14 f4 ~", P: "f4 eb4 ~ c4 ~@8 g4 bb4 ~@2", Q: "~@3 c5@5",
R: "~ bb4 ~ gb4 ~ eb4 ~@10",
})).s("gm_alto_sax").gain(0.25).pan(0.2)
// other · alto sax · soft notes
const alto_sax_soft = note("<~@113 A ~@3 B ~@2 C ~@2 D E F ~ G ~>".pickRestart({
A: "~@15 c4", B: "~@15 g4", C: "~@2 f4 ~@13", D: "~@9 e5 ~@6", E: "c4@3 ~@13", F: "~@11 [f4,gb4] ~@4",
G: "~@2 g4 ~ f4 ~ c4@4 ~@6",
})).s("gm_alto_sax").gain(0.15).pan(0.2)
// other · alto sax
const alto_sax_2 = note("<~@64 A B A B A B A B ~@40 C ~ D@2 ~@2 E@2 F G H@2 I J K@2 ~>".pickRestart({
A: "~@5 bb3 c4 bb3 f4@3 eb4@2 ~@3", B: "~@5 bb3 ~ bb3!2 c4 ~@6", C: "~@4 f5@2 eb5@2 c5@3 ~@5",
D: "[~@6 c4 ~ g4@2 bb4 g4@2 bb4 g4@4 ~@14]/2", E: "[c4 eb4 f4 eb4 g4@2 bb4 ~ bb4@2 c5 bb4 eb5@10 ~@4 eb5 ~ bb4@4]/2",
F: "~@10 gb4 g4 bb4 ~ bb4 g4", G: "bb4 ~ c5@10 ~@4", H: "[~ eb5@2 ~ f5 eb5 ~ gb5 g5@13 ~@11]/2",
I: "~ f5 eb5 c5 bb4 ~@11", J: "~@6 f4 ~ f4 eb4 ~ c4 ~@4", K: "[~@4 g4 bb4 ~@8 c5@11 bb4 ~@3 eb4 ~@2]/2",
})).s("gm_alto_sax").gain(0.19).pan(0.8)
// other · alto sax · soft notes
const alto_sax_soft_2 = note("<~@114 A ~@3 B ~ C ~@3 D ~ E F@2>".pickRestart({
A: "~@7 c4 ~@8", B: "~@7 g4 ~@8", C: "~@10 f4 ~@5", D: "~ e5 ~@3 g4 f4 eb4 c4@3 ~@5", E: "~@3 [f4,gb4] ~@12",
F: "[~@10 g4 gb4 f4 ~ c4@4 ~@14]/2",
})).s("gm_alto_sax").gain(0.09).pan(0.8)
// chords · pizzicato strings
const pizzicato_strings_2 = note("<~@4 A B A B ~@16 A B A B ~@24 A B A B ~@73>".pickRestart({
A: "~ [eb5,g5]!2 ~ [eb5,g5]!2 ~ [eb5,g5] ~ [c5,eb5] ~ [d5,f5] ~ [eb5,g5]!2 ~", // Eb Cm Dm Eb
B: "[eb5,g5]!2 ~@9 [eb5,g5] ~ [c5,eb5] ~ [d5,f5]", // Eb Cm Dm
})).s("gm_pizzicato_strings").gain(0.15).pan(0.7)
// drums · kick
const kick = s("bd").struct(`<
A@8 B A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
B A@3 ~@8 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2 B ~
>`.pickRestart({
A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~@3 x ~@3 x ~",
})).gain(0.56)
// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
[~ x ~@5 x ~ x ~@3 x!2 ~]!8
~@16
[~ x ~@5 x ~ x ~@3 x!2 ~]!3
~@25
[~ x ~@5 x ~ x ~@3 x!2 ~]!3
~@74
>`).gain(0.24)
// drums · clap
const clap = s("cp").struct("<[~@3 x ~@3 x]!96 ~@8 [~@3 x ~@3 x]!24 ~>").gain(0.24)
// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!96 ~@8 [~ x ~ x]!24 ~>").gain(0.72)
// drums · pedal hat
const pedal_hat = s("hh").struct(`<
A B C B C B C B C B C B C B C D C B C B C B C D A B C D C B C B C B C D C B C B C B C D C B C B C B C D A B C D C B C
B C B C D C B C B C B C D C B C B C B C D C B C B C B C D C B C B C B C D E F E G E H E G C B C B C B C D C B C B C B
C D C B C B C B C D ~
>`.pickRestart({
A: "~ x!15", B: "x!14 ~@2", C: "x!16", D: "x!10 ~@3 x ~@2", E: "x!8", F: "x!7 ~",
G: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", H: "x ~ x ~ x!3 ~ x ~ x ~ x ~@3",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct(`<
~ 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 ~ 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 ~
>`.pickRestart({
A: "~@7 x",
})).gain(0.32)
// drums · tambourine
const tambourine = s("tb").struct(`<
~ 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 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
A ~ A ~
>`.pickRestart({
A: "~@3 x",
})).gain(0.56)
// drums · crash
const crash = s("cr").struct(`<
A ~@15 A ~@7 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@6 B ~
>`.pickRestart({
A: "x", B: "~@7 x",
})).gain(0.4)
// drums · ht
const ht = s("ht").struct(`<
~@15 A ~@7 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@7 B ~@7 C ~@7 A ~@7 A ~@7 C ~@7 D ~@7 A ~@7 A ~@9
>`.pickRestart({
A: "~@10 x!3 ~@3", B: "~@2 x!3 ~@3 x!2 ~ x!3 ~ x", C: "~@9 x ~ x!2 ~@3", D: "~ x!4 ~@6 x!2 ~@3",
})).gain(0.4)
stack(
piano, synth_strings_1, bass, pizzicato_strings, bass_2, alto_sax, alto_sax_soft, alto_sax_2, alto_sax_soft_2,
pizzicato_strings_2, kick, kick_soft, clap, snare, pedal_hat, open_hat, tambourine, crash, ht
)
More by M People
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.