Showing posts with label plugins. Show all posts
Showing posts with label plugins. Show all posts

2008-11-01

Analyzing sound

I've been working some with the audioengine we use in mC2. The engine was originally a rip of the tuniac eninge, but has been modified by bjorn to fit our needs in mC2 (really great work bjorn). The last month I've been implementing the filestreams in the decoders and started to look at how we should implement DSP and mixing plugins.
I found a library that looks very interresting called SoundTouch that I can see some great features in.
First of all we could use it for "Track analyzer" plugin. A "Track analyzer" plugin is a plugin that make some kind of anayze of the sound and saves that info to the tracks metadata. SoundTouch could be used for analyzing BPM in all your tracks.
I also has been thinking of some more advanced plugins like DSP/Mixing plugins like beatmix plugins with timeshifting beats for a perfect mixing between tracks. SoundTouch is perfect for that kind of plugins.

An extensible way to make filestreams.

A couple of weeks ago we where talking on the irc about how we should implement streaming from http or other protocols. I've seen other implementations where it's been implemented on the decoder side so that basically the mp3 decoder will be able to receive a http address or a link to a file.
We didn't think this was flexible enough and decided to make our own filestream class that could be extended to use any type of protocol.
The implementation turned out to be very simple, the only hard work we needed to do was to send a IFileStream object to the decoders and use that instead of sending the path to the file. Luckily most decoders has thought about this and have ways to hook all calls to the streams.

So now mC2 is able to stream anything as long as it has a decoder for it, and implementing new type of protocols is a breeze.

More information can be found at the mC2 wiki.