void ags_panel_input_line_class_init(AgsPanelInputLineClass *panel_input_line) { GObjectClass *gobject; GtkWidgetClass *widget; AgsLineClass *line; ags_panel_input_line_parent_class = g_type_class_peek_parent(panel_input_line); /* GObjectClass */ gobject = (GObjectClass *) panel_input_line; gobject->finalize = ags_panel_input_line_finalize; /* GtkWidgetClass */ widget = (GtkWidgetClass *) panel_input_line; widget->show = ags_panel_input_line_show; /* AgsLineClass */ line = AGS_LINE_CLASS(panel_input_line); line->set_channel = ags_panel_input_line_set_channel; line->map_recall = ags_panel_input_line_map_recall; }
void ags_synth_input_line_set_channel(AgsLine *line, AgsChannel *channel) { AGS_LINE_CLASS(ags_synth_input_line_parent_class)->set_channel(line, channel); /* empty */ }
void ags_drum_output_line_class_init(AgsDrumOutputLineClass *drum_output_line) { AgsLineClass *line; ags_drum_output_line_parent_class = g_type_class_peek_parent(drum_output_line); /* AgsLineClass */ line = AGS_LINE_CLASS(drum_output_line); line->set_channel = ags_drum_output_line_set_channel; }
void ags_drum_input_line_class_init(AgsDrumInputLineClass *drum_input_line) { AgsLineClass *line; ags_drum_input_line_parent_class = g_type_class_peek_parent(drum_input_line); /* AgsLineClass */ line = AGS_LINE_CLASS(drum_input_line); line->set_channel = ags_drum_input_line_set_channel; line->group_changed = ags_drum_input_line_group_changed; }
void ags_synth_input_line_map_recall(AgsLine *line, guint output_pad_start) { if((AGS_LINE_MAPPED_RECALL & (line->flags)) != 0 || (AGS_LINE_PREMAPPED_RECALL & (line->flags)) != 0){ return; } /* empty */ /* call parent */ AGS_LINE_CLASS(ags_synth_input_line_parent_class)->map_recall(line, output_pad_start); }
void ags_panel_input_line_set_channel(AgsLine *line, AgsChannel *channel) { AgsPanelInputLine *panel_input_line; AGS_LINE_CLASS(ags_panel_input_line_parent_class)->set_channel(line, channel); panel_input_line = AGS_PANEL_INPUT_LINE(line); #ifdef AGS_DEBUG g_message("ags_panel_input_line_set_channel - channel: %u\0", channel->line); #endif /* empty */ }
void ags_drum_input_line_set_channel(AgsLine *line, AgsChannel *channel) { AgsDrumInputLine *drum_input_line; AGS_LINE_CLASS(ags_drum_input_line_parent_class)->set_channel(line, channel); drum_input_line = AGS_DRUM_INPUT_LINE(line); #ifdef AGS_DEBUG g_message("ags_drum_input_line_set_channel - channel: %u\0", channel->line); #endif if(line->channel != NULL){ line->flags &= (~AGS_LINE_MAPPED_RECALL); } if(channel != NULL){ if(channel->pattern == NULL){ channel->pattern = g_list_alloc(); channel->pattern->data = (gpointer) ags_pattern_new(); ags_pattern_set_dim((AgsPattern *) channel->pattern->data, 4, 12, 64); } if((AGS_LINE_PREMAPPED_RECALL & (line->flags)) == 0){ ags_drum_input_line_map_recall(drum_input_line, 0); ags_line_find_port(line); }else{ //TODO:JK: make it advanced /* reset edit button */ if(line->channel->line == 0){ AgsDrum *drum; GtkToggleButton *selected_edit_button; drum = (AgsDrum *) gtk_widget_get_ancestor(GTK_WIDGET(line), AGS_TYPE_DRUM); drum->selected_pad = AGS_DRUM_INPUT_PAD(gtk_container_get_children((GtkContainer *) drum->input_pad)->data); drum->selected_edit_button = drum->selected_pad->edit; gtk_toggle_button_set_active((GtkToggleButton *) drum->selected_edit_button, TRUE); } } } }
void ags_synth_input_line_class_init(AgsSynthInputLineClass *synth_input_line) { AgsLineClass *line; GtkWidgetClass *widget; ags_synth_input_line_parent_class = g_type_class_peek_parent(synth_input_line); /* GtkWidgetClass */ widget = (GtkWidgetClass *) synth_input_line; widget->show = ags_synth_input_line_show; widget->show_all = ags_synth_input_line_show_all; /* AgsLineClass */ line = AGS_LINE_CLASS(synth_input_line); line->set_channel = ags_synth_input_line_set_channel; line->map_recall = ags_synth_input_line_map_recall; }
void ags_drum_output_line_set_channel(AgsLine *line, AgsChannel *channel) { AgsDrumOutputLine *drum_output_line; AGS_LINE_CLASS(ags_drum_output_line_parent_class)->set_channel(line, channel); drum_output_line = AGS_DRUM_OUTPUT_LINE(line); if(line->channel != NULL){ line->flags &= (~AGS_LINE_MAPPED_RECALL); } if(channel != NULL){ AgsDevout *devout; AgsAudioSignal *audio_signal; guint stop; devout = AGS_DEVOUT(AGS_AUDIO(channel->audio)->devout); stop = (guint) ceil(16.0 * AGS_DEVOUT_DEFAULT_DELAY * exp2(8.0 - 4.0) + 1.0); audio_signal = ags_audio_signal_new(devout, channel->first_recycling, NULL); audio_signal->flags |= AGS_AUDIO_SIGNAL_TEMPLATE; // ags_audio_signal_stream_resize(audio_signal, // stop); ags_recycling_add_audio_signal(channel->first_recycling, audio_signal); // audio_signal = ags_audio_signal_get_template(channel->first_recycling->audio_signal); // ags_audio_signal_stream_resize(audio_signal, stop); if((AGS_LINE_PREMAPPED_RECALL & (line->flags)) == 0){ ags_drum_output_line_add_default_recall(AGS_DRUM_OUTPUT_LINE(line)); } } }
void ags_panel_input_line_map_recall(AgsLine *line, guint output_pad_start) { AgsPanel *panel; AgsPanelInputLine *panel_input_line; AgsAudio *audio; AgsChannel *source; AgsChannel *current; AgsPlayChannel *play_channel; AgsPlayChannelRunMaster *play_channel_run; GList *list; if((AGS_LINE_MAPPED_RECALL & (line->flags)) != 0 || (AGS_LINE_PREMAPPED_RECALL & (line->flags)) != 0){ return; } panel_input_line = AGS_PANEL_INPUT_LINE(line); audio = AGS_AUDIO(line->channel->audio); panel = AGS_PANEL(audio->machine_widget); source = line->channel; /* ags-play */ ags_recall_factory_create(audio, NULL, NULL, "ags-play-master\0", source->audio_channel, source->audio_channel + 1, source->pad, source->pad + 1, (AGS_RECALL_FACTORY_INPUT, AGS_RECALL_FACTORY_PLAY | AGS_RECALL_FACTORY_ADD), 0); /* set audio channel */ list = source->play; while((list = ags_recall_template_find_type(list, AGS_TYPE_PLAY_CHANNEL)) != NULL){ GValue audio_channel_value = {0,}; play_channel = AGS_PLAY_CHANNEL(list->data); g_value_init(&audio_channel_value, G_TYPE_UINT64); g_value_set_uint64(&audio_channel_value, source->audio_channel); ags_port_safe_write(play_channel->audio_channel, &audio_channel_value); list = list->next; } /* call parent */ AGS_LINE_CLASS(ags_panel_input_line_parent_class)->map_recall(line, output_pad_start); }