application migration

serialosc introduced both a new method of detection (via zeroconf) and an updated OSC protocol.

OSC protocol changes

from device:

old new
/prefix/press x y s /prefix/grid/key x y s

to device:

old new note
/prefix/led x y s /prefix/grid/led/set x y s
/prefix/clear s /prefix/grid/led/all s s now required
/prefix/frame d[8] /prefix/grid/led/map x_off y_off d[8] offsets now required
/prefix/led_row y d[..] /prefix/grid/led/row x_off y d[..] offset required, multiple d allowed
/prefix/led_col x d[..] /prefix/grid/led/col x y_off d[..] offset required, multiple d allowed
/sys/intensity i /prefix/grid/led/intensity i i is now 0-15, not 0-1 (float)

/monome prefix

while previous patches were referred to by a unique prefix (eg. /flin) serialosc now uses unique UDP ports to identify patches and devices. when migrating apps, it is encouraged to use the /monome prefix by default unless otherwise necessary.

how to update a max patch

you'll need the standard 'serialosc.maxpat' file inside your Max5/patches folder. See 4. here for more info.

the easiest update method is to use the serialosc.maxpat as a bpatcher. the serialosc.maxpat file blocks your patch from sending data when focus is lost. this is good practice. for other best practice info, see serialosc dev tools.

create a serialosc bpatcher by making a new object box and typing: bpatcher @name serialosc @args /monome

here's mlr as it existed before, with udpsend and udpreceive objects:

new version, with serialosc.maxpat:

detects!

now you have to go through your patch and replace the protocol changes above— for example, where ever you see /prefix/press, change it to /prefix/grid/key etc.

we could probably write a regex script for this if someone is ambitious.

that's too much work!

use monomebridge instead:


it'll make old patches think they're connecting to monomeserial, converting the protocol, etc. support for two monome devices.