-
here comes griddle, an invisible (and linux friendly) splitter/spanner for serialosc:
https://github.com/artfwo/griddle
it's designed to serve two purposes: create large virtual devices from physical monomes and split larger monomes into small virtual devices. 8x8 is the smallest possible unit.
griddle works the same way as serialosc. it's a service that announces your virtual devices through zeroconf and routes osc-messages to/from the monomes.
i've tested it on linux with rove so far, a demo video of a working setup is here:
http://www.youtube.com/watch?v=tCydmZe-ar0
thanks to nightmorph for the name and #monome crowd for the input, i'm looking forward to hear more. so please send in comments, suggestions, patches, questions, i'd be glad to reply! -
do all i need to do is set up the conf and then run python griddle.py?
Been stuck in the process of poking around in meme.py and realized i had to install python26-gtk, and am now stuck in the eternal qt4 package upgrade during a miscaclulated package manager update so i cant do anything right now.
I see the virtual devices broadcasting over bonjour, but monomeserial.maxpat doesnt seem to want to connect to them. My theory is that my actual device (new 128) isnt being routed through the virtual devices properly.
Anywho, I feel like a school girl in a taffy store with this one, I can't wait to get it to work! -
Awesome idea.
Just tried it on OS X Snow Leopard. Python version.
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Conf looks like this
# virtual device name
[supernome]
port = 3333
size = 24, 16
offset = 0, 0
# attached physical devices
m128-400 = 16, 0
m0000146 = 0, 0
I see "griddle-supernome" in 7up 2.0.5rc2's connection picker. When I click "Connect" the following is logged to the console.
[Chaos-3:~/Downloads/artfwo-griddle-7495e6d] chrislloyd% python ./griddle.py
creating supernome (3333)
/Users/chrislloyd/Downloads/artfwo-griddle-7495e6d/OSC.py:2368: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
self.message = "No callback registered to handle OSC-address '%s'" % pattern
/Users/chrislloyd/Downloads/artfwo-griddle-7495e6d/OSC.py:2349: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
return self.message
If I try to send a test message to turn all leds on, I get
OSCServer: NoCallbackError on request from localhost:57539: No callback registered to handle OSC-address '/7up/grid/led/all'
OSCServer: NoCallbackError on request from localhost:58151: No callback registered to handle OSC-address '/7up/grid/led/all' -
bar|none: how'd you get it running?
-
@flyingoctopus, you need gtk only to run the emulator, griddle should work on any python installation, you only have to edit the config for your needs.
@bar|none, i added a couple more system callbacks to the frontend. this is not going to fix anything yet. i need to know the handshaking procedure for max, looking for it right now. -
@bar|none, apparently the '/7up/grid/led/all' error happens because 7up doesn't autoset it's prefix on connecting to griddle. change the prefix to "monome" in 7up preferences and see if it helps.
also, i noticed that your monomes aren't detected in griddle output. did you have serialosc running when starting griddle? -
yeah whispers are like private messages. you can edit the old post, clearing the whisper column and the post will be visible.
i tried to split the 128 to 2 8x8. i changed the griddle.conf like this:
# virtual device name
[m1]
port = 8000
size = 8, 8
offset = 0, 0
[m2]
port = 8888
size = 8, 8
offset = 8, 0
# attached physical devices
m0000003 = 0, 0
and i failed. where did i do wrong?
p.s.: is "griddle.py" the only thing i need to run? -
7up does autoset the prefix. Note that we are talking about .rc2 here which is the serialosc version.
I can connect just fine to each monome through serialosc, even if the monome prefixes were configured differently than "/7up".
Just to take 7up out of the mix, I tried using grainstorm with the same result.
Wondering if you tested with the baseline serialosc.maxpat that tehn wrote?
[edit] Actually, I just downloaded the latest version and it does connect now. However, 7up thinks the resulting virtual monome is an 8x8 grid. Are you sending the final monome size on /sys/info? If not, can I request it? 7up sizes itself automatically to whatever grid size is connected.
Getting this as well
OSCServer: NoCallbackError on request from 192.168.1.103:60458: No callback registered to handle OSC-address '/sys/info'
Anyway, seems to be working great at 8x8 so this is going to be a very useful app. -
@artfwo
i split the 128 into 2 8x8 and it worked. except that there was no led lighting up in the second 8x8 area. (it worked, just no light.)
my griddle.conf is like this:
# virtual device name
[128-L]
port = 3333
size = 8, 8
offset = 0, 0
# attached physical devices
m0000003 = 0, 0
[128-R]
port = 3334
size = 8, 8
offset = 8, 0
# attached physical devices
m0000003 = 0, 0 -
@aryschien, the right half should work now as well (tested in meme emulator).
@rawore, the dot in the end should not be a problem, it's the way of naming hosts in zeroconf
@areo sono, get python 2.7, unpack the sources anywhere you like and run "python griddle.py yourconfig.conf". hope this helps! -
artfwo: your griddle-splitter.conf example totally helped, my conf originally looked like @aryschien thanks for the amazing app!
-
hi artfwo, trying to get this going, i grabbed the latest from github but i am seeing the following messages in the console:
OSCServer: AttributeError on request from Tom-Laptop.local.:50172: Monome instan
ce has no attribute 'xsize'
OSCServer: AttributeError on request from Tom-Laptop.local.:50172: Monome instan
ce has no attribute 'xsize'
OSCServer: AttributeError on request from Tom-Laptop.local.:50172: Monome instan
ce has no attribute 'xsize'
OSCServer: AttributeError on request from Tom-Laptop.local.:50172: Monome instan
ce has no attribute 'xsize'
my config is:
# virtual device name
[test]
port = 3333
size = 8, 8
offset = 0, 0
# attached physical devices
m40h0146 = 0, 0
i tried with pages and arpshift, same result, i see the griddle-test device in both cases but can't get leds/presses to go through. -
just tested griddle against pages. the "midi keyboard" page worked with supplied griddle-basic.conf for my 2 arduinomes without any extra configuration.
apparently, any problems with 'xsize' are related to udp port conflicts, as we found out on the irc today. double check your application ports and write port=0 in the config file to autopick free ports for virtual devices.
also, just realised that griddle does not support distributing 2-byte row messages across affected 8x8 units yet, which leads to some display problems, e.g. in rove, the pattern recorder button doesn't blink. working on that. -
hmm, tried port = 0
using polygome256 (101 version)
the griddle-test device stopped showing up
in my choices for serialosc devices
changing to fixed port and it shows up again.
not getting the griddle-test device to connect to polygome256
even when it shows in list.
max 5.1.8
2 gs128s
f5d4f9f griddle version
windows 7 python 6.5
serialosc server
config file
-----------
# virtual device name
[test]
port = 3333
size = 16, 16
offset = 0, 0
# attached physical devices
m128-303 = 0, 0
m128-516 = 0, 8 -
have found possible issue while in split mode:
- osx 10.6.7
- using a gs128 16x8
- two virtual devices, both 8x8
- blinkenpark as test app
virtual griddle devices are well seen and i can either connect "left" or "right" giddle devices.
but connect to the "left" device, and set blinkenpark to "128" and you'll see it overflows/leaks on the "right" device..
shouldn't griddle disgard OSC messages for zones that are outside of the virtual device size ? in other words, shouldn't an app be sandboxed to it's assigned virtual device ?
another tiny thing, add a small message that says "you must specify a config file name" if launched without any args :p
nevertheless, great soft :) -
well, yes and no. the application is responsible for sending it's listening port to a monome device upon connection, and you have an osc flow, which looks like this:
. . . . . . . . . . . . . . . . . monomeserial.maxpat mlrv
serialosc griddle
. . . . . . . . . . . . . . . . . monomeserial.maxpat (or anything else)
where each "" character is a send/receive port (application/server port), and all of them have to be different.
if monomeserial.maxpat has an app port of 8000, mlrv should have something different, like 8001. -
I spent a little bit of time with this the past couple of days and I haven't had any issues with the most recent version and my 256 on os x.
I was able to run polygome64 [top left 64], tintinnabulome [top right 64], and straw [bottom 128]. I'll keep trying other combinations, but this is exactly what I've wanted since getting my 256.
Thanks!
oh and 1 minor feature request. It might be kind of nice to have a "clear" command once griddle is up and running, so I can clear my LEDs then close griddle. This is really more of a luxury request, but I thought I'd ask anyways :) -
clear the leds on startup and shutdown? why not, a useful power saving feature ;)
also, @nightmorph, remember the "mirror bug" that happened while you were filming your video? well, the current led_row routing requires physical/virtual grids to be sorted by their offsets for splitting stuff correctly (virtual sections can just be sorted in the config). a fix is on the way too! -
artfwo: re windows 7, joined gs128s talking to pages
progress with version in zip named 9d70410
it runs without the xsize errors and the first run reported callback errors
subsequent runs do not. pages does not pick up the size info on its device
page for the griddle-test device. still only creates the page after adding a physical device page. however making a groovy page for griddle test, the
characteristic pattern of leds on default startup covers both gs128s, oriented as i
have seen on a single gs128 in other tests. no changes are registered when
buttons are pushed, whether lit or unlit.
also tried the latest zip, 9fc2455, but got xsize errors reported in the griddle
console page. -
artfwo:
tested 6a24d20 latest zip, and print modified griddle.py as during chat ; with
polygome101. max 5.18.
griddle received messages from apps as evidenced by print statements in chat version and monome keypress after ctl c in both griddle versions.
no keys were lit. by either griddle version.
pages restart using config file that showed griddle-test device reconnects to
monomes receiving keypress with both versions. no keys light.
pages scratch starts using both versions of griddle have not reliably created a device page for griddle on further attempts.
griddle-print version shows that pages is sending keypresses, even though
no device box is created in pages on serialosc setup selection of griddle-test.
no further occurances of xsize messages with either version. -
artfwo: here's a snapshot of a testrun with the printing debug version of griddle used during our chat http://pastebin.ubuntu.com/626044/ (see attachment).
this output was received by starting polygome256 from max main window. then clicking the 'connect" button at bottom, once only.
it appears almost like serialosc has not cleared out instances of "griddle-test" from other runs ( I had been running tests with pages22a11, just before).
I had stopped the python program using ^c and a monome button press. I had opened a new cmd window and run the program using the 16x16 config. then I ran polygome256 from max5 'open recent' window.
-----
I had been getting incrementing port numbers while testing with pages. there is a description, and attached snapshot at http://post.monome.org/comments.php?DiscussionID=9603&page=20#Item_38 -
confounding... serialosc doesn't know anything about griddle instances and cannot "clear" them, it's the job of bonjour. @rawore, may i suggest you test griddle+pages/max on another machine? (phortran mentioned griddle/pages is working for him on windows, so it may be your networking/bonjour configuration that's causing issues?)