new router: smallbatch - beta testers required

  • ** BETA3 UPDATED 10DEC2013 **


    i've been working on this dynamic router for grids and need some feedback on where it's at right now. it allows the following:
    - switch between multiple applications via the grid
    - split 1 device between 2 apps
    - join 2 devices to one application

    how to:
    1. replace your serialosc.maxpat file in in your max folder (this version does NOT use zeroconf)
    2. open smallbatch.maxpat
    3. press 'no file' and point toward your patch
    4. hold the top-right button, then press a button in the corresponding row (starting at left of left-most device)
    5. you can select 2 apps by press&holding 2 rows, then releasing top-right button, then releasing 2 rows.

    this is very much a pre-release and i'm looking for some feedback and advice on how it could be improved. at present there is no led-display in the 'router' mode. if you load your files through the in-patch 'no file' buttons the paths of the files will be saved in your preset and your patches will auto-load the next time you open the patch. overwrite 'sbatch.json' to cause your setup to auto-load.

    to do:
    - the 'preset' loading system will simply send a //preset OSC message to your patch. obviously this won't work because no apps currently support the message. conceptually the idea is that this patch could auto-load your entire performance setup including preset files.
    - the 2-device support is a bit wacky at the moment as i haven't had much time to plug 2 boxes in
    - no vari-bright support currently (i need to figure out how to handle the loooong map messages in javascript first...)
    - add a real display for the routing section
    - add an option to arrange 2 devices vertically or horizontally

    design questions: (please help me figure this stuff out - let me know how it would work in practice for you)
    - how should the 'autoload' function work? at present it is locked to a certain cell. should it move with the /prefix name?
    - does the drop-down make any sense if the autoload doesn't move with the file? alternatively - should you just have to load your own patches at first, then point smallbatch to the file location afterward?
    - all of the above can be integrated into alternative environments from maxmsp - the serialosc handling will need to be slightly expanded in each client application, but i think i can help create a wrapper for interested parties.
    - does the file loading mechanism work in windows?

    dinner time! let me know your thoughts. if you have problems, please be as specific as possible and post your versions of: max, serialosc, OS

  • Diggin' into it now!

  • I haven't had any success connecting so far, I'm wondering if I'm doing something out of order or perhaps I'm interperating the help doc incorrectly. I've been attempting this workflow:

    1) Open _smallbatch (In Max 6.1.5 Runtime).
    2) Click -no file- to load a patch (polygome_103)
    3) *same for the second patch (grainstorm_165)
    4) Connect my 128grid and Arc2 inside small batch

    When I get to the step to 'choose apps in dropdowns', all I have are --- in the dropdowns. So I'm not sure what's going on there. Pressing the top-right button doesn't do anything.

  • have you overwritten the attached serialosc.maxpat in your max 6.1 folder?

  • too true raja - the move has been on the cards for a long time so it's been a gradual transition to doing more of this stuff.

    re: the file loading - i agree largely with what you're saying. i'm just trying to make the UI as logical fluid as possible. thanks for your thoughts on where the router sits in the mental space of the user. still gotta figure out how to handle the file-loading in relation to the dropdown -- might need some kind of way to see what file is loaded in each slot (currently it's viewable as a tooltip).

    re: dual devices -- of course! this is my first foray into javascript and am getting some input from brian about how to deal with a few issues i've been having. hoping to get this working well in the next week or so.

    horizontal /vertical tiling is important. i love the idea of everything being horizontal but there are no apps built for an 8x32 grid (except in my mind...). in general some customising of how the switching works will come shortly.

    re: a long time coming.. yes! for certain. pages has been a great solution but it's been tough with the zeroconf issues people have on windows and is a quite complicated setup due to how flexible it is. this option is meant to be a simple solution for users.

    the beauty of this system is that you only need to use as much or little as you want. if the 'route key' in the top-right can be turned off it would be good as a general purpose splitter or combiner which is all a lot of people seem to want.

    still -- i think my biggest short-coming is not having a balanced view of how the majority of users want to use their device... any ideas on how to collect such data?

  • updated to beta2 up top. fixes the 2app to 2device handling of /led/col which was making things look funky before...

  • awesome!! it's definitely not an easy app to write, big thumbs up for the effort.

    lots of javascript eh? i may have to take a peek..

    thoughts on how to integrate non-max/msp apps yet? some sort of osc-based protocol maybe?

  • yeah the protocol is pretty simple and in many ways just imitates a dumb zeroconf. i'll write it up formally once it's confirmed working properly and allows for any added functionality yet to be considered. i think i got the naming conventions backwards on a couple things too so need to sort that stuff out.

  • sounds great, thanks!!

  • Due to my lack of knowledge and previous pages problems I will await progress with anticipation. For what it's worth regarding workflow, I echo the above in terms of being able to decide 'when' a router would be needed. For example switching between mlr and polygome and then deciding 'yeah, I want to work with these two' and subsequently setting up the router.
    The reason I say this is that I make decisions on what apps to use 'before' setting up pages and having the flexibility during working on stuff to decide to use more than one app at a time wouldn't 'kill the moment' when you have ideas rushing around so to speak.

    Exciting and as usual big thanks for people ongoing work, without which I would be lost in my use of a grid :-)

  • here's an update that includes a configurable 'route key' location, including an 'off' mode so application switching is only via mouse and you don't sacrifice a button. you can now tile 2 devices in either horizontal or vertical configuration (eg. two 64s can be a 128 in either orientation) plus a 256 can be split into two 128s vertically or horizontally.

    the routing is handled by the quadrant in which the router key is located. if you have a 256 and set to top-right, you'll only be able to select applications via the buttons in the top-right quadrant of your device. still no led feedback in that view unfortunately (that's next on the todo list).


  • First of all - thank you for taking on this challenge of a simple router/switcher.

    I'm on max5.19, serialosc that was included in the zip, OS 10.6.8, and using a 256 grid.

    Minor thing but my routing button is the top left instead of the top right as noted in the help doc. Does this have something to do with the new route button feature? It is the top left for both d1 and d2 - in fact I can't see any difference between the two even in app selection. Any way to have the router button user selectable from all available buttons on a grid, or at least which corner button? Having it as the top left means I can't use the first step button in parc in global view unless I turn the routing button off. Maybe I'm not doing something right.

    I don't see a way to use monomeserial apps. I want to use mlr aes edit 0.7. Normally I would uses monomebridge but when I open it and try to select it as a drop down I get doubling of prefixes and the default /example prefix of monomebridge. Is there any intention of monomeserial support?

    What is the preferred version of max runtime?

    Thanks again and feel free to pm me for any specific beta testing since this would be such an essential app for me.

  • I've been building it in Max 6.1 so that's the recommended Runtime version.

    If you click the 'advanced' tab you will see the options for the location of the route button in the bottom at centre. i thought it would make most sense to have such a button in the corner of a device, as the route-button shouldn't change from app to app. i could try and create a user-definable option for the route button (a sort of router map function)... will think about whether it's possible without drastically overhauling the js code.

    you can turn off the router button if you'd prefer to only select via the max interface.

    i honestly had not even considered monomeserial. i'll have a look at making monomebridge work within this setup. i'll also start a new topic of apps that need to be updated to serialosc so i can work through them further.

    thanks for your feedback!

  • As you anyway route the whole Grid trought the Router couldn't you do something like it only works as the router button if you hold it for a second--- otherwise it has the original functionality after rleasing the button.

    (filter the on message for this button, put in the timer, if it is inside the timer send the on message instead of the off message)

  • @novasnoa
    this is possible for sure, but i've always found the 'hold' gesture to be quite awkward and unsatisfying. i could add it as an option but i'm really hoping for this to be a simple (ie. few options) app.

    the other issue is that by adding the 'hold' method for the route button, it changes the behaviour of that key to function on release rather than press. i feel this confuses the language of interaction with the device. perhaps a number of people disagree?

  • Ok, after actually reading the extremely helpful hover text on the buttons I figured out how to map the route button to all 4 corners, and it's definitely enough variation for me.

    I was just wondering if it might be a good idea to have it so that when you just press and release that button it goes to the 1st app. Right now if I want to go to the second app and I have the router button on the left, I can just press the router button and the button next to it, which is ergonomically elegant. But if I want to then switch to the first app I have to press the button and then it's a bit more awkward to press the button directly above or below it. It's not a big deal though. First world problems...

  • @galapagoos,e
    thanks for sharing smallbatch, this is a very useful app!!

    It would be great if i could place the route key on the (13,0,0) button of my 128,
    but i can't find the way to introduce this feature in the code, also in a static way.
    some help?

  • sorry i've been disconnected from this for a while. i've determined to add a function to 'map' your route key to anywhere you desire. whichever quadrant you've pressed in will become the 'routing quadrant' where you select from up to 8 applications.

    will get onto this shortly, but have been pretty blinkered with aleph development.

  • Hey @galapagoose

    This works really well for me. I am pretty new with the monome, but I have two 128s and this allows me to do quite a bit. Haven't seen too many problems yet. I have had some MIDI note hold problems but I am not sure if that is due to applications or smallbatch.

  • I'd like to use smallbatch to run multiple instances of the monome_midi_128 app that is found in the monome base download. The reason is that I'd like to be able to switch midi channels that the app outputs easily from my 128. Of course, if I load up multiple instances, they all have the same prefix and therefore my button presses are sent to all instances regardless of which one is in focus. Do I need to figure out how to change the prefix on the app or is there an easier way to do what I want to do?

  • you'll need to make a second version of midi_128 that uses a different prefix but also make sure to change 'send' and 'receive' objects. there's a chance that there could be interaction between the two patches.

    i'd start by just changing the prefix and if you find the two interacting then have a look at the send and receives (probably in the _key maxpat if memory serves).

  • Thanks for the tips! No luck yet but a good learning experience either way.

  • hi all - trying smallbatch here, in mac OS 10.6.8, max runtime 6.1 works great!
    but i didnt have the same luck in windows 7, maxruntime 6.1 -

    "Windows cannot find 'file:///Volumes/C/Users/Administrator/Desktop/parc_0.2.1/parc.maxpat'. Make sure you typed the name correctly, and then try again."

    CTRL+M: "Max could not launch URL. err = 2"

    probably just a fix in linkink on windows... someone can help?
    thx in advance! :)

  • don't worry about not finding the parc file – that's just a hangover from a preset that i was using when developing.

    not sure about the ctrl+M behaviour?

    smallbatch should work without any of the 'file loading' behaviour (which never really got off the ground). are you able to see a list of other serialosc patches you have open inside the smallbatch dropdowns?

  • i tried to load other patches without luck, in other slots also.
    always a msg like "windows cannot load...."
    ctrl m is the max message window that shows the error:
    i think there's a problem when windows tries to link the patches;
    its not unix-based to look for something like file:///Volumes/C/...
    i am not able to see other patches probably because smallbatch cant find them...

    does anyone have smallbatch working on windows?

    thx in advance!

  • what about the arc?

  • i've been using smallbatch a lot the last week and i have some thoughts-

    one suggestion is to make it so that if the route key is pressed for less than a half second or so, it will just send the press data to whatever app you're on. (instead of activating the router)

    built in quadrants capability for each 'cell' would be awesome.

    maybe beyond the scope of this app, but pages has built-in pattern recorders for each page (accessible when holding down the page change button), which opens up a lot of possibilities. that would be a neat feature for smallbatch too.

    on-the-fly app splitting is a brilliant idea btw.

  • do want. sign me up!

  • Hi all, I'm trying to setup my patch with this beta of smallbatch but I can't get any leds to light up (key presses are being registered just fine). Does it support vari-brightness? Sending a /prefix/grid/led/set message works fine but /prefix/grid/led/level/set doesn't ...

  • are u using smallbatch the maxforlive port i made, or smallbatch the runtime version? the maxforlive one is newer (pulled from monome sum) and does support vari-bright.

  • tried the max version since no luck with your M4L port. Edited [js led-router.js] in [p route-from-UDP] to accept/handle .../level/set etc messages and it works now ... Still curious about why your port doesn't work for me elquinto, I'll look into that later.

  • if u have max or max runtime open it might conflict with the ports that the m4l smallbatch uses. that's about all i can think of atm. i remember having to quit max then reload smallbatch in live if it wasn't seeing the 256 or if i wasn't getting led feedback.

  • Tx elquinto - I'll check it out. too bad I missed Raja's original post :-)

  • I can't seem to get small batch working with Max7. anyone else having success?