Augustus and TouchOSC

Official support for: expertsleepers.co.uk
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi Os,

I received my iPod Touch last week and have played around a little with the TouchOSC app. I've gotten Augustus to respond to the iPod by rewriting the OSC messages in Osculator.

However, I haven't gotten the /exec message to work. I've tried every combination of arguments I could think of but I always get the message "error while parsing message: /exec: failed to exec function" from Augustus.

Osculator has a weird way to rewrite OSC input so its hard to describe what I've done here, but I've also tried debugging in Supercollider.

While things like this work perfectly


Code: Select all

(
b = NetAddr.new("127.0.0.1", 7001);
for(0,81,{ arg i;
	b.sendMsg("/getInfo", i, "osc.udp://127.0.0.1:57120", "/Augustus");
}
)
)
this doesn't:

Code: Select all

b.sendMsg("/exec", "selectLoop", 2);
Of course, I've defined "selectLoop(loop)" in my midi.lua script.

Do you have a suggestion?

Cheers,
Axel

Post

Works for me - can I see your midi.lua script?

Post

I'm taking the conversation back to the forum so others can learn from it. What I've learned so far thanks to Os is that you must define your functions in your lua script without the 'local' keyword, so they can respond to osc messages.

I'll post my touchOSC Augustus template here when it's finished. I might even post a video.

Is there any disadvantage if I delete 'local' in front of all my lua functions? I'll probably want to reuse some of them with osc messages.

Thanks,
Axel

Post

The 'local' keyword limits the scope of the function (or variable). Limiting scopes to a minimum is usually a good idea since it reduces the number of symbols that the interpreter needs to search when looking up symbol names.

So it's good practice to use 'local' whenever possible, but unless your script is a real monster it's unlikely to make much practical difference.

See
http://www.lua.org/pil/4.2.html

Post

In case, someone is wondering how far I've gotten with my script, I just posted a rant on the Osculator forum :x

http://www.osculator.net/bp/topic/162?r ... 1#post-810

Cheers,
Axel

Post

I wonder if it would make your life easier if I released an update of Augustus with the OSC enhancements that I recently added to Silent Way and Warbler.

Then you can script things like this:

registerOSCPathForParameterNormalized( "/1/fader2", "Speed LFO Speed" )

to process TouchOSC messages as they're sent by default.

Post

os wrote:I wonder if it would make your life easier if I released an update of Augustus with the OSC enhancements that I recently added to Silent Way and Warbler.

Then you can script things like this:

registerOSCPathForParameterNormalized( "/1/fader2", "Speed LFO Speed" )

to process TouchOSC messages as they're sent by default.
That would be really cool. Does it do scale conversion for the OSC values as well? If yes, I wouldn't need Osculator at all anymore.

By the way, I've got quite some functionality working and it's really fun playing around with Augustus and touchOSC. :) :) :)

Cheers,
Axel

Post

Yes, it scales the TouchOSC 0-1 values into the full range of the plug-in parameter.

Have a play with the Warbler demo if you want to check it out.

Post


Post

Thanks very much for the update. I've got a question about accessing different instances of the plugin with registerOSCPathForParameterNormalized():

Since the script is responsible for all running instances, how do I make it distinguish between, say, the filter cutoff parameter of the instance running on port 7001 and the one on port 7002? I have four buttons at the bottom of the Filter page of my touchOSC layout. When I press one of them I'd like register the OSC paths for the parameters of the newly selected instance and send parameter updates back to touchOSC. Is that possible?

If not, I'll still have to use Osculator although it would be much simpler since I only have to reroute, not to rewrite paths.

Best wishes,
Axel

Post

TouchOSC is only capable of transmitting on one OSC port, so you'll have to have one instance only of Augustus Loop receiving OSC, and distributing messages to the others via the setOthersParameter() Lua calls.

Post Reply

Return to “Expert Sleepers”