Help - Search - Members - Calendar
Full Version: Generating XML/UML of spectrum from MP3 on Linux web server
Hydrogenaudio Forums > Lossy Audio Compression > MP3 > MP3 - Tech
brendanwov
Hello Experts!

I'm seeking a consultant who can advise me in developing a server-based, Linux application which can parse MP3's and generate spectrum data in XML/UML. This application would be as part of a SaaS (software as a service) product where MP3's uploaded by members of our web site are provided a simple tool to create 30-second edits of their music via a Flash interface. The XML/UML would be used by Flash to draw linear spectrums of the audio for the end-user to interact with.

More directly, we want to create a Flash-based audio editor for use through a web browser and we're seeking the expertise of this community of the MP3 standard to help me accomplish my goal.

I've included a screenshot below from iTunes which is similar (from an interface perspective) to what we are desiring to build.

http://images.apple.com/itunes/store/image...een20070905.png

There are methods to create spectrum data within Flash, however it requires a sound card on the server. We use Amazon Web Services and they do not outfit their EC2 servers with sound cards.

Please reply back to this post if interested in the opportunity.

Thanks!

Brendan
2thumbs
I'm no expert on this, but that seems a bit backwards. Why not use the computeSpectrum() function that's part of the SoundMixer class in Flash's ActionScript?

Edit: nevermind, that's probably the thing that needs access to a sound card you were talking about. Maybe I should learn to read.
cabbagerat
I am not sure if there is a way to get this directly from the MP3, but extracting it from the decoded WAV is fairly simple. In many cases, just taking the magnitude of the FFT of the data would work well enough. You can then downsample the FFT to produce fewer frequency "bins" and write it out as XML. Such an application would be fairly simple, and could be implemented successfully in any language on the server side.

However, that iTunes image is not the "spectrum" of the sound. It's an intensity plot - the results of a moving average of the absolute values of the samples. There is a lot of information online on how to display such a thing. So, is that what you want? Or do you want the spectrum? Or the sonogram/spectrogram?
brendanwov
Hey Cabbagerat!

Would you be available for a phone call? I think you've got a pretty good understanding of what I want.

Let me know. Thanks!

Brendan


jaggedaz
I've also been searching for a solution like this. I've seen applications such as FlashAmp which will generate the amplitude data, but I need something that I can use server side versus a desktop application. Ideally I would like something like a Java API that I can call from ColdFusion to generate the amplitude/magnitude waveform data but my Java expertise is limited.

Does anyone know of a solution that has already been developed? Any additional pointers would be appreciated.
benski
Might be a bit overkill, but you could try this one out:
http://the.echonest.com/analyze.html
tot
The original description is a bit conflicting.

If you are using Flash, what difference does it make if the server has soundcard since the Flash runs at client's web browser (and not on the server)?

If you are doing the processing at the server side why does it matter if Flash requires a sound card since it is not used?
jaggedaz
benski --

Thanks for the suggestion. I checked out the API and it does look like overkill, but I'll contact them for pricing and see what they have to offer.

tot --

I believe that you need a server side solution to generate the amplitude/magnitude/waveform data. I've seen that Flash has the ComputeSpectrum() method which can read in spectrum data for an audio file being played, but there is no way that I've seen to get Flash to read in the entire audio file and create a waveform representation of the entire audio clip.
Teknojnky
why would you not compute whatever it is you need on the client and simply send the results to the server?
jaggedaz
Teknojnky --

If I used Flash's computeSpectrum() method I believe I would have to play through the entire audio file in real time in order to capture the data client side. I haven't found a way to speed that process up, but I'm open to ideas.
jayepoch
I'm looking at a similar solution, to be able to display a static waveform of an audio file without having the user to load an entire sound clip. My particular application runs audio files 10-100megabytes in size and I do not want to force the user to download the entire thing in order to see the full spectrum. We let the users jump to anywhere in the audio, so its helpful to see where you're jumping to without having to get the entire thing first.

Has anyone had any leads with this? brendanwov?

Benski, thanks for the Echonest link that is definitely the best thing I've found so far...!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.