Its finally stopped raining in Calgary, and the sun has come out. Heres one of my peonies called
Postilion.
I was able to find a picture of the rhizome of this plant which I planted back in September 2002.
I received that as a gift for an order of other peonies. Not bad for that tiny rhizome with a single eye, and a peony thats not even three years old, eh? I highly recommended it.
I just sent out an Email to Kagi this morning. If all goes well the payment system can be set up soon and my program MyJazzBand can go on sale. In the mean time, you can be download a copy from
its webpage and run it in demo mode. I thought it might be fun at this time to look back at the entire process of creating this program. I also wanted a jump-off point for all the notes Ive written about its design and programming.
I started writing this blog back in
August 2003. I then spent the next few months learning to program with Cocoa and CoreMIDI. A number of interesting MIDI utilities resulted (source code available), most notably the
FCM framework (a MIDI framework that can be used as a Python extension) and
Midnam utility (a program that fetches patch names from MIDI synthesizers and creates MIDI name documents). I also dealt with my migration away from Emacs and wrote
FCBlog and
FCBlogEditor, which I still use for generating and editing this blog today.
I really started to think about writing shareware in
January 2004. I spent the weeks of
Jan. 4,
Jan. 11, and
Jan. 18 studying software protection and cryptographic libraries. I then decided that an automatic accompaniment program would be a good place to start. I studied object representation for musical reasoning and tonality analysis during the weeks of
Jan. 25,
Feb. 1,
Feb. 8, and
Feb. 15. I experimented with algorithms for generating walking bass lines in the weeks of
Feb. 29,
Mar. 7,
Mar. 14, and
Mar. 21. The problem of generating piano and drums comping was examined in the weeks of
Mar. 28 and
Apr. 4.
Then I worked on the design of the chord editor GUI. My main concern was to display chord charts nicely, instead of in fixed size text boxes used by programs like Band-in-a-Box and MiBAC Jazz. The weeks of
Apr. 11,
Apr. 18,
Apr. 25, and
May 2 were spent on that. I also figured out how to import Band-in-a-Box files by studying the contents of many files in that format:
note 1,
note 2,
note 3.
Then I took the summer off and resumed my programming in August. I did more work on GUI programming that dealt with playback and visual feedback (weeks of
Aug. 15 and
Aug. 22). Then I spent most of September (
Aug. 29,
Sep. 5,
Sep. 12,
Sep. 19, and
Sep. 26) to program the support for MIDI device and patch names in GUI. I wrapped up the implementation of various aspects of the program in October (
Oct. 3,
Oct. 10,
Oct. 17,
Oct. 24).
In November, I studied different e-Commerce providers and worked out the practical details of the software protection schemes I devised back in January and worked to integrate them into the program (
Oct. 31,
Nov. 7,
Nov. 14,
Nov. 21). Following that I took December off.
I then had this crazy idea after Christmas to put aside the project and port XEmacs to Mac OS X. So my blog entries in January documented that effort (
Jan. 9,
Jan. 16,
Jan. 23,
Jan. 30). Carbon XEmacs was released on Chinese New Years Day.
I set up the (current) website at my new domain
www.sixthhappiness.ca at the
end of February. I also learned CSS for the design of my web pages (
note 1,
note 2, and
note 3). I
wrote the documentation,
designed the application icon, and
completed the web pages for MyJazzBand in March. Took part of April off, worked on
a beta 2 release for Carbon XEmacs, and went on
vacation on Vancouver Island in early May. Tied up all the lose end need for the release of the program after I came back so here we are.
A question you must be asking after reading all that is whether all that time is necessary to write a program like MyJazzBand. The answer is of course no. Certainly if Ive worked on it continuously and intensely, it would have been done a lot sooner. I believe some of the time I spent on design, research, and experimentation is unavoidable, however, because I had developed many of my own algorithms and techniques, from jazz chord and scale analysis and chord chart layout to software protection and license key generation and verification. Hopefully some of this effort will show through in the final product, that this program is of high quality and a lot of thought has gone into its design and implementation.