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