Push developer kit: M4L devices for Push!

Come here to discuss Push with other users.
For tech support, please head to http://www.ableton.com/help
sphiralstudios
Posts: 7
Joined: Sat Apr 06, 2013 1:24 am

Re: Push developer kit: M4L devices for Push!

Post by sphiralstudios » Thu May 09, 2013 3:13 am

Because789 wrote: Maybe you already figured it out but if not, you have to replace "path control_surfaces $1 components 150" by "path control_surfaces $1 components 148" in the Device/Track select object (right click on the object, "Object", "New View of <none>").
Had not figured that out, didn't know about the Object -> New View to get into that object, that was a huge help, thanks so much.

@nbyte: the device entered and push_display objects both seem to be working for me in 9.0.4 beta as is.

Working on push versions of plinkonome, trails, and flin monome m4l apps. Flin is proving slightly more difficult than the other two (which have been pretty straightforward using flocked's mods to polygome), but making decent progress. Once school is out in a week or so (I teach h.s.) I plan to spend some serious time tinkering with these and others. I'll post some vids and results once they're done. (trails specifically is looking/working really well and was really easy to port, a good exercise if anyone's looking for something easy to try on their own)

I did notice in flocked's 'pushed' version of polygome that the rows sound upside-down (higher rows sound lower); this should be an quick and easy fix in max (though I've yet to do it), but fyi.

Arguably the most popular monome apps are the mlr family, of which the most recent mlrv v2.3 stands head and shoulders over the rest imo. (The mlr_2.27_maxforlive version crashes Live 9 every time I try to load it, so mod'ing this doen't seem to be an option presently.) Unfortunately it has been made clear there is no intention to include push in the devices that mlrv 2.3 can use, despite the apc40 and launchpad both being in that list. I've been trying to figure out the most efficient way to go about getting the push involved given that mlrv2 runs in regular max and can send audio to a track input in Live. The max logic is a little more complicated/stream-lined than some of the simpler apps, so simply having a m4l device that re-organizes and sends list outputs from the push dev kit objects to receives added to mlrv might require more significant alterations to the mlrv structure than I'd prefer having to do (this is similar to what I'm encountering with flin but even more complicated at first glance in mlrv). I'm wondering if it would be easier to take the push dev kit output and format it properly to send with a udpsend object so as to 'fool' mlrv into thinking an actual monome grid is talking to it? Perhaps something like osculator could make this even easier?

I'm really just brainstorming at this point, thought I'd see if anyone had any thoughts on this before investing too much time on what would be a pretty indirect workaround or fairly involved reworking of mlrv itself. thoughts/ideas?

cheers

nbyte
Posts: 21
Joined: Wed Jan 23, 2013 7:48 pm

Re: Push developer kit: M4L devices for Push!

Post by nbyte » Thu May 09, 2013 10:14 am

@sphiralstudios: I'm on 9.04 Release (Mac OSX 64 bit) - both patches ( Push_Display and Device entered) didn't work first!
But I tried it again .... and now their work! :-)

I'm very interested in your vids ....

flocked
Posts: 45
Joined: Wed Aug 18, 2010 2:42 pm

Re: Push developer kit: M4L devices for Push!

Post by flocked » Fri May 10, 2013 4:09 am

I just uploaded a new version of the push development kit on my website. No new features, sorry. I currently just don't have the time. :/

