#include #include #include jack_port_t* port_in; jack_port_t* port_out; jack_port_t* port_B_out; int process_A_rt(jack_nframes_t nframes, void* arg){ jack_default_audio_sample_t* in_buffer = jack_port_get_buffer(port_in, nframes); jack_default_audio_sample_t* out_buffer = jack_port_get_buffer(port_out, nframes); memcpy(out_buffer, in_buffer, sizeof(jack_default_audio_sample_t)*nframes); } int process_B_rt(jack_nframes_t nframes, void* arg){ jack_default_audio_sample_t* out_B_buffer = jack_port_get_buffer(port_B_out, nframes); //do something with the buffer memset(out_B_buffer, '\0', sizeof(jack_default_audio_sample_t)*nframes); } int main(){ jack_options_t options = JackNullOption; jack_status_t status_A = 0; //---------------------------------------------------------------------------------------------------- //first client jack_client_t* client = jack_client_open("test_A", options &status_A, NULL); port_in = jack_port_register(client, "a_in", JACK_DEFAULT_AUDIO_TYPE, 1, 0); port_out = jack_port_register(client, "a_out", JACK_DEFAULT_AUDIO_TYPE, 2, 0); jack_set_process_callback(client, process_A_rt, NULL); //---------------------------------------------------------------------------------------------------- //second client jack_options_t options_B = JackNullOption; jack_status_t status_B = 0; jack_client_t* client_B = jack_client_open("test_B", options_B &status_B, NULL); port_B_out = jack_port_register(client_B, "b_out", JACK_DEFAULT_AUDIO_TYPE, 2, 0); jack_set_process_callback(client_B, process_B_rt, NULL); //activate the clients jack_activate(client); jack_activate(client_B); while(1){ char q; scanf("%c", &q); if(q=='q'){ break; } } jack_client_close(client); jack_client_close(client_B); return 0; }