Dr. Dobb's Journal November, 2004
Band-In-A-Box
Dear DDJ,
My friend Mark Walsen told me about Al Stevens's article "Band-In-A-Box, Finale, and MusicXML" (DDJ, September 2004). Mark really appreciated Al's kind words about MidiNotate and very much agrees with Al's assessment of the MusicXML format. One of his goals is to have his music notation products support that format in the future.
I also enjoy using Band-In-A-Box to help me with some of the initial "building" in some of the songs that I put together and arrange. Mark mentioned that Al had come up with a style in BIAB that plays unadorned chords, thus making their translation much easier. I'm quite curious about how he came up with this style, as I often have to reenter some of the chord names when I take a MIDI file I've saved in BIAB and translate it in other software. I'm using Version 12 of BIAB. If Al wouldn't mind sharing his method, I'd love to know about his BIAB style.
Sherry A. Crann
crann@echoicemi.com
Al responds: Thanks for your interest in my work, Sherry. It's very simple. The style plays only the root for a bass line and only a fundamental chord in the piano accompaniment. I've attached the style so you can examine it. Use BIAB and this style to generate an SMF file, and you have all the information you need about the tune without the BIAB interpretations, enhancements, and so on. I've used this style to export BIAB tunes to Jammer Pro, too. Currently, I'm working on a program that converts these generic SMF files directly to MusicXML without going through Finale to do it. That eliminates several steps from my procedure. An executable version of my chordbuilder program is available at http://www.alstevens.com/midifitz/.
More Band-In-A-Box
Dear DDJ,
I just wanted to applaud Al Stevens's article "Band-In-A-Box, Finale, and MusicXML" (DDJ, September 2004). I am a "full-time" musician devoting more and more time to programming (I work on a cruise ship, so there's plenty of spare time for that) and, obviously, issues such as music notation and interchange interest me greatly. Admittedly, I'm on the Sibelius side of the notation program camp, but the point about convoluted and limited APIs applies there, too. The small but dedicated community of developers writing plug-ins in Sib's scripting language, ManuScript, is forever griping about these limitations and maybejust maybemore interest from the programming community at large can leverage the pressure on Sibelius to open up more of their object model. Al probably knows that the Dolet plug-in for Sibelius is quite hobbled by these limitations, so I'm already impressed by what Michael Good achieved with Dolet on that platform. And of course, the fact that you're a jazz musician explaining lead sheets is wonderful, too. It often seems to me that notation software leans too much towards classical usage without sufficiently accommodating the gray areas of notational shorthand. Perhaps the assumption is that, parallel to the "fake book" = "real music" argument of classical musicians, people who use lead sheets are more interested in automatic accompaniment or recording software. A last soapbox observation: Ironically, it appears to me that arrangements done with notation software at the moment are getting more and more verbose due to the increasing use and quality of playback options in these programs. Before MIDI/soft synth playback and demoing were reasonable options, people wrote for human readers. Now they often tailor their writing to the program's playback abilities, opting to write out detailed rhythm section charts requiring good readers, instead of slashes requiring good players!
Ewald Cress
ewaldcress@rocketmail.com
Al responds: Thanks for your comments, Ewald. I agree about notation program authors mostly ignoring our needs. I always liked Noteworthy Composer until I realized that the author does not understand the need for chord symbols that transpose with the score and would never expend the effort to support them.
Ewald's turn: Al, I ought to clarify one sweeping statement I made about Sibelius: Unlike Finale, it doesn't expose a documented API, and plug-ins are only written in ManuScript. Interestingly, the advertised goal of ManuScript is to make plug-in creation accessible to motivated but nonspecialized end users. In reality, though, most of the useful plug-ins I know about were created by a handful of experienced programmers resorting to tricks and received ManuScript community knowledge that is neither documented nor in the "end-user" league. Furthermore, this community knowledge is pretty fragile, since: Said community consists of only five or six truly active members and a few essential programming practices depend on undocumented Sibelius behavior that could theoretically change between versions. And yes, to tie in with my observation about jazz/pop notation, these programmers mostly seem to have the "classical" angle in their musical background. Perhaps what we really want here is better understanding and acceptance of our notational Creole as real notation by the arbiters and scribes of the language. But in all seriousness, it seems that the flame of notated music in any form is kept alive by people who need to be slightly snobbish about the fact that they read and write; notated musical culture is, after all, an island in a sea of persisted music creation practice that is growing increasingly independent from notation.
JVMPI Follow-Up
Dear DDJ,
"The Java Virtual Machine Profiler Interface" by Christof Schmalenbach and Christian Höfig (DDJ, July 2004) was well written and informative. However, the article fails to mention that this JVMPI interface has never been an official Java JVM interface. JVMPI has always been labeled an experimental interface. The article does mention many of its shortcomings, but it should have also listed its "experimental" status.
In Java SDK 1.5.0, this JVMPI interface continues to be supported but is being deprecated and the plans are to completely remove it in the next major Java SDK release. The new JVMTI interface in Java SDK 1.5.0 replaces this JVMPI interface and is a vast improvement over it and JVMDI. The JVMPI interface usage described in this article could easily be done with JVMTI. See http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/ for more information.
Kelly O'Hair
kelly.ohair@sun.com
Quantifying Programming Languages
Dear DDJ,
Thomas Plum's "jobs per month" filter is a nice indication but perhaps misses languages like AWK and Tcl since they are rarely "official" job languages but yet are used to perform specific tasks in daily work. Another language I would like to see more mention of is Forth, which is a language well suited to embedded work.
Boris Fennema
boris_at_home@eircom.net
DDJ