/* The suite initialization function. * Opens the temporary file used by the tests. * Returns zero on success, non-zero otherwise. */ int ags_envelope_audio_signal_test_init_suite() { application_context = ags_audio_application_context_new(); g_object_ref(application_context); ags_application_context_prepare(application_context); ags_application_context_setup(application_context); /* create soundcard */ devout = g_object_new(AGS_TYPE_DEVOUT, NULL); g_object_ref(devout); /* create audio */ audio = ags_audio_new(devout); g_object_ref(audio); ags_audio_set_flags(audio, (AGS_AUDIO_OUTPUT_HAS_RECYCLING | AGS_AUDIO_INPUT_HAS_RECYCLING)); ags_audio_set_ability_flags(audio, AGS_SOUND_ABILITY_PLAYBACK); /* create input/output */ ags_audio_set_audio_channels(audio, 1, 0); ags_audio_set_pads(audio, AGS_TYPE_OUTPUT, 1, 0); ags_audio_set_pads(audio, AGS_TYPE_INPUT, 1, 0); ags_channel_set_ability_flags(audio->output, AGS_SOUND_ABILITY_PLAYBACK); ags_channel_set_ability_flags(audio->input, AGS_SOUND_ABILITY_PLAYBACK); ags_connectable_connect(AGS_CONNECTABLE(audio)); ags_connectable_connect(AGS_CONNECTABLE(audio->output)); ags_connectable_connect(AGS_CONNECTABLE(audio->input)); /* create ags-envelope */ recall = ags_recall_factory_create(audio, NULL, NULL, "ags-envelope", 0, 1, 0, 1, (AGS_RECALL_FACTORY_INPUT | AGS_RECALL_FACTORY_ADD | AGS_RECALL_FACTORY_PLAY | AGS_RECALL_FACTORY_RECALL), 0); return(0); }
void ags_envelope_dialog_connect(AgsConnectable *connectable) { AgsEnvelopeDialog *envelope_dialog; envelope_dialog = AGS_ENVELOPE_DIALOG(connectable); if((AGS_ENVELOPE_DIALOG_CONNECTED & (envelope_dialog->flags)) != 0){ return; } envelope_dialog->flags |= AGS_ENVELOPE_DIALOG_CONNECTED; ags_connectable_connect(AGS_CONNECTABLE(envelope_dialog->envelope_editor)); ags_connectable_connect(AGS_CONNECTABLE(envelope_dialog->envelope_info)); if(envelope_dialog->pattern_envelope != NULL){ ags_connectable_connect(AGS_CONNECTABLE(envelope_dialog->pattern_envelope)); } /* applicable */ g_signal_connect((GObject *) envelope_dialog->apply, "clicked", G_CALLBACK(ags_envelope_dialog_apply_callback), (gpointer) envelope_dialog); g_signal_connect((GObject *) envelope_dialog->ok, "clicked", G_CALLBACK(ags_envelope_dialog_ok_callback), (gpointer) envelope_dialog); g_signal_connect((GObject *) envelope_dialog->cancel, "clicked", G_CALLBACK(ags_envelope_dialog_cancel_callback), (gpointer) envelope_dialog); g_signal_connect((GObject *) envelope_dialog, "delete-event", G_CALLBACK(ags_envelope_dialog_delete_event), (gpointer) envelope_dialog); }
void ags_machine_resize_audio_channels_callback(AgsMachine *machine, guint audio_channels, guint audio_channels_old, gpointer data) { GList *pad_list; GList *line_list; guint i; /* resize */ if((AGS_MACHINE_CONNECTED & (machine->flags)) != 0){ if(audio_channels > audio_channels_old){ if(machine->input != NULL){ pad_list = gtk_container_get_children(GTK_CONTAINER(machine->input)); while(pad_list != NULL){ line_list = gtk_container_get_children((GtkContainer *) AGS_PAD(pad_list->data)->expander_set); line_list = g_list_nth(line_list, audio_channels_old); for(i = 0; i < audio_channels - audio_channels_old; i++){ ags_connectable_connect(AGS_CONNECTABLE(line_list->data)); line_list = line_list->next; } pad_list = pad_list->next; } } if(machine->output != NULL){ pad_list = gtk_container_get_children(GTK_CONTAINER(machine->output)); while(pad_list != NULL){ line_list = gtk_container_get_children((GtkContainer *) AGS_PAD(pad_list->data)->expander_set); line_list = g_list_nth(line_list, audio_channels_old); for(i = 0; i < audio_channels - audio_channels_old; i++){ ags_connectable_connect(AGS_CONNECTABLE(line_list->data)); line_list = line_list->next; } pad_list = pad_list->next; } } } } }
void ags_automation_editor_connect(AgsConnectable *connectable) { AgsAutomationEditor *automation_editor; automation_editor = AGS_AUTOMATION_EDITOR(connectable); g_signal_connect((GObject *) automation_editor->machine_selector, "changed\0", G_CALLBACK(ags_automation_editor_machine_changed_callback), (gpointer) automation_editor); /* */ ags_connectable_connect(AGS_CONNECTABLE(automation_editor->automation_toolbar)); ags_connectable_connect(AGS_CONNECTABLE(automation_editor->machine_selector)); }
/* The suite initialization function. * Opens the temporary file used by the tests. * Returns zero on success, non-zero otherwise. */ int ags_mute_channel_test_init_suite() { application_context = ags_audio_application_context_new(); g_object_ref(application_context); ags_application_context_prepare(application_context); ags_application_context_setup(application_context); /* create soundcard */ devout = g_object_new(AGS_TYPE_DEVOUT, NULL); g_object_ref(devout); /* create audio */ audio = ags_audio_new(devout); g_object_ref(audio); ags_audio_set_flags(audio, (AGS_AUDIO_OUTPUT_HAS_RECYCLING | AGS_AUDIO_INPUT_HAS_RECYCLING)); ags_audio_set_ability_flags(audio, AGS_SOUND_ABILITY_PLAYBACK); /* create input/output */ ags_audio_set_audio_channels(audio, 1, 0); ags_audio_set_pads(audio, AGS_TYPE_OUTPUT, 1, 0); ags_audio_set_pads(audio, AGS_TYPE_INPUT, 1, 0); ags_channel_set_ability_flags(audio->output, AGS_SOUND_ABILITY_PLAYBACK); ags_channel_set_ability_flags(audio->input, AGS_SOUND_ABILITY_PLAYBACK); ags_connectable_connect(AGS_CONNECTABLE(audio)); ags_connectable_connect(AGS_CONNECTABLE(audio->output)); ags_connectable_connect(AGS_CONNECTABLE(audio->input)); return(0); }
void ags_line_editor_connect(AgsConnectable *connectable) { AgsLineEditor *line_editor; line_editor = AGS_LINE_EDITOR(connectable); g_signal_connect((GObject *) line_editor, "destroy\0", G_CALLBACK(ags_line_editor_destroy_callback), (gpointer) line_editor); g_signal_connect((GObject *) line_editor, "show\0", G_CALLBACK(ags_line_editor_show_callback), (gpointer) line_editor); ags_connectable_connect(AGS_CONNECTABLE(line_editor->link_editor)); ags_connectable_connect(AGS_CONNECTABLE(line_editor->member_editor)); }
void ags_application_context_connect(AgsConnectable *connectable) { AgsApplicationContext *application_context; application_context = AGS_APPLICATION_CONTEXT(connectable); if((AGS_APPLICATION_CONTEXT_CONNECTED & (application_context->flags)) != 0) return; application_context->flags |= AGS_APPLICATION_CONTEXT_CONNECTED; if((AGS_APPLICATION_CONTEXT_DEFAULT & (application_context->flags)) != 0){ GList *list; list = application_context->sibling; while(list != NULL){ if(application_context != list->data){ ags_connectable_connect(AGS_CONNECTABLE(list->data)); } list = list->next; } } /* note main loop won't connect here */ }
void ags_recall_connect(AgsConnectable *connectable) { AgsRecall *recall; AgsRecallHandler *recall_handler; GList *list; recall = AGS_RECALL(connectable); list = recall->children; while(list != NULL){ ags_connectable_connect(AGS_CONNECTABLE(list->data)); list = list->next; } /* handlers */ list = recall->handlers; while(list != NULL){ recall_handler = AGS_RECALL_HANDLER(list->data); recall_handler->handler = g_signal_connect(G_OBJECT(recall), recall_handler->signal_name, G_CALLBACK(recall_handler->callback), recall_handler->data); list = list->next; } recall->flags |= AGS_RECALL_CONNECTED; }
void ags_machine_popup_connection_editor_callback(GtkWidget *widget, AgsMachine *machine) { AgsConnectionEditor *connection_editor; if(machine->connection_editor == NULL){ connection_editor = ags_connection_editor_new(NULL); if((AGS_MACHINE_SHOW_AUDIO_OUTPUT_CONNECTION & (machine->connection_flags)) != 0){ connection_editor->flags |= AGS_CONNECTION_EDITOR_SHOW_OUTPUT; } if((AGS_MACHINE_SHOW_AUDIO_INPUT_CONNECTION & (machine->connection_flags)) != 0){ connection_editor->flags |= AGS_CONNECTION_EDITOR_SHOW_INPUT; } ags_connection_editor_set_machine(connection_editor, machine); machine->connection_editor = (GtkDialog *) connection_editor; ags_connectable_connect(AGS_CONNECTABLE(connection_editor)); ags_applicable_reset(AGS_APPLICABLE(connection_editor)); gtk_widget_show_all((GtkWidget *) connection_editor); }else{ connection_editor = (AgsConnectionEditor *) machine->connection_editor; } gtk_widget_show_all((GtkWidget *) connection_editor); }
void ags_connectable_test_disconnect() { GObject *current; GType current_type; guint i; gboolean success; success = TRUE; for(i = 0; connectable_test_types[i] != G_TYPE_NONE; i++){ current = g_object_new(connectable_test_types[i], NULL); if(AGS_CONNECTABLE_GET_INTERFACE(AGS_CONNECTABLE(current))->disconnect == NULL){ g_message("AgsConnectable::disconnect missing: %s", G_OBJECT_TYPE_NAME(current)); success = FALSE; } ags_connectable_connect(current); ags_connectable_disconnect(current); } CU_ASSERT(success); }
void ags_midi_preferences_add_callback(GtkWidget *widget, AgsMidiPreferences *midi_preferences) { AgsWindow *window; AgsPreferences *preferences; AgsSequencerEditor *sequencer_editor; AgsSequencerThread *sequencer_thread; AgsThread *main_loop; AgsApplicationContext *application_context; GObject *sequencer; GList *start_list, *list; preferences = (AgsPreferences *) gtk_widget_get_ancestor(GTK_WIDGET(midi_preferences), AGS_TYPE_PREFERENCES); window = (AgsWindow *) preferences->window; application_context = (AgsApplicationContext *) window->application_context; main_loop = ags_concurrency_provider_get_main_loop(AGS_CONCURRENCY_PROVIDER(application_context)); /* retrieve first sequencer */ sequencer = NULL; list = start_list = ags_sound_provider_get_sequencer(AGS_SOUND_PROVIDER(application_context)); if(list != NULL){ sequencer = list->data; } g_list_free_full(start_list, g_object_unref); /* sequencer editor */ sequencer_editor = ags_sequencer_editor_new(); if(sequencer != NULL){ sequencer_editor->sequencer = sequencer; sequencer_editor->sequencer_thread = (GObject *) ags_thread_find_type(main_loop, AGS_TYPE_SEQUENCER_THREAD); } gtk_box_pack_start((GtkBox *) midi_preferences->sequencer_editor, (GtkWidget *) sequencer_editor, FALSE, FALSE, 0); ags_applicable_reset(AGS_APPLICABLE(sequencer_editor)); ags_connectable_connect(AGS_CONNECTABLE(sequencer_editor)); g_signal_connect(sequencer_editor->remove, "clicked", G_CALLBACK(ags_midi_preferences_remove_sequencer_editor_callback), midi_preferences); gtk_widget_show_all((GtkWidget *) sequencer_editor); g_object_unref(main_loop); }
void ags_menu_action_add_live_dssi_bridge_callback(GtkWidget *menu_item, gpointer data) { AgsWindow *window; AgsLiveDssiBridge *live_dssi_bridge; AgsThread *gui_thread; AgsAddAudio *add_audio; AgsApplicationContext *application_context; gchar *filename, *effect; filename = g_object_get_data((GObject *) menu_item, AGS_MENU_ITEM_FILENAME_KEY); effect = g_object_get_data((GObject *) menu_item, AGS_MENU_ITEM_EFFECT_KEY); application_context = ags_application_context_get_instance(); window = (AgsWindow *) ags_ui_provider_get_window(AGS_UI_PROVIDER(application_context)); gui_thread = ags_ui_provider_get_gui_thread(AGS_UI_PROVIDER(application_context)); /* create live dssi bridge */ live_dssi_bridge = ags_live_dssi_bridge_new(G_OBJECT(window->soundcard), filename, effect); add_audio = ags_add_audio_new((AgsApplicationContext *) window->application_context, AGS_MACHINE(live_dssi_bridge)->audio); ags_gui_thread_schedule_task((AgsGuiThread *) gui_thread, (GObject *) add_audio); gtk_box_pack_start((GtkBox *) window->machines, GTK_WIDGET(live_dssi_bridge), FALSE, FALSE, 0); /* connect everything */ ags_connectable_connect(AGS_CONNECTABLE(live_dssi_bridge)); /* */ AGS_MACHINE(live_dssi_bridge)->audio->audio_channels = 2; /* */ ags_audio_set_pads(AGS_MACHINE(live_dssi_bridge)->audio, AGS_TYPE_INPUT, 128, 0); ags_audio_set_pads(AGS_MACHINE(live_dssi_bridge)->audio, AGS_TYPE_OUTPUT, 1, 0); /* */ ags_live_dssi_bridge_load(live_dssi_bridge); /* */ gtk_widget_show_all(GTK_WIDGET(live_dssi_bridge)); }
void ags_machine_resize_pads_callback(AgsMachine *machine, GType channel_type, guint pads, guint pads_old, gpointer data) { GList *pad_list; /* resize */ if((AGS_MACHINE_CONNECTED & (machine->flags)) != 0){ if(pads > pads_old){ if(g_type_is_a(channel_type, AGS_TYPE_INPUT)){ if(machine->input != NULL){ pad_list = gtk_container_get_children(GTK_CONTAINER(machine->input)); pad_list = g_list_nth(pad_list, pads_old); while(pad_list != NULL){ ags_connectable_connect(AGS_CONNECTABLE(pad_list->data)); pad_list = pad_list->next; } } } if(g_type_is_a(channel_type, AGS_TYPE_OUTPUT)){ if(machine->output != NULL){ pad_list = gtk_container_get_children(GTK_CONTAINER(machine->output)); pad_list = g_list_nth(pad_list, pads_old); while(pad_list != NULL){ ags_connectable_connect(AGS_CONNECTABLE(pad_list->data)); pad_list = pad_list->next; } } } } } }
int ags_machine_popup_properties_activate_callback(GtkWidget *widget, AgsMachine *machine) { machine->properties = (GtkDialog *) ags_machine_editor_new(machine); gtk_window_set_default_size((GtkWindow *) machine->properties, -1, 400); ags_connectable_connect(AGS_CONNECTABLE(machine->properties)); ags_applicable_reset(AGS_APPLICABLE(machine->properties)); gtk_widget_show_all((GtkWidget *) machine->properties); return(0); }
/** * ags_recall_add_dependency: * @recall an #AgsRecall * @recall_dependency an #AgsRecallDependency * * Associate a new dependency for this recall. */ void ags_recall_add_dependency(AgsRecall *recall, AgsRecallDependency *recall_dependency) { if(recall == NULL || recall_dependency == NULL) return; g_object_ref(recall_dependency); recall->dependencies = g_list_prepend(recall->dependencies, recall_dependency); ags_connectable_connect(AGS_CONNECTABLE(recall_dependency)); }
void ags_menu_bar_add_drum_callback(GtkWidget *menu_item, AgsMenuBar *menu_bar) { AgsWindow *window; AgsDrum *drum; AgsAddAudio *add_audio; AgsThread *main_loop; AgsTaskThread *task_thread; AgsApplicationContext *application_context; window = (AgsWindow *) gtk_widget_get_ancestor((GtkWidget *) menu_bar, AGS_TYPE_WINDOW); application_context = window->application_context; main_loop = application_context->main_loop; task_thread = ags_thread_find_type(main_loop, AGS_TYPE_TASK_THREAD); drum = ags_drum_new(G_OBJECT(window->soundcard)); add_audio = ags_add_audio_new(window->soundcard, AGS_MACHINE(drum)->audio); ags_task_thread_append_task(task_thread, AGS_TASK(add_audio)); gtk_box_pack_start((GtkBox *) window->machines, GTK_WIDGET(drum), FALSE, FALSE, 0); /* connect everything */ ags_connectable_connect(AGS_CONNECTABLE(drum)); /* */ gtk_widget_show_all(GTK_WIDGET(drum)); /* */ drum->machine.audio->audio_channels = 2; /* AgsDrumInputPad */ ags_audio_set_pads(drum->machine.audio, AGS_TYPE_INPUT, 8); ags_audio_set_pads(drum->machine.audio, AGS_TYPE_OUTPUT, 1); ags_machine_find_port(AGS_MACHINE(drum)); gtk_widget_show_all(drum->output_pad); gtk_widget_show_all(drum->input_pad); }
void ags_mixer_set_pads(AgsAudio *audio, GType type, guint pads, guint pads_old, gpointer data) { AgsMixer *mixer; AgsChannel *channel; GList *list, *list_next; guint i, j; mixer = (AgsMixer *) audio->machine; if(type == AGS_TYPE_INPUT){ AgsMixerInputPad *mixer_input_pad; if(pads_old < pads){ channel = ags_channel_nth(audio->input, pads_old * audio->audio_channels); for(i = pads_old; i < pads; i++){ mixer_input_pad = ags_mixer_input_pad_new(channel); gtk_box_pack_start((GtkBox *) mixer->input_pad, (GtkWidget *) mixer_input_pad, FALSE, FALSE, 0); ags_pad_resize_lines((AgsPad *) mixer_input_pad, AGS_TYPE_MIXER_INPUT_LINE, AGS_AUDIO(channel->audio)->audio_channels, 0); if(GTK_WIDGET_VISIBLE((GtkWidget *) mixer)){ ags_connectable_connect(AGS_CONNECTABLE(mixer_input_pad)); ags_pad_find_port(AGS_PAD(mixer_input_pad)); gtk_widget_show_all((GtkWidget *) mixer_input_pad); } channel = channel->next_pad; } }else{ /* destroy AgsPad's */ list = gtk_container_get_children((GtkContainer *) mixer->input_pad); list = g_list_nth(list, pads); while(list != NULL){ list_next = list->next; gtk_widget_destroy((GtkWidget *) list->data); list = list_next; } } } }
void ags_machine_popup_properties_activate_callback(GtkWidget *widget, AgsMachine *machine) { machine->properties = (GtkDialog *) ags_machine_editor_new(machine); g_signal_connect_after(machine->properties, "destroy", G_CALLBACK(ags_machine_popup_properties_destroy_callback), machine); gtk_window_set_default_size((GtkWindow *) machine->properties, -1, 400); ags_connectable_connect(AGS_CONNECTABLE(machine->properties)); ags_applicable_reset(AGS_APPLICABLE(machine->properties)); gtk_widget_show_all((GtkWidget *) machine->properties); }
void ags_menu_action_add_matrix_callback(GtkWidget *menu_item, gpointer data) { AgsWindow *window; AgsMatrix *matrix; AgsThread *gui_thread; AgsAddAudio *add_audio; AgsApplicationContext *application_context; application_context = ags_application_context_get_instance(); window = (AgsWindow *) ags_ui_provider_get_window(AGS_UI_PROVIDER(application_context)); gui_thread = ags_ui_provider_get_gui_thread(AGS_UI_PROVIDER(application_context)); /* create matrix */ matrix = ags_matrix_new(G_OBJECT(window->soundcard)); add_audio = ags_add_audio_new((AgsApplicationContext *) window->application_context, AGS_MACHINE(matrix)->audio); ags_gui_thread_schedule_task((AgsGuiThread *) gui_thread, (GObject *) add_audio); gtk_box_pack_start((GtkBox *) window->machines, GTK_WIDGET(matrix), FALSE, FALSE, 0); /* connect everything */ ags_connectable_connect(AGS_CONNECTABLE(matrix)); /* */ AGS_MACHINE(matrix)->audio->audio_channels = 1; /* AgsMatrixInputPad */ ags_audio_set_pads(AGS_MACHINE(matrix)->audio, AGS_TYPE_INPUT, 78, 0); ags_audio_set_pads(AGS_MACHINE(matrix)->audio, AGS_TYPE_OUTPUT, 1, 0); /* */ gtk_widget_show_all(GTK_WIDGET(matrix)); }
void ags_libao_connect(AgsConnectable *connectable) { AgsLibao *libao; GList *list; libao = AGS_LIBAO(connectable); list = libao->audio; while(list != NULL) { ags_connectable_connect(AGS_CONNECTABLE(list->data)); list = list->next; } }
void ags_devout_connect(AgsConnectable *connectable) { AgsDevout *devout; GList *list; devout = AGS_DEVOUT(connectable); list = devout->audio; while(list != NULL){ ags_connectable_connect(AGS_CONNECTABLE(list->data)); list = list->next; } }
void ags_wave_window_connect(AgsConnectable *connectable) { AgsWaveWindow *wave_window; wave_window = AGS_WAVE_WINDOW(connectable); if((AGS_WAVE_WINDOW_CONNECTED & (wave_window->flags)) != 0){ return; } wave_window->flags |= AGS_WAVE_WINDOW_CONNECTED; if(wave_window->wave_editor != NULL){ ags_connectable_connect(AGS_CONNECTABLE(wave_window->wave_editor)); } }
void ags_xorg_application_context_connect(AgsConnectable *connectable) { AgsXorgApplicationContext *xorg_application_context; xorg_application_context = AGS_XORG_APPLICATION_CONTEXT(connectable); if((AGS_APPLICATION_CONTEXT_CONNECTED & (AGS_APPLICATION_CONTEXT(xorg_application_context)->flags)) != 0) { return; } ags_xorg_application_context_parent_connectable_interface->connect(connectable); g_message("connecting gui\0"); ags_connectable_connect(AGS_CONNECTABLE(xorg_application_context->window)); }
void ags_menu_bar_add_lv2_bridge_callback(GtkWidget *menu_item, AgsMenuBar *menu_bar) { AgsWindow *window; AgsLv2Bridge *lv2_bridge; AgsAddAudio *add_audio; AgsThread *main_loop; AgsTaskThread *task_thread; AgsApplicationContext *application_context; window = (AgsWindow *) gtk_widget_get_ancestor((GtkWidget *) menu_bar, AGS_TYPE_WINDOW); application_context = window->application_context; main_loop = application_context->main_loop; task_thread = ags_thread_find_type(main_loop, AGS_TYPE_TASK_THREAD); lv2_bridge = ags_lv2_bridge_new(G_OBJECT(window->soundcard), g_object_get_data(menu_item, AGS_MENU_BAR_LV2_FILENAME_KEY), g_object_get_data(menu_item, AGS_MENU_BAR_LV2_URI_KEY)); add_audio = ags_add_audio_new(window->soundcard, AGS_MACHINE(lv2_bridge)->audio); ags_task_thread_append_task(task_thread, AGS_TASK(add_audio)); gtk_box_pack_start((GtkBox *) window->machines, (GtkWidget *) lv2_bridge, FALSE, FALSE, 0); ags_lv2_bridge_load(lv2_bridge); ags_connectable_connect(AGS_CONNECTABLE(lv2_bridge)); // lv2_bridge->machine.audio->frequence = ; lv2_bridge->machine.audio->audio_channels = 2; ags_audio_set_pads(AGS_MACHINE(lv2_bridge)->audio, AGS_TYPE_INPUT, 1); ags_audio_set_pads(AGS_MACHINE(lv2_bridge)->audio, AGS_TYPE_OUTPUT, 1); ags_machine_find_port(AGS_MACHINE(lv2_bridge)); gtk_widget_show_all((GtkWidget *) lv2_bridge); }
void ags_synth_input_line_connect(AgsConnectable *connectable) { AgsSynthInputLine *synth_input_line; synth_input_line = AGS_SYNTH_INPUT_LINE(connectable); if((AGS_LINE_CONNECTED & (AGS_LINE(synth_input_line)->flags)) != 0){ return; } ags_synth_input_line_parent_connectable_interface->connect(connectable); ags_connectable_connect(AGS_CONNECTABLE(synth_input_line->oscillator)); g_signal_connect_after((GObject *) synth_input_line->oscillator, "control-changed", G_CALLBACK(ags_synth_input_line_oscillator_control_changed_callback), (gpointer) synth_input_line); }
void ags_menu_action_add_audiorec_callback(GtkWidget *menu_item, gpointer data) { AgsWindow *window; AgsAudiorec *audiorec; AgsThread *gui_thread; AgsAddAudio *add_audio; AgsApplicationContext *application_context; application_context = ags_application_context_get_instance(); window = (AgsWindow *) ags_ui_provider_get_window(AGS_UI_PROVIDER(application_context)); gui_thread = ags_ui_provider_get_gui_thread(AGS_UI_PROVIDER(application_context)); /* create audiorec */ audiorec = ags_audiorec_new(G_OBJECT(window->soundcard)); add_audio = ags_add_audio_new((AgsApplicationContext *) window->application_context, AGS_MACHINE(audiorec)->audio); ags_gui_thread_schedule_task((AgsGuiThread *) gui_thread, (GObject *) add_audio); gtk_box_pack_start((GtkBox *) window->machines, (GtkWidget *) audiorec, FALSE, FALSE, 0); ags_connectable_connect(AGS_CONNECTABLE(audiorec)); AGS_MACHINE(audiorec)->audio->audio_channels = 2; ags_audio_set_pads(AGS_MACHINE(audiorec)->audio, AGS_TYPE_INPUT, 1, 0); ags_audio_set_pads(AGS_MACHINE(audiorec)->audio, AGS_TYPE_OUTPUT, 1, 0); gtk_widget_show_all((GtkWidget *) audiorec); }
void ags_menu_bar_add_panel_callback(GtkWidget *menu_item, AgsMenuBar *menu_bar) { AgsWindow *window; AgsPanel *panel; AgsAddAudio *add_audio; AgsThread *main_loop; AgsTaskThread *task_thread; AgsApplicationContext *application_context; window = (AgsWindow *) gtk_widget_get_ancestor((GtkWidget *) menu_bar, AGS_TYPE_WINDOW); application_context = window->application_context; main_loop = application_context->main_loop; task_thread = ags_thread_find_type(main_loop, AGS_TYPE_TASK_THREAD); panel = ags_panel_new(G_OBJECT(window->soundcard)); add_audio = ags_add_audio_new(window->soundcard, AGS_MACHINE(panel)->audio); ags_task_thread_append_task(task_thread, AGS_TASK(add_audio)); gtk_box_pack_start((GtkBox *) window->machines, GTK_WIDGET(panel), FALSE, FALSE, 0); ags_connectable_connect(AGS_CONNECTABLE(panel)); gtk_widget_show_all(GTK_WIDGET(panel)); AGS_MACHINE(panel)->audio->audio_channels = 2; ags_audio_set_pads(AGS_MACHINE(panel)->audio, AGS_TYPE_INPUT, 1); ags_audio_set_pads(AGS_MACHINE(panel)->audio, AGS_TYPE_OUTPUT, 1); ags_machine_find_port(AGS_MACHINE(panel)); gtk_widget_show_all(panel->vbox); }
void ags_menu_bar_preferences_callback(GtkWidget *menu_item, AgsMenuBar *menu_bar) { AgsWindow *window; window = (AgsWindow *) gtk_widget_get_ancestor((GtkWidget *) menu_bar, AGS_TYPE_WINDOW); if(window->preferences != NULL){ return; } window->preferences = ags_preferences_new(); window->preferences->parent = GTK_WINDOW(window); ags_applicable_reset(AGS_APPLICABLE(window->preferences)); ags_connectable_connect(AGS_CONNECTABLE(window->preferences)); gtk_widget_show_all(GTK_WIDGET(window->preferences)); }
void ags_track_collection_connect(AgsConnectable *connectable) { AgsTrackCollection *track_collection; GList *list, *list_start; track_collection = AGS_TRACK_COLLECTION(connectable); /* children */ list_start = list = gtk_container_get_children(track_collection->child); while(list != NULL){ ags_connectable_connect(AGS_CONNECTABLE(list->data)); list = list->next; } g_list_free(list_start); }
void ags_machine_popup_envelope_callback(GtkWidget *widget, AgsMachine *machine) { AgsEnvelopeDialog *envelope_dialog; if(machine->envelope_dialog == NULL){ envelope_dialog = ags_envelope_dialog_new(machine); if((AGS_MACHINE_IS_SEQUENCER & (machine->flags)) != 0){ ags_envelope_dialog_add_pattern_tab(envelope_dialog); } machine->envelope_dialog = (GtkDialog *) envelope_dialog; ags_connectable_connect(AGS_CONNECTABLE(envelope_dialog)); ags_applicable_reset(AGS_APPLICABLE(envelope_dialog)); gtk_widget_show_all((GtkWidget *) envelope_dialog); } }