[share] Mixer for Lemur

Matias's icon

Hello Cycling 74 forum members. I've put together a Max For Live device and Lemur project called Mixer. All details can be found here - http://matiaspecile.wordpress.comhttps://cycling74.com/projects/mixer/

I've tested this on both PC and Mac and feel it's as debugged as can be, but before publishing it the official way, I wanted to share it here (as well as the Liine forums) to see if anyone runs into any problems. Thank you for your feedback!

This goes without saying, but thank you very much to Cycling 74 for Max and for being kind enough to provide Max For Live in Suite 9. I never realized what I was missing!

Matias's icon

bug fix

there was an issue with the dynamic send. the send pot would stop working after a different return channel was selected from the top right. the bug has been fixed, so if you've grabbed Mixer, re-download it.

wurlt01's icon

Did you ever try this with 64 bit live 9. Great Stuff

Matias's icon

hey man, I just checked the CNMAT site, and the last time they updated the Windows externals was on 8/22. If I understand correctly, the Mac externals contain both the 32bit and 64bit versions of the object. On the other hand, the Windows version requires two separate files; one for the 32bit object and one for 64bit object. The zip file on the site has no second "64bit external file," so I don't believe 64bit support is implemented for anything yet.

with that said, I've been beta testing the next version of Mixer. New features have been implemented, and all but a couple of problems have been resolved - like having to load the device twice to get it to connect :)

I believe with the new version of Lemur that was released, a crash should also be fixed. I've not had the time to test this out though.

I called CNMAT and left a VM for one of the OSC-route developers. Maybe we can get a time frame for when 64bit support will be implemented. Until then, if you want to beta test the new version (still on 32bit), pm me here or on Lemur's forum, whichever is easiest.

Wetterberg's icon

Since most osc-route things can easily be done without it, using regexp and route, I'm interested in what kind of osc-setup you're running to require osc-route.

Matias's icon

I can upload the Lemur and MaxForLive files if you'd like to take a look. I'm open to any suggestions :)

Wetterberg's icon

sure, I'll take a look! :)

wurlt01's icon

Guys that sounds great. GUys i run 64 bit. need the power. Mixer has always looked awsome i especailly dig the part were you can select the routing for live. I havent seen this done anywhere. being able to change routing of midi and stuff without using the computer is really cool. Wish it was implemented in push.

Matias's icon

give it a look!

the new version lets you select the routing of up to 96 tracks with 12 return tracks, master, and external i/o.

Wetterberg's icon

just had a look.

1) It seems to work alright on my 32bit system.
2) Some cool code there. Dunno if I'll ever need it, but it's dope.
3) Yeah, most of your osc-routes are like [osc-route /x /z] so what you're doing above them is splitting out the previous part of the message.

What I usually do when parsing larger messages is set up:
[regexp / " "]
After that you can do all that cascading routing with normal [route /x /z] etc.

Wetterberg's icon

but yeah, you do look married to the osc-route, there's like 51 instances in that patch, hehe. Should be relatively easy to replace it.

Oh, and if this is for sharing and for people to add onto etc, then you might want to consider adding comments throughout, because it's somewhat difficult to read, even though the code is solid, from what I can tell.

Matias's icon

thank you for taking a look, and thank you for the suggestion with regexp. I didn't realize it was so simple to implement. it's a big project, so it's true that osc-route will need to be replaced many times... this is when using abstractions should really prove itself useful

I'll update, add a thank you in the credits, and re-upload the project :)

Matias's icon

done ... seems to be working right in both environments. the project is lighter now too. I haven't tested the mac, but I can't see why anything should be any different.

if either / both of you'd like to beta test and let me know if you run into any problems, I won't post this up "officially" anywhere for a bit. the last few times I posted something up, it was within one day that I found a bug, so I've learned it's not a bad idea to let the software simmer :)

wurlt01's icon

I tested on window 7 64 bit. Got patch to work with normal network and ad hoc. I got say great work. Love the option to select inputs and outputs that is the main thing i like about your patch.

Mindaugas's icon

@matias Link not working. 404 not found

Matias's icon

this post was inaccurate - edited out

Macciza's icon

Hi

I would suggest checking out o.route etc from the odot package from CNMAT, and maybe also check https://cycling74.com/forums/osc-stream-processing-in-max/ for reference . .

Would be able to beta test some of this for you - on both Lemur and Max side.

Have you sent a bug report through to Liine support about your problem?

Cheers

Matias's icon

thank you Macciza. I was actually able to fully implement OSC routing for all platforms without the need for any externals thanks to Wetterberg's suggestion.

I also did reach out to Liine support about a month ago due to a sudden exit issue. This time, it's Live that's crashing. Both issues are related to my attempt to implement track / midi routing for all the channels of a Live project, so I really don't think it's Lemur or Live with the problem. I feel it must be a bug in my Max patch.

we're bringing Marc Houle to town at the end of December, so I've been very busy with the party's preparations. with that said, I'm finding some time here and there to debug. as soon as I can pinpoint the exact source of the crash, I'll pm you on Liine's forum (since we can't here) with my findings - and hopefully the solution.

thank you for the support!

Macciza's icon

Hi
Whilst regexp has its uses, and route works on Max messages . . .
o.route and the rest of the odot objects are really worth checking out.

Cheers

Matias's icon

as I recall from reading here, the o. objects work like pointers. (https://cycling74.com/forums/osc-stream-processing-in-max/)

I think you are correct in that the performance of the Max patch should be better by controlling the data inside it like this. just need to wait for cnmat to get win 64bit objects cooked up. I never got a call back from cnmat .. but maybe they'll update soon :)

Macciza's icon

More or less, it is basically the 'best practice' recommendation to stick in the OSC realm imho . ..
I thought being newer development then the rest of cnmats stuff that the odot stuff were already 64 bit on all platforms, as opposed to OSCroute which was originally 32 bit, I could be wrong . .

Matias's icon

well after a lot of debugging, head-scratching, and being this guy - http://i.imgur.com/u3lWw.gif - I've pinpointed the bug to regexp, not Live or Lemur as initially suspected.

The bug manifests itself when the user attempts to change the sub-routing of the 7th or 8th channel strip. Due to Live's hard crash, I feel it's a memory issue of some sort. It's strange because each channel strip uses the same abstraction. The only thing that changes is the number the abstraction receives to initiate the abstraction to that particular channel strip.

does anyone know if regexp has some kind of memory limitation or what could be modified to avoid this issue? unfortunately if there is no solution in sight, 64bit support will have to take the backseat as a stable application is much much much more important

Matias's icon

I couldn't get regexp to work correctly with 8 channels worth of regexp objects. Instead of reverting back to osc-route, the OSC address routing is now done with o.route. This makes the project not 64 bit compatible in Windows. Mac is both 32 and 64 bit compatible.

I'm sharing the project as a beta download since admittedly, it's not 100%, but I can't figure out how to work around the limitations posed.

all critiques welcome :)