Taurus 3 SysEx Documentation Needed !!

Welcome to the Taurus, Minitaur and Sirin Forum
Post Reply
AStoker
Posts: 6
Joined: Sat Aug 21, 2010 9:21 am
Location: Indianpaolis, IN

Taurus 3 SysEx Documentation Needed !!

Post by AStoker » Tue Nov 22, 2016 8:34 am

I've searched high and low and have yet to find documentation for the T3 sysex data. To be perfectly clear, I'm looking for something like this (http://moogmusic.de/SysEx.pdf) which I would expect to get from the support site, but no such luck searching. any help would be appreciated. I don't know why such documentation is always a challenge to find :(
Prophet 12 / Source / Taurus 3 / RS-5 / Integra 7 / XV-5080

User avatar
till
Posts: 1091
Joined: Tue Nov 22, 2005 6:17 pm
Location: south-west Germany
Contact:

Re: Taurus 3 SysEx Documentation Needed !!

Post by till » Tue Nov 22, 2016 1:04 pm

I had been searching for such a document years ago. Without success :(
keep on turning these Moog knobs

Sequence:
Prodigy * Minimoog (1979) * Voyager * MF102 * MF103 * MF104z * MP201 * Taurus 3 * Minitaur * Sub Phatty * MF105 * Minimoog reissues with MUSEs * One

AStoker
Posts: 6
Joined: Sat Aug 21, 2010 9:21 am
Location: Indianpaolis, IN

Re: Taurus 3 SysEx Documentation Needed !!

Post by AStoker » Wed Nov 23, 2016 8:26 am

I am trying to build a SysEx management tool for my gear and I'm trying to parse the SysEx dumps (.syx files) to describe the contents of the files. The manufacturers of my other gear (Roland & DSI) use byte aligned data segmentation making things like the patch names pretty easy to find, but Moog has used a "bit" level compression described in the prior Voyager documentation so I would guess something similar for the T3 given it's birthdate. This approach puts all data from a single "export" into a single SysEx Message meaning you just have to comb through the data, but the shifting bit compression approach make the data virtually unreadable to the human eye (from an ASCII computer based "byte" perspective).

I wrote a Java app to unpack the data and dump it to the console so I could locate the patch names, but they do not show up as ASCII text anywhere in my "unpacked" data. Since the Voyager doc shows a "header" and the bit rotation pattern repeats every 8 bytes, I just ran the conversion 8 times incrementing the start point, but to no avail. I then downloaded the Voyager Presets SysEx file from the moog site and tried the same with but no success, so there must be something wrong with my routine, although I did an entire logical walkthrough of bit shifting and I thought it was clean.

While I was poking around, I found this link: http://stackoverflow.com/questions/330085/alesis-qs-midi-sysex-data-conversion/331329 from Stack Overflow. I had already written an unpack routine, but the bottom of the posting also included a packing routine to which I credit "Solitud". The routines seem to pass a pack, then unpack test of random data but perhaps I'm missing something .... or perhaps I'm just barking up the wrong tree (it would be nice to have some formal documentation)!

Code: Select all

   public static byte[] unpack(byte[] data, int start) {
      ByteArrayOutputStream result = new ByteArrayOutputStream();
      for (int i = start; i < data.length; i++)
         {
         /*
          * Determine the amount of shift based on the starting and current point in the data
          * using a remainder of division by 8
          */
         int shift = (i - start) % 8;
         if (shift < 7)
            {
            /*
             * The 8th byte is discarded because all data from that byte will have been rolled forward
             * on to the preceding byte
             *
             * Start with a 0 value integer (which will hold more "bits" as a buffer
             */
            int r = 0;
            
            /*
             * If the data stream has another byte coming, we need to pull those excess bits into
             * the top  of our current byte by applying them shifted left 7 bits
             */
            if (i + 1 < data.length)
               r = (data[i + 1] << 7);
            /*
             * Now apply the lower 7 bits of the current byte to the integer "buffer"
             */
            r |= (data[i] & 0x7F);
            
            /*
             * Finally, spit out a byte value based on shifting the buffer right based on the
             * 8 byte cycle
             */
            byte b = (byte) ((r >> shift) & 0xFF);
            result.write(b);
            }
         }
      return (result.toByteArray());
   }


Thoughts ??
Prophet 12 / Source / Taurus 3 / RS-5 / Integra 7 / XV-5080

User avatar
till
Posts: 1091
Joined: Tue Nov 22, 2005 6:17 pm
Location: south-west Germany
Contact:

Re: Taurus 3 SysEx Documentation Needed !!

Post by till » Wed Jun 19, 2019 6:17 pm

I am still searching for a Moog Taurus 3 MIDI SysEx implementation document.

With such information, programming an editor and a bank manager would be possible.
keep on turning these Moog knobs

Sequence:
Prodigy * Minimoog (1979) * Voyager * MF102 * MF103 * MF104z * MP201 * Taurus 3 * Minitaur * Sub Phatty * MF105 * Minimoog reissues with MUSEs * One

Post Reply