registering domain names is more fun than doing real work .com

  • About
  • Art
  • Music
  • Software
  • Hardware
  • Other stuff
  • About
  • Art
  • Music
  • Software
  • Hardware
  • Other stuff

MPEG7 Encoder for MaxMSP alpha release now here !

Posted 26/06/2009 by crx & filed under Other stuff, Software.

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.

Alpha release is here !

Alpha release is here !

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).

frecycle is a recycle clone entirely in max msp

frecycle is a recycle clone entirely in max msp

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.

Tags: development, max msp, metadata, MPEG7

18 Responses to “MPEG7 Encoder for MaxMSP alpha release now here !”

  1. impure July 3rd, 2009

    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

  2. crx July 3rd, 2009

    @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.

  3. compucentric February 9th, 2010

    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.

  4. crx February 25th, 2010

    @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

  5. 11ols November 22nd, 2011

    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.

  6. crx November 26th, 2011

    @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.

  7. 11ols April 12th, 2012

    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.

  8. crx April 14th, 2012

    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.

  9. 11ols January 18th, 2013

    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.

  10. 11ols January 18th, 2013

    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

  11. 11ols January 19th, 2013

    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.

  12. 11ols January 20th, 2013

    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.

  13. 11ols January 20th, 2013

    it seems to work with buffer in your mxjhelpfile, sql output is correct with all values…i do further testing

  14. 11ols January 20th, 2013

    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).

  15. crx January 26th, 2013

    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?

  16. 11ols January 29th, 2013

    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.

  17. 11ols January 29th, 2013

    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.

Leave a Reply

Click here to cancel reply.

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

© Robin Price 2023