locating the chorus in a MIDI song?
alex23
wuwei23 at gmail.com
Tue Nov 4 04:41:00 EST 2008
On Nov 4, 2:20 pm, Joe Strout <j... at strout.net> wrote:
> We've got a need to generate short "samples" of songs that are in MIDI
> format, to provide a preview function in a web app. We'd like to do
> something more clever than just taking the middle 20 seconds (or
> whatever) of the song -- ideally, we'd like to find the chorus, since
> that's likely to be the most easily recognized part of the song.
>
> I believe this could be done fairly reliably by looking for patterns
> in the MIDI file, though I'm sure there are plenty of complications to
> this simple idea.
My first thought is that would be incredibly difficult, but a quick
google search pulled up a couple of papers:
"Music Scene Description Project:
Toward Audio-based Real-time Music Understanding"
http://ismir2003.ismir.net/papers/Goto.PDF
The RefraiD (Refrain Detecting Method) detects sections
being repeated and identifies the chorus (refrain) sections
of songs in popular-music CDs. Most previous methods
detected as a chorus a repeated section of a given length
(Logan and Chu, 2000; Cooper and Foote, 2002) and had
difficulty identifying both ends of a chorus section and
dealing with modulations (key changes) (Peeters et al.,
2002; Dannenberg and Hu, 2002). By analyzing relation-
ships between various repeated sections, RefraiD can de-
tect all the chorus sections in a song and identify both
ends of each section. It can also detect modulated chorus
sections by introducing a similarity measure that enables
modulated repetition to be judged correctly.
The paper doesn't go into much detail beyond that, but does refer to
more that do.
"A chorus-section detecting method for musical audio signals"
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?tp=&arnumber=1200000&isnumber=26996
By the same authors, I believe. Although they're talking about audio,
I would expect the technique used could be readily applied to midi as
well (probably more easily, in fact).
Note that: "Experimental results with a popular-music database show
that this method detects the correct chorus sections in 80 of 100
songs." So it's going to be wrong 1 in 5 times, if that's an
influencing factor in trying to do this programmatically. How many
MIDI files are you talking about here? Could it be easier to just
manually mark the chorus for each?
> 2. Anybody have an interest in music theory, as well as mad Python
> skills? Want a paying contract job? If so, please contact me off-
> list. I'd enjoy pursuing this myself, but if you think you can do a
> better job at a reasonable rate, I'm happy to let you do so.
Give me a few days to see what my upcoming schedule is like and I may
get back to you on this. I have a friend who has worked on
computationally generating emotional expression with MIDI just
recently, I'll pass this on to him as well.
Is Python a strict requirement for this?
More information about the Python-list
mailing list