Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > locating the chorus in a MIDI song?

Reply
Thread Tools

locating the chorus in a MIDI song?

 
 
Joe Strout
Guest
Posts: n/a
 
      11-04-2008
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.

So:

1. I see at <http://wiki.python.org/moin/PythonInMusic> there are
quite a few MIDI libraries for Python. Are any of them particularly
well suited to this task?

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.

Thanks,
- Joe


 
Reply With Quote
 
 
 
 
alex23
Guest
Posts: n/a
 
      11-04-2008
On Nov 4, 2:20*pm, Joe Strout <(E-Mail Removed)> 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/freea...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?
 
Reply With Quote
 
 
 
 
Tim Rowe
Guest
Posts: n/a
 
      11-04-2008
2008/11/4 Banibrata Dutta <(E-Mail Removed)>:
> 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


I think you're right. After all, The melody of the verse repeats
between verses, so without the words repetition is no longer a good
indicator of the chorus, and a shift in style is as likely (maybe more
likely) to find the bridge than find a chorus.. By the way, some of
the papers referenced seem confused between refrains (which form part
of the verses) and choruses (which are separate musical units).

--
Tim Rowe
 
Reply With Quote
 
Aaron Brady
Guest
Posts: n/a
 
      11-06-2008
On Nov 3, 10:20*pm, Joe Strout <(E-Mail Removed)> 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.


Hi Joe, nice to hear from you from earlier discussion.

Would it be applicable to mark one chorus by hand, and the program
finds all the others?
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Portable midi communication with external midi instruments? Asbjørn Bjørnstad Java 0 10-09-2008 03:03 PM
Real Time Midi File Playback - Reading and Writing midi at the sametime Gilly Python 6 05-04-2008 09:16 PM
D/L midi files launches a midi player I want the midi file Vlad Firefox 2 06-10-2005 02:25 AM
DVD Verdict reviews: THE CHESS PLAYER, A CHORUS LINE, and more! DVD Verdict DVD Video 0 09-17-2003 09:04 AM
Java MIDI output device to MIDI Yoke. Hugo Villeneuve Java 0 07-04-2003 10:31 PM



Advertisments