Need to Know.

•August 20, 2013 • 3 Comments

Hmmm.  Over two months since I last posted.  Woe.  I say, Woe.

Sorry about that.  Big plans (like the ones I’ve made for b996) have required…um…big planning.  And, mostly, I’ve just been involved in another project.  (Namely, Bitwig integration for Livid controllers.  Which is pretty darned cool, actually).

Since Monomodular is, first and foremost, a framework necessitated by my own musical needs, it stands to reason that I’ve made little progress in its development over the past several months since I haven’t been playing any music.  Various reasons have contributed to this, like moving my studio, having some hardware issues, and some physical injuries that have prevented me from actually playing instruments, but I think that’s largely dealt with now and I can get back to the project at hand.

I have, in fact, been making progress on some things, and some of you may have noticed some regular updates to the GitHub repository for Monomodular.  Although some of these changes are small and mostly responses to bug reports from users, others are more far reaching.  I’ve made considerable changes to the AumPush script, notably in response to the observation that the new mod-selection methods can get tricky when you want to stay focused on a mod.  Now, when pressing “Note” while a mod is selected, the “Note” button will flash (as long as the transport is running), and Push will remain focused on the current mod.

There are many other changes I’ve made under the hood to the AumPush script in preparation for b996 integration, but you won’t see those for a while.

AumBoids has gotten some new features and bug fixes.  It will get some more in short order.  I’ve added a “zone” feature, and will be tweaking its engine a bit to allow individual adjustment of each agents parameters.  I’m personally using this plugin with a monophonic pitch detection patch (included in the b996 folder) to change boid leaders.  When I play a note on the Cello, the boids automatically start following the leader belonging to the step of the scale I play.  Still a work in progress….

Hex has gotten a bunch of bug fixes.  I was having some issues with too many MIDI events being sent when there were a lot of sequences playing, so I tweaked the “note flash” algorithm to prevent it flooding the js-Python bus.  Hopefully this fixes the problem.

My development schedule is rolling back into Live-Land now, so you should see some progress pretty quickly.  I’ve already ported b996 over to AumPush, its just a matter of making things work now (and it’s been working in Base all along, since that’s where I built it).

By the way, if you haven’t checked out Base, you really should.  It’s a pretty sweet controller!





•June 7, 2013 • 44 Comments

Hi all,

I hope that by my silence you don’t think I’ve been idling, on the contrary: it’s been busy for me!  b995 is largely done, but I’m still sorting out tiny bugs here and there.  There are several patches that still need my attention and I apologize for things taking so long.  To be honest, my attention has been pulled in other directions (and happily so!).

What I HAVE been doing is working on b996.  You might say, “Well, James, why would you do that?  I mean, you haven’t even finished b995??  This shit is buggy as hell!….”  and I wouldn’t argue with you.  But, as it turns out, sometimes that’s just the way things happen.  And this time that’s h0w things are happening.  I wanted to take a minute to spell out plans to those of you that had shown an interest in what’s going on.

I knew things would probably change drastically when Live9 came out, and they did.  b995 was a chore for me, and largely it was centered around making things that already worked in Live8 port over to the new version.  However, none of this was optimal, nor did it take advantage of any of the improvements in Live9.

While creating the modifications to the Push script for AumPush, I was forced (and pleased) to come up with a new way of mod-selection.  Those of you that have used the AumPush script will know what I mean out of necessity:  its just the way things work.  And the nice part about it is that it requries no explanation, really….its just the way things work.  You get it.  And I like it.  But using other controllers to do this same sort of trick isn’t as straightforward, as there is no LCD screen on most controllers, and not as many mode buttons.

I’d been eager to port some mod functionality over to the Base control script for a while, and this couple weeks has seen that happen. I wanted to use the same sort of mod selection mechanism as what I’d used on Push, thus dispensing with “modNumbers” and “modSlots” and all that confusing nonsense.  Base is such a simple and yet powerful device, and I wanted to keep it that way without muddling things by adding an extra layer of confusion with mods.  I’d been unable to use my desired approaches in prior versions of Live due to technical reasons, but to my amazement, when I wrote some new code to this end, things worked!  Ableton/Max had changed their codebase ever so slightly in such a way to allow exactly what I was trying to do!  I now had a much simpler connection routine without many of the limitations that I’d encountered on previous versions of the same type of mechanism.

