Monome - Multiplayer Mode! pages/griddle

  • griddle and pages are stellar applications.

    how do we setup a "multiplayer mode" configuration.

    the idea here is that two physical devices can simultaneously be on the same or separate pages.

    -any combination of applications shared amongst multiple users.

    ---------------
    EXAMPLE:
    two monomers, two monomes
    applications: pages, griddle, MLR, OBO
    one page contains MLR, a different page contains OBO

    in multiplayer mode, the following will always be true:
    1. both monomers have access to the same instance of MLR and OBO
    2. both monomers can be on MLR page at the same time.
    3. both monomers can be on OBO page at the same time.
    4. one monomer can be on the MLR page, while another monomer is on the OBO page.

    -----------------

    the above example, of course, can be reconfigured to account for all kinds of application combinations (far more than 2 applications as well).

    the question becomes: how do you "temporarily mirror" physical devices, so that application and device interface can be shared when desired, but users can also traverse through other pages so that the interfaces are not mirrored.

    let me rephrase: if 2 monomers both want to be on the same pages, mirroring provides for this, but what if each monomer wants to go to a different page (while still retaining the ability to mirror if desired).

    how to do this?

    let's discuss.

  • We did this before with arduinomeserial and an app a mate made in processing. Loads of fun. Also cool to see what everyone else is doing on the grid, everyones presses registering on everyone else's grids...

  • 7up does that doesnt it??
    not mlr and obo.... but hella rad none the less

  • Yes 7up does, but just for 7up.

    The way we do it is to have a concept of a Display. In 7up this is always 8x8.

    One monome is basically a canvas of with xy dimensions. A 64 is 1 display, a 128 is 2, 256 4

    Now let's connect a bunch of monomes into a virtual canvas, it doesn't matter if the canvas is bigger than the monomes that fit into it.

    griddle and pages are great for creating virtual canvases like this and we just connect to the virtual canvas as if it were some big physical monome.

    Now 7up basically just uses a standard Model / View / Controller type software paradigm to manage multiple displays.

    When we update our UI, we update all the display views in the list according to what has changed on the page they are viewing.

    The thing here is that 7up knows what application page or model is active on what display, so it can be efficient to only update displays that are actually being viewed.

    You need to have a buffer in the app that represents the displays and those are refreshed to the monome at a refresh rate, just like a monitor on a computer uses.

    You don't refresh stuff that hasn't changed in your buffer.

    Same concept could be implemented in a router aka pages / griddle. I thought pages already supported this. Not sure if griddle allows switching apps on the canvas or not.

    I even use this feature just myself to move from in front of the computer on one monome to in front of say the modular on another seamlessly. But multiplayer mode is more interesting.

  • current pages doesn't support this as things are pretty tightly coupled. the rewrite will support this though, and i'm glad you brought it up so i can keep it in mind when designing how things interact.

  • @edison: this idea is applicable to any combination of applications!

  • @phortran: oh! i just saw your post,

    "the rewrite will support this though, and i'm glad you brought it up so i can keep it in mind when designing how things interact."

    this would be a dream (the ability to simultaneously be on the same or different page for multiple monomers)! let me know if you need help testing the multiplayer mayhem.