#include #include #include #include #include jack_client_t *client; jack_port_t *iport; jack_port_t *oport; int wasted_loops = 0; int sleep_seconds = 1; int sleep_in_period = 100; int counter = 0; int process(jack_nframes_t frames, void *arg) { // std::cout << "process callback" << std::endl; jack_default_audio_sample_t *ibuf; ibuf = (jack_default_audio_sample_t*)jack_port_get_buffer(iport, frames); jack_default_audio_sample_t *obuf; obuf = (jack_default_audio_sample_t*)jack_port_get_buffer(oport, frames); for (jack_nframes_t frame = 0; frame < frames; frame++) { for (int i = 0; i < wasted_loops; ++i) { // do nothing } obuf[frame] = ibuf[frame]; } counter++; if (counter == sleep_in_period) { sleep(sleep_seconds); } return 0; } void signalled(int sig) { std::cout << "signalled" << std::endl; } int main(int argc, char *argv[]) { // default = 60 seconds unsigned int seconds_to_run = 60; if (argc > 1) { std::stringstream sec_stream; sec_stream << argv[1]; sec_stream >> seconds_to_run; if (argc > 2) { std::stringstream waste_stream; waste_stream << argv[2]; waste_stream >> wasted_loops; std::cout << "wasted loops: " << wasted_loops << std::endl; } } signal(SIGUSR2, signalled); std::cout << "seconds to run: " << seconds_to_run << std::endl; std::stringstream pid_stream; pid_stream << getpid(); std::cout << "client_new" << std::endl; client = jack_client_new(pid_stream.str().c_str()); std::cout << "port_register." << std::endl; iport = jack_port_register(client, "in", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput|JackPortIsTerminal, 0); oport = jack_port_register(client, "out", JACK_DEFAULT_AUDIO_TYPE, JackPortIsTerminal|JackPortIsOutput, 0); std::cout << "set_process_callback" << std::endl; jack_set_process_callback(client, process, 0); std::cout << "activate" << std::endl; jack_activate(client); std::cout << "running" << std::endl; // while(1) {sleep(1);}; sleep(seconds_to_run); jack_deactivate(client); jack_client_close(client); }