Release notes (0.8.1):
  • - Improved: Compatibility with further Live versions
    - Improved: Code (clearer & shorter)
    - Fixed: Compatibility with Ableton Live 9.0.4 (0.8.1 and newer developer kits aren't compatible with Live 9.0.3 and earlier. There is no reason to stick with earlier versions)
    - Fixed: Push wasn't found in some cases (thanks to Because789 for the code)
    - Fixed: push_touchtrip object prevented touch strip from working normal (thanks to Aaron Levitz for the code)
Push Development Kit

Developers should always upgrade there Push m4l devices with the newest objects.
Last edited by flocked on Fri May 10, 2013 5:30 pm, edited 2 times in total.

jaune
Posts: 7
Joined: Mon Sep 06, 2010 11:44 pm
Location: Paris
Contact:

Re: Push developer kit: M4L devices for Push!

Post by jaune » Fri May 10, 2013 11:15 am

Is there an update for the Polygomé for Push you made (it seems it doesn't work with 9.0.4 release...)

Thanks a lot for all this work!

j

David_R
Posts: 13
Joined: Tue Mar 05, 2013 8:54 am

Re: Push developer kit: M4L devices for Push!

Post by David_R » Sat May 11, 2013 12:11 pm

sorry, maybe a stupid question or elsewhere explained very often. but i don't get max for live to communicate with push. i get values from midiin but no velocity. and I dont't get any sound out of my max-syth.
max window says that max failed to open midi device Push.
do I need to edit any push-script or something like that? do I need the Push remote scripts?

I'm not new to Max but pretty new to live and max for live. so sorry if i'm asking about very basic stuff. i just want to get started playing around with my brand new and awesome controller and ableton and max..

thanks

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: Push developer kit: M4L devices for Push!

Post by greaterthanzero » Sat May 11, 2013 6:23 pm

jaune wrote:Is there an update for the Polygomé for Push you made (it seems it doesn't work with 9.0.4 release...)

Thanks a lot for all this work!

j
Just updated my hack of Flocked's version for compatibility with the 9.0.4 release.
http://sadfactory.com/assets/downloads/ ... ush_v2.zip

You can read about how it differs back here:
viewtopic.php?f=55&t=192084&p=1503248#p1503248

jaune
Posts: 7
Joined: Mon Sep 06, 2010 11:44 pm
Location: Paris
Contact:

Re: Push developer kit: M4L devices for Push!

Post by jaune » Sun May 12, 2013 11:13 am

Greaterthanzero you're a lord!

Thanks a lot.

sphiralstudios
Posts: 7
Joined: Sat Apr 06, 2013 1:24 am

Re: Push developer kit: M4L devices for Push!

Post by sphiralstudios » Tue May 14, 2013 6:07 am

nbyte wrote:
I'm very interested in your vids ....
Here's a vid of the Trails port: http://www.youtube.com/watch?v=v43AsfumNHY

I'm all for sharing, though I do want to add a few more Push-friendly functions (and I don't as of now have a place to host downloads). However, as I said in an earlier post, this port was super easy to do using flocked's mods to the Polygome app.

I've also been having some success making m4l devices that send messages to unaltered monome apps in max (just sending to the right receive objects). I think I'll be going this route for a lot of the standard monome apps that don't have m4l versions. Most recently I've been working with Stretta's Grainstorm. Excited to see that working 100% - only 3 days of school left, then I'll be able to put some real time into it.

cheers

Because789
Posts: 440
Joined: Thu Apr 28, 2011 1:26 pm

Re: Push developer kit: M4L devices for Push!

Post by Because789 » Wed May 15, 2013 6:56 pm

Thanks for the update Florian. Two minor things:

1. The live.numbox in the color finder should be set to Int instead of Float. When using that number box now, color x-1 is shown on the grid.

2. You could use the following code instead of "path control_surfaces $1 components 148" in the device/track select object to get the Matrix_Modes ID by name (to improve compatibility with upcoming Live versions):

Code: Select all

----------begin_max5_patcher----------
402.3ocyS0ySCCCDcNUp+GrrXLDEG0lzxFv.KTD6HTkahaiqRrircJoTw+c7
GIkzBUpzEXwe7ty28t2cd2vAdvE7FhDBtA7BvyamFwyhYP75.7fk3lzBrz5H
rjHk3UDneqQEoQYMLCqDzl4y3Y5P1YcImoVhSIFOP8Akz2cfgAgc37ZUAQo1
VQbTBBAu1YiUWRYZqVRD0ORLbo0e3sBJtXelqvpzbJa0bAIU4h2Tcp.nQl0j
D643fvCRgiAxCXKMyFc9h0WOIFZA+X3.ytdy+r0MF4McH9AYaziA3JZvCD08
7xJNivTOiU42s8ISg8+UHisBIZxX21uTIitbk7jSfZllCR0UhfWLWVKL5kDb
EB9WqWnjweM5ghldIydISOVwbuFVPYe6OrkCFCGoiRdsHsqHamn8A83g9uqh
xvJJm02qnC8JmlkQrNrWBynR7hBhkugmt0d1DSWtmKwPWLwZUPbU0FhP1FZG
mzibq4By8Xe2cJyc20bfBxFZ2SbiEPrP23U5tdsvMXzDOxzzrITu7IvNBuSV
-----------end_max5_patcher-----------
Live 9.5 (64bit), Max 7.0.6, Windows 10, Push 2, Korg electribe2, Bass Station II, Launch Control XL, Faderfox DJ3

M4L

flocked
Posts: 45
Joined: Wed Aug 18, 2010 2:42 pm

Re: Push developer kit: M4L devices for Push!

Post by flocked » Wed May 15, 2013 11:00 pm

Thanks for your input :)

1. I will update the live.numbox.

2. Yes, I'm aware that "path control_surfaces $1 components 148" could break in later versions of Live. Unfortunately there isn't a fast way to get the Component ID.
I knew already about your posted code, but I don't want to use it. It takes about 1-3 seconds to get the ID, which would slow down the loading time of Push m4l devices. I rather prefer to update the component id manually for a faster loading time (I don't think that Ableton is changing the the component id too often).
I still try to find a faster way to get the ID.

