jrb@shamu.WV.TEK.COM (James Binkley) (05/30/90)
A number of years ago, I decided to try and create a jazz based improvisation system. As a result I ended up first creating a music programming language that runs on the IBM-pc(mpu 401) called Ravel. Ravel is a C-like interpreted programming language that supports MIDI actions in the language. The main thing is that it is concurrent. It is also modular and supports an import/export mechanism for encapsulation. There is a jazz guitarist and jazz teacher named Jerry Hahn. He has a set of books out now (Mel Bay no less) that contain a rule-based system for jazz improvisation that he came up with over many years of teaching. I felt that it was extremely close to being totally algorithmic (but not quite naturally) and decided to use his rule base and my model. The current jazz improv program basically has that rule set coded up. The structure of the program is that there is a user i/f that has some runtime parameters that can be changed by the user. Basically there are four players (a quartet), drummer bassist lead piano The drummer is fairly primitive and is not using anything I can be proud of in terms of algorithms. The piano player basically plays the chords on the beat (and can jam using a different ruleset that is based on various harmonization principles, but I wouldn't rate it too high, poor to bad). The bass player and the lead both use the Jerry Hahn rule set. The base player uses it to a lesser extent. One of the user i/f parameters you can change is a percent of various time durations for notes; e.g, half, quarter, jazz eighths, that sort of thing. The lead player is a much better improviser than I am, but that may not be saying a whole lot. It could be better; it's not bad though. There is a set of known chords and known scales. It can be added to. It's just kept in arrays as symbolic constants at the moment. A piece is an intro + a chord sequence which is looped on forever. The main thing about the system is that it is useful to me as a vehicle for studying improvisation. I can jam with it. The bass and piano alone are enough to improvise with. The bass player doesn't suffer from lack of variety. On the down side: It could stand much work in the area of theme and variation. The drummer arena could stand some real work. (I need more cpu too...). The piano player is a hack but... It's fun. Ravel as a programming language system is now in the public domain as of May 15, 1990. If you want more information, please send U.S. mail to: Jim Binkley 5814 SW Taylor Portland, Oregon 97221. It's free but free with a catch. There is about 370 pages of documentation at this point + 3 disks of tools + music source. It costs $22.30 to get the manual xeroxed (latest round at Kinko's). I am asking slightly more to cover the rest of the materials. If you get a copy, you can distribute it locally. Again write me for details. Jim Binkley jrb@jove.cs.pdx.edu