barrett@jhunix.HCF.JHU.EDU (Dan Barrett) (08/29/89)
I have been using the new Amiga MIDI sequencer/librarian/etc program MUSIC-X by MicroIllusions for about a month now. This is an extremely powerful program, and I recommend it highly! ($138 by mail order from Abel Supply; $299 list price; not copy protected; 500 page manual!) I would love to correspond with other MUSIC-X users on the net. Write to me at any of the addresses at the end of this posting. I have composed the following letter to the author, David Joiner, full of suggestions, criticisms and compliments. If anybody has any feedback on my letter, please let me know! NOTE: This letter is long. If you are not already familiar with MUSIC-X, it might not be very readable to you. This is NOT a review of the product. It is a comprehensive list of the bugs and shortcomings that I have found, plus some compliments and questions. Remember -- I LIKE THIS PROGRAM A HELL OF A LOT! --- begin letter --- Mr. David Joiner c/o Microillusions 17408 Chatsworth Street Granada Hills, CA 91344 Dear Mr. Joiner: I have a number of suggestions, questions, and compliments about your WONDERFUL new program, MUSIC-X. It is certainly the most powerful Amiga MIDI package I have ever used. Congratulations on creating a great program! Please don't be put off by the length of this letter. I am making all these suggestions because I care about your product! 1. Possible Bugs? Releasing The Serial Port I think MUSIC-X does not release the serial port properly when it exits. Suppose I invoke MUSIC-X from the CLI and then exit. When I try to run other serial-port programs (VT100 emulator, and other MIDI programs) they cannot open the serial port. If I simply try to run MUSIC-X again, it CAN re-open the serial port. Hmmm. A warm boot clears up the problem. I have the source code for the other serial-port programs, so I know they are trying to open the port legally. ERR messages I've been getting a lot of ``ERR [xxx]'' messages to the right of the free memory gauge. I suppose these should happen rarely, right? File Requestor The File Requestor cannot access files in deeply nested directories! It allows only 30 characters for the entire directory path string, and another 30 for the filename. AmigaDOS allows much more than this. Please allow the AmigaDOS maximum length. Event Editor The event editor does not ``re-dimension'' its workspace when you SELECT another sequence to work on, if the new sequence is shorter than the original one. Example: Load the TOCCATA example from your Examples disk. Edit sequence #1 in the event editor. Scroll to the very end of the sequence. Now SELECT... sequence #2 from the menu bar. When it loads, it appears to be blank! I think you should be seeing the end of sequence #2 at that point. Bar Editor SELECT a STOP event in your sequence to make it the current event. Now click on any of the 3 virtual sliders. A colon (`:') appears to the left of the slider. Minor bug. Librarian When receiving a patch, I often see garbage characters appear after the patch name in the Librarian display. Sometimes I even get garbage words like ``Velocity'' or ``ouch'' that do not appear in the received patch. I suspect that you have forgotten to zero out the name string at some point. Protocol info: 398 (decimal) byte patch dump, name has length 15, going from bytes 382-396; charmap = \20\20,\01\40,AZ,\5B\5F, turning ASCII zeroes into space characters. (Patch name is stored as 8 characters alternating with zeroes, so a charmap of this sort is necessary. Otherwise, MUSIC-X interprets the first zero in the name as a string terminator, and the name won't print on the Librarian display.) My configuration is: Amiga 1000 with 512K CHIP RAM, plus 2 megabyte Starboard II memory expansion. C.Ltd. 50 megabyte hard drive and SCSI controller. Golden Hawk MIDI GOLD interface. C.Ltd. Timesaver on keyboard. Kickstart and Workbench 1.3. I use ARP 1.3, a small RAD:, ConMan 1.3, Rez 0.3, and DMouse 1.20 in the background. Feel free to ask me for more details about my setup. 2. Suggestions The Amiga Interface I want to type ``MUSIC-X myFile.perf'' from the CLI to have MUSIC-X load a performance file when it boots. The Workbench tooltype options are very nice, but please don't neglect your CLI friends. Please add an option for MUSIC-X not to create icons for the files it saves. MUSIC-X searches for ``Default.perf'' in the current directory only. How about searching first in the current directory, and then (if no such file exists) in the MUSIC-X: directory? That way, the user doesn't have to type ``cd MUSIC-X:'' every time before he runs the program. The File Requestor Your file requestor is great, but it is missing one important thing: a quick way to move to the parent directory. Please add a ``parent'' gadget. The Sequencer Performances do not save the ``Use Zero Origin'' preference. Saving this would be nice for people who always use a zero origin. When merging two sequences, I think MUSIC-X should put up a little sign that says ``Merging, please wait...'' instead of no feedback at all. I suggest putting the word ``MERGING'' in red, exactly where the ``ERR[xxx]'' messages appear, maybe blinking to call attention to itself. Both Editors Please add a ``return to original tempo'' gadget to the PARAMS requestor. Suppose you play a sequence containing a programmed tempo change, and then you want to replay the sequence. You first have to return the sequence to its original tempo using the tempo slider. This is inconvenient, especially if you don't remember what the original tempo was! The Event Editor Please give the event editor menu all of the same DISPLAY options as the bar editor. The most important suggestion: I'd like a more powerful way to SELECT groups of similar MIDI notes. For example, I can't find a way to SELECT all occurrences of MIDI note 79. This is important for people who use drum machines. Some drum machines hard-wire different drum sounds to be triggered by different MIDI note numbers. If MUSIC-X could select all occurrences of, say, MIDI note 79 in a sequence, and change them all to MIDI note 81, this provides an easy way to change which drum sounds get triggered in your drum machine. Your event and bar editors, as they stand, implement a subset of the commands that would be expected in a relational database of MIDI events. It would be great to see the event editor turned into an even more powerful relational tool. How about a quick way to do this: ``select all MIDI notes between note number 38 and 45, with velocity less than 97, of duration less than 3 seconds, on MIDI channels 6 and 8, that are not affected by any pitch-bend commands.'' Powerful stuff! Perhaps you could make a monster requestor in which the user selects note specifications, clicks ``OK'', and all notes that meet those specificiations get marked. Maybe this could be an external module. The Bar Editor If you accidentally click your mouse several times on the graphic display, the display refreshes itself multiple times (once for every click). I once clicked about 15 times in rapid succession, and then had to sit there waiting for 15 refreshes. It would be nice if there were a button to hit to stop refreshing immediately. It would be even better if MUSIC-X were smart enough to skip all the intermediate (queued) ``refresh'' messages and go directly to the last one. Please allow an easy way for a PSEQ event to take on its ``true'' duration. That is, set its duration exactly equal to the time between the start of its first event, and its END event. If I want to chain several sequences to occur one after the other, with the start of the next sequence occurring immediately after the END of the previous sequence, right now I have to figure out each sequence's duration by hand. It is natural, I think, to automate this calculation. The Sample Page How about a way to play the samples from the Amiga keyboard? Maybe the numeric keys across the top of the keyboard could play 10 notes in the instrument's range (determined intelligently from the instrument data). The Protocol Editor The patch name embedded in a Yamaha SPX-90 system exclusive dump is in ``nybbelized'' form, but in exactly the opposite order that MUSIC-X expects. In other words, the LEFTMOST nybble comes in the first byte, and the RIGHTMOST nybble in the second byte. Could MUSIC-X have a switch, or a new nybble variable type `Z' (like `Y'), to allow it to interpret this reversed data? The Librarian Suppose I have a library loaded, and I decide to LOAD a different one, but I press CANCEL. My original library disappears from view! I think that a ``cancel'' operation should not do this. It should leave my original library alone, restoring the screen to its exact original setup. I have been totally unable to capture an ``All patches'' dump from my Oberheim Matrix-12. In fact, I crash MUSIC-X when I try. This is not surprising, since the Matrix sends a large amount of data very quickly. I have never been able to capture this data with any Amiga program, so I have no idea what the format is. Sigh. I don't know if there's anything you can do about this. Maybe the new serial.device in 1.4 will help things? When capturing single (individual) patch data from my Matrix-12, LookOut reports read errors about every 3rd or 4th time I click RECEIVE. I am quite confident that my protocol is correct, since it receives the data correctly most of the time. The combination of colors of the About MUSIC-X requestor looks pretty bad on the Librarian Page. The Manual The references to other sections of the manual, [see...], should have page numbers. You should have a larger tutorial section on using the sequencer. Also, The section on the Protocol Editor should have some real examples of using character maps. This great feature took me quite a while to understand from the manual's explanation. (And I am a computer scientist as well as a musician.) Miscellaneous Suggestions (some weird) How about making the audio output produce an FSK sync tone, or a 24 parts-per-quarternote sync tone? This would be great for people with pre-MIDI drum machines. Only Amiga Makes It Possible...! The event editor, librarian, and protocol editor use some numeric gadgets that do not behave like standard Amiga string gadgets. For example, the ``Patch name length'' gadget in the protocol editor is odd because I cannot use the delete key in it. Instead, I must click on the digit I want to change, and then type the new digit. Why didn't you use a standard string gadget? It doesn't fit with the rest of the program. I hope that your reason was not so you could use Right-Amiga-X for ``exit'' (it's normally ``erase string'' in a standard string gadget). How about a little editor/module that supports standard music staff notation, and a few simple commands like adding and deleting notes? Please make a freely-distributable program that plays MUSIC-X performances. It will help advertise MUSIC-X, and it will allow people to use MUSIC-X performances as part of a larger multi-media program. 3. Compliments Enough complaining... let me tell you what you did RIGHT. Your ``sequence'' model is wonderful! Finally, a sequencer where you can have a hierarchy of sequences and a ``multi-track tape recorder'' simultaneously. Your model is beautifully general. The timing seems to be rock-solid. The program multitasks fine, allowing you to change settings and save files without interrupting the sequence playback. I never thought I'd be saving my sequences to disk while the sequences were playing! The PREVIEW button is a great idea. The quantizing options are wonderfully versatile. Your handling of the edit buffer, and the requestor that warns you not to overwrite it (and giving you lots of choices what to do instead), are both great. The STOP button is an intelligent CUE -- nice! Overall, the user interface is just grand -- very intuitive and pleasant to work with. Your choices of screen colors are excellent. I don't even mind that there is no way to change them from within MUSIC-X. The Protocol Editor is very powerful. Character maps saved my butt a few times. For example, my Oberheim Matrix-12 stores its 8-character patch name in 16 bytes, with a zero every other byte. The first zero prevents MUSIC-X from printing the patch name on the librarian screen (it thinks it's a string terminator, I guess). So, I made a character map that turned zeroes into space characters, and everything works great! The manual is just short of perfect. Matt Nathan's use of mnemonics is very clever: `Read this as "Output Bank"' and `Think "C" for "Control"' are little gems. Questions There are some things I just can't figure out how to do. Am I missing something? If you have time, I'd really appreciate answers to these questions. 1. How do I change the protocol attached to an existing library? The protocol is chosen when creating a NEW library, but I have not been able to find a way to change that protocol later. If I go to the protocol editor, LOAD a new protocol instead of the old one, and then exit back to the librarian, its protocol hasn't been changed. 2. How do I write my own modules, such as patch editors and quantizers, so they can share data with MUSIC-X while it is running? I cannot find any mention of this in the manual. I hope you find my suggestions useful. You have created a great product, and it was worth the wait. Sincerely, --- end letter --- Dan //////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ | Dan Barrett, Systems Administrator -- barrett@cs.jhu.edu (128.220.13.4) | | Dept. of Computer Science, Johns Hopkins University, Baltimore, MD 21218 | | E-mail addresses: INTERNET: barrett@cs.jhu.edu | | BITNET: ins_adjb@jhuvms.bitnet | | UUCP: barrett@jhunix.UUCP (NOTE NEW ADDRESS!) | | COMPUSERVE: >internet:barrett@cs.jhu.edu | \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////