The aumhaa Website has been transported, please go here instead:

We don't hang around here anymore.....

Search This Blog


Squaring the Circle

I've just gotten back to my Code....I've had a terrific idea about how to utilize it and add something truly new and different to Monomodular.  Think:  variable speed everything, with custom groove mapping.  Anyway, I'm working on it as I type, hopefully I'll have it out soon.  Its funny, I've been putting off doing it for a couple of days, and went to bed thinking about it last night, and this morning I had written the entire thing in my I just have to find the time to put it together and get it working.

I've gone and left my camera in San Francisco, so I can't film any new stuff.  I was anticipating filming a bit of a live set when I got back (the one that I didn't end up playing @ GAFFTA), but it didn't work out.  The 'secret' mulitlooper I've been building with Monomodular will just have to remain a secret a while longer.  It's okay, I'm not sure if I'll be giving it away anyway....its pretty core to my own performance.  But I'm anxious to show it off, as it demonstrates some cool things you can do with the Monomodular framework if you are so inclined.

In the meantime I've decided that I will start publishing some practice sessions as I get to know my new controller...I've had a few people ask  to hear what I've been doing.  So, if you're interested in some verbose and unedited wanking, look no further than here:

Cheers :)




A quick thanks to Christopher Willits and Cullen Miller for putting together the m4l Hack Night @ Gray Area Foundation for the Arts in San was a long way to drive, but I got to meet a bunch of cool people and learn some new things.  It was nice to play through GAFFTA's 7 Channel Ambisonic sound installation.....even if I couldn't hear myself while I was doing it (!).

A few things could have worked a little  better.  I learned one REALLY important thing about my own setup:  if you create a looping plugin that emulates tape-based looping, don't assume your plugin is broken when you catch a loop and you don't hear it playing back.  Instead, make sure the tape's transport is running....

Meantime, I'll be 'checking out' for a bit:  it's back into the swing of the show season for me; but I'll still be hacking away and patching in my spare time,  I just won't have quite as much of it to spread around.

Working on getting current patches documented and posted to SVN, then I'll update the current distribution to b991r2.  Might be a little bit before then, but I'll post when I get things finished.  I've actually made quite a few changes to some of the patches since the last public release.

Cheers :)




I've been unifying the MonomodComponent Python module so that the identical version can be used in every one of the controller scripts that I've made....this is for my own benefit, as it becomes excruciating modifying every one of the scripts individually, and the process is very prone to error.  Besides, I think this has something to do with the definitions of both 'portable' and 'modular'.

So, I've found a bunch of things that weren't happening correctly in the disconnect, and I've mostly fixed them in the 'living' version of the scripts that I'm using on the dev machine.  However, lots of things are happening in my life right now, so I won't be able to update anything for a while.  One nice thing is that the newer scripts are backwards compatible....I'm currently using the b922 versions of the Python perfectly easily with the b991 release versions of the m4l patches, and can hopefully keep it this way for a while.  As soon as I have a working, stable version of the new scripts, I'll add them to the b991 release and post something about it.

New features that I haven't mentioned (mostly bug fixes):

Controller no longer changes selected device when you change shift modes.

Controller now remembers assignment of last right_function_mode track, so that it basically just works as a 'memory' button now....if I assign the mixer in right mode 1 to track 5, it will go back to track 5 the next time I go to mode 1.  Same for modes 2 and 3. Eventually, I will add the Master and Return channels to the left mixer, so that they can be navigated to as well.

Disconnect calls no longer throw errors (which would cause major problems anytime you uninstalled/reinstalled a script, or if you opened the m4l editor window).

Various other little things....

IN OTHER NEWS:  getting ready for GAFFTA show next week, and really digging playing with all this stuff....but its hard to not stop every time I run into something I want to fix and do it right then.  I'm having to resort to little pieces of paper lol.  Anyway, I hope to at some point this weekend put together some video footage, so don't think I lied straight up last week when I said I would do it....its just (as always) taking a little longer than intended. 

Cheers :)



Monomodular Video Tutorials

I've made some rudimentary videos describing some of the basic functionality of Monomodular using the new OhmRGB and the MonOhm script....I split them up into 4 different vids, its probably best to watch them in order.  I'll be adding some additional information that I left out with annotations later, now that they are up on YouTube.  Sorry it took me so long, I actually did these last week but my internet connection is so slow at home that I had to wait until I was at work before I could manage to upload them all.

Now that I've been playing with the release for a week, I've found a bunch of things that I can't live with...better to deal with them now than have to hunt them down after I start working on individual patches and new Control Surface Scripts.  I've been adding functionality to the Monomodular Python script so that everything is perfectly portable between the different controls scripts.  So far, I've added the following:

Color Map support:  this means that each m4l client will have its own color maps, one for each supported control surface.  These will be maintained by the client patch itself, and could be easily made to support pattrs and user assignment.

