A third of what drove my tv installation piece was the audio analysis software that allowed me to segment, analyse and database the sound track of youtube movies. These had been stripped from the downloads and saved as wavs. At first I wrote a simple slicer and segmenter in VASP that allowed me to get basic amplitude spectral data for entry into a database. But this was hacky, the output data wasn’t standardised making it useless to use with other patches and crashy (it would analyse solidly for ten minutes then crash Max in annoying fashion). So I came back to an MPEG7 audio encoder written under LGPL in Java.
I’d looked at Holger Crysandt’s library early on in my PhD when I was playtesting ways of getting good audio metadata but ended up sticking with Tristian Jehan’s analyzer~ external. This works great with with signals in real time but if you want to analyze say ten minutes of sound then it takes the ten minutes to play it through analyzer~ and log the details. My desire for faster than realtime, offline analysis, was largely what drove me to write a wrapper in max Java around Holger’s library.
The alpha release is now finished and I’m posting a jar file for windows. UPDATED: NOW MAC COMPATIBLE.
This alpha release includes an example application patch showing off the slicing abilities and a reference text file to talk you through the numerous attributes of the external (though this is a work in progress, you will need to refer to Holger’s website and the MPEG7 audio standard for lots of useful details).
The frecycle patch is modelled on Propellerhead’s beat mash up defining Recycle. Simpy load a mono audio wav and drag the slice threshold bar to the right to increase the number of slices. These are automatically mapped to midi keyboard keys starting at midi note number 36. The pitch bender gives +/- 50% pitch range and the funky autosequence gives good results with one or two bar drum loops with the slice threshold moderately low. Enjoy!
To install the alpha release simply download the zip and follow the installation instructions in INSTALL.txt.
DL: Mpeg7Encoder-alpha-distro-mac-compatible.zip
The technically enclined may enjoy the source code at the project’s Sourceforge page.
Hopefully next week I’ll follow up with my meta sampler patch that allows you to use the SQL database to auto map sounds according to their spectral features.
Hi,
First of all_thx for the incredible stuff you design and program.
Now my question 😉
Does the MPEG7 Encoder for MaxMSP run on osx intel?
I assume it’s not the case. If so, can it be ported to osx?
Many regards,
Impure
@impure
Cheer’s impure, now that’s the kind of comment I like! The mpeg7encoder will run on osx, I haven’t added the intel osx classes to the jar but Oli Larkin compiled an osx version and posted it on the max forums here
http://www.cycling74.com/forums/index.php?t=msg&th=40208&start=0&rid=4892&S=f5898840b24a1b88a3cf0a4a4c4b06e4
Just scroll down to the second post. The latest version and a new metadata driven sampler will be available next week.
Hey, your patch is fantastic! I’ve been looking for something just like this, and I love the visual waveform display. I’m really interested in the ability to save the segments as separate wave files, but I can’t get this function to work. It may be because I am using OSX 10.6, but I was wondering if you’ve got this function up and running and what the procedure is to get this function working. This would help me out immensely to get these segmented files.
@compucentric
Hi Compucentric, I have good performance saving the wave files to disk in my windows installation. I have only recently obtained a mac for full time dev work so this *is* a bug I am working on.
My advice is to check what version of Java you have installed. Some of the versions of my patch work better with the latest version of the JRE. You can check what JRE you’re running by going here.
http://www.javatester.org/version.html
this is great, i’m building a sampler that slices complete songs and finds sampling relevant slices with your mxj. seems there has been released somthing similar now:
http://www.rothmichaels.us/roth-moves rm.slice. i will check if that is different from mpg7.
have you ever released your meta sampler patch?? very interessted in finding similar samples.
regards
O.
@11ols I think the difference is the metadata about the sounds you can get out of my patch and store in a database and then sort/search for certain kinds of material. One thing I was doing a lot was ordering all the samples by their spectral centroid so I could compose with specific frequency ranges based on SQL search queries. I haven’t finished my metasampler for public consumption yet but some kind of useful update/tutorial is around the corner.
hey robin price, i managed analyzing files and saving descriptions but what are the first steps when it comes to find something, for example a similar sample. where is the “mpeg7 database handling js” you’re talking about in the manual?
one post before this i see a settings tab for the attributes, why you decided to take that out?
Would you mind sending me the meta sampler approach so i could comprehend the database usage? contactolsen at gmail dot com
cheers O.
I’ll dig out the patches in the next week or so. It’s been a while since I did any dev with it but you’re right. It needs to be done and given away.
hey, i have difficults to figure out how the different analyze features will help in my current project. Did much reading pdf. for example i want to know the bandwith of segments, what to use? HarmonicSpectralSpread seems not to be the right thing. i mostly found mathematical explainations of descriptors but less practical usecases. what i’m trying to do is to sort segments of a song. finding segments that are typical sampling areas. (intros/ends, quiter parts, parts where drums are not playing, drumbreaks)
Please send me meta sampler approach.
I have some problems recently with the mxj stops slicing for some reason.
(it happens in m4l edit mode, using the file message to import mono wav, sometimes it works but suddenly it imports and slices with “done bang” but does not spit out any slice count(slicetreshold is up). using analyzeSegments tells me to use “slice” message before even if that already happened. can’t track down why it happens. maybe it’s the m4l edit mode like so often.
O.
i have actually good results by just finding longer and quiter segments but i had the idea to make it a little more intelligent by using more of the available descriptors. e g low bandwith would also represent sampling relevant segments. O. appreciate your answer
maybe it’s a matter of much testing. HarmonicSpectralVariation seems to give me bandwithlike results. now i’m looking for something to determine the percussive amount of segments. O.
i have a bug here. can you confirm? if i use more than one segment descritor the sql output list has only 6 of 8 Values. example:
insertData “INSERT INTO segments (‘name’, ‘start’, ‘end’, ‘length’, ‘audioPowerMean’, ‘audioPowerStdDev’, ‘harmonicSpectralCentroid’, ‘harmonicSpectralVariation’) VALUES (‘C:/Users/ols/AppData/Local/Temp/digger_import_mono_temp.wav’, ‘254660’, ‘271590’, ‘16930’, ‘2268.0913’, ‘0.22662601’)”
last 2 values are missing? object initialized like this:
mxj Mpeg7Encoder @drawto lcd @getAudioPower 1 @getSegmentAudioPower 1 @getSegmentHarmonicSpectralVariation 1
should i keep on posting here, are you alive. i know this is released 4 years ago. unfortunately i don’t have the java knowledge to quickly jump in and check out for myself. maybe thats just a little thing with formating the output list or something. anyway. you got my mail addr if needed. friendly O.
it seems to work with buffer in your mxjhelpfile, sql output is correct with all values…i do further testing
the problem seems to be that the mxj does not output segment audio power values for files imported with the “file” message (works with buffer).
Yeah I am still alive 🙂 I’ve had some trouble with file import code, some WAVS work better than others. I’ve finished my PhD now so I should try and make some time for some code revision, there’s a lot that could be improved. What exactly are you trying to achieve?
oha. what i’m trying to achieve is to slice complete song, sort segments by segment analyse results. this already works with audiopower and harmonic spectral variation.
i just hoped you maybe have more information about the most useful descriptors.
do you think it’s important to normalize the buffer before analyzing or will it detect the same slices with just the threshold a little bit lower on quiter files.