[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Date Index][Thread Index][Author Index]

Software looping with Mainstage - configuration update, Soundflower, Jack, etc.

Just a little update on my experiences with Mainstage and looping.

Mainstage has a lot of great synths, drum machines and guitar fx, but
it does chew up cpu (i wouldn't even try to use the physical modeling
synth in a live environment with other stuff going on).

I tried putting Sooperlooper into a bus, and it works sometimes, but
often seems to cause Mainstage to complain of MIDI conflicts (when
synced to the Sooperlooper output). I found this to be annoying, and
plus - buggy tho it is, i have my own max/msp looper and it thinks the
way I do (and doesn't require me to remap midi footcontrollers). Plus,
I can rig max things to do lots of different stuff.

My main issue in getting this to work has been getting the audio from
Mainstage to MAX w/o adding latency. I found that the 2-channel
version of Soundflower works OK, but the 16 ch. introduces
unacceptable latency - and I do need multiple channels going back and
forth. I installed the Jack server on Friday, and I find it much
better and more configurable than Soundflower (maybe it's just easier
to understand and I was able to configure it better for that reason).

Now, I don't yet have Mainstage syncing fx times to loop lengths - my
looper puts out MIDI Time Code, or did at one time!, but I have to try
and remember where in the morass of code that is and see whether it's
working this month. But I'm not that concerned about that at the
moment - my modus operandi for now is to tap in a tempo to Mainstage
before i start playing, then just loop normally (my looper, by the
way, has it's own built-in loop-synced delay fx). (corrollary: I'll
bet SooperLooper would work fine in Mainstage if i stopped trying to
sync to it, too).

So, Mainstage, Jack and MAX play together nicely with low latency.
Now, I'm playing with working automated percussion into the mix -
which may alter the "first loop is spontaneous" dogma for me (I'm deep
in a process of reinvention this year, and upcoming products for hex
gtr that I can't talk about are going to complicate that further in a
few months).  I started playing with the Mainstage/Logic drum machine,
Ultrabeat. Ultrabeat has many cool things, but no realtime
randomization (although you can get long-term variation by making long
lfos that don't retrigger on every hit). So, I adapted the drummer
quickstart from MAX cool objects to drive a two-line percussion part,
one part synthesizing shakers/maracas, etc. in MAX via the MIT
Percolate physical modelling library, and the other one to generate
MIDI messages to send to Mainstage (I am trying to set up shakers as
the "core" of a class of improvisations).

So now, I'm really getting into audio web weirdness... the percussion
audio is coming from both MAX and Mainstage, and should not be looped
(since it is generated from it's own kind of loop), but should be
recorded, and the guitar audio is coming from Mainstage, is echoed
right back to the audio interface by jack for low latency, but is also
Y'd into MAX for looping. there's no connection yet between loop times
and the percussion generators, but that must come soon.

On a simpler front, I took my guitar out with just my computer and no
footcontroller and no external interface for a jam the other day, and
it worked fine. In other words, I replaced my fx with Mainstage
without having to carry around any extra crap - plugged the gtr into
the line in, took the amp output from the headphone feed, and skipped
the footcontrol. Ended up with no more equipment than before (the
computer now replacing the fx floor unit), and the Macbook on an
Instands next to me - changed patches with the arrow keys. Worked
great, except for the lack of manual wah-wah functionality.

Having the computer up next to me all the time and accepting that also
means that I can start assigning non-time-criticial looper control
functions, like "start fade", to keys instead of footcontroller
presses. that will be a relief, since that interface was becoming
quite awkward.

I'm also going to start looking into Max 5. It appears to address many
of the issues that have long bothered me about max, although there has
been some talk on the lists about the audio performance not being
quite up to MAX 4 (i.e., higher cpu usage for what looks to be the
same functionality). Still, problems like that inevitably get
addressed, and given my time available for coding, will probably be
addressed before I need them - as I recode the looper, there are
several performance enhancements (even in Max 4) that I have not taken
advantage of and now need, so (as always) there is a long way to go.

So - that's the news from Greenwood Lake for now.

Happy looping!