Archive for August, 2010


Crawling crawling crawling…

August 31, 2010

I’m working out the final touches to the new patches.  It’s hard going.  I’ve discovered a bug in Max’s javascript implementation (I’m pretty convinced of that its a bug, anyway) that is requiring a substantial rewrite to some timing processes.  BUT.  If anyone out there is watching, you can expect a new and improved version of Monomodular that has the following great features very soon:

Auto client/host detection.
(this means that the host will detect all clients as soon as you load them, and delete those clients when you delete them: it will also remember a clients position if you delete it and reload it immediately).
The assignments are persistent between sessions, meaning once you set up a project, it stays that way until you change it.  It also allows you to create templates with your setup (via a Live song) and use those as a basis for any project.

Single plugin for 3 different hardware types:  iPad w/TouchOSC, APC40, and Launchpad.
Autodetection of TouchOSC via bonjour as well as manual assignment of OSC address.
Autodetection of all control scripts installed.

For the iPad:  an improved interface with true multicolor readout. 
a second page with monome 256 multicolor.
Improved performance overall, and I’ve reduced the amount of time to load the plugin.
I’ve also greatly reduced the amount of time it takes to create or delete a new track when using the plugin.

For the Launchpad:  navigation performance is improved.  You may now move in single cell increments, and there is a popup when User2 is pressed to provide quadrant navigation.  Current channel and plugin are displayed when you press User2.

For the APC: the same navigation features have been added as for the Launchpad.  Several annoying bugs have been worked out (like having to press shift at the start of a session before you can select grid-mode, switching between full and small modes now no longer kicks you out into clip-mode, and there is no longer the possibility of getting locked out of normal APC operation if you delete the plugin).

Also, broc@Live forums gave me the idea to use IAC for MIDI communication.  Now, Nomeout channels can be bounced to a virtual MIDI port through a ~vst object embedded in each plugin.  This means you can reroute each plugin on the fly to a different input channel in Live.  It requires the installation of the free midiOut plugin, but it works much better than the send/receive system I’ve been using up until now.  Hopefully Ableton/Cycling comes up with a better and more usable solution in the future.

MIDI port assignment is taken care of from the host plugin.  It will be persistent as long as the port order doesn’t change.  That’s the best I can do with what I have to work with 😉

I’ve created several new plugins:

Swing is a new Monomodular host: it can control swing for up to eight clients, assignable in the same manner as Monomod.

Osc-Client is a Monome emulator.  Its in its beginning stages, but it already deals with most Monome patches admirably.  This allows you to use Monomodular to control Monome patches without needing them ported to Monomod format.  It supports autodetection and col or row messages so far, I will implement other messages as I encounter them in Monome patches that I’m porting.

Dummy_client is a new utility for designing Monomod clients.  It allows you to link to the host via UDP when in edit mode, so that you can operate the client patch as normal while the Host patch is still outside of edit mode.  Simple, really.  I should’ve done this six months ago.

Knobs has been updated a great deal.  It is now a Monomod client.  It allows you to capture all of the current values of whatever parameters are assigned to each knob at the current value of that knob simply by pressing a button.  You can also store knob snapshots (64 of them) and recall them.  Snapshot selection, storage, and clearing are all available from the Monomod grid.  You may also clear individual envelopes from the grid, as well as capture parameter envelopes this way.

Knobs is accessible directly from the TouchOSC template:  the first four knobs are above the master/input/send knobs, the second four are handled by the two x/y boxes.  I think you will find this gives you the capability of controlling just about everything you need to in your set.

I’ve ported a couple more of Stretta’s plugs, tintinnabulo and sment.  Sment has presets now.  Tintinnabulo still needs a bit of work on the preset system, but you can still store presets as json files  like in the original patch.  There will probably be a lot more to come now that I’ve built the OSC_client and the Dummy_client.

All the other plugins have been updated to work with the new host/client system.

I have it in mind to include support for the original APC40 script in the next revision.  After that I’m going to come up with a better method of preset storage…the method I’ve been using is effective, but its slow and cumbersome.  We really need a good way to store the contents of coll in a pattr.  Something will present itself, I’m sure.

