0:00/0:00
// Moving On Up — M People
// 125 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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.
// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
A@12 ~@15 B C@2 D@2 C@2 E@2 F@4 ~@15 B C@2 D@2 C@2 E@2 ~@12 A@4 G@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2 E@2 ~@11
>`.pickRestart({
A: "[[g3,c4,f4]@2 c3@2 [g3,c4,f4]@2 ~@2 [g3,c4,eb4]@2 c3@2 g3 ~ [g3,bb3]@4 c4 ~ [g3,c4] ~ bb3 ~ [g3,c4] ~ c3@2 g3@2 [g3,c4,f4]@4 c3@2 [g3,c4,f4]@2 c3@2 [g3,c4,eb4]@2 ~@2 c3 ~ [g3,bb3]@4 c4 ~ [g3,c4]@2 bb3 ~ [g3,c4]@2 c3 ~@3 c3@2, ~@28 c4 ~@35]/4", // Csus4 Cm Gm C5 Csus4 Cm Gm C5
B: "~@14 [g3,bb3,c4,eb4] ~", // Cm7
C: "~@2 g3@2 f3@2 eb3@2 [ab3,c4]@2 ~@4 [g3,bb3,c4,eb4] ~, ~@2 [bb3,c4,eb4]@4 ~@2 [f3,eb4] ~@7", // Ab Cm7 F7
D: "[~@2 g3@2 f3@2 eb3@2 [ab3,c4]@2 ~@4 [gb3,bb3,c4,eb4]@6 ~@2 eb3@2 [f3,f4] ~ [ab3,c4,eb4]@2 ~@2 [g3,bb3,c4,eb4] ~, ~@2 [bb3,c4,eb4]@4 ~@2 [f3,eb4] ~@23]/2", // Ab Cm7b5 F Ab Cm7 F7
E: "[~@2 g3@2 f3@2 eb3@2 [ab3,c4]@2 ~@4 [gb3,bb3,c4,eb4]@6 ~@2 eb3@2 [f3,f4] ~ [ab3,c4,eb4]@2 ~@2 [f3,bb3,c4,eb4]@2, ~@2 [bb3,c4,eb4]@4 ~@2 [f3,eb4] ~@23]/2", // Ab Cm7b5 F Ab Fsus4 Cm7 F7
F: "[[g3,c4,f4]@2 c3@2 [g3,c4,f4]@2 ~@2 [g3,c4,eb4]@2 c3@2 g3 ~ [g3,bb3]@4 c4 ~ [g3,c4] ~ bb3 ~ [g3,c4] ~ c3@2 g3@2 [g3,c4,f4]@4 c3@2 [g3,c4,f4]@2 c3@2 [g3,c4,eb4]@2 ~@2 c3 ~ [g3,bb3]@4 c4 ~ [g3,c4]@2 bb3 ~ [g3,c4]@2 ~@6, ~@28 c4 ~@35]/4", // Csus4 Cm Gm C5 Csus4 Cm Gm C5
G: "[[g3,c4,f4]@2 c3@2 [g3,c4,f4]@2 ~@2 [g3,c4,eb4]@2 c3@2 g3 ~ [g3,bb3]@4 c4 ~ [g3,c4] ~ bb3 ~ [g3,c4] ~ c3@2 g3@2 [g3,c4,f4]@4 c3@2 [g3,c4,f4]@2 c3@2 [g3,c4,eb4]@2 ~@2 c3 ~ [g3,bb3]@4 c4 ~ [g3,c4]@2 bb3 ~ [g3,c4]@2 c3 ~@3 [g3,bb3,c4,eb4] ~, ~@28 c4 ~@35]/4", // Csus4 Cm Gm C5 Csus4 Cm Gm C5 …
})).s("gm_epiano2").gain(0.48)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@4 A B A B A B A C A B A B A B A C A B A B A B A B D E D F D E D F A B A C A B A B A B A C A B A B A B A B D E D F D
E D F A B A B ~@16 D E D F D E D F D E D F D E D F ~@11
>`.pickRestart({
A: "c2 ~ c3@2 ~@2 bb2@2 ~@2 g2@2 ~@2 bb1@2", B: "c2 ~ c3@2 ~@2 bb2@2 ~@2 g2@2 ~@2 eb2@2",
C: "f1 ~ f2@2 g1@2 g2@2 ab1@2 ab2@2 bb1@2 bb2@2", D: "c2 ~ c3@2 ~@2 bb2@2 ~@2 f2@2 f2 ~ bb1@2",
E: "c2 ~ c3@2 ~@2 bb2@2 ~@2 f2@2 f2 ~ eb2@2", F: "gb1 ~ gb2@2 g1@2 g2@2 ab1@2 ab2@2 bb1@2 bb2@2",
})).s("gm_electric_bass_finger").gain(0.35)
// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
~@4 A@3 B A@3 ~@9 C@4 D C@3 E@2 F G E@2 F G ~@4 H I H J K I H@2 C@4 D C@3 E@2 F G E@2 F G L M L M L M L M L M L M ~@8
E@2 F G E@2 F G E@2 F G E@2 F G L M L M L M L M ~@3
>`.pickRestart({
A: "~@4 [g3,c4,eb4]@3 [g3,c4,eb4] eb4 ~@7", B: "~@10 g3!2 bb3 c4 ~@2",
C: "~@4 [g4,c5,eb5]@3 [g4,c5,eb5] bb4 ~ [c4,eb4,bb4] ~@3 [c4,eb4,bb4] ~", // Cm Cm7
D: "[g4,c5] ~@3 [g4,c5,eb5]@3 [g4,c5,eb5] bb4 ~ [c4,eb4,bb4] ~@3 [c4,eb4,bb4] ~", // C5 Cm Cm7
E: "~@10 [f4,ab4,c5,eb5] ~@3 [f4,ab4,c5,eb5]@2", F: "~@10 [f4,ab4,c5,eb5] ~@3 [gb4,bb4,c5,eb5]@2",
G: "~@3 eb5!2 [eb4,eb5]!3 ~@8", H: "~@4 [g4,c5,eb5]@3 [g4,c5,eb5] bb4 ~@7",
I: "~@4 f5 f5@2 [g4,c5,eb5] ~@8, ~@4 [g4,c5]@3 ~@9", J: "~@4 [f4,gb4,c5] ~ [f4,c5]@2 eb4 f4 eb4@2 ~@4",
K: "[g4,c5] ~@3 [g4,c5,eb5]@3 [g4,c5,eb5] bb4 ~@7", // C5 Cm
L: "~@2 [c4,eb4,bb4] ~ [c4,eb4,bb4] [eb4,bb4] ~ [c4,eb4,bb4] ~@2 [c4,eb4,bb4] ~@3 [c4,eb4,bb4] ~", // Cm7 Eb5 Cm7
M: "~@2 [c4,eb4,bb4] ~ [c4,eb4,bb4] [eb4,bb4] ~ [c4,eb4,a4] ~@2 [c4,eb4,a4] ~@3 [c4,eb4,a4] ~", // Cm7 Eb5 Adim
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.8)
// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
~@4 A@2 B@2 A@2 B@2 ~@15 C D@2 E@2 D@2 F@2 A@2 B@2 ~@15 C D@2 E@2 D@2 F@2 ~@19 C D@2 E@2 D@2 E@2 D@2 E@2 D@2 F@2 ~@11
>`.pickRestart({
A: "[[f4,f6] ~@3 [f4,f6] ~@3 [eb4,eb6]@2 [c4,c6] ~ [g3,g5] ~ [bb3,bb5]@4 [c4,c6] ~ [c4,c6]@2 [bb3,bb5] ~ [c4,c6] ~ [g3,g5] ~ [bb3,bb5] ~ [f4,f6]@2]/2", // F Eb C G Bb C Bb C …
B: "[~@2 [g3,g5] ~ [f4,f6]@2 ~@2 [eb4,eb6]@2 ~@2 [g3,g5] ~ [bb3,bb5]@4 [c4,c6] ~ [c4,c6] ~ [bb3,bb5] ~ [c4,c6] ~@7]/2", // G F Eb G Bb C Bb C
C: "~@14 [g4,g6] ~", D: "~@2 [g4,g6]@2 [bb4,bb6]@4 [eb4,eb6] ~@5 [g4,g6] ~",
E: "[~@2 [g4,g6]@2 [bb4,bb6]@4 [eb4,eb6] ~@5 [gb4,gb6]@6 [f4,f6]@2 [eb4,eb6] ~ [f4,f6]@2 [eb4,eb6] ~@3 [g4,g6] ~]/2", // G Bb Eb Gb F Eb F Eb …
F: "[~@2 [g4,g6]@2 [bb4,bb6]@4 [eb4,eb6] ~@5 [gb4,gb6]@6 [f4,f6]@2 [eb4,eb6] ~ [f4,f6]@2 [eb4,eb6] ~@5]/2", // G Bb Eb Gb F Eb F Eb
})).s("gm_string_ensemble_1").gain(0.4)
// other · tenor sax
const tenor_sax = note(`<
~@3 A B C B D B C E A B C B D B C E A B C B D B C E A B C B D B C E D B C E A B C B D B C E A B C B D B C E A B C B D
B C E D B C E A B C B D B C E A ~@7 A B C B D B C E A B C B D B C E A B C B D B C E ~@4
>`.pickRestart({
A: "~@7 bb2", B: "c3 ~@15", C: "~@10 eb3 ~@3 bb2@2", D: "~@14 bb2 b2", E: "c3@2 c3 ~@13",
})).s("gm_tenor_sax").gain(0.64).pan(0.3)
// other · alto sax
const alto_sax = note("<~@68 A@3 B A@2 C A ~@24 D E F G H I J@5>".pickRestart({
A: "c5 ~ bb4 ~ c5 bb4 ~ c5 ~@8", B: "c5 ~ bb4 ~ c5 bb4 ~ c5 ~ c5 bb4 ~@5", C: "c5 ~ bb4 ~ c5 bb4 ~ c5 ~@7 bb4",
D: "~@2 g4 ~ bb4 c5 ~ eb5@3 ~@6", E: "~@2 eb5 ~ d5 c5 bb4 c5@4 ~@5", F: "~@2 g4 ~ bb4 c5 ~ eb5@2 ~ c5 bb4 c5@2 bb4 ~",
G: "f4@2 ~ eb4@3 eb4@3 ~ c4@2 ~@4", H: "~@2 c5@2 eb5@2 f5@2 f5@3 ~ f5@4", I: "eb5@2 c5@2 ~@2 c5@4 c5 ~ c5 c5@2 c5",
J: "[c5@2 c5 c5@2 c5 c5@2 bb5@10 a5 ~ g5 eb5 d5 c5@5 eb5 c5 d5 c5@3 ~@2 eb5 c5 d5 c5@3 ~@2 eb5 c5 d5 c5@3 ~@2 eb5 c5 d5 c5@3 ~@2 eb5 c5 d5 c5@3 ~@2 eb5 c5 d5 c5@3 ~@6]/5",
})).s("gm_alto_sax").gain(0.64)
// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
~@12 A B A B A B A B A B A B A B A B ~@12 A B A B A B A B A B A B A B A B ~@12 C D C D C D C D ~@24 C E C ~@8
>`.pickRestart({
A: "c5 ~ c4@2 [eb5,c6] ~ [eb5,c6] [eb5,bb5] ~@6 bb3@2", B: "c5 ~ c4@2 [eb5,c6] ~ [eb5,c6] [eb5,bb5] ~@6 eb4@2",
C: "c4 ~@3 [bb4,eb5] ~ c5 [bb4,eb5]@2 ~@7", D: "c4 ~@3 [bb4,eb5] ~ c5 [bb4,eb5]@2 ~@5 bb3@2", E: "~@7 bb3",
})).s("gm_percussive_organ").gain(0.4)
// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@20 A@4 B@4 ~@20 A@4 B@4 ~@55>".pickRestart({
A: "[g3@2 ab3 bb3, c4]/4", B: "[g3@2 [ab3,eb4] [bb3,d4,f4], c4]/4",
})).s("gm_synth_strings_1").gain(0.32)
// drums · kick
const kick = s("bd").struct(`<
~@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 A B A ~ 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 C@8 D ~@7 A B A B A B A B A B A B A B A B C@4 ~@7
>`.pickRestart({
A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x ~@4 x ~@2", D: "x",
})).gain(0.64)
// drums · snare
const snare = s("sd").struct(`<
~@4 A@7 B A@15 C A@7 D A@3 ~ A@7 E A@7 F A@7 G A@4 H@7 I A@7 J A@15 K H@4 ~@7
>`.pickRestart({
A: "~ x ~ x", B: "~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x", C: "~@4 x ~@5 x ~ x!4", D: "~@4 x ~@7 x!4",
E: "~@4 x ~@4 x ~@2 x ~@2 x", F: "~@4 x ~@5 x!4 ~@2", G: "~@4 x ~@7 x ~ x!2", H: "~@4 x ~@2 x ~ x ~@2 x ~@3",
I: "~@4 x ~@2 x ~ x!4 ~@3", J: "~@4 x ~@3 x ~ x ~ x!4", K: "~@4 x ~@2 x ~@2 x ~ x ~ x!2",
})).gain(0.56)
// drums · clap
const clap = s("cp").struct("<~@4 [~ x ~ x]!35 ~ [~ x ~ x]!68 ~@3>").gain(0.56)
// drums · hihat
const hihat = s("hh").struct("<~@4 A@35 B A@28 C@8 ~@8 A@16 C@4 ~@7>".pickRestart({
A: "x!4", B: "x", C: "~ x ~ x ~ x ~ x",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct("<~@4 [~ x ~ x ~ x ~ x]!35 ~ [~ x ~ x ~ x ~ x]!28 ~@16 [~ x ~ x ~ x ~ x]!16 ~@11>")
.gain(0.32)
// drums · crash
const crash = s("cr").struct(`<
~@4 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@6
>`.pickRestart({
A: "x",
})).gain(0.48)
// drums · ride
const ride = s("rd").struct("<~@68 A B@3 A B@3 ~@24 A B@3 ~@7>".pickRestart({
A: "~ x!3", B: "x!4",
})).gain(0.56)
// drums · tambourine
const tambourine = s("tb").struct(`<
~@4 A B A B A B A B ~@16 A B A B A B A B A B A ~@17 A B A B A B A B A B A B A B A B A B A C D ~@7 A B A B A B A B A B
A B A B A B A B A B A B A B ~@3
>`.pickRestart({
A: "x!3 ~ x!12", B: "x!11 ~ x!4", C: "x!16", D: "x",
})).gain(0.24)
// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
~@4 A B A B A B A B ~@16 A B A B A B A B A B A ~@17 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 B
A B A B A B A B A B A B ~@3
>`.pickRestart({
A: "~@3 x ~@12", B: "~@11 x ~@4",
})).gain(0.16)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@4 [x ~@2 x ~@4]!35 ~ [x ~@2 x ~@4]!36 ~@8 [x ~@2 x ~@4]!20 ~@7>").gain(1.62)
stack(
epiano2, bass, electric_guitar_clean, string_ensemble_1, tenor_sax, alto_sax, percussive_organ, synth_strings_1, kick,
snare, clap, hihat, open_hat, crash, ride, tambourine, tambourine_soft, cabasa
)
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.