locating the chorus in a MIDI song?

Banibrata Dutta banibrata.dutta at gmail.com
Tue Nov 4 11:13:56 CET 2008

Without pretending to be an expert on the subject of music-theory or
audio-processing, my n00b'ish doubt is -- MIDI, unlike MP3 would be devoid
of voice... and in my overtly simplistic thinking --  presence / absence of
which (i.e. voice) could be a "brute-force" way of detecting refrain/chorus
... unless a lot of "grammar" (i.e. semantic constraints) of music-theory
are enforced, and I am afraid such a grammer could only be made for a small
subset of a particular genre at best.
IMHO, some heuristics could be used to "train" a statistical model, to
identify refrain sections, s.a. a Bayesian model. You use some heuristic
parameters to detect refrain, and then use a large corpus of human responses
to validate the identification, there by tuning the model.

On Tue, Nov 4, 2008 at 3:11 PM, alex23 <wuwei23 at gmail.com> wrote:

> 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?
> --
> http://mail.python.org/mailman/listinfo/python-list

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081104/4e36f488/attachment.html>

More information about the Python-list mailing list