stretta monome suite serialosc port?

  • Has anyone attempted to port stretta's monome suite to be compatible with serialosc?

    I'm thinking of step filter in particular.

  • So I gave this a shot with the migrate instructions on the wiki, but no luck..maybe I'm missing something, but it seems like the routing in stretta's m4l step filter is structured in a way that's not as simple as the migrate instructions outline.

    Anyone else want to take a gander?

  • I was able to successfully port obo to serialosc today. I'll take a look at step filter..unless you've already got it.

  • i'm very interested in the stretta monome suite ports. will you be posting these here or elsewhere?

  • I could maybe jump on this aswell and get a few ported over. Depends on what people care to have ported?

  • I'll do some review tonight and post my serialosc port of obo...I'd like someone with more max/maxforlive experience to check my work. :)

  • i'm pretty good at checking the intended functionality but i don't know anything about the guts of a m4l or max patch. the patches in the suite i'm interested in are:

  • Odd. I don't remember automatorgator. What's it do?

  • I guess you don't know either.

  • "automatorgator - there are two versions of this plug in for the 256, the audio version is a monome-controlled pattern gate with adjustable volume levels and slew. The MIDI version generates MIDI CC and OSC messages smoothed out at a high resolution for gooey OSC goodness."

  • Ok here's Obo ported to use serialosc.

    Please understand I am just diving into max. There may be things I did not port correctly that result in broken behavior so if you notice something post it here and hopefully we can figure it out

    I would post this in the site's doc wiki but I noticed the stretta monome suite doesn't have a presence there..not sure if that's intentional or not.

  • It's there. Just not broken apart into individual items.

    There's a handful of hacked versions that should also be added, probably. (obo64, funkyobo, stretta suite with various forms of auto-configuration built in, etc) And I guess app descriptions, since those exist elsewhere.


  • @ GTZ

    ah! didn't look hard enough :P I'll do some adding tomorrow.

    In the mean time, here's a port of Step Filter as well

  • app descriptions added.

  • i tried the obo port and it causes live to hang on me which results in only one action: force quit. i didn't notice a monome connect button or any way of determining what type monome.

  • omg... so what up with tilty magee and serial osc!?!?!

  • Tilty Magee isn't part of the stretta suite (having been developed by TheAlphaNerd and not stretta).

    And what up is that Tilty listens to the same port as your other apps, to piggyback on top of them. But since your port number is dynamic in SerialOSC, you don't necessarily know which randomly-selected port you should be watching for tilt data. Meaning, Tilty can't talk to the monome anymore.

    That will need low-level restructuring, by someone who understands what's going on in those few apps that actually extend SerialOSC's capabilities.

    Those apps would be "grid party", "arc reactor" and "serialosnoopy". Can you guess what else they have in common?

    Yup. All built by the same guy. His name's Myles, and he's the only one of us even remotely qualified to help TheAlphaNerd port Tilty Magee.

    So, where can you find Myles? Well, that's easy. He's TheAlphaNerd.

    And he wrote Tilty Magee.

    So he's the only one workin' on that.

    The right threads to gently prod him in are probably these:

  • @machsymbiont

    The only thing i can think of is that i didn't properly embed monomeserial in the bpatcher. Can you try this one? You should see the device info and the "connect" button right above the grid.

    If it still makes Live hang I'll probably need some assistance tracking down why.


    I've also fixed the pattern edit/play section in obo. It appears to be broken in the current version of the monome suite.

  • no hanging so that's good. unfortunately not around my monome right now. i'll have to test tomorrow...

  • Hai guys... so yeah I've been kinda AWOL lately... just finished my undergrad, had to do a bunch of work on my latest installation the Autonomous Speaker-bot

    After finishing all that I've fucked off to the west coast for a bit... Just sitting in the airport in Las Vegas awaiting my flight to LAX.

    In regards to Tilty... I really want to make a serialosc port, but the changes are truly non trivial. It could in theory be done with serialosnoopy... Buuuuuut it would involve modding all current apps, and also only work with max/msp. I have been talking to visinin trying to convince him to change some of the lower level workings of serialosc to add some functionality, but he is fairly certain that what I would like to add could create some pretty nasty memory leaks.

    So with that being considered I have to make some decisions regarding architecture concerns and how I want to go about porting tilty to serialosc... and I'm not 100% convinced that doing it as a standalone max/msp application is the best idea.

    I have been thinking a lot about serialosc and some of the shortcomings (imho)... and one of the biggest problems for new users seems to be the lack of GUI for monitoring state and changing stuff such as rotation. A simple gui app could in the back end have everything neccessary to do multiple device spanning, single grid splitting (multi monome emulation for larger devices), multi destination port forwarding (what serialosnoopy does), osc/midi conversion (as seen in monome serial), and of course everything that is done by tilty.

    Then there remains the question of how to implement such an application. As great as max/msp is, it is kinda shitty for doing this kind of stuff (imho). Further, some of this functionality has already been created (griddle for example), so why rewrite the wheel.

    What I would really love to work on would be a locally served web app that would allow you to do all of this functionality in the browser... but this opens the door to all sorts of new usability problem (such as can the end-user figure out how to install the web app to begin with).

    Then of course there is pages. Which is currently has an alpha build being put together for version 3... that could in theory do everything listed above. It is also being designed as a web app... so it really is what I am envisioning... but with a larger scope (which some users may not be interested in using simply to get the functionality of tilty).

    So while I may hack together a simple max/msp based solution for tilty... I at the same time don't want to put my time into a dead end project that could become defunct in a short amount of time.

    Porting the stretta stuff to serialosc should be kind of trivial... in fact I was pretty sure I ported polygome last year, but can't seem to find it right now. I'm not going to promise a time line... but it should be possible to do this for you guys.

  • I'm glad this topic is heating up!

    The reason that I started to port of few of these stretta suite apps because they no longer worked and I had a need for them, but most of all, because I have the desire to FINALLY bite the bullet and learn how to program for the monome from the ground up after many years.

    I will say that even as someone with a fair amount of development experience, I still find the documentation and resources somewhat fragmented especially since there's just been a major switch to serialosc.

    After checking out some of Raja's recent max/sampling tutorials (great btw), I was saying to myself "MAN I WISH THERE WERE TUTORIALS AND GUIDES LIKE THIS FOR MONOME DEVELOPMENT IN MAX"

    You know..something with a lots of text explanation and subpatchers that really shows some good abstractions and help guide people to learn the fundamentals of osc messages and how they flow in and out of monomeserial to make the monome happy :)

    Don't get me wrong, I understand the patches within monome base are very instrumental and intended to serve this purpose for developers..I learned a ton from them already. I just want to give back to the community and encourage more develpoment using my own perspective on some key things to help people get started.

    Anyway, I'd be happy to translate some of my experiences into some patch guides that I think may be useful and share em with y'all for feedback. If anyone else has any ideas or comments I'm all ears.

  • hey raja, my main motivation for the web application approach is to separate the GUI from the application itself. web seems like a common language that's easy to work with plus there's browsers and that's pretty convenient, but there would be nothing stopping somebody from writing a native application that just spoke 'web' to this web application. the web app itself really just outputs json, i'm building a web based gui because that's pretty obvious and easy, but i'm really thinking things like the raspberry pi that don't necessarily have a display. just disconnecting the view from the app itself opens up new possibilities for where that app can live and how it can be interacted with.

    i actually have 2 versions of this in progress, one with a java backend and one with a ruby backend. i have to learn ruby pretty quickly here for work-related things so started writing the pages 3 backend in it as an exercise and to test its viability (it seems like all necessary libraries exist in a cross platform way, now do they actually work?)

    so far i have bonjour, osc, and midi working in linux. i got the midi library to compile in windows and was able to scan my devices, so that was cool. the app can detect devices and loads up ace, a web based code editor/ide. i have a basic gui that lets you detect serialosc devices, create pages/ace windows in a tabbed format, stuff like that. the idea is going to be to write modules in ruby and attach them to the core to extend things (with lots of pre built stuff of course).

    if anyone is into this idea then help please :)

    to run it clone the project and from the main folder:

    bundle install
    cd bin
    ruby pages

    fire up a web browser and go to http://localhost:5678

    edit: distribution of a ruby web app as a simple one-click-go sort of thing seems pretty easy with this:

    edit2: java backend is here if anyone is interested in that:

  • +1 on everything said by phortran

    There are lots of fun things that can be done by creating a restful API... from app to app communication, as well as headless operation

    the question is.. what is the best way to do it.

  • back on topic for this thread:

    Here's Polygome64 ported to serialosc.

    I'm really unlclear on the autofocus stuff however. I've left it out of these ports for now until I can gain some insight.

    Does anyone know if autofocus can still work with serialosc?

    P.S. Automatorgator/Audio coming very shortly.

  • Here's automatorgator - audio

    I was not too familiar with this patch so I couldn't test it too extensively. Please let me know if something doesn't work as it's supposed to.

  • I think autofocus can swap monomeserial based instances in and out of focus on top of pages or whatever, but the signals that it sends to switch apps are meaningless to SerialOSC directly.

  • Ah gotcha. That is a bummer because it was pretty powerful to be able to drop say 4 obo's in a Live set and switch between the tracks having the monome instantly refresh. I this functionality possible with serialosc?

  • Oh, hang on, you want to make the change by switching between ableton tracks. Hmmm. Ok, maybe not pages. But why would you want to do that?

  • Indirectly, I'm sure we can come up with something.

    I haven't messed with "pages", but I know it accepts external signals (I'm guessing over MIDI) to switch apps. If we know what those signals are, we should be able to build an autofocus app for it.

    Meaning, rather than build autofocus into your favorite m4l apps directly, there'd be a Max Audio or Max MIDI Effect sitting in the chain with your app, based on stretta's work. This device would detect when the track it's on comes into focus, and send the appropriate signal for Pages to make the swap.

    Again, it's entirely likely this already exists in some form.

  • @declutter - I am talking about reproducing the functionality that 'autofocus' used to provide in the stretta suite.

    Say I had 4 tracks in Ableton with software instruments and an instance of obo (or ploygome, etc) on each track. You could seamlessly switch between tracks/instances and the monome would update it's state accordingly.

    @GTZ - OK, I follow you for the most part. This may be the opportunity then, to not only full port these stretta suite apps, but also construct a solution that could be integrated into other M4L patches? Either way I'm happy to help..I'll probably just need some direction.

  • i thought the auto focus stuff simply sent a /sys/prefix message to switch apps? pages can handle these messages so it might 'just work' today. haven't tried this stuff in awhile though.

  • @phortran,

    That is potentially awesome. =)

    Okay! @emergencyofstate, try this:

    It's based on stretta's autofocus, but it's an external app. Like I just described, except it already exists.

    Put a copy next to the monome app on any given track, and when you click that track, it will send out the /sys/prefix.

    If phortran is right, pages will then receive the prefix and you won't have to add autofocus back into the stretta suite, nor to any other monome app.

    (there were a bunch of advantages to this being a separate app, though to be honest, I don't remember what)

  • @GTZ and Phortran

    Awesome Sauce! Will look into this evening. I'll have to get pages going again...haven't rocked it in a while. @ Phortran, should I be using the current stable release for these efforts? (this link?

  • yes! basically once you run it:

    1) new configuration
    2) configuration menu -> serialosc
    3) detect devices, add your monome
    4) page menu -> new page -> external app page

    see where that gets you, you may have to tweak port numbers but i'm pretty sure it defaults to monomeserial ports so that might be it.

  • fixing the autofocus is acutally quite easy... just switch the bang that went to the massage to the first inlet on the serialosc bpatcher (I believe)... I'm away from my monome for the next week... but when I'm back I'll be able to quickly sub in the functionality. :D

  • real quick one! :) i know the latency thing is something people think of when i bring up this idea because web protocols aren't exactly the most efficient and etc. but this app is really a (relatively) small core running the serialosc/midi magic that also happens to have a small(ish--its no apache) embedded webserver. the web requests are only used to configure the application, not for anything performance-related. it's like if you took existing pages, ripped out the horrid swing gui and added an embedded webserver. ok i'm done derailing this i promise, just wanted to clear that up.

  • @raja

    Great News! I'll be diving in the second you release that sucker :)

  • obo now works as it always has. and i now remember why i stopped using it: it skips a beat from time to time and then gets back on track.

    edit: or maybe it doubles up on a beat because sometimes i hear two notes play when i only want one... hard to tell. unpredictable.

    automatorgator works great.

  • @machsymbiont

    for obo - I'm pretty sure you need to set the downbeat sync to 1 measure, it won't do that.

    and yes, there are definitely some ghost lights and ghost notes from time to time..i remember the old version being the same way.

  • i don't know squat about max so i opened up obo today to try to learn a little bit (i have only m4l). i was researching how certain objects function. i discovered the phasor~ object being used is not good for timing so i replaced it with the saw~ object which seems to have corrected the timing issues i was having.

    edit: wrong

  • Hi
    Certainly agree with your first statement - but the rest is wrong.
    From Max helpfiles - phasor~ is a non-bandlimited sawtooth-waveform signal generator which can be used as an audio signal or a sample-accurate timing/control signal. For 'smoother' sounding sawtooth oscillator, but one which isn't as suitable for timing/control, use the saw~ object.
    Maybe sync~ would be a better option and allowing tempo setting from Monome as well

  • thanks. i misread that. i wonder why it fixed the timing issues i was having? i would use sync, but i don't know squat about max. i guess i'll learn... eventually.

  • Not Sure,
    For phasor~, Do you have 'in Audio interrupt ' selected in DSP setting?

  • yes. perhaps i was experiencing a timing glitch because of the conflict upon the initial opening of the device (see attachment). i chose "(older) disk version". (should i have chosen "(newer) device version"? and what's the difference?) maybe that, and not the saw~ object, is what fixed the issue for me.

  • Hey guys, thanks for the work porting obo, polygome, and step filter! Any luck porting the rest of the suite to serialosc?

  • @dustin

    Anything particular patch in mind? I haven't done any more since those 3 cause I've been working on other stuff but if there's a current need, I'd be happy to port some more.

  • @emergencyofstate

    I guess that really just leaves Pitches and Automatorgator.

    Although, I just started to mess with obo and I can't seem to get it to output MIDI... Monome communication seems fine. I've tried putting a plugin after obo and also tried with it in an empty MIDI track routing the MIDI to another track to test but neither seemed to work.. Any ideas what I may be doing wrong?

    Thanks for your work so far in porting these!

  • On the midi track that Obo is on do you see the little yellow midi meters flashing to indicate that track is sending midi values?

    If so, the note values you're sending might be out of range of the synth you're trying to trigger. Also check the velocity.

    Automatorgator audio is on the first page of this thread. I believe I stil have to port the MIDI version. I'll also check into Pitches.