btw.: I updated Polygomé on my website: http://florianzand.de/blog/

queglay
Posts: 522
Joined: Wed May 03, 2006 7:15 am

Re: Push developer kit: M4L devices for Push!

Post by queglay » Sun May 19, 2013 1:52 pm

These are great! Thanks.

I'm creating a nice ability to compose midi in clips in the same way the elektron gear does with parameter locks. happy to share once I'm done of course!

I'm wondering how i can retrieve two things through the observer-
1 - the current note mode as specified in the push.py script (note_mode).
2 - the actual notes being triggered based on the instrument note mode (not just the grid buttons themselves, but the actual midi data being sent to live)

I realise just listening to midi achieves this, but only for the current track. i need to be able to pull that midi data from the LOM somehow so i can make something global for the set.
Load VST Presets from Push's Browser!
http://www.audiomodder.com

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: Push developer kit: M4L devices for Push!

Post by greaterthanzero » Mon May 20, 2013 8:07 am

flocked wrote:I knew already about your posted code, but I don't want to use it. It takes about 1-3 seconds to get the ID, which would slow down the loading time of Push m4l devices. I rather prefer to update the component id manually for a faster loading time (I don't think that Ableton is changing the the component id too often).
Maybe a hybrid approach? e.g., using the manually entered ID for 1-3 seconds while the information is retrieved?

The problem isn't so much the minor inconvenience of you having to update the component id manually so much as the devastating possibility of every app which uses your dev kit simultaneously breaking an hour before someone's show.

(Temporarily giving them a slow init time in that situation seems more acceptable. Why not have a safety net?)

sphiralstudios
Posts: 7
Joined: Sat Apr 06, 2013 1:24 am

Re: Push developer kit: M4L devices for Push!

Post by sphiralstudios » Thu May 23, 2013 12:49 am

push_encoders has a bug in p encoder4, it's receiving from ---e5 instead of ---e4, and its outgoing message is "5 $1" instead of "4 $1" Just looks like a paste that got overlooked. (At least the one in the Interactive Walkthrough patch that I copied and pasted from has the bug)