I wanted to write enough  to explain how and why things will be changing for b996, and why b995 is taking so long.  Things will be changing rather drastically in upcoming versions, and here are the most consequential changes:

Monomodular is a device controller.  

If you select a mod device in Live, it will be selected for control by your controller.  That simple.  (The current paradigm of holding down shift to select a modSlot will still exist on the controllers that support it presently, but it will select a mod in a different, name-based manner, similar to how the DeviceSelectorComponent works in my Livid scripts).  Also in  this regard, you’ll begin seeing the introduction of Python based mods that are recalled any time you select certain Live devices.

Unlimited mods.  

There are no longer modSlots or modNumbers.  Mods are just devices now.

Universal mods.  

I’ve wasted a lot of time trying to maintain slightly different versions of the same mods for Monomodular and different Livid controllers.  This is frustrating, as most of this stuff if essentially the same, with minor differences of details that require constant maintenance to multitudes of files every time a small change is made.  In the future, all mods will be universally supported by all controllers for which I’ve written scripts.  More about this in future posts, as I’m still working out the details.

Easier mod editing.  

Did you ever want to open up a mod and mess around with it?  Or create your own?  Things should be much easier in this regard in b996.

That’s all I have for you now.  If you want a sneak preview of how things will be and you happen to have access to a Livid Base, the new mod design is already in place for it.  Otherwise, I’ll begin porting things over as I have time.


Happy blinking!

Monomodular on GitHub

•May 4, 2013 • 10 Comments

I cloned the SVN repository over to GitHub last night, and will try to keep up with it as soon as I can figure out how Git works.  This should make it a bit easier to access the development build via a web portal, among other things.  I’d stayed on SVN because it was a convenient way to transport things via the Max installer patch I made, but that’s no longer the case since OSX doesn’t include SVN command line tools out of the box (nor did Windows ever have it), and its somewhat of a pain to install them if you’re not a developer.

I’ve made steady progress with Live9 scripts.  There are several fixes for MonOhm included in the most current commits.  Also, I’ve subclassed it for use in LemurPad and BlockMod, so future changes/fixes to the MonOhm script will affect all three scripts.  I’m currently working on CNTRL:R in an attempt to make things more managable.  Reorganization is taking longer than I expected, but its necessary before I can really implement the changes I want to make in b996 (big, exciting changes!).

Also, there is a rudimentary implementation for Push included in the current version.  I’ve been using this a bit, and although not complete, it will give you an idea of how things are likely to work in b996.  I’ll be getting rid of the “mod number” system, it seems, and there will hopefully not be a need to have a “Monomodular” script instantiated.  Things will hopefully be getting a lot more transparent.


What’s up with Monomodular?!

•April 22, 2013 • 11 Comments

Hello to all of you out there in grid-land, and anyone who reads this blog.  I wanted to make a quick post to let you know where things are with Live9 integration, and Monomodular as a whole.

First of all, I applaud the patience of those users who continue to use Monomodular in its current state in Live9….I can’t say that even I am among your ranks.  Fact is, I haven’t used Live9 at all for creative purposes yet, and I sure as hell haven’t moved my Monomodular sessions over to it.  Mostly, thus far, I’ve only had Live9 open to test Python scripts that are being ported over from Live8.  Any testing of m4l has been very cursory, just to see if things “appear to work”.  Furthermore, I’m afraid I’ve probably broken most of the links in SVN to Monomodular’s b994 content for Live8….sorry guys, but progress sometimes requires sacrifice, and I had to do some restructuring.

The good news:  I’ve made a lot of progress.  Most of the Python code is fairly stable now in Live9, but I know there are still plenty of bugs in there.  It’s been my ambition to reduce the redundancy of the internal components and subclass everything following proper Pythonic conventions so that in the future it won’t be such a headache to change and maintain things.

The bad news:  I have a lot less spare time than I used to, and Life has been kicking me in the ass for a little while…I’m still not sure when this will be done.  But I work on it every day, so the prospects for completion sometime this month are good.

I just wanted to reiterate that I really appreciate all the help I get from you in the way of questions and bug reports.  This has been a much bigger task than I anticipated (although, really, did I think it was going to be an easy thing to sift through and rewrite three years of work?  Yes, apparently I did…silly boy).