Additional grid commands:  I've added receive_grid_column, receive_grid_row, and receive_grid_all commands to the Monomodular script.  This should ease some bandwitch requirements a little bit.

Persistent Grid Offset per client/per host:  now when you navigate a client to a location on the grid, leave that client, and come back, the offset will be the same.  This is on a per-controller basis, so it is still possible to have two Monomodular controllers connected to the same client with different offsets.

Select Current Client as Device:  now holding down Alt + Key 8 will bring up the current client in the device editor.  I'll be adding some other Alt + Key combinations in the near future when I figure out what works best ergonomically.

Set Nomeout Channel from client:  this basically just allows the client to set the current the Nomeout channel from init, so that it matches the last selected channel before the client was saved....this is a display bug fix.

Also, I've spent some time (and will spend more) making the monomods.js script link/delink perfectly from the Python stuff between preview/load/save states.  Getting there, but still a little work to do before its perfectly friendly.

Hopefully I get to publish this stuff in the coming days, and update it to the SVN.  In the meantime, enjoy the videos, and I'll try to make some more pretty soon :)



BlockPad Monomodular script for Livid's Block!

 So, this might be some kind of personal victory for me....and that's kind of depressing hehe.  I received Livid's Block controller in the mail today, and I'm honestly impressed with the ergonomics of the controller.  It's compact and yet well organized, with enough controls to get by with under most circumstances.

Of course, before I can really see what its all about, I had to integrate it into Monomodular.  Since the Launchpad is its closest cousin (besides a monome, which I don't possess), I thought it would be easy to adapt the LaunchMod script I've just finished writing to use with the Block as well.

Several hours later (most of which was spent learning the control protocol for the Block, and trying to figure out why two of the LED's weren't lighting on my Block), I've got a working script that does everything that the Launchpad does.

Its included with the current distribution of the Monomodular suite, which can be downloaded from the sidebar on the right.

(edit 081211:: there was a problem in the __init__ of the original upload...I've corrected it and recompiled the package, so if you downloaded it earlier, you might try it again since the first version didn't work)

Unfortunately, I don't really like the ergonomics of this script all that much, so I probably won't develop it very far....there's just not much use for "Button Slider Elements" on a controller that already  has knobs....but still, I will incorporate the knobs at a later time so that the script is more useful.

In the meantime, here's the rundown:

The top two Function buttons switch between Session and Mixer modes.

The other four Function buttons are for Navigation.

Gary is a shift button, he does the following when held down:

You can switch to User1 or User2 by pressing shift and either Session or Mixer.

When in Mixer mode, holding shift turns the the Nav buttons into Mode Buttons (to change views between Volume/Pan/Send1/Send2)

When in Session mode, holding shift turns the far Right column of the grid into Session Launch buttons.

To get to Monomodular Mode, quickly press shift twice.

In ModMode (trademark ;) ), top function buttons are Lock and Alt, bottom Nav buttons are the same.

I haven't incorporated the Faders/Knobs yet, and haven't quite decided how to.  The Launchpad script is less open than I had hoped in terms of how I can play with it easily, and I just don't want to spend too much time on this.  I'd much rather adapt the MonOhm script to work with the Block, as its more generally usefull I think in the presence of faders/knobs.  So I'll spend some time on that next, and you guys can play with this one in the mean time.

As a side note, I'm very joyous at how easy it has been to incorporate the new version of Monomodular into different controllers (this one took less than three hours!), and how well everything is working (for me anyway) when I'm done.  I think I might be getting better at this, finally....

Please send feedback my way...this is totally untested in the real world, but I can't imagine its going to do anything terribly strange.  I'll spend some more time on it when I get further feedback, and try to come up with an intelligent way to add the faders/knobs in the meantime.  Keep in mind, User1 and User2 are available, this remaps the grid to different channels so you can use them for whatever you want.  Check the Launchpad docs if you're wondering how things work, as things are largely the same since I started from the same script.

If you've changed the defaults for your Block, your going to have to reset to factory settings in order to get this to work.  There's no "" file like the MonOhm script  (yet).

Back to tutorial making.....

Happy blinking!



Block is here!

Just got a Livid Block in the mail....I didn't think I was going to be excited about this, but apparently I am!  This thing is pretty sexy....

So first order of business is to get this thing working with the standard Launchpad script that I just wrote, and then I'll go from there....

Spent all day yesterday playing with the Mod suite, and adding more content to my MonoLoop/LoopMaster plugins....way fun!  I've come up with a lot of revisions/bug fixes for the plugins I've been using, so its time to start on the 992 update.

In addition, I recorded a quick tutorial for TR256, Boiingg, PressCafe, and Polygome last night.  I'm editing them now and will add them to my YouTube channel when I get finished uploading them. 

Cheers :)



grrr....b991 already

