I’ve begun work toward Chordious 2.0! There’s still a lot ahead of me, but with the new year I thought it was time to give an official kick-off and blog a little about my plans and progress. It’s probably going to be a while before I release anything, but like Chordious 1.0, I expect to have a series of beta releases on the even minor version numbers (1.2, 1.4, 1.6, etc.)
The first priority has been a major overhaul of the Chordious.Core library, focused on improving diagram rendering flexibility. The original “Chordline” engine made sense at the time, but it’s too difficult to add all of the new styling options that I want. To that end I’ve begun work moving to a more flexible XML + pseudo-CSS based engine, and it’s rough, but here’s a sneak peek at what the new engine can handle after only a week’s hard work:
To be clear, both of these diagrams were generated using the new rendering engine; style is completely user-configurable. You can change the style of almost anything, ie. playing with each mark’s color, text, shape, etc, etc. As you can see, some of it is already working with splendid results. What I’ve currently got working:
- New XML-based rendering engine (no more Chordlines, yay!)
- New custom inheritance-based styling system (ie: the diagram can default all marks to black circles but then you can override any part of the individual styles while still inheriting the base style)
- Basic diagram support (as per the sneak peek above) with the title, fretboard, nut, and marks
- Diagrams support their own custom styling including fonts and colors
- Diagrams are no longer limited to one mark per string (think scale diagrams)
- Marks support their own custom styling including different colors, borders, shapes, and text
- Chordious.Core is now a Portable Class Library – more on that in a bit
So anyway, like I said, my first goal is to rebuild and supercharge the Core library. (Just in case you’re wondering, part of that includes creating a clear upgrade path for anyone using Chordious 1.0, so don’t worry about losing your existing diagrams). After that, the next goal will be to create a new and improved UI with a firm emphasis on user-friendliness. Then it’ll be all about adding more options and exploring other platforms to support. Here’s a short list of things on the horizon:
- Add enhanced versions of existing style options (barre lines, fret numbers, open/muted string marks, etc.)
- Add new style options (horizontal orientation, string labels, circling chord shapes, etc.)
- New user-friendly UI for the desktop
- More built-in instruments and tunings
- Adding support for user-specified instruments and tunings
- Better integrating the ChordFinder with the new rendering engine
- Adding a ScalesFinder
- Creating not just lone diagrams, but ready-to-print pages of diagrams
- New apps for other (mobile?) platforms
- And more!
I mentioned earlier that the Chordious.Core library is now a Portable Class Library, which makes it easier for me to make it work on other platforms. See, I’m all about free and open-source software, and it was quite a technical feat for me to release one non-trivial app for three operating systems (Windows, Mac, Linux). To achieve this I opted to use Mono. This meant developing Chordious 1.0 using MonoDevelop on Ubuntu. But that also meant that everyone, even Windows users, had to install Mono in order to run Chordious.
I have recently switched my home computer to Windows 8.1, so now MonoDevelop is no longer an option for Chordious development. So now I’m using Visual Studio 2013 Community Edition instead. What does that mean for Chordious? In practical terms:
- Future version of Chordious will be developed on .NET, not Mono
- Windows users will not need to install Mono to use Chordious
- Chordious on Windows will probably look more like a native app
- Chordious will probably no longer be able to use the lovely librsvg to draw the diagrams, but I have found other potentially suitable options
- Chordious will still be released for Mac and Linux via Mono
- Chordious will probably look more like a “Windows” app than it did before
- Chordious will now be easier to release on other .NET platforms, specifically Windows Phone 8 and Windows 8.1.
- Such apps may have a reduced feature set, depending on what makes sense on smaller screens with touch as the primary input mechanism
- Such apps may have their own unique features that make sense for integrating with other elements of a mobile experience
So first let me say that Chordious is and will forever remain free and open-source. I have no interest in locking Chordious down – in fact, check out the wonderful Chordious Web for an example of what a fan of Chordious did because the code was open-source. And once I get my source-control story on Windows worked out, the new Chordious code will be up and available to the public as well. But moving development to Windows and Visual Studio gives me more development and release options.
I’m still researching releasing Chordious on other platforms, so the first beta releases for Chordious 2.0 will probably be just for the desktop. I’m also still playing around with different naming options, ie. are they all just named Chordious? Chordious Desktop/Mobile? Re-brand Chordious 1.0 as Chordious Classic?
Anyway, I better get back to coding. Stay tuned for future updates. And as always, have an idea or feature you’d like to see? Sound off in the comments below or drop me a line.