For those of you who want to try things out while I’m still finishing b995, here’s what I can tell you:

Make sure to download the most current version of SVN repository, here:

Make sure to only use b995 patches with the Live9 Python scripts.

Make sure to read the wiki, and put things where they go manually.  Roughly the same rules apply for Live9/b995 as they did for Live8/b994….here’s some advice:

Make sure that when you download a new version of the repository that you replace ALL the relevant files, especially the Python files.  The Live9 scripts heavily depend on one another, and upon the _Mono_Framework folder.  These files change regularly, and it’s important (especially during the development process) that the most current versions be used so that they all get along with one another.

If you’re using OSX and want to try the installer, I’ve built one that works on my system, but you’ll have to drop me some email in order to get it:  I really need get some feedback about it, and that’s the only sure way I can do it.

Make sure to send me bug reports….I am not currently using any of this stuff beyond programming it, so if I don’t hear about a problem from you it’s definitely not going to get fixed.  That will hopefully change in the near future after I get the Python stuff finished (along with the Livid backlog I’m working on), but in the meantime it really helps when you can send me details and a log.txt file so I can track it down.

As always, thanks for the love….I don’t do this for the money, so its really great to hear from you and know that you’re using my work even when I don’t have the time to.  It makes it much more satisfying, and gives me hope that I, too, will soon be blinking again!




P.S.  I’ve made statements to several of you lately via comments about specific bugs/problems that I haven’t checked on yet….don’t despair, the fact that they are in comments here gives me a reference to them, and I’m going to start working on that tonight.




Old News

•April 9, 2013 • 11 Comments

The AumPC40 script has been giving me grief for a week now, but I’m happy to report I’ve finally got it licked.  There’s a new script in Monomodular SVN for the APC40….I’ve also updated all of the _Mono_Framework files.   I can’t guarantee that changes to the Framework haven’t broken earlier scripts I’ve ported, so you may want to hold off updating if you already had Monomodular working in Live9 and don’t need the APC40 script.

AumPC20 script will follow shortly….I have to catch up with a few other things first, though.

I’ve already done most of the work for the AumPad script, so it looks like Code is the last thing to update.   Base will get some Monomodular love pretty soon, I think, now that I have a beta version finished for Live9.   Also, it sounds like I should be getting a Push sometime this week, so I can finally get on with tearing that apart and maybe doing some cool things with its codebase (which I’ve largely been unwilling to even look at until I got the hardware in front of me…sorry, but free time is at a deficit these days).

Lemme know what you find….I’m certain there’s still some broken stuff in there.


If you can’t say anything nice, then add some stuff to svn.

•April 3, 2013 • 24 Comments

I’ve been hard at work since my last blog post trying to get Monomodular working in Live 9.

The good news:  some stuff is working.  I was able to get AumTroll and MonOhm working together in my own setup, although I haven’t done extensive testing.  I’ve also gotten the LaunchMod script working (and boy, was that a pain in the arse!).

The bad news:  Live 9 sucks.  Well, not necessarily from the end-user’s view, but from the viewpoint of a programmer who was already having to hack into the backend of Ableton’s code, things have become considerably more difficult for those of us who are not working with the official Cucumber debugger.  New methods in the _Framework have essentially broken any error reporting that doesn’t happen in the very top level of code, which means now things just break and there’s no way to find out what the cause was other than adding explicit lines of debug code myself, and even that is only moderately effective.  In addition, Live no longer recompiles and reloads the scripts each time you add or remove  them from preferences, so its now necessary to restart Live every single time I change a line of code in one of my scripts.  Bottom line:  the whole process is much more tedious and takes a good deal longer.

Oh, and the current decompiles of the included Live 9 scripts available are fairly unusable for more than just educational purposes.  Just saying, that’s all.  Presumably the method being used is decompyle2, and although it does a really good job, assertions are not being rendered properly and will fail to compile correctly in Live 9’s Python interpreter.  I wish I could say I’ve done better myself, but I am using the same methods and the only solution is to go through and carefully hand marshall all the incompatible lines with correspond valid syntax.  It’s painful.

I’ve added the currently working scripts to the SVN repository for those of you that want to try things out.  Let me know what you discover, there are sure to be lots of bugs with all this stuff.  I’m slowly but surely getting through most of the old scripts.

