Showing posts with label mC2. Show all posts
Showing posts with label mC2. Show all posts

2009-05-14

Wanted: Decent IDE

My latest effort on trying to make a flash lite client to musikServer did not turn out the way I wanted to. It turned out that flash lites playback of mp3s on the phone had a really crappy sound and as soon as it was out of focus (like when keylock kicks in or screensaver activates) it stopped playing. So I temporarily abandoned the project until flash lite has matured a bit.

What I really would like to talk about was the problems with making a flash lite swf into a SIS file and the lack of good development tools.
In order to make a SIS file out of the flash SWF, I had to install a app called Adobe Mobile Packager. OK, I installed it.
Not working...
It turned out that it required CAB SDK, Perl and S60 SDK. So I installed them all.
Still not working...
Turns out that S60 SDK required java, so I installed that.
Still not working...
Turns out I have the wrong Perl version, so I installed the right version.
Still not working...
Tried 2 more different versions of S60 SDK until I found out the right version that worked.
Seems to work, but the phone complains about certificate so I package the exact same thing again, and now it works.

After abandoning the whole project with flash lite, I decided to install Carbide C++ that is a IDE for developing C++ apps for symbian. Sure thing, Carbide downloaded and installed. Oh yeah, I also wanted to use some STL and boost since we use that in musikCube, so I had to install an extra SDK for that. So I started up carbide and created a standard "hello world" project from a tutorial. Without any changes I tried to build.
Lots of errors...
After 15 minutes of research it turned out that I again had the wrong Perl version, so I had to reinstall that again. New try to compile.
Some errors...
Hmm.. Some more research and it turns out that I have to have my project on the same drive I installed the S60 SDK on... Strange.. but anyhow, I moved it.
Still errors...
Tried to recreate some other of the project templates (basically different kind of "hello world" projects) and found one that compiled fine. So I started the project in the emulator.
Emulator hangs...

At this point I am VERY frustrated. Why can't anyone make a decent IDE that just works out of the box. Problems like this is the reason why developers give up trying to develop C++. Coding C++ isn't very hard, but setting up a IDE and getting things up and running is a pain and this is the reason why people turn to scripting languages.

2009-04-28

Thoughts for phone client.

Thinking some more about the phone client I'm working on.
I've had an idea for quite some time to make a player on the phone that would play music in the same BPM as you are running in (or maybe a bit faster).
I noticed that in flash lite - at leased on my nokia -  I am able to read the accellerometer. This means that I would be able to determin the BPM you are running/walking in and choose track accordingly and with the BPM-analyzer plugin on the musikServer, this is perfect :) 

musikPhone?

So, what's going on with mC2?
I haven't had much time developing because of my current work has taken up all of my free time. But the last couple of days I've been playing around with flash lite and I've managed to connect to our musikServer using only flash lite on my Nokia N95. 
Flash lite actually got all the functionallity to use the musikServer: It's got XMLSockets for doing all the querying, and the abillity to stream mp3s (although other formats will not play). 
I also noticed that they are having a challenge both at http://www.callingallinnovators.com/flash.aspx and http://www.flashlitedeveloperchallenge.com/ that would be fun to participate in, and although I know it does not stand a chance to win because it requires a musikServer, it may generate some promotion.

I guess I should be converting mC2 to using QT instead of doing this, but it's not as fun :)

2009-02-03

mC2dm3 released.

mC2 developer milestone 3 has just been released. 
We decided to make a release of the current state of the trunk since we have decided to make a very big change in mC2. We will in the future be using QT as the main GUI API.

mC2dm3 changelog:
  • Audioengine: Gapless playback
  • Audioengine: Instant change when modifying volume or clicking "Pause".
  • Decoders: mpg123 engine updated, seeking working alot better.
  • One "Now playing" that can handle tracks from any library or http streams.
  • HTTP streamed tracks choose decoder depending on mimetype.
  • Precaching of http streams.
  • mC2 will open the lastest opened library when restarting.
  • Experimental plugin: BPM analyzer. A plugin that will analyze the BPM of your tracks.
  • Experimental plugin: DSP Echo. A plugin that will put a small echo on all audio. Please note that there is no way to turn the plugin off unless removing the .dll file.

2008-11-15

mC2dm2 is out

If you haven't noticed, we released a new developer milestone of mC2 the other day with the long awaited client/server implementation.

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.