Chordious 2.0.5 now available

Chordious 2.0.5 is now available, and is a minor update over the previous release.

You can now create new tunings based on existing ones (simply right-click on a tuning in the Instrument Manager and select “Copy”). This makes it easier, if say you only need to change a single string from a standard tuning, rather than having to manually set every string. This even works to quickly create modifiable copies of the built-in default tunings.

You can now also right-click on the results in the Chord and Scale Finders, to bring up a context menu where you can copy the image to your clipboard. (You can still do it with Ctrl+C and Ctrl+Shift+C if you want to.)

Finally, starting with 2.0.5, by popular demand, there’s now a portable version of Chordious. It’s everything you love about Chordious packed in to a single exe that doesn’t need to be installed, so you can put it on a USB flash drive and carry Chordious in your pocket!

Here’s the full change list for 2.0.5:

  • The self-contained ChordiousPortable.exe is now available
  • Can now easily copy tunings in the Instrument Manager
  • Added context menus to the Finder results
  • Cleaned up unnecessary files

Update to the latest version of Chordious today, and keep the feedback coming!

/jon

Advertisements
Tagged with: , , , ,
Posted in Releases

Chordious 2.0.4 now available

Chordious 2.0.4 is a minor update over the last release. The biggest new feature is to enhance the viewing of the default instruments, tunings, scales, and chord qualities. Within their respective manager window, simply double-click on any of the built-in items (just as you would for any of your own, custom items).

Here’s the full change list for 2.0.4:

  • Can now view default instruments/tunings
  • Can now view default scales/qualities
  • Copy to clipboard now standardized across Finders and Library
  • Fixed bug where checking for updates gets old cached version

Update to the latest version of Chordious today, and keep the feedback coming!

/jon

Tagged with: , ,
Posted in Releases

Chordious 2.0.3 now available

I know it’s been a few months since the last release, but I’ve done a lot of work behind the scenes to improve this latest version of Chordious.

The primary impetus of this release is to improve accessibility. For my day job, I recently left Xbox and joined the Windows XAML team at Microsoft. XAML is one of the technologies developers use to create the GUIs (windows, buttons, text boxes, etc.) for their Windows apps, and it’s what I use for Chordious. Through my new job I’ve been exposed to some of the many accessibility features of Windows, things like screen magnifiers and readers for the blind or near-blind, closed captions for the deaf and hard of hearing, etc.

The previous versions of Chordious were downright atrocious to navigate with Narrator, the built-in screen reader. Same if you’re primarily a keyboard user, like many users of accessibility software. I had no idea how much work and testing I should have been doing to make sure those tools play nicely with my app. So a great deal of the work in 2.0.3 is to make Chordious friendly to screen reader software and keyboard users.

Most of the controls now have proper access keys now, that is, when you press ‘Alt’ on your keyboard, the little underscores that pop up so you jump directly to a particular control. You can for example, now press ‘C’ or ‘Alt+C’ on the main window to jump straight into the Chord Finder. You can now also press the ‘Esc’ key to exit just about any window, ‘Enter’ in lists of diagrams to open the editor, or press ‘Y’ or ‘N’ for Yes or No dialogs.

Hopefully, navigating around Chordious with a keyboard will be much easier.

I also put in a lot of work cleaning up the code for readability and future maintainability. That process helped me find and fix many bugs, but also improve the app’s overall stability and performance.

But what about new features, you ask?

Thank Peter from Switzerland for suggesting I make it easier to copy diagram directly into the clipboard, rather than require you to formally export them as image files. Now, if you select a diagram in either of the Finders, or in the Library, you can press ‘Ctrl+C’ to copy the image directly to your clipboard, or ‘Ctrl+Shift+C’ to get prompted to cleanly resize the image before you copy it. You can then paste the image just as you would any other into emails, word processors, graphics programs, etc.

You can also find “Copy to Clipboard” commands in the context-menu when you right-click on diagrams in the Library and the Diagram Editor. There you’ll also have an option to copy the raw SVG text to the clipboard, if you want to see that.

Here’s the full change list for 2.0.3:

  • UI is now friendly to Narrator and other screen readers
  • Improved keyboard navigation with alt-keys for most controls, ‘Enter’ to open list items
  • Can now copy diagram images directly to the clipboard via context-menu and/or ‘Ctrl+C’, ‘Ctrl+Shift+C’
  • Can now exit out of any window with the ‘Esc’ key
  • Improved handling of update failures
  • Fixed bug where changing text in dialogs didn’t enable the ‘OK’ button
  • Fixed bug where closing a Finder during a long search may cause a crash later
  • Fixed automatic versioning code to remove dependency on VS extension
  • Fixed many miscellaneous string and localization bugs
  • Fixed Code Analysis warnings and issues to improve code quality and style
  • Fixed Setup warnings
  • Tidied XAML files for readability
  • Performance and reliability improvements
  • Updated Svg.NET to 2.3
  • Updated MVVMLightLibs to 5.3.0.0

Update to the latest version of Chordious today, and keep the feedback coming!

/jon

Tagged with: , ,
Posted in Releases

What the Chordious version numbers mean

Like many developers, I have my own specific set of rules for how and when I release updates to Chordious, and how I pick the new version numbers. Earlier today I outlined a system for automatically generating app version numbers, and then thought it’d make for a nice “real-world” example to pop over here and try to explain the rhyme, reason, and code behind the version numbers I use for Chordious.

The first thing to understand is that I have two different release channels, with two classes of builds: “Official” and “Preview”. In short, Official builds are stable, infrequently updated, and targeted for all users, while Preview builds are potentially unstable, frequently updated, and aimed for dedicated beta testers. See more here: What’s the difference between “Official” and “Preview ” releases?