It is now necessary to have the “_Mono_Framework” folder installed for the scripts to work.  This is a generalization of the most useful and prevalent scripts I’ve written, and will be the model going forward for all the stuff I’m working on.  When updating to new versions, it is extremely important to make sure that you’re using the most recent version of these scripts, and I haven’t come to any conclusions about how I’m going to marshall that process, so for the time being just replace the “_Mono_Framework” folder with the current version every time you download a new revision and you should be fine.

I’m currently trying to get the AumPC scripts done, but I’ve run into a very frustrating problem I haven’t been able to solve yet so I’m not sure when it will be finished.

It seems I might have gotten left out of the loop in regards of getting an Ableton Push in a timely manner.  Oh well, their loss I guess.  I’m not going to be bothered to write cool stuff for it if they can’t send me the hardware….hell, I’m even paying for the damned thing!  Anyway, some of you had been asking, so there’s your answer:  it’s still “Vaporware” as far as I’m concerned 😉

Oh, and for those of you concerned about my health (mostly just me, but still…), I apparently might be getting better.  But quite honestly, all these meds are making me sleepy and cranky….I’ll sure be glad when things are back to normal!


…just send some nice flowers

•March 29, 2013 • 8 Comments

That last post I made was in the midst of some serious illness.  Well, it got better, then turned and got seriously worse.  Where do these mutant virus strains come from?  I almost conviced that they’ve been engineered merely to “piss us off to death”.  This is the sickest I’ve been in my life.  I think I’m finally turning the bend at this point, but if you don’t hear from me in the next week or two, just send some nice flowers.

I did manage to get the AumTroll script mostly ported over to Live9, but other (very overdue) commitments have delayed further work on it.  I just wanted to let everyone know that I am working on things when I’m conscious and able to think straight and not trying to catch up with Livid scripts or commissioned work (which, admittedly, is like never these days, but I see a window coming up ahead).

There’s a copy of the working Monomodular and BlockMod script here, if you need them:

The rest will be along shortly, wagging their little tails behind them.




•March 15, 2013 • 3 Comments

Life has been messing with me a bit lately….sorry for my silence.  Without going into the gory details too much, I’ll just say that some physical and personal issues have been keeping me away from the computer for about two months.  Anyway, I’m mostly back in action, and now that Live 9 has been released, you’ll see some updates to Monomodular in pretty short order.  I’ll probably release a quick compatibility update first (as I’ve had a chance to uncover most of the problems between 8/9 _Frameworks), and then add some stuff for Base and Push once I’ve gotten them in my hands.

For those of you out there that have tried to contact me lately and have not gotten a reply, you have my apologies…I’m very swamped with different projects, and just recently lost about a week to a pretty debilitating virus of some sort.  I’ll be trying to catch up on the backlog over the next week as well as sort out my neglected communications, but please don’t hesitate to send me another email if I’ve left you out.

As always, thanks for the support!


SVN on Mountain Lion

•January 25, 2013 • 2 Comments

So, apparently Apple has removed svn command line tools from the standard OSX install starting with 10.8.  News to me…..

Anyway, if you want to install Monomodular from Subversion and you’re not able to do so on 10.8+, that would be the reason why.  You can install the “command line tools” by themselves or do a full install of  XCode4.5 and everything will work as it should; however, you will apparently need an Apple ID in order to even download them.

So here’s a shout-out to Apple for continuing to dumb down my operating system and make things far more complicated than they need to be.  Cheers, Apple!





SVN update

•January 18, 2013 • 3 Comments

Hey all,

I’ve added some files to the repository; it’s not everything that’s done at this point, but I’ll add more as I come across things.  My work is spanned over a couple of machines at the moment so it may be a few days before I get everything in the same place.

You can use the installer patch to download from SVN, it will put the files where they go and tag everything with the correct date so it’s a little less confusing.  The new Python scripts are tagged b995, and there is a folder in the m4l patches sub that is labeled “b995 Stuff”…this has the new Hex and Encoders in it, along with some other stuff I’ve ported over to b995 for my own sets. Let me know what you find in the way of creepy crawlies please.

Before you ask, none of this stuff is Live9 compatible, sorry 🙁