I really just wrote this blog to give myself a pep-talk, I think (or a to-do list).  Back to work, as I’m almost done.



August 27, 2010

I’m sitting here watching the blinky lights on three different controllers dance for me in rhythm to the most intricate Live set that I’ve ever built.  That’s a very good thing.  Its an even better thing that they are all doing it at the same time, with the same Live set.

Several weeks ago I had the bright idea that it would be a good thing to have only one patch to deal with.  So I basically rewrote every bit of all the control scripts I’ve made over the last year into one simple patch.  I wanted a single patch to be able to use for all of my controllers.  And I wanted them to be able to auto-detect which surfaces were connected, and save those settings between sessions.  I also wanted them to be able to autodetect which clients were connected, and save those settings as well.  And to be able to connect to a different set of clients, so each controller could have its own client list.  And and and….

Well.  It works.  And you can have it if you want it (very shortly, anyway).  I have some time over the next several days, so I will finish all the little nagging details, package everything up, and write some more ideas here to let you know what I’ve been doing, and why.

I’ve spent a lot of time documenting and cleaning up the code.  It will be much easier to build around now (for those that are interested), and there is much less guesswork.

I’m also looking forward to checking out a new patch Oliver has made in conjunction with Monomod, and making sure that everything runs as smoothly with it.  Hopefully there will be a lot of new stuff to release in the next several days. 


Incremental pattr

August 13, 2010

I just realized that some of you may be using patches that don’t work because I’ve implemented an updated version of pattr. 

Make sure that if you are using Monomod and any of its client’s (or any of my other patches) that you update the pattr external from the following page:

Hopefully this will be resolved in upcoming versions of MaxMSP.

On other fronts, I’m pretty far along on the next version of Monomod beta, which provides many new features:

Full multicolor support for the iPad, utilizing the new version of TouchOSC.  There is a much better feedback system for the grid, and a monome256 screen.  I am in the process of rewriting the framework to make things snappier when adding/removing tracks in Live, as well as overall stability.

The system is now more modular.  There will be a separate plugin for controlling swing.

There is now an automatic system for detecting hosts/plugins, so you can use multiple hosts of mixed types with unlimited plugins per project.  Each host will autodetect all clients present when a new host or client is instantiated in the Live set. Once you have configured the host with the order of its respective clients, the settings are stored across save-state for your Live set.

I am working at compiling all the control surface scripts into a single version, which will support all three interfaces (iPad, Launchpad, APC40) in a single plugin.  I am also going to add monome support when I have a chance (I don’t have a monome, which makes this difficult…anyone have one they want to loan me? lol).

Cheers 🙂


Let’s get on with it!

August 9, 2010

TouchOSC 3.6 is out. I am trying my best to contain myself. It’s lovely how things coincide:)

Multicolor iPad Monomod goodness to follow shortly…


Everybody’s Talking

August 5, 2010

Uhhhh….its four in the morning, actually….no one is talking (well, except my cat, and she really shouldn’t be, so either someone slipped me something when I wasn’t looking or I really should get some sleep).

I’ve managed to get a working prototype of the new monomods appliance.  Unlimited hosts, unlimited clients.  Configure it once, and it stays that way.  Use two or three controllers to control one patch, or use one or more controllers to control 24 patches.  Whatever.  Or build it yourself.  As long as the number of sends being used doesn’t bottleneck everything, this schema should work out extremely well. 

Now that I’ve managed to finish this, I can stop thinking about it for a while and go have some fun.  Most of the hard work is done, now I just need to incorporate it into monomods and change a few things in the host patches.  The client patches shouldn’t need any update at all 🙂

Cheers, if your watching.  I’ll have a bunch of new stuff out toward the end of next week if all goes well (including some music, for a change).


If you’re going to San Francisco…

August 5, 2010

I’ll be there.  No flowers, though.  This weekend only.  Don’t look for me on any billboards or marquees, as I will be playing the underground circuit (read:  a friends living room, probably)….

But that means don’t look for me here, either, as I will actually be using all this code I’ve been writing over the last several months to some good end….wish me luck…I’ll post the results on the other page when I get home on Monday or Tuesday 🙂