[rec.music.synth] MUSIC-X comments long

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