Here ya go:

I really hadn't intended on updating this stuff quite so soon, but I found a bug tonight that prevents the patches from loading from a saved Live set....something I added at the last minute and should have checked out further.

IMPORTANT:  replace boiingg_b99.class in the Max/Cycling '74/java/classes folder with the new one (b99b).  In fact, I left 'classes' off the destination address, so, in fact, if you followed the directions you put both the .class files in the wrong folder: make sure plinko_b99b is in the right place.

If you downloaded the first package, you should download this one now.  If you have saved any patches with the old plugins and have preset info stored in the project, you can just drop the new plugin (version b991) on top of the old one and resave the project....all the pattr information will transfer to the new plugin.  Besides the actual m4l client plugins, everything is identical.

In addition, I've fixed the preset storage in Plinko and Boinngg so that presets can be stored and accessed from the grid.  Just hold down Alt (top right function button on Ohm, User2 button on Launchpad) and the grid is split in two while its held down:  the top 32 cells will be blank, and will indicate locations after they are stored, while the bottom 32 are flashing, and represent empty locations that can be stored.  If you press a bottom cell it will store a preset location in the corresponding top cell.  If you press a lit cell on the top (if its turned on because you've stored a location there) it will recall that location.  I had to do it this way because I was out of buttons and didn't want to rewrite a bunch of new stuff right now....besides, there are enough silly button combinations as it is.  Let me know if that makes sense to anyone?

Boinngg will recall the same grid space as it existed right when you store the preset.  I'll have to work on the timing later.

Expect similar preset systems for all the other plugins as I have a chance to integrate this new method.  The object I'm using will become a reuasable abstract as  I get the bugs worked out and decide what works best (for instance, there's still no way to copy and paste or erase already stored presets....but you can always just overwrite a preset, and for copying, just recall a preset into the grid and store it in another location).

Still no tutorials, my evening was spent fixing bugs instead....hopefully things go better tomorrow.  I did get to play some music with the new stuff tonight, though, so that's encouraging :)  Everything went swimmingly after I figured sorted out the bug.

I'm still running into weirdness when switching between edit mode or saving m4l patches as presets (which is what the introduction of the b99 bug was all about....I made a change that was supposed to fix that problem, but instead it caused another).  I'm working on it...I don't think anyone is using this stuff for further coding anyway, but if someone runs into issues, let me know.

I'll be migrating to 10.6 later this week, so I should have a better testing platform for those of you that are on MacOS.  Wish me luck...that's 3 computers to upgrade and without anything breaking....blehhh.

It honestly wouldn't be so irritating if I didn't have to open up every single patch, resave it, refreeze it, resave it.....whatever.  Labor of love ;)



Windows b99

Updated the package to contain the relevant files for Windows installation, and have received reports that everything is working on that platform.

Apparently, I had some misunderstandings about the color scheme for the production version of the OhmRGB, so that script will have to be updated shortly when I get it sorted big deal, since I don't think anyone actually has one yet ;)


Somebody drop a beat....

Alright, then.  I have to get this out....I have a feeling I'll find lots of stuff wrong with it, but I have to get it out....

The files:

The problem with having so many files floating around is that by the time I get done checking the last ones, the first ones are deprecated hehe.  I need a team...a team of elves...a team of elves that write code.  And make cookies (mmmmm cookies.....)

Moral: PLEASE let me know what happens when you try this stuff out.  I don't have an installation of 10.6 or 10.7 so I have no idea what it will do with those OSes.  Working on 10.6, its bound to be a good thing to have.  In the meantime, you are my cybernetic eyes and ears.

You will need versions 8.22 of Live, 5.18 of Max, and update your Java installs just for good measure.

I've chased down every single bug I could find with the MonOhm script, but I suspect there might be a few little ones left.

The plugins are largely untouched...except for Plinko, which is much more stable, faster, capable of recalling up to 32 presets, and still completely undocumented (don't worry, that bit is just over the horizon....).

OSX only for the time being.  When I can find someone with Windows who will test for me, I'll put together a package for that OS as well.

And NOW....for the tutorials.  I've already posted one for the Ohm64 script (yesterday?), and I'll be working on some new ones for each individual plugin later this week.  Furthermore, I've come up with an idea:

I'll be presenting at GAFFTA in San Francisco on the 25th of August (Ableton Hack Night), and I don't have any material that I want to use.  So for the next two weeks, I'm going to video document my progress in creating a short Live PA set for the performance that evening.  I'll start roughly from scratch with an empty template project and gradually add plugins that I'm going to use for either preproduction or during the actual performance itself.  I'll give an explanation of what each plugin does, how to use it, tricks you can do with it, and probably some performance.  I think this is the only way I'm going to be able to force myself to get these tutorials over with, as the other way is just boring me (and you, I'm sure) to tears.   In addition, you'll get to see some of the plugins that are 'as yet unreleased' in action, and maybe you can give me some pointers about how I can suck less ;)

