0:00/0:00
// Leader of the Pack — The Shangri-Las
// 138 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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 · piano · "Ac Piano"
const piano = note(`<
A@6 B C D@2 E@2 F@2 G ~ H I@7 J K L@2 M@2 N@2 O P Q@2 R@4 S@2 T U@7 V W X@2 Y@2 Z@2 AA ~ AB@2 AC@2 AD AE AD AF AG AH
AI AJ AK AE AD AL AM@4
>`.pickRestart({
A: "[[c2,c3]@31 ~]/2", B: "[bb1,bb2]", C: "[g1,g2]", D: "[f1,f2,c4,f4,a4]/2", E: "[e1,e2,b3,e4,g4]/2",
F: "[g1,g2,d4,g4,b4]/2", G: "[c1,c2,e4,g4,c5] ~@7",
H: "[g3,c4,e4]@2 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
I: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
J: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~", // Bb
K: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [d4,g4] ~ [b3,d4,g4] ~, ~@6 b3 ~", // G G5 G
L: "[[f1,f2]@5 ~ [f1,f2] ~ [f1,f2]@7 ~ [f1,f2]@5 ~ [f1,f2] ~ [f1,f2]@7 ~, [c4,f4,a4]@31 ~]/2", // F
M: "[[e1,e2]@5 ~ [e1,e2] ~ [e1,e2]@7 ~ [e1,e2]@5 ~ [e1,e2] ~ [e1,e2]@7 ~, [b3,e4,g4]@15 ~]/2", // E Em
N: "[[g1,g2]@5 ~ [g1,g2] ~ [g1,g2]@7 ~ [g1,g2]@5 ~ [g1,g2] ~ [g1,g2]@6 ~@2, [d4,g4,b4]@31 ~]/2", // G
O: "[c1,c2,e4,g4,b4,c5] ~@15", P: "~@8 [c2,c3]@4 [b1,b2]@3 ~",
Q: "[[a1,a2]@23 ~ [c2,c3]@3 ~ [b1,b2]@3 ~, ~@28 c2 ~@3]/2", R: "[[a1,a2]@23 ~ [c2,c3]@3 ~ [b1,b2]@3 ~]/2",
S: "[[a1,a2]@29 ~@3]/2", // A
T: "[ab3,db4,f4]@2 [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~", // Db
U: "[ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~ [ab3,db4,f4] ~", // Db
V: "[b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~ [b3,eb4,gb4] ~", // B
W: "[c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [eb4,ab4] ~ [c4,eb4,ab4] ~, ~@6 c4 ~", // Ab Ab5 Ab
X: "[[gb1,gb2]@5 ~ [gb1,gb2] ~ [gb1,gb2]@7 ~ [gb1,gb2]@5 ~ [gb1,gb2] ~ [gb1,gb2]@7 ~, [db4,gb4,bb4]@31 ~]/2", // Gb
Y: "[[f1,f2]@5 ~ [f1,f2] ~ [f1,f2]@7 ~ [f1,f2]@5 ~ [f1,f2] ~ [f1,f2]@7 ~, [c4,f4,ab4]@15 ~]/2", // F Fm
Z: "[[ab1,ab2]@5 ~ [ab1,ab2] ~ [ab1,ab2]@7 ~ [ab1,ab2]@5 ~ [ab1,ab2] ~ [ab1,ab2]@6 ~@2, [eb4,ab4,c5]@31 ~]/2", // Ab
AA: "[db1,db2,f4,ab4,c5,db5] ~@15", AB: "[[db1,db2]@31 ~]/2", AC: "[[db1,db2]@15 ~]/2",
AD: "[db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~@7", // Db
AE: "~@2 [db4,f4,ab4]@2 ~@2 [eb4,gb4,bb4] ~ [f4,ab4,b4]@6 ~@2", // Db Ebm Fdim
AF: "~@2 [db4,f4,ab4]@2 ~@2 [eb4,bb4] ~ [f4,ab4,b4]@7 ~, ~@3 gb4 ~@4", // Db Eb5 Fdim
AG: "[db4,f4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4]@2 ~@6, ab4 ~@7", // Db
AH: "~@2 [db4,f4,ab4]@2 ~@2 [eb4,gb4] ~ [f4,ab4,b4]@6 ~@2, ~@3 bb4 ~@4", // Db Ebm Fdim
AI: "[db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4]@2 ~@6", // Db
AJ: "~ [f4,ab4] [gb4,bb4] ~ [f4,ab4,b4]@3 ~, ~@2 db4 ~ eb4 ~@11", // Fm Gb Fdim
AK: "[db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [db4,f4,ab4] ~ [f4,ab4] ~@7, ~@4 db4 ~@3", // Db Fm
AL: "~ [db4,f4,ab4] ~ [eb4,bb4] [f4,ab4,b4]@3 ~, ~@6 gb4 ~@9", AM: "[[db2,db3,ab4,db5,f5]@51 ~@13]/4",
})).s("gm_piano").gain(0.26)
// bass · acoustic bass · "Ac Bass"
const bass = note(`<
~@16 A B@2 C@2 D E F G H I@2 J@2 K@2 L M N O P O P Q P R S T@2 U@2 V W X Y Z AA@2 AB@2 AC@2 AD ~ AE@4 AF AG AF AH AF@8
AI@3 ~
>`.pickRestart({
A: "c2@5 ~ c2@6 g1@3 ~", B: "c2@5 ~ c2@5 ~ g1@3 ~", C: "c2@4 ~@2 c2@6 g1@3 ~", D: "c2@5 ~ c2@6 g1@4",
E: "c2@2 ~ c2@3 g1@2", F: "c2@4 ~@2 c2@6 a1@3 ~", G: "bb1@4 ~@2 bb1@5 ~ bb1 ~ a1@2", H: "g1@4 ~@2 g1@5 ~ e1@3 ~",
I: "[f1@15 ~]/2", J: "[e1@7 ~]/2", K: "[g1@31 ~]/2", L: "c2 ~@7", M: "~@8 c2@4 b1@3 ~", N: "a1@4 ~@2 a1 ~ a1@7 ~",
O: "a1@5 ~ a1 ~ c2@3 ~ b1@3 ~", P: "a1@5 ~ a1 ~ a1@7 ~", Q: "a1@5 ~ a1 ~ c2@3 ~ b1@4", R: "a1 ~@15",
S: "db2@5 ~ db2@6 ab1@3 ~", T: "db2@5 ~ db2@5 ~ ab1@3 ~", U: "db2@4 ~@2 db2@6 ab1@3 ~", V: "db2@5 ~ db2@6 ab1@4",
W: "db2@2 ~ db2@3 ab1@2", X: "db2@4 ~@2 db2@6 bb1@3 ~", Y: "b1@4 ~@2 b1@5 ~ b1 ~ bb1@2",
Z: "ab1@4 ~@2 ab1@5 ~ f1@3 ~", AA: "[gb1@15 ~]/2", AB: "[f1@7 ~]/2", AC: "[ab1@31 ~]/2", AD: "db2 ~@7",
AE: "[db2@31 ~]/2", AF: "db2@5 ~ db2 ~ db2@7 ~", AG: "db2@5 ~ db2 ~ db2@6 ~@2", AH: "db2@6 db2 ~ db2@6 ~@2",
AI: "db2/3",
})).s("gm_acoustic_bass").gain(0.4)
// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
~@8 A B C D E F G ~@3 H I J ~ K L M ~ N O P Q R S T ~@11 U V W ~ X Y Z ~ AA AB AC AD AE AF AG ~@5 AH AI AJ AK AJ AK AJ
AL AM AK AJ AN ~@4
>`.pickRestart({
A: "~@6 a4@2 a4 ~ a4 ~ a4 ~ a4 ~", B: "bb4@3 ~ a4 ~ bb4@4 a4@3 ~@3", C: "~@6 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
D: "g4@2 a4 ~@13", E: "~@6 d4@2 ~@2 d4@4 e4 ~", F: "f4@2 g4@2 ~@2 g3@2 e4 ~ d4 ~ c4@2 d4@2", G: "c4 ~@7",
H: "~@6 c4@2 ~@2 c4@3 ~ d4 ~", I: "f4@3 ~ e4 ~ d4@3 ~ c4 ~ d4@3 ~", J: "d4@2 e4@13 ~", K: "~@6 c4@3 ~ c4 ~ d4@3 ~",
L: "f4@4 e4 ~ d4@3 ~ c4 ~ d4@3 ~", M: "d4@11 ~@5", N: "~@6 a4 ~ a4@3 ~ a4@3 ~", O: "bb4@2 a4@3 ~ bb4@4 a4@5 ~",
P: "g4@3 ~ g4@3 ~ g4@5 ~ g4 ~", Q: "a4@2 g4@3 ~ f4@4 e4@5 ~", R: "~@3 d4 ~ d4 e4 f4",
S: "~@2 g4@4 g3 ~ e4@2 d4 ~ c4@2 d4 ~", T: "c4 ~@15", U: "~@6 db4@3 ~ db4 ~ eb4@3 ~",
V: "gb4@3 ~ f4 ~ eb4@3 ~ db4@2 eb4@2 ~@2", W: "eb4@2 f4@13 ~", X: "~@6 db4@3 ~ db4@4 eb4 ~",
Y: "gb4@3 ~ f4 ~ eb4@3 ~ db4@2 eb4@3 ~", Z: "eb4", AA: "~@6 bb4 ~ bb4@3 ~ bb4@3 ~",
AB: "b4@2 bb4@2 ~@2 b4@3 ~ bb4@5 ~", AC: "ab4@3 ~ ab4@3 ~ ab4@5 ~ ab4 ~", AD: "bb4@2 ab4@3 ~ gb4@2 ~@2 f4@5 ~",
AE: "~@6 eb4@2 ~@2 eb4@2 f4 ~ gb4@2", AF: "~@2 ab4@3 ~ ab3 ~ f4 ~ eb4 ~ db4@2 eb4 ~", AG: "db4 ~@7",
AH: "db4 ~ db4 ~ db4 ~ db4 ~ db4 ~@7", AI: "~@2 db4@2 ~@2 eb4 ~ eb4@2 f4@5 ~",
AJ: "db4 ~ db4 ~ db4 ~ db4 ~ db4@2 ~@6", AK: "~@2 db4@2 ~@2 eb4@2 f4@7 ~", AL: "~@2 db4@2 ~@2 eb4 ~ eb4@2 f4@6",
AM: "db4@2 db4 ~ db4 ~ db4 ~ db4@2 ~@6", AN: "~@2 db4@2 ~@2 eb4 ~ eb4 ~ f4@5 ~",
})).s("gm_string_ensemble_1").gain(0.45)
// chords · brass section · "Brass"
const brass_section = note(`<
~@21 A ~@2 B C ~@4 D E F ~@14 G ~@2 H I ~@4 J@2 K ~@5 L@2 M@2 N@2 O@2 P@2 Q@2 R@3 ~
>`.pickRestart({
A: "[c4,c5,e5,g5] ~@5 [c4,c5,e5,g5] ~@9", B: "[bb3,bb4]", C: "[g3,g4]@7 ~", D: "~@3 d4 ~ d4 e4 f4",
E: "~@2 g4@4 g3 ~ e4 ~ d4 ~ c4@2 d4 ~", F: "c4 ~@15", G: "[db4,ab4,db5,f5] ~@5 [db4,ab4,db5,f5] ~@9", H: "[b2,b3]",
I: "[ab2,ab3]@13 ~@3", J: "[ab2@21 ~ ab3 ~ f4 ~ eb4 ~ db4@2 eb4 ~]/2", K: "db4 ~@15", L: "[db3@31 ~]/2",
M: "[[db3,ab3]@31 ~]/2", N: "[[db3,db4]@31 ~]/2", O: "[[db3,db4,ab4]@31 ~]/2", P: "[[ab3,db4,ab4]@31 ~]/2",
Q: "[ab3,db4,ab4]/2", R: "[db2@3 ~]/3",
})).s("gm_brass_section").gain(0.35)
// other · electric guitar clean · "E Guitar"
const electric_guitar_clean = note(`<
~@16 A B A B@2 A B C D E F@2 G@2 H@2 I J ~@8 K L K L@2 K L M N O P@2 Q@2 R@2 S ~@5 T@3 U V W T X@4 W Y ~@3
>`.pickRestart({
A: "c3 ~ c3!3 ~ c3 ~ c3 ~ c3@2 g2 ~ g2 ~", B: "c3 ~ c3!3 ~ c3 ~ c3 ~ c3 ~ g2 ~ g2 ~",
C: "c3 ~ c3!3 ~ c3 ~ c3 ~ c3@2 g2 ~ a2 ~", D: "bb2 ~ bb2!3 ~ bb2 ~ bb2 ~ bb2@2 f3 ~ bb2 ~",
E: "g2 ~ g2!2 g2@2 g2 ~ g2 ~ g2 ~ d3 ~ g2 ~", F: "[~ a4@27 ~@4, [f3,c4,f4]@7 ~]/2",
G: "[~ [e4,g4]@28 ~@3, [e3,b3]@7 ~]/2", H: "[~ [d4,g4]@28 ~@3, [g2,b3]@29 ~@3]/2", I: "c4 ~@15",
J: "~@8 c3@3 ~ b2@3 ~", K: "db3 ~ db3!3 ~ db3 ~ db3 ~ db3@2 ab2 ~ ab2 ~",
L: "db3 ~ db3!3 ~ db3 ~ db3 ~ db3 ~ ab2 ~ ab2 ~", M: "db3 ~ db3!3 ~ db3 ~ db3 ~ db3@2 ab2 ~ bb2 ~",
N: "b2 ~ b2!3 ~ b2 ~ b2 ~ b2@2 gb3 ~ b2 ~", O: "ab2 ~ ab2!2 ab2@2 ab2 ~ ab2 ~ ab2 ~ eb3 ~ ab2 ~",
P: "[~ bb4@27 ~@4, [gb3,db4,gb4]@7 ~]/2", Q: "[~ [f4,ab4]@28 ~@3, [f3,c4]@7 ~]/2",
R: "[~ [eb4,ab4]@28 ~@3, [ab2,c4]@29 ~@3]/2", S: "db4 ~@15", T: "db3@5 ~ db3 ~ db3@4 ab2@3 ~",
U: "db3 ~ db3@3 ~ db3 ~ db3@3 ~ ab2@3 ~", V: "db3@4 ~@2 db3 ~ db3@4 ab2@3 ~", W: "db3@4 ~@2 db3 ~ db3@3 ~ ab2@3 ~",
X: "db3@5 ~ db3 ~ db3@4 ab2@4", Y: "db3!14 ~@2",
})).s("gm_electric_guitar_clean").gain(0.28)
// other · electric guitar clean · "E Guitar" · soft notes
const electric_guitar_clean_2 = note("<~@76 [~@14 db3!2] [db3!12 ~@4] ~@2>").s("gm_electric_guitar_clean").gain(0.12)
// other · timpani
const timpani = note("<~@16 A@2 B ~@14 C D C D C D C D ~ E@2 ~@20 F G H I J I K@3 I K@2 L ~@3>".pickRestart({
A: "c3 ~@5 c3 ~@5 g2 ~@3", B: "c3 ~@15", C: "~@8 c3 ~@3 b2 ~@3", D: "a2 ~@15", E: "db3 ~@5 db3 ~@9",
F: "db3@4 ~@2 db3 ~ db3@2 ~@2 ab2@2 ~@2", G: "db3@2 ~@4 db3 ~ db3 ~@3 ab2@2 ~@2",
H: "db3@2 ~@4 db3 ~ db3@2 ~@2 ab2 ~@3", I: "db3@2 ~@4 db3 ~ db3 ~@3 ab2 ~@3", J: "db3 ~@5 db3 ~ db3@2 ~@2 ab2@2 ~@2",
K: "db3 ~@5 db3 ~ db3 ~@3 ab2 ~@3", L: "db3 ~@15",
})).s("gm_timpani").gain(0.54)
// drums · kick
const kick = s("bd").struct("<~@16 A@16 B ~ A@7 C A@16 B ~@5 A@12 B ~@3>".pickRestart({
A: "x ~@2 x!2 ~@3", B: "x", C: "x!4",
})).gain(0.45)
// drums · snare
const snare = s("sd").struct("<~@16 [~ x ~ x]!10 ~@8 [~ x ~ x]!7 [x!5 ~ x ~ x!5 ~ x ~] [~ x ~ x]!10 ~@28>").gain(0.45)
// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@3 x] ~@15 [~@3 x] ~@9 [~@3 x] ~@34>").gain(0.4)
// drums · hihat
const hihat = s("hh").struct("<~@26 [~@3 x]!6 ~@20 [~@3 x]!6 [~ x!3] [x!4] [~ x ~ x]!16 ~@4>").gain(0.45)
// drums · open hat
const open_hat = s("oh").struct("<~@16 A B@9 ~@8 B@7 ~ A B@9 ~@28>".pickRestart({
A: "~ x!7", B: "x!8",
})).gain(0.3)
// drums · crash
const crash = s("cr").struct("<~@16 A ~@25 A ~@21 A ~@11 A ~@3>".pickRestart({
A: "x",
})).gain(0.3)
// drums · ride
const ride = s("rd").struct("<~@60 x ~ x ~@17>").gain(0.4)
// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@10 ~@8 B@8 A@10 C@6 D ~@5 A@12 ~@4>".pickRestart({
A: "x!16", B: "~ x ~ x", C: "~@3 x", D: "x",
})).gain(0.35)
// drums · congas
const congas = s("conga:33").struct("<~@59 x ~@20>").gain(1.43)
// drums · ht
const ht = s("ht").struct("<~@14 [~ x ~@2] ~@43 [~ x ~@2] ~@21>").gain(0.5)
// drums · mt
const mt = s("mt").struct("<~@59 [~@7 x ~@8] ~@20>").gain(0.45)
stack(
piano, bass, string_ensemble_1, brass_section, electric_guitar_clean, electric_guitar_clean_2, timpani, kick, snare,
low_tom, hihat, open_hat, crash, ride, tambourine, congas, ht, mt
)
More by The Shangri-Las
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.