Chordious 2.0 Preview available for download

Just a quick message, I’ve been feverishly working on the next version of Chordious, and today have just announced the first “preview” build of Chordious 2 for Windows. It’s not 100% complete, but I think there’s enough there to start gathering feedback.

Chordious 2.0 Preview

Find out more in the kick-off blog post: Try out the Chordious 2 Preview for Windows.

/jon

Chordious 1.0.0 now available at chordious.com!

Chordious Image

It’s here! Over a year since my first code check-in, and I’m finally ready to release Chordious 1.0.0 into the world. Need chord charts for your favorite stringed instruments? Want to make your own? Chordious helps you find chords and make customized chord diagrams for free.

It’s my first major cross-platform application, and is available now for Windows, Mac OS X, and Linux, with fancy-pants installers to boot.

Find out more at the new official Chordious website.

/jon

 

The Port Townsend Ukulele Festival 2014

Class photo after the first session of the Baritone Ukulele Support Group
The first session of the Baritone Ukulele Support Group

Last year I attended the first annual Port Townsend Ukulele Festival, and had so much fun that I jumped at the opportunity to preregister for this year. Yesterday marked the end of this year’s festival, and I thought I’d take a moment to review some of the wonderful things I’ve learned in the past few days.

The festival consisted of four sessions of ukulele workshops a day for three days, along with ad-hoc non-ukulele classes, daily open-mics, jam sessions, and two live concerts featuring the instructors. The classes were held in the various buildings at Fort Worden, and included one-day drop-in sessions for shorter topics, along with three-day classes let you really dig into particular subjects.

Besides all of the wonderful opportunities to just sit down and jam with other ukulele players (there were some 160 participants this year), I also came away with a bunch of new techniques to practice, songs to learn, and a greater appreciation for all of the music that these little instruments can make.

Of particular note this year was the acceptance and accommodation of baritone ukuleles. In fact, one of the biggest highlights for me was the positive reception to my playing of Hawaiian slack-key on my baritone uke by both the staff and other participants. (I really need to make some videos, at the very least so I can get on Humble Baritonics again.)

The other highlight was showing off Chordious, which also elicited a positive response from some of the instructors, especially those with upcoming books.

It would be impossible to list everything that happened this weekend, but here are some of my notes (grouped by class and not in any particular order):

Baritone Ukulele Support Group (Aaron Keim)

  • Embrace the wound string. Enjoy the color it adds to the music. Only you will hear the squeaks.
  • There are only so many string factories, so pick the material and gauges you like and feel free to make your own sets. For baritones (tuned dgbe’), Mya-Moe uses D’Addario silver-wound classical guitar strings (0.033w and 0.028w) for the basses, and Worth clear fluorocarbons (0.0319 and 0.0260) for the trebles. (Mya-Moe sells their strings here if you’re not interested in making your own).
  • Keeping your thumb behind wherever your 2nd (middle) finger is will make chording easier.
  • Barre with the bony side of your finger, not the fleshy part, for a cleaner sound.
  • Hang your hand at your side, then raise your elbow – that loose grip, straight wrist, is how your hand should be shaped when fretting.
  • If you play smaller ukes too, use your knowledge of those chord shapes by jumping down and barring at the fifth fret on your bari to play them.
  • When you’re the only bari player in a  group, look at chord names, not grids, and not other people’s hands.
  • Play around with chord fingerings to try to get the root note on your bass string, ie. the 2130 E7 with the root note on the bass sounds better than the 0100 E7 with the 7th note on the bass.
  • Don’t worry about transposing or being in the same key as the paper when you’re playing by yourself.
  • Swapping out that low-d for a high-d will give you a nice, more “ukulele” sound, and isn’t a new idea – jazz ukulele master Lyle Ritz has been playing that tuning on the tenor uke for decades.
  • There is no “official strumming pattern” for songs. Some strums just sound better than others, depending on the feel you want the song to have.
  • It’s not hard to make up your own strumming patterns – just think of it as reductive rather than additive – start with your basic down-up, down-up, down-up, down-up and then remove strokes, replace one with maybe a thumb on the bass, change which fingers you use, etc.
  • In a 4/4 strum, put emphasis on the back-beats (2 and 4). Say chat-ta-noo-ga chat-ta-noo-ga as you strum.
  • If you want to capo, do it. Arron uses Kyser banjo/mandolin capos on his bari.
  • For that dreaded key of F, capo at the first fret and play the shapes for the key of E.
  • For picking like Maybelle Carter, almost everything is lead and played with the thumb.
  • Start by learning the melody, then the chords, then play just melody, using chord strums to fill gaps in the melody

