Am Donnerstag, den 29.04.2010, 09:12 -0400 schrieb Paul Davis:
Rui has already basically answered this, but I'll
repeat. Every client
in the graph is only executed *once* per process cycle. Hence, given
A -> B -> A
any given process cycle only executes A once. thus the output of B is
not available to A until the next process cycle.
That's make me wonder, because I'm doing exactly that.
I have a client, with two input ports, and two output ports. Now I
connect the first output with a external jack client, and feed the data
back to input port 2 of my client. I can mix the data now with the
(saved buffer) data from port 1 and send the mix to outputport 2.
All I need is a seperate process for etch port.
Here is the simplistic callback, I wonder why that consider to didn't
work ? Isn't it the same like connect any other client ?
Were is my error in understand jack ?
regards hermann
int gx_jack_process (jack_nframes_t nframes, void *arg)
{
gInChannel[1] = (float
*)jack_port_get_buffer(input_ports[1], nframes);
for (int i = 0; i < gNumOutChans; i++)
gOutChannel[i] = (float
*)jack_port_get_buffer(output_ports[i], nframes);
GxEngine::instance()->compute(nframes, gInChannel,
gOutChannel); // here we send data to a external client connected to
input 2
gInChannel[2] = (float
*)jack_port_get_buffer(input_ports[2], nframes);
GxEngine::instance()->compute2_output( gInChannel,
gOutChannel,nframes);
}
return 0;
}