Wednesday, December 28, 2011

JamMan Librarian - Development Progress

For the latest development status on this tool, go to my JamMan Looper Manager page.

(Editors note:  you can download the latest completed version of this librarian here.  For a glimpse at the tool when I was developing it, check this out.)

I've owned a DigiTech JamMan for a few years now.  It records mono WAV files and is a fun and useful device.  There are new "stereo" versions and who knows, maybe I'll get one someday.  Still, I like this device and would like to use it for as long as it seems useful (which could be a very long time).

You can glean a good deal of technical information about the JamMan online.  It's listed by DigiTech as a "discontinued" product but that doesn't mean much to me - my device still runs great!  The storage of the WAV files and associated data are easy to understand since the data is in XML format.  Still, ask anyone if they enjoy manually managing a myriad of loop files and the accompanying XML data by hand and they'll likely tell you that librarian software is a must!

Like many, I was using the LooperTools librarian software for my JamMan (and you may note that the domain isn't serving up anymore), but that software failed to work for me once I updated to Windows 7 (64 bit).  The "new" librarian software from DigiTech (to support the new stereo devices) does not recognize or support the "classic"(mono) JamMan devices (at least as of this writing) which deals exclusively with 16-bit, 44.1 mono WAV files.

So I decided to write my own JamMan librarian.  This blog entry simply captures what I'm calling my first "milestone" - importing the WAV files from my "classic" JamMan (previously managed with the LooperTools software) into my own library.

I actually started writing my own JamMan librarian over a year ago, strictly for personal use, just a fun weekend warrior type project, or so I thought, but I eventually moved on - it seemed sort of silly and there was music to write!  Like most programming tasks, they often seem easy, until you start getting into the details!  I was writing it using Visual C# and the target platform would have been Windows only.  But I recently started  dual booting Ubuntu and started learning  MonoDevelop using C# and reconsidered when it became obvious that, using MonoDevelop, I could not only write the librarian software fairly easily (at least a basic one) and have it run on multiple platforms (Windows, Linux/Ubuntu, Mac).  Plus, getting to know how to use GTK#, MonoDevelop has been a great learning experience!

My "JamManClassic" librarian (I probably won't come up with a more clever name than that)  is still a work-in-progress (I'm not currently offering anything to download until I can finish it and use it myself but stay tuned!), however, I hope to finish up the basic funcationality soon and suspect that it will be ready for 1.0 sometime in early 2012.  And yes, I will make it available - maybe not completely free, but perhaps pretty close.

If you are interested in this software and/or would like to be a tester once I'm closer to being finished, contact me.

Current and planned features for my JamMan Classic Librarian 1.0 include:
  1. Simple library management - all WAV files are imported into their own using library folder so your original WAV files are never modified.  This will hopefully make the concept of "smart sync" possible.
  2. Simple play/stop of library and loop WAV files.
  3. Simple properties editing - my data is also in XML so it's transparent and fully extendable.
  4. Backward support for LooperTools librarian files (LooperTools.xml).
  5. Simplified JamMan "slot" management - basically edit the properties as you want in the librarian and save to JamMan.
  6. Smart sync between the JamMan device and the library (slightly more advanced so we'll see how smart!)
  7. Option to convert imported WAV files to mono 44.1
  8. Load and edit the JamMan loops and JamMan properties directly (without a library).
  9. Search - a simple way to search/filter library files on name and description. (post 1.0, probably via "tags")
  10. Export WAV - a simple way to export or save any WAV file from the existing library to an external directory.
  11. Print Set List - this will probably be an HTML export of the JamMan loop files with name and optional other details.  That way the list can be quickly edited by the end-user and printed as desired.
Not supported or Another Day:
  1. MP3 or other file format imports - other software does this well so use those tools to convert files.
  2. Audio normalization or levelings - that's just way to geeky for me and nothing I want to embark on.  I'm leveraging some portable WAV library code now that detects WAV headers and converts to mono or stereo 44.1, but normalization and gain leveling is probably not part of the feature set for me.  Again, there are a plethora of other audio tools that can normalize and level audio files.  
  3. Everyone's special pet request.  This is a small tool for a discontinued product. I'm open to suggestions, but my first priority is to keep things simple and useful.