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 |
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////