if your other program uses JACK, it can abslutely share the outputs with crone or be fed into the engine ports of crone. (i frequently use norns as a host for arbitrary audio processes sent through the crone mixer.) (if it doesn’t support JACK… it should
)
in fact, matron is entirely agnostic of what program is hosting engines. it only knows the OSC interface and the port number. (to more fully support alternative engine hosts, i suppose we should formally document the interface protocol and make the port number dynamically assignable.)
re: onsets, here is a gist
[ https://gist.github.com/catfact/2f591c7fa2d4e89a3358875bf8133896 ]
(this was a response to slightly different question [reporting pitch at time of onset for pitched percussion on norns.] but it demonstrates SendTrig which is a weird part)
further exercise: incorporate this into a norns engine and add a poll using periodic:false:
[ https://github.com/monome/norns/blob/main/sc/core/CroneEngine.sc#L35 ]
in engine class
Engine {
var p ;
...
alloc {
p = addPoll ("onsets", periodic: false ); // poll func is unused
...
}
// ... in OSCdef action
{
var x= msg[3]; // value from SendTrig, if any
p.update( x );
}
}
in lua, polls like this should be useable like any other, they just ignore requests to set the polling interval since they are driven by arbitrarily timed events on the engine side.
(i say “should” because i don’t think anyone has used this feature in earnest. i meant to make an onsets engine in response to your last q about this, but never got around to it. recently was considering that onsets would be useful enough to go in the system analysis stack alongside pitch and amp.)