getting close to finished with a m4l device to bridge to a modified grainstorm running in normal max (or runtime) and sending audio to live via rewire. once I'm more comfortable in m4l perhaps I'll try porting grainstorm to m4l so the sequencer will sync without having to jerry-rig the clock (one thing I've yet to do)

just answered the question I was about to ask, but so others can benefit - push_display needs values to be run through a tosymbol object in order to be able to display them, duh

zigzag
Posts: 155
Joined: Wed Mar 19, 2008 6:29 pm

Re: Push developer kit: M4L devices for Push!

Post by zigzag » Wed May 29, 2013 3:46 pm

Could anyone be so kind to post some step by step instructions on how to get a modified monome device up and running?
I am very confused as to what should I do.
For example, what to do on the Push itself, what monome protocol to have setup etc, when to drag a device in Live.
Any hints would be valuable. Many thanks for all your time

greaterthanzero
Posts: 103
Joined: Tue Apr 09, 2013 5:48 pm

Re: Push developer kit: M4L devices for Push!

Post by greaterthanzero » Fri May 31, 2013 1:19 am

It will be somewhat difficult for you to accomplish without owning a monome, but the process is more or less as follows:

Let's start with button input.

Find the serialOSC bpatcher. (It's the box with the "connect" button)

If that box is empty, follow step #4 from here:
http://monome.org/docs/setup:mac
http://monome.org/docs/setup:win
(you shouldn't need any of the other steps)

If there isn't a serialOSC box, you're dealing with an older MonomeSerial based device. Look instead for a [udpreceive] object. (There's also a good chance that it'll be equipped with autoconnect or autoconfig or something along those lines, and that's a shame 'cause you'll have to gut all of that.)

Re-open your patch if needed, and follow the leftmost wire leading out of the serialOSC box or udpreceive object.

It might lead to a OSC-route object (or require that you put the CNMAT Everything package in your file path because that object is missing. Check your Max window for errors, just in case). Or it might lead to an OSC.js file. Or a simple /route object with items like "/monome/grid/key/press". Or to an [s] (send) object you need to find the corresponding [r] (receive) for.

Whatever you find there, it's going to strip messages like "/monome/grid/key/press 0 0 1" down to a simple three item list (in this case "0 0 1"). Figuring out where this happens is the hardest part of the process.

Found it? Great! Remember where this is - we'll come back to it.


Open your "2. All objects.amxd" Effect from flocked's dev kit ON A DIFFERENT TRACK. Open that for editing.

Select the "Push Control, when:" box from the top and the [p push_grid] object. COPy. Close the "2. All objects.amxd" file in the editor. You're free to remove that from your Live set now.

Go back to the monome device that you're converting, in the editor. Make sure you're not in presentation mode, and PASTE.

You can (and should) read documentation for how those objects work in flocked's zip file. Also play around in the "1. Interactive Overview.amxd" file, as everything I'm about to describe is better explained there.

Connect the rightmost outlet from "Push Control, when:" to the rightmost inlet of [p_push_grid].

Save your file, close the editor, connect your push to make sure that works (the buttons should all go blank), and re-open the editor.

When you press buttons on your Push, the left outlet of [p_push_grid] will spit out a list of three numbers, remarkably similar to what you found earlier. Move [p_push_grid] over to where that was, and swap this list for that one. (Disconnect the cable from that object and connect it to this one)

With any luck, your button presses on Push now serve as monome presses, and the app won't know one piece of hardware from the other.



Now. LEDs.

There are five or six different ways to set LEDs on the monome. One of those will work here, and the others will not. (If the app sets only one LED on or off at a time, you're golden. If it uses any of the optimized methods to set whole rows or columns or an 8x8 block all in one message, more work (possibly several weeks of it) is going to be required. We'll assume that you've picked an app which isn't using one of those methods...


If you're in a MonomeSerial app, look for the [udpsend] object, and start tracing back from there. You'll probably find a prepend object or two. Maybe a [sprintf]... Try to figure out where a list of three numbers is converted into one of those long strings like you found on the input -- you need to intercept those three numbers.

Same process for a serialOSC app, except it'll be the top inlet of that serialOSC box. And more likely than not, what's attached up there is an [r] object.where you'll have to find the equivalent [s].

When you think you've found the list of three numbers just prior to being converted into one of those long strings (here's where actually having a monome and being able to run that app as designed would be help, but maybe your push buttons are enough -- just connect message boxes to the outlets of every object and see what they output when you press buttons...). When you find it, make note of where that is.

Create a new message box by pressing 'm'. Type 'set $1 $2 $3' in there.

Go to the list you found earlier, and trace the wire from its outlet down to wherever it's connected to. Disconnect that inlet, and drag the connection to the LEFT input of your message box.

Draw a connection from the outlet of your message box to the leftmost inlet of [p_push_grid].

Save, close the editor, and test.

If your app seems to work (there's a decent chance it requires Live's transport to be active, so press Play if nothing happened), open the editor again and clean up. You should make a backup of your file first, though, as this is purely destructive.

You'll want to delete serialOSC, the /route objects you've disconnected, the prepend objects you're no longer using, udpsend and udpreceive, etc.


That's the basics, anyway.

Post Reply