0:00/0:00
// kill the lights — Rickey C Battle jr
// 80 bpm, 4/4, key Cb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 5 "B♭ Trumpet" trumpet (copy of ch 2 "B♭ Clarinet" clarinet); ch 7 "Horn in F" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 8 "Mellophone" french horn (copy of ch 3 "Alto Saxophone" alto sax); ch 4 "Tenor Saxophone" tenor sax (copy of ch 11 "Baritone Horn" french horn); ch 13 "Sousaphone" tuba (copy of ch 12 "Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5825608; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 45 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · clarinet · "B♭ Clarinet"
const clarinet = note("<~@2 A B C D C E F G H@2 I@2 J K J L M ~@3 N ~@7 O@2 P Q R H@2 I@2 S T U@2 V@2>".pickRestart({
A: "[db5,db6] ~ [db5,db6]!2 [eb5,e5,eb6,e6] [eb5,eb6] [db5,db6] [b4,b5] [a4,a5] ~ [a4,a5] [ab4,ab5] [a4,a5] [c5,c6]@3", // Db Emaj7 Eb Db B A Ab A …
B: "[db5,db6] ~ [db5,db6]!2 [eb5,e5,eb6,e6] [eb5,eb6] [db5,db6] [ab4,ab5] [a4,a5] [ab4,ab5] [gb4,gb5] [e4,e5] [eb4,eb5]@2 ~@2", // Db Emaj7 Eb Db Ab A Ab Gb …
C: "db5@2 ~ ab5 db5@2 ~ ab5 a5@2 ab5@2 gb5@2 e5@2", D: "~ ab5 gb5 ab5 ~ ab5 gb5 ab5 ~ ab5 gb5 ab5 gb5@2 ~@2",
E: "~ ab5 gb5 ab5 ~ ab5 gb5 ab5 ~ eb5 e5 gb5 ~ e5 eb5 ~", F: "a4@2 ~ e5@2 ~ a4@2 ab4@2 ~ e5@2 ~ b4@2",
G: "db5@2 ~ e5@2 ~ gb5@2 eb5@2 ~@2 db5@2 e5@2",
H: "[ab5@2 ~ e5@2 ~ db5 b5@2 a5@2 ab5@2 gb5@2 gb5@2 ab5@2 ~@9 db5@2 e5@2]/2",
I: "[ab5@2 ~ e5@2 ~ db5 b5@2 a5@2 ab5@2 gb5@2 eb5@2 ~@4 ab4 ab5 gb5 ~@2 ab5 gb5 ~ e5@2 ~]/2",
J: "db5 ~ db5!2 [eb5,e5] eb5 db5 b4 a4 ~ a4 ab4 a4 c5@3", K: "db5 ~ db5!2 [eb5,e5] eb5 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2",
L: "db5 ~ db5!2 [eb5,e5] eb5 ~ [ab4,ab5] [a4,a5] [ab4,ab5] [gb4,gb5] [e4,e5] [eb4,eb5]@2 ~@2", M: "[e5,ab5,db6] ~@3",
N: "[db5,e5,ab5,db6] ~@3", // Dbm
O: "[~@2 ab5@2 ab5@2 ~ gb5 ab5 gb5@2 ab5@2 b5@2 a5@2 ~ a5@2 a5@2 ~ ab5 a5 ab5@2 a5@2 ab5@2 ~]/2",
P: "~ e5 gb5 e5 gb5@2 e5@2 gb5!2 e5 gb5@3 ~ eb5", Q: "ab5 gb5@2 e5@2 eb5@2 db5@2 db5@2 db5 eb5@2 db5@2",
R: "~@6 db5 e5", S: "~ ab4 db5 eb5 e5 eb5 db5 ab4 ~ ab4 db5 eb5 e5 gb5 eb5 e5",
T: "db5@2 ~ db5 ab5!2 ~ ab5@2 gb5@2 ~ db5@2 e5@2",
U: "[ab5@2 ~ e5@2 ~ db5 b5@2 a5@2 ab5@2 gb5@2 gb5@2 ab5@2 a5 ab5@2 gb5@2 ~@2 ab5@2 gb5@2 e5@2]/2",
V: "[[e5,ab5,db6]@5 ~@9 [eb5,gb5,b5,gb6]@4 [e5,ab5,db6,ab6]@5 ~@9]/2", // Dbm B Dbm
})).s("gm_clarinet").gain(0.5)
// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<A B ~@24 C@3 D ~@15>".pickRestart({
A: "db5 ~ db5!2 [eb5,e5] eb5 db5 b4 a4 ~ a4 ab4 a4 c5@3", // Emaj7
B: "[db5,db6] ~ [db5,db6]!2 [eb5,e5,eb6,e6] [eb5,eb6] [db5,db6] [ab4,ab5] [a4,a5] [ab4,ab5] [gb4,gb5] [e4,e5] [eb4,eb5]@2 ~@2", // Db Emaj7 Eb Db Ab A Ab Gb …
C: "[~@2 ab4@2 ab4@2 ~ gb4 ab4 gb4@2 ab4@2 b4@2 a4@2 ~ a4@2 a4@2 ~ ab4 a4 ab4@2 a4@2 ab4@2 gb4@2 e4 gb4 e4 gb4 e4 gb4 e4 gb4!2 e4 gb4@2 ~@2 eb4]/3",
D: "ab4 gb4@2 e4@2 eb4@2 ab4@2 gb4@2 e4@2 gb4 ab4@2",
})).s("gm_clarinet").gain(0.2)
// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@2 A B ~@7 C ~ D A B A B E ~@3 E ~@6 F G H I J K L C M D A B A B N@2>".pickRestart({
A: "db5 ~ db5!2 [eb5,e5] eb5 db5 b4 a4 ~ a4 ab4 a4 c5@3", B: "db5 ~ db5!2 [eb5,e5] eb5 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2",
C: "db5 ab4 db5 eb5 e5 eb5 db5 c5", D: "ab4@2 c5@2 e5@2 eb5@2 ~@2 ab4 gb4 ~ e4@2 ~", E: "[db5,e5,ab5] ~@3",
F: "~@15 b4", G: "db5@2 ~@13 [gb4,gb5]", H: "[a4,a5]@2 ~@13 gb5", I: "eb5@3 e5@3 gb5@8 ~ c5",
J: "c5!2 ~ c5!3 ~ db5!3 ~ c5 eb5@2 db5@2", K: "~@6 db4 e4", L: "ab4@2 ~ e4@2 ~ db4 b4@2 a4@2 ~@5",
M: "db5@6 ~ db5 a4@4 ~@4, ~@8 b4 ~@7", N: "[[db5,e5,ab5]@5 ~@9 eb5@4 [db5,e5,ab5]@5 ~@9]/2",
})).s("gm_alto_sax").gain(0.5)
// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note("<A B ~@2 A B A B ~@18 C D E F ~@15>".pickRestart({
A: "db5 ~ db5!2 [eb5,e5] eb5 db5 b4 a4 ~ a4 ab4 a4 c5@3", B: "db5 ~ db5!2 [eb5,e5] eb5 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2",
C: "db4 db5 b4 a4", D: "db4 b4 a4 ab4", E: "~@2 eb4 ab4", F: "gb4@2 db5 ~",
})).s("gm_alto_sax").gain(0.2)
// chords · trombone
const trombone = note("<~ A B C D E D E F G ~ H I J D K D K L ~@3 L ~@6 M N O P Q ~@2 H I J D K D K R@2>".pickRestart({
A: "db4 ~ db4!2 [eb4,e4] eb4 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2", // Emaj7
B: "[ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~@2 [ab3,c4,eb4]@3", // Dbm A Ab
C: "[ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [ab3,db4,e4] ~ [a3,db4,e4] ~ [a3,db4,e4] ~ [ab3,c4,eb4]@4", // Dbm A Ab
D: "[ab3,db4,e4] [gb3,c4,eb4]", E: "[ab3,db4,e4] [a3,eb4,gb4]", F: "[a3,db4,e4] [ab3,b3,eb4]",
G: "[ab3,db4,e4]@4 [b3,eb4,gb4] ~@3", // Dbm B
H: "[ab3,db4,e4] [gb3,db4,e4] [ab3,db4,e4] [bb3,eb4,gb4] [ab3,b3,e4] [bb3,eb4,gb4] [ab3,db4,e4] [gb3,c4,eb4]", // Dbm Gb7 Dbm Ebm E Ebm Dbm Cdim
I: "[ab3,db4,e4]!2", J: "[gb3,b3,eb4] ~", K: "[ab3,db4,e4] [a3,c4,eb4]", L: "[ab3,db4,e4] ~@3",
M: "~@15 [gb3,b3,eb4]", N: "[ab3,db4,e4]@2 ~@13 [gb3,bb3,db4]", O: "[a3,db4,e4] ~@7",
P: "[gb3,b3,eb4]@3 [ab3,db4,e4]@3 [bb3,eb4,gb4]@8 ~ [c4,eb4,gb4]", // B Dbm Ebm Cdim
Q: "[c4,eb4,gb4]!2 ~ [c4,eb4,gb4]!3 ~ [ab3,db4,e4]!3 ~ [ab3,db4,e4] [gb3,c4,eb4]@2 [ab3,db4,e4]@2", // Cdim Dbm Cdim Dbm
R: "[[ab3,db4,e4]@5 [ab3,db4,e4] [ab3,db4,e4]@2 ~ [gb3,c4,eb4]@5 [gb3,c4,eb4]@4 [ab3,db4,e4]@5 ~@9, ~@4 [ab3,db4,e4] ~@11]/2", // Dbm Cdim Dbm
})).s("gm_trombone").gain(0.5)
// other · french horn · "Baritone Horn"
const french_horn = note("<~@2 A B C D C E F G H@2 I@2 A J A J K ~@3 K ~@7 L@2 M N O H@2 I@2 P Q R@2 S@2>".pickRestart({
A: "db4 ~ db4!2 [eb4,e4] eb4 db4 b3 a3 ~ a3 ab3 a3 c4@3", B: "db4 ~ db4!2 [eb4,e4] eb4 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2",
C: "db4@2 ~ ab4 db4@2 ~ ab4 a4@2 ab4@2 gb4@2 e4@2", D: "~ ab4 gb4 ab4 ~ ab4 gb4 ab4 ~ ab4 gb4 ab4 gb4@2 ~@2",
E: "~ ab4 gb4 ab4 ~ ab4 gb4 ab4 ~ eb4 e4 gb4 ~ e4 eb4 ~", F: "a3@2 ~ e4@2 ~ a3@2 ab3@2 ~ e4@2 ~ b3@2",
G: "db4@2 ~ e4@2 ~ gb4@2 eb4@2 ~@2 db4@2 e4@2",
H: "[ab4@2 ~ e4@2 ~ db4 b4@2 a4@2 ab4@2 gb4@2 gb4@2 ab4@2 ~@9 db4@2 e4@2]/2",
I: "[ab4@2 ~ e4@2 ~ db4 b4@2 a4@2 ab4@2 gb4@2 eb4@2 ~@4 ab3 ab4 gb4 ~@2 ab4 gb4 ~ e4@2 ~]/2",
J: "db4 ~ db4!2 [eb4,e4] eb4 ~ ab3 a3 ab3 gb3 e3 eb3@2 ~@2", K: "ab4 ~@3",
L: "[~@2 ab4@2 ab4@2 ~ gb4 ab4 gb4@2 ab4@2 b4@2 a4@2 ~ a4@2 a4@2 ~ ab4 a4 ab4@2 a4@2 ab4@2 ~]/2",
M: "~ e4 gb4 e4 gb4@2 e4@2 gb4!2 e4 gb4@3 ~ eb4", N: "ab4 gb4@2 e4@2 eb4@2 db4@2 db4@2 db4 eb4@2 db4@2",
O: "~@6 db4 e4", P: "~ ab3 db4 eb4 e4 eb4 db4 ab3 ~ ab3 db4 eb4 e4 gb4 eb4 e4",
Q: "db4@2 ~ db4 ab4!2 ~ ab4@2 gb4@2 ~ db4@2 e4@2",
R: "[ab4@2 ~ e4@2 ~ db4 b4@2 a4@2 ab4@2 gb4@2 gb4@2 ab4@2 a4 ab4@2 gb4@2 ~@2 ab4@2 gb4@2 e4@2]/2",
S: "[ab4@5 ~@9 ab4@4 [ab4,db5]@5 ~@9]/2", // Db5
})).s("gm_french_horn").gain(0.5)
// other · french horn · "Baritone Horn" · soft notes
const french_horn_soft = note("<A B ~@24 C@3 D ~@15>".pickRestart({
A: "db4 ~ db4!2 [eb4,e4] eb4 db4 b3 a3 ~ a3 ab3 a3 c4@3", B: "db4 ~ db4!2 [eb4,e4] eb4 ~ ab4 a4 ab4 gb4 e4 eb4@2 ~@2",
C: "[~@2 ab3@2 ab3@2 ~ gb3 ab3 gb3@2 ab3@2 b3@2 a3@2 ~ a3@2 a3@2 ~ ab3 a3 ab3@2 a3@2 ab3@2 gb3@2 e4 gb4 e4 gb4 e4 gb4 e4 gb4!2 e4 gb4@2 ~@2 eb3]/3",
D: "ab3 gb3@2 e3@2 eb3@2 ab3@2 gb3@2 e3@2 gb3 ab3@2",
})).s("gm_french_horn").gain(0.25)
// bass · tuba
const bass = note(`<
~ A B C B C B D E F G H G H B C B I B C B C B J B C K L M N O P Q R F G H G H B C S T U V
>`.pickRestart({
A: "~@7 ab2 a2 ab2 gb2 e2 eb2@2 ~@2", B: "db3!3 ~@2 ab2@2 ~ a2!3 ~@2 c3@2 ~",
C: "db3!3 ~@2 ab2@2 ab2 a2 ab2 gb2 e2 eb2@2 ~@2", D: "db3!3 ~@2 ab2@2 ab2 a2 ab2 gb2 e2 eb2@2 gb2@2",
E: "a2@2 ~ a2@2 e2 a2@2 b2@2 ~ b2@2 a2 b2@2",
F: "db3@2 ~ db3@2 ab2 db3@2 eb3@2 ab3 [db3,eb3,e3,gb3] [ab2,b2,ab3] gb3 e3 eb3", // Ebm7 Abm
G: "db3@2 db3@2 ~ ab2 db3 a2@2 a2 ~ a2@2 gb2 a2 gb2", H: "eb2@2 eb2@2 ~ e2 gb2 ab2@2 ab2 ~ ab2@2 ab2 b2 c3",
I: "db3!3 ~@2 ab2@2 ~@5 ab3 gb3 e3 eb3", J: "db3!3 ~@2 ab2@2 ab3 a3 ab3 gb3 e3 eb3@2 ~@2", K: "db2", L: "a2",
M: "gb2!8", N: "ab2@2 gb2@2 ~@3 e3 ab3@2 ~@2 ab3 gb3 db3 b2, ~@8 gb3 ~@7", O: "db3@2 ~@13 [gb2,gb3]",
P: "[a2,a3] ~@7", Q: "gb2@3 gb2@3 gb2@4 ~ gb3@2 db3 gb2@2", R: "c3!2 ~ c3!3 ~ db3!3 ~ db3 eb3@2 db3@2",
S: "db3!3 ~@2 ab3@2 ~ a3!3 ~@2 c3@2 ~", T: "db3!3 ~@2 ab3@2 ~ a3@2 ~@2 ab3 gb3 e3 eb3", U: "db3@5 ~@9 [c3,ab3,c4] ~",
V: "[c3,ab3,c4] ~ [db3,ab3,db4]@5 ~@9", // Fm Db5
})).s("gm_tuba").gain(0.5)
stack(clarinet, clarinet_soft, alto_sax, alto_sax_soft, trombone, french_horn, french_horn_soft, bass)
More by Rickey C Battle jr
Ariane Grande God Is A WomanG♭ major · 70 bpmBackstreet Boys The CallD♭ major · 100 bpmbanditA♭ major · 80 bpmBig Sean Go Legend ft Travis ScottC♭ major · 70 bpmGangsta's ParadiseE♭ major · 80 bpmGucci Mane ClassicalA♭ major · 60 bpmLil Baby Life_Goes_OnA♭ major · 70 bpmLil Tecca Ransom Band ArrangementF major · 75 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.