On Nov 4, 2:20 pm, Joe Strout <[EMAIL PROTECTED]> 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