Baritone Chord Magic 3 (Ginger Johnson)

  • When you see scary jazz chords (9ths, 13ths, etc) you can substitute a 7th. Note it doesn’t always work the other way, using a 9th for a 7th might sound good, but might clash with a non-jazzy song.
  • Baritone ukulele can sound deep, sexy, and sultry – don’t get caught up trying to play it like a smaller uke, use its strengths.

Fretboard Roadmaps (Fred Sokolow)

  • Learn your minor pentatonic scale to solo over bluesy songs by just playing in the key of the song (no need to worry about chord changes, just key changes).
  • If the song isn’t bluesy, slide down (toward the head) 3 frets and play the minor pentatonic there.
  • Learning your chord shapes mean playing those I, IV, V chords anywhere on the neck, wherever it’s convenient for the chord changes or melody notes.
  • Learn that circle of fifths. There’s no substitute for just sitting down and committing it to memory.
  • Learn the common progressions in multiple keys so that they become second nature.
  • Learn where major scales are relative to the chord shapes so you can stay in the shape and solo easily

My Three Strums (Casey MacGill)

  • Swing strum is alternating between using your thumb and finger at the same volume, which gives a off-beat natural accent when the nail hits the strings.
  • Keep your hand near the uke, you don’t want to waste energy.
  • You’re pulling your wrist out perpendicular away from the strings and “pinching” it with your thumb like you’re picking apart a cotton-ball.
  • Then flick down with your finger and mute with your palm for the 2nd beat, leading with your wrist.
  • Shuffle strum is using the fleshy part of your finger, again keeping your hand near (or even on the uke) the whole time, and muting between strokes.
  • Rumba strum is down, roll, down-up, down-down-up. Ups are hit with your thumb nail, and there’s no muting.

Hawaiian and Hapa-Haole Songs (Francis Doo)

  • Hawaiian music doesn’t have to be fast, fancy and complicated – simple chord progressions with simple strums give you room to express yourself in the song.
  • The Hawaiian vamp is II7, V7, I, I, then repeated.

Unobtrusive Percussion (JoJo Mascorella)

  • If he could only have one thing, it would be wire brushes. Wire brushes on a sheet of paper on a chair and you have enough sounds to have a good time.
  • Play thinking as if you’re whipping down from your shoulder, to get the right attack, but don’t actually do it as you’ll get tired too fast.
  • Lots of warmups go a long way.
  • Practice slower and speed will come naturally
  • Practice with a metronome to test (and humble) yourself

The biggest refrain was about practice. It’s a dirty word to some, but it really is the only way you get better. Period.

I could fill up post after post with highlights from the festival, but writing about it just isn’t the same as having been there. This year there were some 160 participants with another 180 or so on the waiting-list, so rumor is that next year they’re going to try and meet the demand with two separate festivals back-to-back.

I can’t wait to register.

Happy strumming,

/jon

Using a batch file to launch Gtk# apps on Windows with Mono instead of .NET

Mono is great for cross-platform development – maybe not so great for cross-platform deployment. In working on Chordious, a Gtk# app written entirely in MonoDevelop on an Ubuntu machine, there’s been no greater struggle than trying to find a simple “double-click” launch of Chordious on Windows.