Now, for Official builds, the version looks like this: Major.Minor.Build.

  • Major is set manually.
  • Minor is set manually and is always an even number.
  • Build is set manually and is simply an increasing number.

So for example, the latest Official build as of this post is 2.0.2.

For Preview builds, the version looks like this: Major.Minor.Build.Revision.

  • Major stays manually set, as before.
  • Minor is set manually and is always an odd number.
  • Build is auto-generated in the format YYDDD, where:
    • YY is the last two digits of the year that the code was compiled.
    • DDD is the day of year that the code was compiled.
  • Revision is auto-generated in the format HHMM, where:
    • HH is the hour that the code was compiled.
    • MM is the minute that the code was compiled.

For example, if I had released a Preview build of Chordious on August 19, 2016 at 8:40PM UTC, the version might have looked like: 1.9.16232.2040.

So how do I manage all of this? As the post linked to above describes, I use a T4 text template to auto-generate the version information for my builds. The code (as of this post, latest here) looks like this:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
<#
    int major    = 2;
    int minor    = 0; // Official == even, Preview == odd
    int build    = 2;
    int revision = 0;

    string version = String.Format("{0}.{1}.{2}.{3}", major, minor, build, revision);

    if (minor % 2 == 1) // Preview build
    {
        // Auto-generate the build and revision
        DateTime buildTime = DateTime.UtcNow;
        
        build = (1000 * (buildTime.Year % 100)) + buildTime.DayOfYear;
        revision = (100 * buildTime.Hour) + buildTime.Minute;
        
        version = String.Format("{0}.{1}.{2:000000}.{3:0000}", major, minor, build, revision);
    }
 #>
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
  
using System.Reflection;

[assembly: AssemblyCompany("Jon Thysell")]
[assembly: AssemblyProduct("Chordious")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AssemblyVersion("<#= version #>")]
[assembly: AssemblyFileVersion("<#= version #>")]

So, when I’m working on Official builds, I just set the version numbers at the top of the code. In this case, you can see that I’m working on Chordious 2.0.2. Since the minor version is even, the code just uses the values I’ve set directly. When I’m releasing an update from one Official build to another (ie. with the same minor and major version), I just increment the build number by one. So the next Official build in the Chordious 2.0 line will be 2.0.3.

Now, when I’m done working on the Official builds and ready to start working on the next Preview, I increment the minor version by one. In this case, I’ll then be working on the “Chordious 2.1 Preview”. And now that the minor version is odd, the code will automatically override the build and revision version with each release, freeing me to work fast and not worry about keeping track of version numbers.

Finally, when the “Chordious 2.1 Preview” is over, that is, when the builds have become sufficiently stable, I’ll get ready to push out all the new goodness to normal users. I’ll increment the minor version to two, and reset the build and revision to zero. At that point I’ll release Chordious 2.2.0 in the Official channel and switch to only fixing major bugs.

Why this whole odd / even switch? Version numbers in general help me keep track of user feedback (so I know which version they’re having problems with) but it also makes it very easy to tell if a person is using an Official or Preview build. It also helps me manage my time, as I switch between “rest” periods of maintaining “Official ” builds (maybe focusing on documentation and tutorials) and “active” periods on Preview builds (where I’m coding like a madman).

As for the major version, when I update that, it’ll be because I feel like I’m releasing a whole new app. When I stopped working on Chordious 1.0 (Classic Chordious) and rebuilt the entire app from scratch, that was worth bumping the major version number. At this point I have no idea what a Chordious 3.0 would look like, so that major version isn’t going to change for the foreseeable future.

Did you find this interesting? Would you like to see more “behind-the-scenes” posts like this? Sound off in the comments!

/jon

Tagged with:
Posted in Dev News

Chordious 2.0.2 now available

It’s been about a month since the last release, so time for another update!

The primary purpose of this release is to fix various issues in the Chord and Scale Finders and to implement some much needed unit tests. Adding barres to chord diagrams was always a little finicky, but they now work as intended for both regular and mirrored Chord Finder results. Also, it turns out a lot of valid scales weren’t being found by the Scale Finder, the result of several minor bugs in the search algorithm.

The only new feature in this release the ability to cancel long-running searches in both Finders. If you start a search but decide it’s taking too long or that you meant to search for something else, you can now press the ‘Esc’ key on your keyboard to stop the search.

Here’s the full change list for 2.0.2:

  • Chord/Scale Finder searches can now be canceled with the ‘Esc’ key
  • Fixed bug with full barres in the Chord Finder crossing open/muted strings
  • Fixed bug with partial barres in the Chord Finder not mirroring properly
  • Fixed bug where reach wasn’t calculating correctly in the Scale Finder
  • Fixed bug where scales past the 12th fret weren’t found in the Scale Finder
  • Fixed bug where many scales were missed by the Scale Finder
  • Added CoreTest unit testing project
  • Added unit tests for finding where to barre in chords
  • Refactored Chord/Scale Finder code for testability added some unit tests

Update to the latest version of Chordious today, and keep the feedback coming!

/jon

Tagged with: , ,
Posted in Releases

Chordious 2 Scale Finder tutorial now available

I’ve just finished and uploaded the tutorial for the Scale Finder:

See all of the tutorial videos in the ongoing Chordious 2 Tutorial playlist.

Enjoy!

/jon

Tagged with: , ,
Posted in Tutorials

Chordious 2 Chord Finder tutorial now available

I’ve just finished and uploaded the tutorial for the Chord Finder:

See all of the tutorial videos in the ongoing Chordious 2 Tutorial playlist.

Enjoy!

/jon

Tagged with: , ,
Posted in Tutorials