[comp.sys.amiga] Music-X Sysex Protocol available

ins_adjb@jhunix.HCF.JHU.EDU (Daniel Jay Barrett) (08/20/89)

	I have created a working system exclusive Protocol for 
Music-X's generic patch librarian, for the Oberheim Matrix-12
synthesizer.  If anybody wants it, send me mail.  (To make it work
for the Xpander requires changing 1 little byte.)

	I tried designing one for the Yamaha SPX-90II, but I cannot capture
and display the patch names properly.  Can anyone help?  The rest of this
posting describes the problems I ran up against while designing these
protocols.

	In the case of the Matrix-12, the patch name (8 chars) is stored
every other byte, alternating with zeroes.  So, I figured I'd just print
out all 16 characters for the name.  Nope... the first zero was taken as
a string terminator, and I got only the first letter to display.  So, I
defined a "character map" where the first character, ASCII 0, was the
space character.  Something like:  \20\20,\01\40,AZ,...  I can't remember
offhand.  Works like a charm.

	For the Yamaha SPX90II, the patch name is encoded in "nybblized
form" as described in the Music-X manual (page 384).  However, Yamaha chose
to have the first byte contain the LEFTMOST 4 bits, and the second byte
contain the RIGHTMOST 4 bits, exactly the opposite of what Music-X 
expects.
	So, I tried to reverse every pair of bytes by receiving the patch
name nybbles with the expression:

		((Y>>4)+(Y<<4))

instead of just "Y", but this did nothing.  A few experiments showed that
expressions cannot modify the incoming data; they can only use it as 
input.  (I hope someone can prove me wrong!)
	In the end, I FAILED.  If anyone actually manages to capture that
patch name, please let me know!

                                                        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:  ARPANET: barrett@cs.jhu.edu                            |
|                    BITNET:  ins_adjb@jhuvms.bitnet                        |
|                    UUCP:    ins_adjb@jhunix.UUCP                     noog |
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////

Followup-To: comp.sys.amiga
Subject: Music-X Sysex Protocol available
Newsgroups: comp.sys.amiga,rec.music.synth


	I have created a working system exclusive Protocol for 
Music-X's generic patch librarian, for the Oberheim Matrix-12
synthesizer.  If anybody wants it, send me mail.  (To make it work
for the Xpander requires changing 1 little byte.)

	I tried designing one for the Yamaha SPX-90II, but I cannot capture
and display the patch names properly.  Can anyone help?  The rest of this
posting describes the problems I ran up against while designing these
protocols.

	In the case of the Matrix-12, the patch name (8 chars) is stored
every other byte, alternating with zeroes.  So, I figured I'd just print
out all 16 characters for the name.  Nope... the first zero was taken as
a string terminator, and I got only the first letter to display.  So, I
defined a "character map" where the first character, ASCII 0, was the
space character.  Something like:  \20\20,\01\40,AZ,...  I can't remember
offhand.  Works like a charm.

	For the Yamaha SPX90II, the patch name is encoded in "nybblized
form" as described in the Music-X manual (page 384).  However, Yamaha chose
to have the first byte contain the LEFTMOST 4 bits, and the second byte
contain the RIGHTMOST 4 bits, exactly the opposite of what Music-X 
expects.
	So, I tried to reverse every pair of bytes by receiving the patch
name nybbles with the expression:

		((Y>>4)+(Y<<4))

instead of just "Y", but this did nothing.  A few experiments showed that
expressions cannot modify the incoming data; they can only use it as 
input.  (I hope someone can prove me wrong!)
	In the end, I FAILED.  If anyone actually manages to capture that
patch name, please let me know!