This is my first post in this forum but I have been playing with Renoise on and off but just 2 weeks ago decided to use Renoise as part of my performance rig.
I have written a bunch of little instruments and effects in PureData which I hope to communicate with through OSC.
To that end, I would like to observe for a value to change in the effect column, and send an OSC message. (I have figured out how to send OSC messages to PureData via Lua, no problem.)
I understand that I need to use observables but I have read and re-read all of the documentation I could find.
Would someone be kind enough to give me some boilerplate that will allow me to observe for a value change in the effect column?
Urgh so I should have searched a bit more before posting.
To answer my own question, it is IMPOSSIBLE right now to do this (except possibly with coroutines).
I was hoping that with Renoise scripting, it would be possible to use the effects column to trigger custom events.
For now I am using midi note messages (Renoise sends CC messages too frequently and it causes MIDI buffer overflows when using the OS X IAC MIDI driver to pipe MIDI to PureData).
Not the internal Lua scripts themselves.
You can automate the parameters of the Formula device though (it is mentioned in the pinned deprecated devices topic in the tips and tricks section) and in there you have a few limited programming options, but they can’t interact with the Renoise API unfortunately but you can influence other devices with it, e.g. the midi control device.
This has made me wonder. Is Renoise actually any good as an OSC source? How would you go about sending OSC to other programs and specific points in a Song? Or is it only really good as an OSC destination? Seems some kind of OSC Instrument may be in order or something…
I have since gotten MIDI CC messages to work properly with PureData so that’s probably what I’ll use that for now.
I’ve been reading up on Lua coroutines and the example provided at the bottom of the page here runs in the Renoise console properly. I think it might be possible to have a loop running in a coroutine that gets yielded to occasionally to check for pattern changes. If this works, it may perform better than waiting for the idle event. I do know that someone wrote a “ProcessSlicer” which is supposed to make this use case simpler but I was having a tough time getting it to run in 2.8.
“ProcessSlicer” or render slices to instruments?
I had a 2.8 version ready, but dev-team removed it from the tools page because the function is now natively available.