From Brian Willoughby Sent Mon, Oct 29th 2018, 04:24
Hello all, Here=E2=80=99s something that has baffled me for decades. Has anyone = been able to successfully change the Matrix-12 or Xpander display via = MIDI, using the Display Command described in the manual? I managed to implement a librarian that can pull all presets from a = Matrix-12. So, I know that my code can generate a SysEx message that the = Matrix-12 can understand. But, for some reason, sending a Display = Command is completely ignored. It=E2=80=99s never been a priority to get = that working, but I can=E2=80=99t understand why it wouldn=E2=80=99t = work. If anyone has been able to do this, on an Xpander or a Matrix-12, = especially the latter, then please help me figure out the secret. Brian Willoughby p.s. The Xp/M12 SysEx has no way to write a full patch to the edit = buffer. You can only overwrite one of the patch memories. I managed to = find a way around this. My goal was to avoid erasing one of the memory = locations just so I could audition a (potentially boring) patch before = committing it to =E2=80=9Cpermanent=E2=80=9D storage. The solution is a = giant subroutine that reads a single patch from the librarian database, = and then goes through every since parameter, one by one, sending page = edit commands to duplicate the settings. This actually works, and = basically sets the Matrix-12 as if you had manually entered the patch in = the edit buffer. It makes no permanent changes unless you decide to = store. When first implemented, the code ran too fast for the Matrix-12 = to keep up, so the patch would have lots of random parameters missing. = The trick turned out to be a 75 millisecond delay between each SysEx = edit message. Even with the delay, and the large number of parameters, = it=E2=80=99s still basically =E2=80=9Cinstantaneous=E2=80=9D to select a = patch from the librarian and then be able to hear it auditioned on the = synth. Considering how much communication is going on in that feature, = I=E2=80=99m very surprised that something as simple as the Display = Command would not work. I must be missing something very simple.