After a few posts about Remix (now named Sonance), and getting ready for the first public release, I had a sudden life changing experience as a developer. I discoverd development under Mono. After quickly learning C# and exploring the .NET libraries and the GNOME/GTK bindings for Mono, I wrote a few test programs, and started rewiriting/porting Sonance to C#. Amazingly, the power of the language and bindings are allowing me to more efficiently develop Sonance, and in much less time. In just one week, I have re-developed Sonance with less code, to the same point that the C version was developed in about a month.
The major struggle was the lack of good documentation on the GStreamer bindings for C#, gst-sharp. I have been able to find about three gst-sharp applications. And honestly, and with no disrespect to their developers, their implementations are not very solid, nor featurefull. So in addition to porting Sonance, and developing a much better code base, I have developed a strong gst-sharp player with metadata support.
I am really excited about the rewrite, and new beginnings with the Mono platform. I still love C, but welcome the ease and power of this new platform. It is clearly the new path for GNOME, and I am glad to be a part of it.
I’m checking in again with some status reports and two new pages on the site. First, I have decided to name my previously mentioned Remix player to Sonance. I am very happy to report that development is going very strong, and I hope to make the first public release by the end of this week. I came to the conclusion that redeveloping yet another GStreamer backend is futile. I have decided to use the GStreamer playback and metadata code from the RhythmBox project. I have also decided to use SQLite as the library database backend. I’ll post with more details when I make the first release.
I am also happy to report that I have written a small article on embedding SQLite within a GNU/Linux autobuild C project. Documentation was not to be found on this matter, and after spending a few hours tinkering with SQLite, I managed to embed the entire engine in Sonance.
Finally, because Sonance is growing rapidly, I was finding myself constantly copying and pasting GObject Class templates from other sources in the project, only to perform many search/replace actions on certain strings to create a new class framework. I decided to take a few hour break from Sonance, and write GObject Class Builder, a very small, ugly Glade/C hack to produce a basic GObject Class template, based on a few levels of input. I added GOCBuilder to my Anjuta Tool Set, and now it’s just a matter of Project|GObject Class Builder, and a few fields to generate a base GObject Class.
That’s all for now. I’ll write next when Sonance makes its debut!
My trip to Santa Barbara concluded yesterday as I arrived back in Raleigh at about 5 in the evening. The first flight, from Santa Barbara to Dallas was pleasant. It allowed me to get about an hour of sleep. From Dallas to Raleigh however was atrocious. It seems commonplace: I was sitting next to a loudly vocal toddler, who was also enjoying crawling on me. In the row behind me, there were three more babies/toddlers, all of whom were equally vocal, and came with the added bonus of the wonderful ability to kick my seat. The parents were obviously oblivious to their childrens’ actions, or maybe they thought it was cute.
I’ve noticed something odd. Since I started carrying my cell phone in that convenient little “change” pocket above/inside the normal front right pocket on most jeans, and having the phone vibrate before ringing, the muscle located right below where the phone sits spasms mildly at random times… and the phone isn’t vibrating. Very odd indeed.
I must get back to work – back into the flow of things, and catch up with life on the home front. I look forward to returning to Santa Barbara when the weather is better. 90% of the two weeks was spent indoors due to the massive rainfall, which lead to mild flooding and some mud slides. Oh well.