Monome emulation via serialosc

  • Adafruit has asked me to look at programming their UNTZ 8x8 and 8x16 grids to communicate as a monome device. I've studied the serialosc protocol and it's great. I have a couple of questions:
    X
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    A
    B
    C
    D
    E
    F
    G
    H

    So I have a grid like above (stop at 7 for 8x8). I have mapped the numbers as X and the letters as Y but I'm starting to think serialosc does the opposite. The X is approximately where the UNTZ serial cable is (I know the project boxes use a side plug). Ideas for best practices?

    Commands - so a command 0x05 is request grid size. would the response be 0x05 X Y or X Y 0x05 as both seem to be indicated in various parts of the command list.

    How often are rotation requests made? Can they be made after a grid is in use? That would be more difficult to suddenly rotate it all. Are grids < 8x8 definable in software (hope not).

    Hopefully my project and questions are not too much for you all. I appreciate your patience. Mike

  • Sorry, the USB connector (X) is above the 4

  • hey, serialosc dev here. it sounds like you're looking to implement the mext protocol. serialosc (more specifically, libmonome) only requests grid size right at initialization time.

    serialosc's (libmonome's) rotation facilities should take care of the rest. it will rotate coordinates in software, and take care of the case with the 128 where the width and height swap at 90 and 270 degrees.

  • are you trying to implement the protocol on the untz hardware?

  • tehn, yes I am looking to implement the grid & light control protocol on the Untz hardware . It is controlled internally by an Arduino Leonardo.

    visinin, sorry, yes probably, the protocol handling inside the grids themselves, responding to commands and providing requested data.

  • cool, that's what i assumed. don't worry about the rotation, libmonome/serialosc handle that in software.

  • Thank you Yes, implement mext, not serialosc as your layer does alot of cool (read:hard) work). Does serialosc do the offsets or is that in mext hardware?

    Do I have the standard orientation correctly x lengthwise, y down?

    Also the responses, the command byte on returns come at the beginning vs. the end?

    And the expected serial baud rate expected? I've read 9600 and 115200.

    Thank you.

  • are Adafruit intending on shipping devices with this on? if so then this is pretty rude..

  • stevieraysean, no, they are not going to ship clones or what not. They sell open source hardware. They also provide free tutorials on how to use their hardware, again open source. While the Untz is a decent grid, it would not be studio quality equipment. Rather it could allow others to play around with Max or other software, etc. This could actually build the base of folks using such gear, invigorating professionals who would buy the better quality equipment. No one would buy a build-it-yourself sound board and think they are getting a Moog. But folks who start on low-fi equipment may build up their skills to graduate to the real deal. Some folks a few years back made arduinos that used light grids (pre-mext if I have googled right), this would be a more modern type of work like that done by those others.

  • @TheKitty, I tried to implement mext on top of the latest arduinome firmware in the past:
    http://monome.org/community/discussion/12397/arduinome-protocol-update-issues

    didn't succeed much, but would love it if your untz code could be adapted for arduinomes as well (for tilt/encoder/etc extensibility). supporting such combo in libmonome would then just be a matter of using mext with the 57600 baud quirk, which is already there.

  • The source will be open so any methodology could be used/reused. I'm hoping to put up some beta code by this weekend if anyone would like to see what's been cooking. And again, once done, it will be written up into an online tutorial and code for anyone. Not even ads or anything commercial (other than you can buy parts from Adafruit or use your own).