Server Commands

Although Mrmr is a capable single-user controller, it is really designed to be used with a server that can push it interfaces dynamically, as well as adjust performance parameters in realtime.  A demo server (written for the Mac in ObjC) is provided (with source) to show how to implement some of the commands below, but anything that speaks TCP can be used to push these commands to Mrmr clients.

Please note - brackets (i.e., < or >) are not to be printed literally - they simply denote: put your text or variable here.

usage tips: in our testing, the following order of server commands yields the most predictable results:

  • set variables,
  • then clear the client's patch banks,
  • then push the client into performance mode,
  • and finally push the patch.

in general, push one command per TCP packet.

|*| = the presence of this combo in a patch prompts the client to switch to the next bank before continuing to build the interface. This way you can not only push multi-bank interfaces to the client, but you can also determine which bank the user should be on to.

|+| = specifies the beginning of a series of widgets. Prompts the client to switch to bank 0.

|-| = specifies the end of a series of widgets. Prompts the client to switch to bank 0.

to force a client into performance mode (from the main screen or prefs screen)

mrmr_goPerformanceMode

to clear a current bank:

/mrmrIB mrmr_clear_bank

to clear all banks (equivalent to pushing 'new' in the Mrmr client)

/mrmrIB mrmr_clear_all

alerts (these pop up over the current control context and must be dismissed manually by hitting an 'ok' button)

/mrmrIB mrmr_alert title||<alert text title>|| body||<alert text body>||

remotely configure the message style:

mrmr_setBundleStyle:0

mrmr_setBundleStyle:1

remotely configure the value range:

mrmr_setPrecision:float

mrmr_setPrecision:int

remotely configure the accelerometer smoothing amount (takes a float from 0-1 where 1 == maximum smoothing):

mrmr_setAccelerometerSmoothingAmount:0-1

sets the update rate in milliseconds:

mrmr_setAccelerometerUpdateRate:8-1000

specify whether clients should send a unique identifier or a generic one in each message. If this is set to 0, all devices identify themselves as 'jedermann' - useful when you don't care which device is sending the data and need to hard-code the entire packet header at the receiving end:

mrmr_setSendUniqueID:0

mrmr_setSendUniqueID:1

specify whether clients should send their device name (user defined) or the full device ID (hardcoded unique id per device) in each mrmr message:

mrmr_sendDeviceID:0

mrmr_sendDeviceID:1

sets how many banks are visible to the client (where x is an int):

mrmr_setNumberOfBanksVisible:x

temporarily sets the Kiosk Mode to allow the server to 'push' the client directly into a fullscreen performance:

mrmr_setKioskMode:0

mrmr_setKioskMode:1

tells the mrmr client to display a short, screen-blocking, fullscreen message for x milliseconds (note the || separating the message from the time):

mrmr_showInterstitial:message||x

tells the mrmr client to send a heartbeat packet every x) seconds (where x is an int):

mrmr_setHeartbeat:x

temporarily sets the Sleep Mode to disallow the client from sleeping during inactive periods of a performance:

mrmr_setSleepDisabled:0

mrmr_setSleepDisabled:1

forces the client to move to the bank specified (in a multi-bank scenario):

mrmr_changeBank:(bank number)

globally turns on/off all accelerometers in a patch:

mrmr_setAccelerometerOutputEnabled

mrmr_setAccelerometerOutputDisabled