Sonance Is Going Places

I’ve been actively working on Sonance for the past two weeks, and I have some major developments to report. The new interface is really working out, and since implementing it, I have been able to more easily implement some of the cool features that I have been planning for the last few months. I’m not promising a release date, since there is so much still to do, but at least development is moving smoothly, quickly, and it’s starting to show.

Today the Smart Playlist/Search interface (“Query Builder”) completely fell into place, and generated SQL to be used for smart playlists and searching.

The Query Builder (screenshot) generated this SQL today:

SELECT * FROM Tracks WHERE Artist LIKE '%Matthews%' AND (DateAdded >= '2005-04-11' AND DateAdded <= '2005-04-11') ORDER BY RAND() LIMIT 15

Also, the Library is now loaded automatically in the background when Sonance starts, which takes about 3 seconds for ~4500 songs. Loading the Library into the active view/playlist after that takes under a second. Sonance now has reorderable/toggleable/resizable column headers too, and their state is saved/restored.

The Query Builder uses a custom GTK Date Button widget I wrote, and the whole thing is composed of a few custom widget classes, and a few model classes. Ultimately, the Query Builder widgets/model can be used in other projects with the need of having a semi-complex interface to generating any type of query for searching. It doesn’t have to be SQL. I will publish the Query Builder separate from Sonance at some point for reuse in other projects. If anyone is interested in looking at it now, just contact me.

Finally, I’d like to thank Christian Hergert for letting me on Monologue! I’ve loved reading it over the past few months, and now I look forward to posting on it.

This entry was posted in Uncategorized and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>