MIDI Programs

Other Programs

Cocoa Sample Programs

Algorithms

A blog where I will write mostly about programming in Cocoa, Carbon, and CoreMIDI, and experiences from my ports of Emacs and XEmacs to Mac OS X.

Postilion!!

Wednesday June 8, 2005

It’s finally stopped raining in Calgary, and the sun has come out. Here’s 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 that’s not even three years old, eh? I highly recommended it.

How to Architect a Jazz Accompaniment Generator Shareware

Monday June 6, 2005

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 I’ve 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 Year’s 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 I’ve 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.

June 2005
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
May  Jul

xml

Lists

Misc