Yes, if you stick with just the “standard” libraries and write your GUI with Windows.Forms, all an end-user has to do is double-click on your executable, and let .NET run it. But what if you don’t want that? What if your app needs to be launched by the Mono Runtime?

Realistically, the bigger hurdle is getting your end-users to install Mono in the first place – but even if you can get them past that – you’ll still need a double-click way to start your app. You’ll never convince them to start up a Mono command prompt and manually launch your app with mono.exe. And unfortunately for us, the Mono installer for Windows isn’t so nice as to add itself to the PATH, so you can’t just get away with a one-line batch file.

Enter StartMonoApp.cmd:

@echo off
setlocal

rem Script: StartMonoApp.cmd
rem Author: Jon Thysell <thysell@gmail.com>
rem Date: 7/15/2014

set _MonoApp=YourMonoApp.exe

rem Checking for 32/64bit machine

if exist "%SYSTEMROOT%\SysWOW64" (
    set WOW6432=\Wow6432Node
) else (
    set WOW6432=
)

rem Find default Mono version

set _MonoBase=HKEY_LOCAL_MACHINE\SOFTWARE%WOW6432%\Novell\Mono

echo Looking for Mono registry key %_MonoBase%

for /f "Tokens=2*" %%I in ('reg query "%_MonoBase%" /V "DefaultCLR" 2^>nul') do set _MonoVersion=%%J

if "%_MonoVersion%" equ "" (
    echo ERROR: DefaultCLR not found!
    goto nomono
)

echo Default Mono is %_MonoVersion%

rem Find the path to where that version of Mono is installed

for /f "Tokens=2*" %%I in ('reg query "%_MonoBase%\%_MonoVersion%" /V "SdkInstallRoot" 2^>nul') do set _MonoPath=%%J

if "%_MonoPath" neq "" (
    if not exist "%_MonoPath%" (
        echo ERROR: SdkInstallRoot not found!
        goto nomono
    )
)

echo Mono %_MonoVersion% installed at %_MonoPath%

rem Check for the mono.exe binary

if not exist "%_MonoPath%\bin\mono.exe" (
    echo ERROR: mono.exe not found!
    goto nomono
)

set PATH=%_MonoPath%\bin;%PATH%

rem Launch the app

pushd %~dp0

echo Launching %_MonoApp%

start mono.exe %_MonoApp% %*

popd

goto :quit

:nomono
echo ERROR: Unable to find Mono. Please install Mono and try again.
pause

:quit
endlocal

So let’s say you’ve got yourself a nice little Gtk# app named GreatMonoApp.exe. To make a double-click launcher that uses Mono, simply:

  1. Copy the contents (minus the line numbers) of the script above into Notepad.
  2. Update line 8 with the name of your executable (in this example, the line should read set _MonoApp=GreatMonoApp.exe).
  3. Save the file into the same directory as your executable. (You can name the file whatever you want, just make sure you save it as a .cmd, not .txt, file).

There you go! Double-click on that new batch file and your app should launch via Mono. You might see a flicker or two of command prompts, but otherwise works quite well. If something does go wrong, the command prompt will stay open with an (hopefully useful) error message for you to debug.

How does the script work? Essentially it looks for the registry keys that the Mono for Windows installer created, and uses them to find where the mono.exe binary is. Then it adds that folder to your PATH (temporarily) so it can use mono.exe to launch your app. And as mentioned before, if there’s anything wrong (can’t find the registry keys, can’t find the folder or binaries) the script will show an error.

I hope someone out there finds this as useful as I do – I’ve spent forever trying to solve this problem, with progressively more and more complicated scripts. I’ve verified that the script works on Windows XP, 7, 8, and 8.1, 32 and 64-bit.

Happy coding!

/jon

P.S. I have no reason to believe the script won’t work on Vista, I just don’t have access to a Vista machine to test it. Sorry true believers.