static void create_osc (LADSPA_Handle instance, const char *value) { holharm_t *s = (holharm_t *) instance; printf ("value = %s\n", value); char *temp; char *host = lo_url_get_hostname (value); char *port = lo_url_get_port (value); char *path = lo_url_get_path (value); s->osc_server = 0; s->m_host = lo_address_new (host, port); s->osc_configure_path = osc_build_path (path, "/configure"); s->osc_server = lo_server_new (NULL, osc_error); lo_server_add_method (s->osc_server, s->osc_configure_path, "ss", NULL, NULL); temp = lo_server_get_url (s->osc_server); return; }
int main (int argc, char **argv) { int i; int lo_fd; fd_set rfds; struct timeval tv; int retval; int done = 0; int loadOK = 0; funcion = 0; gui.Pexit = 0 ; gui.Pexitprogram = 0; gui.ready = 0; gui.D_Vol_c = 0; gui.D_Tune_c = 0; gui.D_Portamento_c = 0; gui.D_LFO_Volume_c = 0; gui.D_LFO_Frequency_c = 0; gui.D_LFO_Delay_c = 0; gui.D_LFO_Wave_c = 0; gui.cop = 0; for (i = 0; i < 6; i++) { gui.D_Wave_c[i] = 0; gui.D_H_c[i] = 0; gui.D_HF_c[i] = 0; gui.D_OVol_c[i] = 0; gui.D_pLFO_c[i] = 0; gui.D_Attack_c[i] = 0; gui.D_Decay_c[i] = 0; gui.D_Sustain_c[i] = 0; gui.D_Release_c[i] = 0; } gui.D_Ftype_c = 0; gui.D_Fgain_c = 0; gui.D_Fcutoff_c = 0; gui.D_Fq_c = 0; gui.D_FLFO_c = 0; gui.D_FADSR_c = 0; gui.D_Fstages_c = 0; gui.D_Fvelocity_c = 0; gui.D_Algo_c = 0; New (); New_Bank (); char *url = argv[1]; char *host = lo_url_get_hostname (url); char *port = lo_url_get_port (url); char *path = lo_url_get_path (url); char *label = argv[3]; char *temp; pthread_create (&thr1, NULL, thread1, NULL); gui.ui_win->copy_label (argv[3]); gui.ui_win->show (); sprintf (gui.uBankFilename, "%s/Default.goomf", DATADIR); loadOK = loadbank (gui.uBankFilename); osc_server = 0; m_host = lo_address_new (host, port); osc_configure_path = osc_build_path (path, "/configure"); osc_control_path = osc_build_path (path, "/control"); osc_exiting_path = osc_build_path (path, "/exiting"); osc_hide_path = osc_build_path (path, "/hide"); osc_midi_path = osc_build_path (path, "/midi"); osc_program_path = osc_build_path (path, "/program"); osc_quit_path = osc_build_path (path, "/quit"); osc_show_path = osc_build_path (path, "/show"); osc_update_path = osc_build_path (path, "/update"); osc_server = lo_server_new (NULL, osc_error); lo_server_add_method (osc_server, osc_configure_path, "ss", configure_handler, NULL); lo_server_add_method (osc_server, osc_control_path, "if", control_handler, NULL); lo_server_add_method (osc_server, osc_hide_path, "", hide_handler, NULL); lo_server_add_method (osc_server, osc_program_path, "ii", program_handler, NULL); lo_server_add_method (osc_server, osc_quit_path, "", quit_handler, NULL); lo_server_add_method (osc_server, osc_exiting_path, "", exiting_handler, NULL); lo_server_add_method (osc_server, osc_show_path, "", show_handler, NULL); lo_server_add_method (osc_server, NULL, NULL, debug_handler, NULL); temp = lo_server_get_url (osc_server); myurl = osc_build_path (temp, (strlen (path) > 1 ? path + 1 : path)); lo_send (m_host, osc_update_path, "s", myurl); sleep (2); gui.d_osc_label->copy_label (myurl); gui.d_osc_label->redraw (); if (!loadOK) Send_laristra (); lo_fd = lo_server_get_socket_fd (osc_server); if (lo_fd > 0) { do { FD_ZERO (&rfds); FD_SET (lo_fd, &rfds); retval = select (lo_fd + 1, &rfds, NULL, NULL, NULL); if (retval == -1) { printf ("select() error\n"); exit (1); } else if (retval > 0) { if (FD_ISSET (0, &rfds)) { read_stdin (); } if (FD_ISSET (lo_fd, &rfds)) { lo_server_recv_noblock (osc_server, 0); } } } while (!done); } else { do { FD_ZERO (&rfds); FD_SET (0, &rfds); tv.tv_sec = 0; tv.tv_usec = 10000; retval = select (1, &rfds, NULL, NULL, &tv); if (retval == -1) { printf ("select() error\n"); exit (1); } else if (retval > 0 && FD_ISSET (0, &rfds)) { read_stdin (); } lo_server_recv_noblock (osc_server, 0); } while (!done); } free (host); free (port); free (path); free (osc_configure_path); free (osc_control_path); free (osc_exiting_path); free (osc_hide_path); free (osc_midi_path); free (osc_program_path); free (osc_quit_path); free (osc_show_path); free (osc_update_path); free (myurl); return (0); }
int main(int argc, char *argv[]) { char *host, *port, *path, *tmp_url; lo_server osc_server; gint osc_server_socket_tag; Y_DEBUG_INIT("WhySynth_gtk"); #ifdef Y_DEBUG GDB_MESSAGE(GDB_MAIN, " starting (pid %d)...\n", getpid()); #else fprintf(stderr, "WhySynth_gtk starting (pid %d)...\n", getpid()); #endif /* { int i; fprintf(stderr, "args:\n"); for(i=0; i<argc; i++) printf("%d: %s\n", i, argv[i]); } // debug */ gtk_init(&argc, &argv); if (argc > 1 && !strcmp(argv[1], "-test")) { gui_test_mode = 1; test_argv[0] = argv[0]; test_argv[1] = "osc.udp://localhost:9/test/mode"; if (argc >= 5) test_argv[4] = argv[4]; argc = 5; argv = test_argv; } else if (argc != 5) { fprintf(stderr, "usage: %s <osc url> <plugin dllname> <plugin label> <user-friendly id>\n" " or: %s -test\n", argv[0], argv[0]); exit(1); } /* set up OSC support */ osc_host_url = argv[1]; host = lo_url_get_hostname(osc_host_url); port = lo_url_get_port(osc_host_url); path = lo_url_get_path(osc_host_url); osc_host_address = lo_address_new(host, port); osc_configure_path = osc_build_path(path, "/configure"); osc_control_path = osc_build_path(path, "/control"); osc_exiting_path = osc_build_path(path, "/exiting"); osc_hide_path = osc_build_path(path, "/hide"); osc_midi_path = osc_build_path(path, "/midi"); osc_program_path = osc_build_path(path, "/program"); osc_quit_path = osc_build_path(path, "/quit"); osc_rate_path = osc_build_path(path, "/sample-rate"); osc_show_path = osc_build_path(path, "/show"); osc_update_path = osc_build_path(path, "/update"); osc_server = lo_server_new(NULL, osc_error); lo_server_add_method(osc_server, osc_configure_path, "ss", osc_configure_handler, NULL); lo_server_add_method(osc_server, osc_control_path, "if", osc_control_handler, NULL); lo_server_add_method(osc_server, osc_hide_path, "", osc_action_handler, "hide"); lo_server_add_method(osc_server, osc_program_path, "ii", osc_program_handler, NULL); lo_server_add_method(osc_server, osc_quit_path, "", osc_action_handler, "quit"); lo_server_add_method(osc_server, osc_rate_path, "i", osc_action_handler, "sample-rate"); lo_server_add_method(osc_server, osc_show_path, "", osc_action_handler, "show"); lo_server_add_method(osc_server, NULL, NULL, osc_debug_handler, NULL); tmp_url = lo_server_get_url(osc_server); osc_self_url = osc_build_path(tmp_url, (strlen(path) > 1 ? path + 1 : path)); free(tmp_url); GDB_MESSAGE(GDB_OSC, ": listening at %s\n", osc_self_url); /* set up GTK+ */ update_port_wavetable_counts(); create_windows(argv[4]); /* add OSC server socket to GTK+'s watched I/O */ if (lo_server_get_socket_fd(osc_server) < 0) { fprintf(stderr, "WhySynth_gtk fatal: OSC transport does not support exposing socket fd\n"); exit(1); } osc_server_socket_tag = gdk_input_add(lo_server_get_socket_fd(osc_server), GDK_INPUT_READ, osc_data_on_socket_callback, osc_server); /* default patches, temporary patchfile support */ gui_data_friendly_patches(); rebuild_patches_list(); patches_dirty = 0; last_configure_load_was_from_tmp = 0; create_patches_tmp_filename(path); /* schedule our update request */ update_request_timeout_tag = g_timeout_add(50, update_request_timeout_callback, NULL); /* let GTK+ take it from here */ gtk_main(); /* clean up and exit */ GDB_MESSAGE(GDB_MAIN, ": yep, we got to the cleanup!\n"); /* release test note, if playing */ release_test_note(); /* GTK+ cleanup */ if (update_request_timeout_tag != 0) gtk_timeout_remove(update_request_timeout_tag); gdk_input_remove(osc_server_socket_tag); /* say bye-bye */ if (!host_requested_quit) { lo_send(osc_host_address, osc_exiting_path, ""); } /* clean up patches */ if (patches) free(patches); if (project_directory) free(project_directory); /* clean up OSC support */ lo_server_free(osc_server); free(host); free(port); free(path); free(osc_configure_path); free(osc_control_path); free(osc_exiting_path); free(osc_hide_path); free(osc_midi_path); free(osc_program_path); free(osc_quit_path); free(osc_rate_path); free(osc_show_path); free(osc_update_path); free(osc_self_url); return 0; }