header image

Mirror People

I feel so stupid sometimes.  Yesterday, around 5pm was a very good example.


I’ve been slowly but surely getting near a release point for b993, and very happy with the way things have been coming along, for the most part.  In addition to this most current release of Monomodular, I’ve been working on some collaborative projects with others using some of the underlying technology in the Mod system.

One of the things that has irritated me the most about working with Mods in m4l since I ported everything over to Python is that I’ve never been able to create a core Max client that would play nice in edit mode.  You can go there, but you just can’t come back.  Sometimes things crash.  Sometimes it’s Max, sometimes it’s Live, sometimes it’s Python dropping out inside Live.  All of this is due to how Ableton handles disconnects/reconnects of Python lambdas, and, well….it might not be such a big deal if anyone besides them actually KNEW how it handled those callbacks.  I mean, I could sit in front of byte-code for 2 days and translate the most current _MXDCore (and I guess it would be time well spent, and I’d be a hero in the community, and, and….) but I REALLY don’t want to do that.  I did, however, want to fix that problem.  I REALLY wanted to fix that problem (god only knows how many hours I’d already spent trying to figure out a way to fix it).

Instead of doing what normal people do when faced with a three day weekend, I decided that I’d hole up and deal with this issue.  I mean, it was essentially the last core element I needed to deal with, and why not deal with it before the b993 release? Eight hours later, I’d made progress.  Well, a little progress.  I’d dug deeper into the  process that Ableton uses when switching between Live and Edit mode than I’d ever done before, explored more of the _Framework’s structure, and considered all the myriad merits of….well, suicide.  I’d tried several different methods of getting what I needed….and kept coming to an impasse.

I’d entered a strange mirror universe…I was stuck on one side, until I was on the other side….but when I got to the other side, I couldn’t remember that there had been the first side….I had dreams about this, in some kind of paranormal limbo between worlds, identical worlds, that were parallel but destined to remain forever untouching, for if their streams crossed even ever so slightly, CATASTROPHE!  EXPLOSION!!!!!……

Yeah, Live would crash.  Suck.  Or the Python script would crash.  My.  Or Max would crash.  (Well, you know)

By day two (well, night one, in the agonized desperation of too much caffeine and artificial stimulants), I’d come to a further conclusion about my course, and although I felt the disappointment that goes along with one’s ideals being dashed, I was optimistic about the results of my future efforts:  I would “sandbox” the damned thing, Python side.  I would restrict the functionality of the Mod while in edit mode, and isolate its existence in the m4l multiverse so that its entity was directly linked to its ghost-soul on the other side of the Ableton mirror (ok…I was on a lot of caffeine, but seriously, there were no other drugs involved….it was seriously a transcendentory experience like that).

Six hours later (or so), I had a working candidate.  It still didn’t do exactly what I expected, but….it didn’t crash (much).  It didn’t make my controller stop doing things (most of the time).  I could travel between m4l worlds as much as pleased me….I had successfully created a machine that could cross the m4l multiverse.  Yay!  But it still needed much work.

The following day, my task was to clean up the code and make sure that everything was working as expected with the Mod connection routines when several clients were running at once.  In the process, I reviewed all the original code and tried to weed out a bunch of stuff that had gotten added in the testing process.



Well, hello, what’s this?  ‘//switchboard.property = 0’.  I don’t need that anymore, since it doesn’t work in the first place.  I found that out six months ago.  Too bad it doesn’t work anymore, it would’ve solved all of my problems.  It doesn’t work, does it?  I’ve tested it, right?  Maybe I should test it….since I still have this one little nagging problem, and it would solve it quite easily.  HELL, it would have resolved this whole situation, and I wouldn’t have needed this whole ‘sandbox’ thing.  Maybe I should double-check it to make sure it doesn’t work, as I’d found when I experimented with it six months ago…..

Maybe I shouldn’t, though, since, if it does work, well….I’d be really, Really, REALLY angry at all the time I’ve just wasted.

You can probably guess what happened after that.


Moral of the story:   b993 is nearly in the can.  After repackaging everything and changing a few lines in the installer’s code to prepare for some changed/extra file handling, I moved everything over to my Live rig last night after a gig, installed it (without even a complaint from the Max window),  dropped all the new mods on top of the old ones to replace them, saved the project….and crossed my fingers.

I hit play….

 Stuff happened.  Not exactly what I expected to happen, but with the press of a couple of buttons, and the turn of a couple of knobs, everything was playing in my set exactly as it had been 5 minutes before, with b992.  I didn’t even have to restart.  And it was better 🙂  All of those additions worked nicely, I found, as I jammed out with the looper and the new LCD patch over the next half an hour (at 4am….yeah, my neighbors must really love me).

So, there were a few things that didn’t work quite right the first time.  I’ll get to them over the next couple of days.  I also have to make provisions in the installer for the new distribution format (unfrozen files, mod abstract clippings) and Windows7 (and hopefully Lion) installations, but you can expect a new revision within a couple of days if everything tests well.

I’ve made a great number of changes, both to the core framework and to the individual patches;  there’s also a new patch, LCD, which takes on the jobs of all the old individual LCD patches, only better….the change log takes up 3 pages, so you’ll have to wait untill it comes out.

A new Monolink won’t arrive until later, but I can release it seperately.

This post is far too long already….back to work with me.



~ by amounra on January 16, 2012.


3 Responses to “Mirror People”

  1. Where exactly is the facebook like link ?

  2. Book marked, I enjoy your blog! 🙂

  3. […] Mirror People […]

Leave a Reply