Incidentally, there's a whole lot more stuff that goes with this, but can't be released right now.  Expect a Livid Code script (I have a working one, but I need to polish it up a bit....and finish two patches that go with it, or its fairly worthless), a Livid Block script (I'm waiting on the Block to arrive in the shouldn't take long after I get it), and an APC40 script (again...shouldn't take longer than a day, although I don't think I've gotten one response from ANYONE using the old one, so that one may sit on the shelf for a while).....Oh, and an iPod script for TouchOSC, just because a good friend of mine really should have one.  But I'll rant about that stuff another on another evening.

Oh, and if someone would send me a monome, I'd gladly incorporate it as well....

Btw,  if any of this stuff catches your house on fire or something, I am NOT responsible.



LaunchMod for Launchpad, a new Block script, and any Virus users?

While I'm waiting for the fix from Livid for the RGB stuff, I decided to go ahead and start building the script for the LaunchPad.  It seems that hard work has paid took less than a couple of hours to get this thing going, and most of that time was spent with fixing Python errors due to the lack of decompyled 8.22 Launchpad scripts.  This just demonstrates the portability of the scripts I've already written.  I should be able to release the new Monomodular script for the Launchpad ('LaunchMod')  at the same time as the rest of the b99 scripts.

One cool thing I've been able to do is to put the Monomodular mode in a completely seperate space.  You'll be able to use the script exactly as it normally works, and by pressing User1 + User2 at the same time, enter Monomodular mode.  I think this will offer some more possibilities, since the individual User1 and User2 modes remain intact, and you can use them for whatever you were using them before.

In addition, Jay @ Livid agreed to send over a Block for me to test with, so there will be a new script available for it as soon as I receive it.  I'm going to port the Launchpad script directly over to it, and perhaps the Ohm64 script as those of you with Blocks will have a bunch of new toys to play with!

One last thing....I've discovered a serious bug with mxj's and the Virus Control plugin...I've contacted the relevant authorities (hehe), but I'm wondering if any of you out there have a Virus and are willing to test out some files and see if they can reproduce my results?



(whistles while twiddling thumbs)

Some of my stuff got buggered with the new firmware on the RGB.  Almost back up to speed, but we have to fix/figure a few things out before release....stay tuned.



One last thing.

The MonOhm script for the Ohm64 is finished.  I worked out the last bug I could find this afternoon. 

The AumPad script for TouchOSC is finished.  I have one more test run to make with it.

I've started video tutorials for the MonOhm script.

The new version of Plinko is done.  4x faster, with grid-based preset storage that works.

One last thing to do before release:  Livid just released a new firmware now that the RGB is public, and it should make things a little nicer.  I need to update the firmware on my RGB and make a few code tweaks, and you will all have some new toys to play with :) 

If you're bored in the meantime, check out the new docs page for the MonOhm script.  Its available to the left of this post.



A few pics...

Here's a few pics of the new template.  The top ones are in "Bright" mode, the bottom in dim.  Dim mode is far easier on the eyes for me, and a lot faster (since the AumPad script only has to send about two thirds as much data each time it updates).

Monday is EVIL.....

I'm just not feeling this monday thing right now. 

Instead of making videos last night, I completely redesigned the pattr system used in Plinko for the (seventeenth) time.  It appears to work now.  It appeared to work before, until I started using it, and then it didn't work.  Go figure.  Sometimes I hate Max.

That was merely 4 or 5 hours of scratching my head and cursing at inanimate objects....I really hope I don't have to do that again for a while. 

It is a step towards having a universal grid-based memory recall system for all the monomodular patches.  But its NOT a step forward in getting instructional materials released.

For those of you that are wondering:  the iPad script is finished.  There are a few details I've left out, so consider it beta (erm....consider everything I do beta.  Its just the rule.  Always. Unless otherwise notified.  Its beta.  Yup).  I'll update those as I figure out the best way to do it (hint:  I am refering to the two x/y pads on page two that do absolutely nothing right now, but eventually will have an interface equivalent to my 'knobs' plugin).  It'll be published as soon as I figure out what to do about the Windows version, since I'm using Cassiel's Zeroconf ports on OSX and I'm not sure how they work (if they work) on Windows. 

I played with it last night for a few hours after Plinko was up and running and OH BOY!  Blinky :) Yay!

I squashed some bugs during the recent dev process, and since the iPad script and the Ohm64 script are nearly identical in function, I've located most of the bugs in the Ohm64 script as well.  I still need to port the changes over to it, but a release is imminent (a day and hours, not weeks like before).  I'm still on track to record some tutorials and make some docs tonight and tomorrow, but I've learned there's no sense in trying to explain how something works when it doesn't, in fact, 'WORK'.