Archive for July, 2012



July 9, 2012

Hey guys,

I’ve been working on the Max6 compatibility stuff quite a bit.  The fact is, everything in b993 SHOULD work without any changes, but there is apparently a bug in Max6 which is affecting how the patches convert over from Max5.  If you’re interested in the specifics, I started a post over at C74 forums when I discovered this flaw:

If anyone has any further information about this, feel free to chime in there.  I’ve been unable to reproduce the behavior in fresh js instances that I’ve built from scratch with regularity, but it affects all of the scripts that I’ve written in Max5 and then carried over to Max6 (which is very strange indeed).

Anyway, its a non-issue now.  I spent the weekend rewriting the connection routine that is used between m4l and Python for the current Livid project I’m working on, and as soon as time allows I’ll be porting that stuff over to Monomodular.  Basically, I spent my time doing the exact same thing that I did six months ago, when I wrote this exasperated post:

Mirror People

Fortunately, though, I understand Python  (and m4l) a little better now, so I’ve been able to solve some problems that are happening on the front-end by applying solutions to them on the back-end  (an “ass adjustment”, if you will….the sort of thing Dad always use to threaten me with to get me to do my homework).

Since this is going to be a ‘less than trivial’ update, I’m going to try and get the other recently made architectural changes into all of the scripts before release.  Among these changes:

1)  The new connection routine, which further stabilizes editing mods in m4l (read: no more crashes (?)), and works around the js dummycallback issue in Max6 (the cause of  all the misbehavior for those of you trying work in Max6).

2) I’ve discovered a way to run the Monomodular script in the ‘background’, meaning the user won’t need to implicitly instantiate any extra scripts in a Control Surface slot.  If you load a script that needs the Monomodular script, that script will automatically instantiate it in Python, without need for the user to do anything.  For those of you already using this stuff, that’s probably not a big deal, but it will give you an extra slot to put things if you want.  For those new to Monomodular, however, this should help out with some confusion, since this is the number one support problem I have to deal with (even though I feel like it’s pretty well documented).

3) I’ve created a new MonoDeviceComponent for Python.  It is capable of connecting directly to a control surface’s controls, and dynamically changing parameter assignments to its controls.  It’s much faster than doing this stuff through the m4l API, and will eventually get integrated into all of the mods that I’ve built.

4)  I’ve been spending a lot of time creating a new mod (this one is for CNTRL:R currently, but will be ported to the other surfaces as well).  I can’t go into details at the moment, but it will consolidate the functionality of several existing mods and add new functionality to them (TR256, polygome, binary).

5)  I’ve also ported some of the Codec mods (binary and endcoders) to the CNTRL:R, and if time allows I’ll release them with b994.  I’m going to try and change the encoder response on “endcoders” before release, but with the integration of the new MonoDeviceComponent coming, most of the implementation for it is going to change anyway.  I’m afraid you probably won’t see that until b995, though.

6) There might be an extra surprise in store as well 😉


So, you might judge from this laundry list that you may not see anything for a little while:  and you might be right.  I’m not sure how long it will take me to get all of this finished, but I’m shooting for two weeks on the outside (I’ll be touring after that anyway, so it’s kind of my self-imposed deadline).  Since this technology overlaps some of the Livid stuff I’m working on currently, I’d prefer to get it out and tested sooner than later, as we may discover some problems that would affect both.

I appreciate all the offers of you’ve all made to beta test, and I’ll definitely be taking you up on them in short order;  for the moment, however, you can suspend sending bug reports, etc.  Since the existing connection routine is totally fubarred in Max6, nobody is actually getting any further than that.

On the other hand:  if you’re getting a connection with the current build in Max6 and things are working fairly well, I’d love to hear from you.  Since this js callback bug seems to affect some users and not others, it would be helpful to understand why.

Greets and cheers from the foggy summerland of the Northern Cali coast….