[SCM] gsequencer/upstream: fixed volume indicator and reversed AgsMatrix

jkraehemann-guest at users.alioth.debian.org jkraehemann-guest at users.alioth.debian.org
Mon Jun 15 11:29:27 UTC 2015


The following commit has been merged in the upstream branch:
commit ae91957912ff8e17d34c2b1fb9467ac969a99461
Author: Joël Krähemann <jkraehemann at gmail.com>
Date:   Mon Jun 15 13:26:01 2015 +0200

    fixed volume indicator and reversed AgsMatrix

diff --git a/Makefile.am b/Makefile.am
index b4299f6..7975bac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,7 +30,7 @@ appdata_DATA = ags.desktop
 EXTRA_DIST += ags.desktop.in
 CLEANFILES += $(appdata_DATA)
 
-ags_SOURCES = ./src/ags-lib/object/ags_connectable.c ./src/ags-lib/object/ags_connectable.h src/ags/lib/ags_combo_box_text.c src/ags/lib/ags_list.c src/ags/lib/ags_container.c src/ags/lib/ags_parameter.h src/ags/lib/ags_list.h src/ags/lib/ags_log.c src/ags/lib/ags_container.h src/ags/lib/ags_combo_box_text.h src/ags/lib/ags_log.h src/ags/lib/ags_parameter.c src/ags/X/editor/ags_notebook_callbacks.c src/ags/X/editor/ags_meter.h src/ags/X/editor/ags_toolbar.h src/ags/X/editor/ags_machine_radio_button.h src/ags/X/editor/ags_file_selection_callbacks.h src/ags/X/editor/ags_notebook_callbacks.h src/ags/X/editor/ags_note_edit.h src/ags/X/editor/ags_meter_callbacks.c src/ags/X/editor/ags_notebook.h src/ags/X/editor/ags_sf2_chooser.h src/ags/X/editor/ags_toolbar_mode_stock.h src/ags/X/editor/ags_meter_callbacks.h src/ags/X/editor/ags_toolbar_callbacks.c src/ags/X/editor/ags_machine_selector.c src/ags/X/editor/ags_machine_selector_callbacks.c src/ags/X/editor/ags_machine_radio_button.c src/ags/X/editor/ags_sf2_chooser.c src/ags/X/editor/ags_machine_selector_callbacks.h src/ags/X/editor/ags_sf2_chooser_callbacks.c src/ags/X/editor/ags_notebook.c src/ags/X/editor/ags_note_edit_callbacks.c src/ags/X/editor/ags_file_selection_callbacks.c src/ags/X/editor/ags_machine_selection.c src/ags/X/editor/ags_inline_player_callbacks.h src/ags/X/editor/ags_inline_player.c src/ags/X/editor/ags_meter.c src/ags/X/editor/ags_file_selection.h src/ags/X/editor/ags_inline_player.h src/ags/X/editor/ags_sf2_chooser_callbacks.h src/ags/X/editor/ags_file_selection.c src/ags/X/editor/ags_machine_selector.h src/ags/X/editor/ags_note_edit_callbacks.h src/ags/X/editor/ags_note_edit.c src/ags/X/editor/ags_inline_player_callbacks.c src/ags/X/editor/ags_toolbar_callbacks.h src/ags/X/editor/ags_machine_selection.h src/ags/X/editor/ags_toolbar.c src/ags/X/ags_line_callbacks.h src/ags/X/ags_plugin_preferences.c src/ags/X/ags_link_editor.c src/ags/X/ags_pad_callbacks.h src/ags/X/ags_machine_callbacks.c src/ags/X/ags_server_preferences_callbacks.h src/ags/X/ags_listing_editor_callbacks.c src/ags/X/ags_link_collection_editor_callbacks.c src/ags/X/ags_generic_preferences_callbacks.c src/ags/X/ags_property_collection_editor_callbacks.c src/ags/X/ags_property_collection_editor.h src/ags/X/ags_resize_editor.h src/ags/X/ags_property_editor.h src/ags/X/ags_window_callbacks.h src/ags/X/ags_property_editor_callbacks.c src/ags/X/machine/ags_synth_callbacks.h src/ags/X/machine/ags_synth.c src/ags/X/machine/ags_mixer.c src/ags/X/machine/ags_matrix_callbacks.c src/ags/X/machine/ags_panel_input_line.c src/ags/X/machine/ags_synth_input_line.c src/ags/X/machine/ags_drum_callbacks.h src/ags/X/machine/ags_mixer_callbacks.c src/ags/X/machine/ags_synth_callbacks.c src/ags/X/machine/ags_ffplayer_callbacks.h src/ags/X/machine/ags_drum_input_line.h src/ags/X/machine/ags_matrix.h src/ags/X/machine/ags_mixer_input_line.c src/ags/X/machine/ags_oscillator.c src/ags/X/machine/ags_oscillator.h src/ags/X/machine/ags_oscillator_callbacks.h src/ags/X/machine/ags_mixer.h src/ags/X/machine/ags_panel_input_pad.h src/ags/X/machine/ags_panel_input_pad.c src/ags/X/machine/ags_matrix.c src/ags/X/machine/ags_panel.h src/ags/X/machine/ags_drum_output_line_callbacks.c src/ags/X/machine/ags_ffplayer.h src/ags/X/machine/ags_panel_callbacks.c src/ags/X/machine/ags_mixer_input_pad.c src/ags/X/machine/ags_panel.c src/ags/X/machine/ags_drum.c src/ags/X/machine/ags_matrix_callbacks.h src/ags/X/machine/ags_drum_output_line.h src/ags/X/machine/ags_drum_output_pad.h src/ags/X/machine/ags_synth_input_pad.h src/ags/X/machine/ags_panel_callbacks.h src/ags/X/machine/ags_ffplayer.c src/ags/X/machine/ags_drum_output_line_callbacks.h src/ags/X/machine/ags_drum_output_pad_callbacks.c src/ags/X/machine/ags_drum_output_pad_callbacks.h src/ags/X/machine/ags_drum_input_pad_callbacks.h src/ags/X/machine/ags_oscillator_callbacks.c src/ags/X/machine/ags_drum_callbacks.c src/ags/X/machine/ags_synth_input_line.h src/ags/X/machine/ags_drum_input_pad_callbacks.c src/ags/X/machine/ags_drum_input_pad.c src/ags/X/machine/ags_panel_input_line.h src/ags/X/machine/ags_drum_input_line_callbacks.h src/ags/X/machine/ags_drum_output_line.c src/ags/X/machine/ags_mixer_callbacks.h src/ags/X/machine/ags_synth.h src/ags/X/machine/ags_mixer_input_line.h src/ags/X/machine/ags_drum.h src/ags/X/machine/ags_drum_input_line.c src/ags/X/machine/ags_ffplayer_callbacks.c src/ags/X/machine/ags_drum_output_pad.c src/ags/X/machine/ags_drum_input_pad.h src/ags/X/machine/ags_drum_input_line_callbacks.c src/ags/X/machine/ags_mixer_input_pad.h src/ags/X/machine/ags_synth_input_pad.c src/ags/X/ags_server_preferences.h src/ags/X/ags_line_editor_callbacks.h src/ags/X/ags_pad_editor_callbacks.c src/ags/X/ags_listing_editor_callbacks.h src/ags/X/ags_line_member_callbacks.c src/ags/X/ags_editor.h src/ags/X/ags_machine_editor.h src/ags/X/ags_plugin_preferences_callbacks.h src/ags/X/ags_export_window_callbacks.h src/ags/X/ags_editor_callbacks.c src/ags/X/ags_pad_editor.h src/ags/X/ags_server_preferences.c src/ags/X/ags_line_editor.c src/ags/X/ags_ladspa_browser.h src/ags/X/ags_audio_preferences.c src/ags/X/ags_pad.c src/ags/X/ags_line.c src/ags/X/ags_menu_bar_callbacks.c src/ags/X/ags_generic_preferences_callbacks.h src/ags/X/ags_pad.h src/ags/X/ags_audio_preferences_callbacks.h src/ags/X/ags_generic_preferences.c src/ags/X/ags_window.c src/ags/X/ags_machine_editor_callbacks.h src/ags/X/ags_editor_callbacks.h src/ags/X/ags_menu_bar_callbacks.h src/ags/X/ags_line_member_editor.h src/ags/X/ags_property_collection_editor_callbacks.h src/ags/X/ags_line_editor_callbacks.c src/ags/X/ags_property_editor.c src/ags/X/ags_link_editor_callbacks.c src/ags/X/ags_server_preferences_callbacks.c src/ags/X/ags_pad_callbacks.c src/ags/X/ags_line_member.h src/ags/X/ags_audio_preferences_callbacks.c src/ags/X/ags_performance_preferences.h src/ags/X/ags_property_collection_editor.c src/ags/X/ags_performance_preferences_callbacks.h src/ags/X/ags_line.h src/ags/X/ags_machine.c src/ags/X/ags_preferences_callbacks.c src/ags/X/ags_export_window.c src/ags/X/ags_menu_bar.c src/ags/X/ags_plugin_preferences_callbacks.c src/ags/X/ags_line_member_callbacks.h src/ags/X/ags_preferences.c src/ags/X/ags_export_window.h src/ags/X/ags_pad_editor_callbacks.h src/ags/X/ags_window.h src/ags/X/ags_machine_callbacks.h src/ags/X/ags_machine.h src/ags/X/ags_line_callbacks.c src/ags/X/ags_link_editor_callbacks.h src/ags/X/ags_navigation_callbacks.h src/ags/X/ags_pad_editor.c src/ags/X/ags_ladspa_browser.c src/ags/X/ags_editor.c src/ags/X/ags_resize_editor.c src/ags/X/ags_property_listing_editor.c src/ags/X/ags_property_editor_callbacks.h src/ags/X/ags_line_member_editor_callbacks.h src/ags/X/ags_window_callbacks.c src/ags/X/ags_audio_preferences.h src/ags/X/ags_navigation_callbacks.c src/ags/X/ags_plugin_preferences.h src/ags/X/ags_performance_preferences_callbacks.c src/ags/X/ags_line_member.c src/ags/X/ags_preferences.h src/ags/X/ags_generic_preferences.h src/ags/X/ags_navigation.h src/ags/X/ags_listing_editor.h src/ags/X/ags_performance_preferences.c src/ags/X/ags_link_editor.h src/ags/X/ags_ladspa_browser_callbacks.c src/ags/X/ags_link_collection_editor.c src/ags/X/ags_preferences_callbacks.h src/ags/X/ags_machine_editor_callbacks.c src/ags/X/ags_menu_bar.h src/ags/X/ags_export_window_callbacks.c src/ags/X/ags_line_member_editor_callbacks.c src/ags/X/ags_link_collection_editor.h src/ags/X/ags_link_collection_editor_callbacks.h src/ags/X/ags_property_listing_editor.h src/ags/X/ags_navigation.c src/ags/X/ags_machine_editor.c src/ags/X/ags_line_member_editor.c src/ags/X/ags_ladspa_browser_callbacks.h src/ags/X/ags_line_editor.h src/ags/X/ags_listing_editor.c src/ags/object/ags_applicable.c src/ags/object/ags_seekable.h src/ags/object/ags_packable.c src/ags/object/ags_persistable.h src/ags/object/ags_packable.h src/ags/object/ags_applicable.h src/ags/object/ags_main_loop.c src/ags/object/ags_soundcard.c src/ags/object/ags_marshal.c src/ags/object/ags_mutable.h src/ags/object/ags_plugin.h src/ags/object/ags_stackable.h src/ags/object/ags_runnable.c src/ags/object/ags_tactable.h src/ags/object/ags_mutable.c src/ags/object/ags_runnable.h src/ags/object/ags_effect.c src/ags/object/ags_playable.c src/ags/object/ags_dynamic_connectable.c src/ags/object/ags_seekable.c src/ags/object/ags_countable.c src/ags/object/ags_plugin.c src/ags/object/ags_tree_iterator.h src/ags/object/ags_playable.h src/ags/object/ags_effect.h src/ags/object/ags_soundcard.h src/ags/object/ags_countable.h src/ags/object/ags_marshal.h src/ags/object/ags_portlet.h src/ags/object/ags_dynamic_connectable.h src/ags/object/ags_tactable.c src/ags/object/ags_tree_iterator.c src/ags/object/ags_persistable.c src/ags/object/ags_main_loop.h src/ags/object/ags_stackable.c src/ags/object/ags_portlet.c src/ags/util/ags_id_generator.c src/ags/util/ags_id_generator.h src/ags/widget/ags_led.h src/ags/widget/ags_expander_set.c src/ags/widget/ags_expander_set.h src/ags/widget/ags_menu.c src/ags/widget/ags_hindicator.h src/ags/widget/ags_menu.h src/ags/widget/ags_timebar.c src/ags/widget/ags_dial.c src/ags/widget/ags_ruler.h src/ags/widget/ags_dial.h src/ags/widget/ags_segment.c src/ags/widget/ags_htimebar.c src/ags/widget/ags_option_menu.h src/ags/widget/ags_indicator.c src/ags/widget/ags_htimebar.h src/ags/widget/ags_option_menu.c src/ags/widget/ags_expander.h src/ags/widget/ags_menu_item.h src/ags/widget/ags_hindicator.c src/ags/widget/ags_cartesian.h src/ags/widget/ags_indicator.h src/ags/widget/ags_cartesian.c src/ags/widget/ags_menu_item.c src/ags/widget/ags_waveform.c src/ags/widget/ags_ruler.c src/ags/widget/ags_expander.c src/ags/widget/ags_vindicator.c src/ags/widget/ags_timebar.h src/ags/widget/ags_led.c src/ags/widget/ags_waveform.h src/ags/widget/ags_table.c src/ags/widget/ags_table.h src/ags/widget/ags_vindicator.h src/ags/widget/ags_segment.h src/ags/main.c src/ags/audio/task/ags_export_output.h src/ags/audio/task/ags_set_output_device.c src/ags/audio/task/ags_add_audio.h src/ags/audio/task/ags_set_samplerate.c src/ags/audio/task/ags_remove_point_from_selection.c src/ags/audio/task/ags_save_file.h src/ags/audio/task/ags_set_buffer_size.h src/ags/audio/task/ags_link_channel.c src/ags/audio/task/ags_save_file.c src/ags/audio/task/ags_append_audio_threaded.h src/ags/audio/task/ags_cancel_channel.h src/ags/audio/task/ags_apply_synth.h src/ags/audio/task/ags_seek_devout.h src/ags/audio/task/ags_append_recall.h src/ags/audio/task/ags_add_audio_signal.c src/ags/audio/task/ags_unref_audio_signal.c src/ags/audio/task/ags_remove_region_from_selection.c src/ags/audio/task/ags_change_indicator.h src/ags/audio/task/ags_remove_point_from_selection.h src/ags/audio/task/ags_set_audio_channels.h src/ags/audio/task/ags_scroll_on_play.h src/ags/audio/task/ags_remove_audio.h src/ags/audio/task/ags_remove_recall_container.c src/ags/audio/task/ags_remove_recall.c src/ags/audio/task/ags_seek_devout.c src/ags/audio/task/ags_append_recall.c src/ags/audio/task/ags_free_selection.h src/ags/audio/task/ags_add_recall_container.c src/ags/audio/task/ags_add_recall.c src/ags/audio/task/ags_export_output.c src/ags/audio/task/ags_init_channel.h src/ags/audio/task/ags_remove_note.c src/ags/audio/task/ags_apply_wavetable.h src/ags/audio/task/ags_add_audio_signal.h src/ags/audio/task/ags_cancel_recall.h src/ags/audio/task/ags_set_audio_channels.c src/ags/audio/task/ags_cancel_audio.c src/ags/audio/task/ags_unref_audio_signal.h src/ags/audio/task/ags_add_region_to_selection.c src/ags/audio/task/ags_change_tact.h src/ags/audio/task/ags_init_audio.c src/ags/audio/task/ags_channel_set_recycling.c src/ags/audio/task/ags_display_tact.c src/ags/audio/task/ags_add_point_to_selection.h src/ags/audio/task/ags_toggle_pattern_bit.h src/ags/audio/task/ags_append_channel.c src/ags/audio/task/ags_change_indicator.c src/ags/audio/task/ags_add_note.c src/ags/audio/task/ags_channel_set_recycling.h src/ags/audio/task/ags_cancel_audio.h src/ags/audio/task/recall/ags_set_muted.c src/ags/audio/task/recall/ags_set_muted.h src/ags/audio/task/recall/ags_apply_sequencer_length.c src/ags/audio/task/recall/ags_apply_bpm.h src/ags/audio/task/recall/ags_apply_tact.c src/ags/audio/task/recall/ags_apply_bpm.c src/ags/audio/task/recall/ags_apply_sequencer_length.h src/ags/audio/task/recall/ags_apply_tact.h src/ags/audio/task/ags_remove_region_from_selection.h src/ags/audio/task/ags_cancel_channel.c src/ags/audio/task/ags_add_recall_container.h src/ags/audio/task/ags_add_recall.h src/ags/audio/task/ags_add_note.h src/ags/audio/task/ags_start_devout.c src/ags/audio/task/ags_append_audio_threaded.c src/ags/audio/task/ags_append_audio.c src/ags/audio/task/ags_init_channel.c src/ags/audio/task/ags_remove_audio_signal.h src/ags/audio/task/ags_toggle_led.c src/ags/audio/task/ags_set_buffer_size.c src/ags/audio/task/ags_add_region_to_selection.h src/ags/audio/task/ags_audio_set_recycling.h src/ags/audio/task/ags_toggle_led.h src/ags/audio/task/ags_resize_audio.h src/ags/audio/task/ags_free_selection.c src/ags/audio/task/ags_add_audio.c src/ags/audio/task/ags_set_samplerate.h src/ags/audio/task/ags_apply_synth.c src/ags/audio/task/ags_open_single_file.h src/ags/audio/task/ags_remove_audio.c src/ags/audio/task/ags_cancel_recall.c src/ags/audio/task/ags_init_audio.h src/ags/audio/task/ags_remove_note.h src/ags/audio/task/ags_remove_audio_signal.c src/ags/audio/task/ags_audio_set_recycling.c src/ags/audio/task/ags_add_point_to_selection.c src/ags/audio/task/ags_scroll_on_play.c src/ags/audio/task/ags_set_devout_play_flags.c src/ags/audio/task/ags_apply_wavetable.c src/ags/audio/task/ags_add_line_member.c src/ags/audio/task/ags_open_file.h src/ags/audio/task/ags_set_output_device.h src/ags/audio/task/ags_toggle_pattern_bit.c src/ags/audio/task/ags_open_file.c src/ags/audio/task/ags_open_single_file.c src/ags/audio/task/ags_append_audio.h src/ags/audio/task/ags_start_devout.h src/ags/audio/task/ags_display_tact.h src/ags/audio/task/ags_remove_recall_container.h src/ags/audio/task/ags_remove_recall.h src/ags/audio/task/ags_change_tact.c src/ags/audio/task/ags_append_channel.h src/ags/audio/task/ags_resize_audio.c src/ags/audio/task/ags_link_channel.h src/ags/audio/task/ags_add_line_member.h src/ags/audio/task/ags_set_devout_play_flags.h src/ags/audio/ags_devout.c src/ags/audio/ags_recall_channel.h src/ags/audio/ags_timestamp_factory.h src/ags/audio/ags_garbage_collector.c src/ags/audio/ags_garbage_collector.h src/ags/audio/ags_recall_container.c src/ags/audio/ags_timestamp.c src/ags/audio/ags_channel_iter.h src/ags/audio/ags_recall_channel_run.c src/ags/audio/ags_audio.h src/ags/audio/ags_port.c src/ags/audio/ags_notation.c src/ags/audio/ags_recall_dependency.h src/ags/audio/ags_recycling.c src/ags/audio/ags_recall_audio_signal.h src/ags/audio/ags_input.c src/ags/audio/ags_synths.c src/ags/audio/ags_input.h src/ags/audio/ags_recycling_container.h src/ags/audio/ags_recall_id.h src/ags/audio/ags_note.c src/ags/audio/ags_timestamp_factory.c src/ags/audio/ags_channel.c src/ags/audio/ags_recall_audio.c src/ags/audio/ags_audio_signal.c src/ags/audio/ags_output.h src/ags/audio/ags_libao.c src/ags/audio/file/ags_ipatch_sf2_reader.c src/ags/audio/file/ags_audio_file_xml.h src/ags/audio/file/ags_ipatch.c src/ags/audio/file/ags_audio_file.c src/ags/audio/file/ags_sndfile.h src/ags/audio/file/ags_ipatch.h src/ags/audio/file/ags_audio_file.h src/ags/audio/file/ags_ipatch_sf2_reader.h src/ags/audio/file/ags_audio_file_xml.c src/ags/audio/file/ags_sndfile.c src/ags/audio/ags_devout.h src/ags/audio/ags_port.h src/ags/audio/ags_note.h src/ags/audio/ags_timestamp.h src/ags/audio/ags_notation.h src/ags/audio/ags_recall_audio_run.c src/ags/audio/ags_recycling_container.c src/ags/audio/ags_audio_signal.h src/ags/audio/ags_recall_recycling.h src/ags/audio/recall/ags_mute_audio.h src/ags/audio/recall/ags_clone_channel.c src/ags/audio/recall/ags_copy_channel.c src/ags/audio/recall/ags_copy_pattern_channel.c src/ags/audio/recall/ags_copy_recycling.c src/ags/audio/recall/ags_volume_audio_signal.h src/ags/audio/recall/ags_play_channel.h src/ags/audio/recall/ags_play_notation_audio_run.c src/ags/audio/recall/ags_buffer_audio_signal.c src/ags/audio/recall/ags_play_channel_run.c src/ags/audio/recall/ags_stream_channel_run.c src/ags/audio/recall/ags_copy_notation_audio_run.c src/ags/audio/recall/ags_mute_channel.c src/ags/audio/recall/ags_count_beats_audio.h src/ags/audio/recall/ags_copy_pattern_audio.c src/ags/audio/recall/ags_copy_pattern_audio_run.c src/ags/audio/recall/ags_clone_channel_run.h src/ags/audio/recall/ags_delay_audio.h src/ags/audio/recall/ags_copy_notation_audio_run.h src/ags/audio/recall/ags_stream.c src/ags/audio/recall/ags_play_audio_file.h src/ags/audio/recall/ags_loop_channel_run.c src/ags/audio/recall/ags_play_pattern.c src/ags/audio/recall/ags_stream_channel_run.h src/ags/audio/recall/ags_amplifier.h src/ags/audio/recall/ags_echo.c src/ags/audio/recall/ags_play_note.c src/ags/audio/recall/ags_buffer_channel.c src/ags/audio/recall/ags_clone_channel_run.c src/ags/audio/recall/ags_peak_channel.h src/ags/audio/recall/ags_play_recycling.h src/ags/audio/recall/ags_stream_channel.h src/ags/audio/recall/ags_amplifier.c src/ags/audio/recall/ags_mute_audio_signal.h src/ags/audio/recall/ags_copy_notation_audio.c src/ags/audio/recall/ags_buffer_channel_run.h src/ags/audio/recall/ags_copy_recycling.h src/ags/audio/recall/ags_down_mix.h src/ags/audio/recall/ags_volume_recycling.h src/ags/audio/recall/ags_volume_channel_run.h src/ags/audio/recall/ags_stream_channel.c src/ags/audio/recall/ags_echo.h src/ags/audio/recall/ags_delay_audio_run.h src/ags/audio/recall/ags_stream_audio_signal.h src/ags/audio/recall/ags_mute_recycling.c src/ags/audio/recall/ags_play_pattern.h src/ags/audio/recall/ags_delay_audio.c src/ags/audio/recall/ags_buffer_recycling.c src/ags/audio/recall/ags_stream_recycling.h src/ags/audio/recall/ags_play_audio_signal.c src/ags/audio/recall/ags_play_channel_run_master.h src/ags/audio/recall/ags_volume_recycling.c src/ags/audio/recall/ags_loop_channel.c src/ags/audio/recall/ags_buffer_recycling.h src/ags/audio/recall/ags_copy_pattern_channel_run.h src/ags/audio/recall/ags_peak_channel_run.c src/ags/audio/recall/ags_loop_channel.h src/ags/audio/recall/ags_play_audio.h src/ags/audio/recall/ags_copy_audio_signal.c src/ags/audio/recall/ags_mute_channel_run.h src/ags/audio/recall/ags_copy_channel.h src/ags/audio/recall/ags_play_notation_audio.h src/ags/audio/recall/ags_play_note.h src/ags/audio/recall/ags_synths.h src/ags/audio/recall/ags_play_recycling.c src/ags/audio/recall/ags_mute_channel_run.c src/ags/audio/recall/ags_buffer_channel.h src/ags/audio/recall/ags_play_notation_audio_run.h src/ags/audio/recall/ags_volume_channel_run.c src/ags/audio/recall/ags_play_channel_run_master.c src/ags/audio/recall/ags_stream.h src/ags/audio/recall/ags_copy_pattern_channel.h src/ags/audio/recall/ags_play_channel_run.h src/ags/audio/recall/ags_mute_channel.h src/ags/audio/recall/ags_mute_audio.c src/ags/audio/recall/ags_volume_channel.h src/ags/audio/recall/ags_volume_audio_signal.c src/ags/audio/recall/ags_stream_audio_signal.c src/ags/audio/recall/ags_count_beats_audio_run.h src/ags/audio/recall/ags_copy_audio_signal.h src/ags/audio/recall/ags_copy_channel_run.c src/ags/audio/recall/ags_delay_audio_run.c src/ags/audio/recall/ags_mute_audio_signal.c src/ags/audio/recall/ags_copy_notation_audio.h src/ags/audio/recall/ags_clone_channel.h src/ags/audio/recall/ags_buffer_channel_run.c src/ags/audio/recall/ags_play_audio.c src/ags/audio/recall/ags_copy_pattern_audio.h src/ags/audio/recall/ags_count_beats_audio.c src/ags/audio/recall/ags_play_channel.c src/ags/audio/recall/ags_count_beats_audio_run.c src/ags/audio/recall/ags_copy_pattern_audio_run.h src/ags/audio/recall/ags_stream_recycling.c src/ags/audio/recall/ags_play_audio_file.c src/ags/audio/recall/ags_play_notation_audio.c src/ags/audio/recall/ags_loop_channel_run.h src/ags/audio/recall/ags_mute_recycling.h src/ags/audio/recall/ags_peak_channel.c src/ags/audio/recall/ags_buffer_audio_signal.h src/ags/audio/recall/ags_peak_channel_run.h src/ags/audio/recall/ags_volume_channel.c src/ags/audio/recall/ags_play_audio_signal.h src/ags/audio/recall/ags_copy_channel_run.h src/ags/audio/recall/ags_copy_pattern_channel_run.c src/ags/audio/ags_recall_ladspa.h src/ags/audio/ags_recall_recycling.c src/ags/audio/ags_recall.h src/ags/audio/ags_recall_channel_run.h src/ags/audio/ags_recall_audio.h src/ags/audio/ags_channel.h src/ags/audio/ags_pattern.c src/ags/audio/ags_synths.h src/ags/audio/ags_recall_factory.h src/ags/audio/ags_recall_audio_signal.c src/ags/audio/ags_config.h src/ags/audio/ags_effect.h src/ags/audio/ags_pattern.h src/ags/audio/ags_output.c src/ags/audio/ags_recall_channel_run_dummy.c src/ags/audio/ags_recall_dependency.c src/ags/audio/ags_channel_iter.c src/ags/audio/ags_recall_channel_run_dummy.h src/ags/audio/ags_recall.c src/ags/audio/ags_recall_ladspa_run.h src/ags/audio/ags_recall_recycling_dummy.h src/ags/audio/ags_libao.h src/ags/audio/ags_task.h src/ags/audio/ags_config.c src/ags/audio/ags_recall_channel.c src/ags/audio/ags_audio.c src/ags/audio/ags_recall_ladspa_run.c src/ags/audio/ags_recall_audio_run.h src/ags/audio/ags_recall_id.c src/ags/audio/ags_task.c src/ags/audio/ags_recall_ladspa.c src/ags/audio/ags_recall_factory.c src/ags/audio/ags_recall_container.h src/ags/audio/ags_recycling.h src/ags/audio/ags_recall_recycling_dummy.c src/ags/file/ags_file_util.h src/ags/file/ags_file_sound.h src/ags/file/ags_file_thread.h src/ags/file/ags_file_gui.h src/ags/file/ags_file_lookup.h src/ags/file/ags_file_id_ref.c src/ags/file/ags_file.h src/ags/file/ags_file_link.c src/ags/file/ags_file_write.h src/ags/file/ags_file_read.h src/ags/file/ags_file_id_ref.h src/ags/file/ags_file_sound.c src/ags/file/ags_file_thread.c src/ags/file/ags_file_util.c src/ags/file/ags_file_lookup.c src/ags/file/ags_file_launch.c src/ags/file/ags_file_stock.h src/ags/file/ags_file_gui.c src/ags/file/ags_file.c src/ags/file/ags_file_launch.h src/ags/file/ags_file_link.h src/ags/thread/ags_record_thread.c src/ags/thread/ags_thread_pool.h src/ags/thread/ags_timestamp_thread.h src/ags/thread/ags_mutex_manager.h src/ags/thread/ags_mutex_manager.c src/ags/thread/ags_task_thread.h src/ags/thread/ags_audio_loop.h src/ags/thread/ags_gui_task_thread.h src/ags/thread/ags_task_completion.h src/ags/thread/ags_task_completion.c src/ags/thread/ags_recycling_thread.h src/ags/thread/ags_autosave_thread.h src/ags/thread/ags_returnable_thread.c src/ags/thread/ags_autosave_thread.c src/ags/thread/ags_export_thread.h src/ags/thread/ags_history.h src/ags/thread/ags_iterator_thread.h src/ags/thread/ags_devout_thread.c src/ags/thread/ags_thread_pool.c src/ags/thread/ags_gui_task_thread.c src/ags/thread/ags_gui_thread.h src/ags/thread/ags_task_thread.c src/ags/thread/ags_timestamp_thread.c src/ags/thread/ags_thread-posix.h src/ags/thread/ags_async_queue.h src/ags/thread/ags_record_thread.h src/ags/thread/ags_recycling_thread_callbacks.c src/ags/thread/ags_recycling_thread_callbacks.h src/ags/thread/ags_iterator_thread.c src/ags/thread/ags_async_queue.c src/ags/thread/ags_export_thread.c src/ags/thread/ags_audio_loop.c src/ags/thread/ags_returnable_thread.h src/ags/thread/ags_recycling_thread.c src/ags/thread/ags_devout_thread.h src/ags/thread/ags_single_thread.h src/ags/thread/ags_thread-posix.c src/ags/thread/ags_history.c src/ags/thread/ags_gui_thread.c src/ags/thread/ags_single_thread.c src/ags/server/ags_registry.c src/ags/server/ags_registry.h src/ags/server/ags_server.h src/ags/server/ags_remote_task.h src/ags/server/ags_remote_task.c src/ags/server/ags_server.c src/ags/plugin/ags_plugin_stock.h src/ags/plugin/ags_plugin_factory.h src/ags/plugin/ags_ladspa_manager.h src/ags/plugin/ags_plugin_factory.c src/ags/plugin/ags_ladspa_manager.c src/ags/main.h
+ags_SOURCES = ./src/ags-lib/object/ags_connectable.c ./src/ags-lib/object/ags_connectable.h src/ags/lib/ags_combo_box_text.c src/ags/lib/ags_list.c src/ags/lib/ags_container.c src/ags/lib/ags_parameter.h src/ags/lib/ags_list.h src/ags/lib/ags_log.c src/ags/lib/ags_container.h src/ags/lib/ags_combo_box_text.h src/ags/lib/ags_log.h src/ags/lib/ags_parameter.c src/ags/X/editor/ags_notebook_callbacks.c src/ags/X/editor/ags_meter.h src/ags/X/editor/ags_toolbar.h src/ags/X/editor/ags_machine_radio_button.h src/ags/X/editor/ags_file_selection_callbacks.h src/ags/X/editor/ags_notebook_callbacks.h src/ags/X/editor/ags_note_edit.h src/ags/X/editor/ags_meter_callbacks.c src/ags/X/editor/ags_notebook.h src/ags/X/editor/ags_sf2_chooser.h src/ags/X/editor/ags_toolbar_mode_stock.h src/ags/X/editor/ags_meter_callbacks.h src/ags/X/editor/ags_toolbar_callbacks.c src/ags/X/editor/ags_machine_selector.c src/ags/X/editor/ags_machine_selector_callbacks.c src/ags/X/editor/ags_machine_radio_button.c src/ags/X/editor/ags_sf2_chooser.c src/ags/X/editor/ags_machine_selector_callbacks.h src/ags/X/editor/ags_sf2_chooser_callbacks.c src/ags/X/editor/ags_notebook.c src/ags/X/editor/ags_note_edit_callbacks.c src/ags/X/editor/ags_file_selection_callbacks.c src/ags/X/editor/ags_machine_selection.c src/ags/X/editor/ags_inline_player_callbacks.h src/ags/X/editor/ags_inline_player.c src/ags/X/editor/ags_meter.c src/ags/X/editor/ags_file_selection.h src/ags/X/editor/ags_inline_player.h src/ags/X/editor/ags_sf2_chooser_callbacks.h src/ags/X/editor/ags_file_selection.c src/ags/X/editor/ags_machine_selector.h src/ags/X/editor/ags_note_edit_callbacks.h src/ags/X/editor/ags_note_edit.c src/ags/X/editor/ags_inline_player_callbacks.c src/ags/X/editor/ags_toolbar_callbacks.h src/ags/X/editor/ags_machine_selection.h src/ags/X/editor/ags_toolbar.c src/ags/X/ags_line_callbacks.h src/ags/X/ags_plugin_preferences.c src/ags/X/ags_link_editor.c src/ags/X/ags_pad_callbacks.h src/ags/X/ags_machine_callbacks.c src/ags/X/ags_server_preferences_callbacks.h src/ags/X/ags_listing_editor_callbacks.c src/ags/X/ags_link_collection_editor_callbacks.c src/ags/X/ags_generic_preferences_callbacks.c src/ags/X/ags_property_collection_editor_callbacks.c src/ags/X/ags_property_collection_editor.h src/ags/X/ags_resize_editor.h src/ags/X/ags_property_editor.h src/ags/X/ags_window_callbacks.h src/ags/X/ags_property_editor_callbacks.c src/ags/X/machine/ags_synth_callbacks.h src/ags/X/machine/ags_synth.c src/ags/X/machine/ags_mixer.c src/ags/X/machine/ags_matrix_callbacks.c src/ags/X/machine/ags_panel_input_line.c src/ags/X/machine/ags_synth_input_line.c src/ags/X/machine/ags_drum_callbacks.h src/ags/X/machine/ags_mixer_callbacks.c src/ags/X/machine/ags_synth_callbacks.c src/ags/X/machine/ags_ffplayer_callbacks.h src/ags/X/machine/ags_drum_input_line.h src/ags/X/machine/ags_matrix.h src/ags/X/machine/ags_mixer_input_line.c src/ags/X/machine/ags_oscillator.c src/ags/X/machine/ags_oscillator.h src/ags/X/machine/ags_oscillator_callbacks.h src/ags/X/machine/ags_mixer.h src/ags/X/machine/ags_panel_input_pad.h src/ags/X/machine/ags_panel_input_pad.c src/ags/X/machine/ags_matrix.c src/ags/X/machine/ags_panel.h src/ags/X/machine/ags_drum_output_line_callbacks.c src/ags/X/machine/ags_ffplayer.h src/ags/X/machine/ags_panel_callbacks.c src/ags/X/machine/ags_mixer_input_pad.c src/ags/X/machine/ags_panel.c src/ags/X/machine/ags_drum.c src/ags/X/machine/ags_matrix_callbacks.h src/ags/X/machine/ags_drum_output_line.h src/ags/X/machine/ags_drum_output_pad.h src/ags/X/machine/ags_synth_input_pad.h src/ags/X/machine/ags_panel_callbacks.h src/ags/X/machine/ags_ffplayer.c src/ags/X/machine/ags_drum_output_line_callbacks.h src/ags/X/machine/ags_drum_output_pad_callbacks.c src/ags/X/machine/ags_drum_output_pad_callbacks.h src/ags/X/machine/ags_drum_input_pad_callbacks.h src/ags/X/machine/ags_oscillator_callbacks.c src/ags/X/machine/ags_drum_callbacks.c src/ags/X/machine/ags_synth_input_line.h src/ags/X/machine/ags_drum_input_pad_callbacks.c src/ags/X/machine/ags_drum_input_pad.c src/ags/X/machine/ags_panel_input_line.h src/ags/X/machine/ags_drum_input_line_callbacks.h src/ags/X/machine/ags_drum_output_line.c src/ags/X/machine/ags_mixer_callbacks.h src/ags/X/machine/ags_synth.h src/ags/X/machine/ags_mixer_input_line.h src/ags/X/machine/ags_drum.h src/ags/X/machine/ags_drum_input_line.c src/ags/X/machine/ags_ffplayer_callbacks.c src/ags/X/machine/ags_drum_output_pad.c src/ags/X/machine/ags_drum_input_pad.h src/ags/X/machine/ags_drum_input_line_callbacks.c src/ags/X/machine/ags_mixer_input_pad.h src/ags/X/machine/ags_synth_input_pad.c src/ags/X/ags_server_preferences.h src/ags/X/ags_line_editor_callbacks.h src/ags/X/ags_pad_editor_callbacks.c src/ags/X/ags_listing_editor_callbacks.h src/ags/X/ags_line_member_callbacks.c src/ags/X/ags_editor.h src/ags/X/ags_machine_editor.h src/ags/X/ags_plugin_preferences_callbacks.h src/ags/X/ags_export_window_callbacks.h src/ags/X/ags_editor_callbacks.c src/ags/X/ags_pad_editor.h src/ags/X/ags_server_preferences.c src/ags/X/ags_line_editor.c src/ags/X/ags_ladspa_browser.h src/ags/X/ags_audio_preferences.c src/ags/X/ags_pad.c src/ags/X/ags_line.c src/ags/X/ags_menu_bar_callbacks.c src/ags/X/ags_generic_preferences_callbacks.h src/ags/X/ags_pad.h src/ags/X/ags_audio_preferences_callbacks.h src/ags/X/ags_generic_preferences.c src/ags/X/ags_window.c src/ags/X/ags_machine_editor_callbacks.h src/ags/X/ags_editor_callbacks.h src/ags/X/ags_menu_bar_callbacks.h src/ags/X/ags_line_member_editor.h src/ags/X/ags_property_collection_editor_callbacks.h src/ags/X/ags_line_editor_callbacks.c src/ags/X/ags_property_editor.c src/ags/X/ags_link_editor_callbacks.c src/ags/X/ags_server_preferences_callbacks.c src/ags/X/ags_pad_callbacks.c src/ags/X/ags_line_member.h src/ags/X/ags_audio_preferences_callbacks.c src/ags/X/ags_performance_preferences.h src/ags/X/ags_property_collection_editor.c src/ags/X/ags_performance_preferences_callbacks.h src/ags/X/ags_line.h src/ags/X/ags_machine.c src/ags/X/ags_preferences_callbacks.c src/ags/X/ags_export_window.c src/ags/X/ags_menu_bar.c src/ags/X/ags_plugin_preferences_callbacks.c src/ags/X/ags_line_member_callbacks.h src/ags/X/ags_preferences.c src/ags/X/ags_export_window.h src/ags/X/ags_pad_editor_callbacks.h src/ags/X/ags_window.h src/ags/X/ags_machine_callbacks.h src/ags/X/ags_machine.h src/ags/X/ags_line_callbacks.c src/ags/X/ags_link_editor_callbacks.h src/ags/X/ags_navigation_callbacks.h src/ags/X/ags_pad_editor.c src/ags/X/ags_ladspa_browser.c src/ags/X/ags_editor.c src/ags/X/ags_resize_editor.c src/ags/X/ags_property_listing_editor.c src/ags/X/ags_property_editor_callbacks.h src/ags/X/ags_line_member_editor_callbacks.h src/ags/X/ags_window_callbacks.c src/ags/X/ags_audio_preferences.h src/ags/X/ags_navigation_callbacks.c src/ags/X/ags_plugin_preferences.h src/ags/X/ags_performance_preferences_callbacks.c src/ags/X/ags_line_member.c src/ags/X/ags_preferences.h src/ags/X/ags_generic_preferences.h src/ags/X/ags_navigation.h src/ags/X/ags_listing_editor.h src/ags/X/ags_performance_preferences.c src/ags/X/ags_link_editor.h src/ags/X/ags_ladspa_browser_callbacks.c src/ags/X/ags_link_collection_editor.c src/ags/X/ags_preferences_callbacks.h src/ags/X/ags_machine_editor_callbacks.c src/ags/X/ags_menu_bar.h src/ags/X/ags_export_window_callbacks.c src/ags/X/ags_line_member_editor_callbacks.c src/ags/X/ags_link_collection_editor.h src/ags/X/ags_link_collection_editor_callbacks.h src/ags/X/ags_property_listing_editor.h src/ags/X/ags_navigation.c src/ags/X/ags_machine_editor.c src/ags/X/ags_line_member_editor.c src/ags/X/ags_ladspa_browser_callbacks.h src/ags/X/ags_line_editor.h src/ags/X/ags_listing_editor.c src/ags/object/ags_applicable.c src/ags/object/ags_seekable.h src/ags/object/ags_packable.c src/ags/object/ags_persistable.h src/ags/object/ags_packable.h src/ags/object/ags_applicable.h src/ags/object/ags_main_loop.c src/ags/object/ags_soundcard.c src/ags/object/ags_marshal.c src/ags/object/ags_mutable.h src/ags/object/ags_plugin.h src/ags/object/ags_stackable.h src/ags/object/ags_runnable.c src/ags/object/ags_tactable.h src/ags/object/ags_mutable.c src/ags/object/ags_runnable.h src/ags/object/ags_effect.c src/ags/object/ags_playable.c src/ags/object/ags_dynamic_connectable.c src/ags/object/ags_seekable.c src/ags/object/ags_countable.c src/ags/object/ags_plugin.c src/ags/object/ags_tree_iterator.h src/ags/object/ags_playable.h src/ags/object/ags_effect.h src/ags/object/ags_soundcard.h src/ags/object/ags_countable.h src/ags/object/ags_marshal.h src/ags/object/ags_portlet.h src/ags/object/ags_dynamic_connectable.h src/ags/object/ags_tactable.c src/ags/object/ags_tree_iterator.c src/ags/object/ags_persistable.c src/ags/object/ags_main_loop.h src/ags/object/ags_stackable.c src/ags/object/ags_portlet.c src/ags/util/ags_id_generator.c src/ags/util/ags_id_generator.h src/ags/widget/ags_led.h src/ags/widget/ags_expander_set.c src/ags/widget/ags_expander_set.h src/ags/widget/ags_menu.c src/ags/widget/ags_hindicator.h src/ags/widget/ags_menu.h src/ags/widget/ags_timebar.c src/ags/widget/ags_dial.c src/ags/widget/ags_ruler.h src/ags/widget/ags_dial.h src/ags/widget/ags_segment.c src/ags/widget/ags_htimebar.c src/ags/widget/ags_option_menu.h src/ags/widget/ags_indicator.c src/ags/widget/ags_htimebar.h src/ags/widget/ags_option_menu.c src/ags/widget/ags_expander.h src/ags/widget/ags_menu_item.h src/ags/widget/ags_hindicator.c src/ags/widget/ags_cartesian.h src/ags/widget/ags_indicator.h src/ags/widget/ags_cartesian.c src/ags/widget/ags_menu_item.c src/ags/widget/ags_waveform.c src/ags/widget/ags_ruler.c src/ags/widget/ags_expander.c src/ags/widget/ags_vindicator.c src/ags/widget/ags_timebar.h src/ags/widget/ags_led.c src/ags/widget/ags_waveform.h src/ags/widget/ags_table.c src/ags/widget/ags_table.h src/ags/widget/ags_vindicator.h src/ags/widget/ags_segment.h src/ags/main.c src/ags/audio/task/ags_export_output.h src/ags/audio/task/ags_set_output_device.c src/ags/audio/task/ags_add_audio.h src/ags/audio/task/ags_set_samplerate.c src/ags/audio/task/ags_remove_point_from_selection.c src/ags/audio/task/ags_save_file.h src/ags/audio/task/ags_set_buffer_size.h src/ags/audio/task/ags_link_channel.c src/ags/audio/task/ags_save_file.c src/ags/audio/task/ags_append_audio_threaded.h src/ags/audio/task/ags_cancel_channel.h src/ags/audio/task/ags_apply_synth.h src/ags/audio/task/ags_seek_devout.h src/ags/audio/task/ags_append_recall.h src/ags/audio/task/ags_add_audio_signal.c src/ags/audio/task/ags_unref_audio_signal.c src/ags/audio/task/ags_remove_region_from_selection.c src/ags/audio/task/ags_change_indicator.h src/ags/audio/task/ags_remove_point_from_selection.h src/ags/audio/task/ags_set_audio_channels.h src/ags/audio/task/ags_scroll_on_play.h src/ags/audio/task/ags_remove_audio.h src/ags/audio/task/ags_remove_recall_container.c src/ags/audio/task/ags_remove_recall.c src/ags/audio/task/ags_seek_devout.c src/ags/audio/task/ags_append_recall.c src/ags/audio/task/ags_free_selection.h src/ags/audio/task/ags_add_recall_container.c src/ags/audio/task/ags_add_recall.c src/ags/audio/task/ags_export_output.c src/ags/audio/task/ags_init_channel.h src/ags/audio/task/ags_remove_note.c src/ags/audio/task/ags_apply_wavetable.h src/ags/audio/task/ags_add_audio_signal.h src/ags/audio/task/ags_cancel_recall.h src/ags/audio/task/ags_set_audio_channels.c src/ags/audio/task/ags_cancel_audio.c src/ags/audio/task/ags_unref_audio_signal.h src/ags/audio/task/ags_add_region_to_selection.c src/ags/audio/task/ags_change_tact.h src/ags/audio/task/ags_init_audio.c src/ags/audio/task/ags_channel_set_recycling.c src/ags/audio/task/ags_display_tact.c src/ags/audio/task/ags_add_point_to_selection.h src/ags/audio/task/ags_toggle_pattern_bit.h src/ags/audio/task/ags_append_channel.c src/ags/audio/task/ags_change_indicator.c src/ags/audio/task/ags_add_note.c src/ags/audio/task/ags_channel_set_recycling.h src/ags/audio/task/ags_cancel_audio.h src/ags/audio/task/recall/ags_set_muted.c src/ags/audio/task/recall/ags_set_muted.h src/ags/audio/task/recall/ags_apply_sequencer_length.c src/ags/audio/task/recall/ags_apply_bpm.h src/ags/audio/task/recall/ags_apply_tact.c src/ags/audio/task/recall/ags_apply_bpm.c src/ags/audio/task/recall/ags_apply_sequencer_length.h src/ags/audio/task/recall/ags_apply_tact.h src/ags/audio/task/ags_remove_region_from_selection.h src/ags/audio/task/ags_cancel_channel.c src/ags/audio/task/ags_add_recall_container.h src/ags/audio/task/ags_add_recall.h src/ags/audio/task/ags_add_note.h src/ags/audio/task/ags_start_devout.c src/ags/audio/task/ags_append_audio_threaded.c src/ags/audio/task/ags_append_audio.c src/ags/audio/task/ags_init_channel.c src/ags/audio/task/ags_remove_audio_signal.h src/ags/audio/task/ags_toggle_led.c src/ags/audio/task/ags_set_buffer_size.c src/ags/audio/task/ags_add_region_to_selection.h src/ags/audio/task/ags_audio_set_recycling.h src/ags/audio/task/ags_toggle_led.h src/ags/audio/task/ags_resize_audio.h src/ags/audio/task/ags_free_selection.c src/ags/audio/task/ags_add_audio.c src/ags/audio/task/ags_set_samplerate.h src/ags/audio/task/ags_apply_synth.c src/ags/audio/task/ags_open_single_file.h src/ags/audio/task/ags_remove_audio.c src/ags/audio/task/ags_cancel_recall.c src/ags/audio/task/ags_init_audio.h src/ags/audio/task/ags_remove_note.h src/ags/audio/task/ags_remove_audio_signal.c src/ags/audio/task/ags_audio_set_recycling.c src/ags/audio/task/ags_add_point_to_selection.c src/ags/audio/task/ags_scroll_on_play.c src/ags/audio/task/ags_set_devout_play_flags.c src/ags/audio/task/ags_apply_wavetable.c src/ags/audio/task/ags_add_line_member.c src/ags/audio/task/ags_open_file.h src/ags/audio/task/ags_set_output_device.h src/ags/audio/task/ags_toggle_pattern_bit.c src/ags/audio/task/ags_open_file.c src/ags/audio/task/ags_open_single_file.c src/ags/audio/task/ags_append_audio.h src/ags/audio/task/ags_start_devout.h src/ags/audio/task/ags_display_tact.h src/ags/audio/task/ags_remove_recall_container.h src/ags/audio/task/ags_remove_recall.h src/ags/audio/task/ags_change_tact.c src/ags/audio/task/ags_append_channel.h src/ags/audio/task/ags_resize_audio.c src/ags/audio/task/ags_link_channel.h src/ags/audio/task/ags_add_line_member.h src/ags/audio/task/ags_set_devout_play_flags.h src/ags/audio/ags_devout.c src/ags/audio/ags_recall_channel.h src/ags/audio/ags_timestamp_factory.h src/ags/audio/ags_garbage_collector.c src/ags/audio/ags_garbage_collector.h src/ags/audio/ags_recall_container.c src/ags/audio/ags_timestamp.c src/ags/audio/ags_channel_iter.h src/ags/audio/ags_recall_channel_run.c src/ags/audio/ags_audio.h src/ags/audio/ags_port.c src/ags/audio/ags_notation.c src/ags/audio/ags_recall_dependency.h src/ags/audio/ags_recycling.c src/ags/audio/ags_recall_audio_signal.h src/ags/audio/ags_input.c src/ags/audio/ags_synths.c src/ags/audio/ags_input.h src/ags/audio/ags_recycling_container.h src/ags/audio/ags_recall_id.h src/ags/audio/ags_note.c src/ags/audio/ags_timestamp_factory.c src/ags/audio/ags_channel.c src/ags/audio/ags_recall_audio.c src/ags/audio/ags_audio_signal.c src/ags/audio/ags_output.h src/ags/audio/ags_libao.c src/ags/audio/file/ags_ipatch_sf2_reader.c src/ags/audio/file/ags_audio_file_xml.h src/ags/audio/file/ags_ipatch.c src/ags/audio/file/ags_audio_file.c src/ags/audio/file/ags_sndfile.h src/ags/audio/file/ags_ipatch.h src/ags/audio/file/ags_audio_file.h src/ags/audio/file/ags_ipatch_sf2_reader.h src/ags/audio/file/ags_audio_file_xml.c src/ags/audio/file/ags_sndfile.c src/ags/audio/ags_devout.h src/ags/audio/ags_port.h src/ags/audio/ags_note.h src/ags/audio/ags_timestamp.h src/ags/audio/ags_notation.h src/ags/audio/ags_recall_audio_run.c src/ags/audio/ags_recycling_container.c src/ags/audio/ags_audio_signal.h src/ags/audio/ags_recall_recycling.h src/ags/audio/recall/ags_mute_audio.h src/ags/audio/recall/ags_clone_channel.c src/ags/audio/recall/ags_copy_channel.c src/ags/audio/recall/ags_copy_pattern_channel.c src/ags/audio/recall/ags_copy_recycling.c src/ags/audio/recall/ags_volume_audio_signal.h src/ags/audio/recall/ags_play_channel.h src/ags/audio/recall/ags_play_notation_audio_run.c src/ags/audio/recall/ags_buffer_audio_signal.c src/ags/audio/recall/ags_play_channel_run.c src/ags/audio/recall/ags_stream_channel_run.c src/ags/audio/recall/ags_copy_notation_audio_run.c src/ags/audio/recall/ags_mute_channel.c src/ags/audio/recall/ags_count_beats_audio.h src/ags/audio/recall/ags_copy_pattern_audio.c src/ags/audio/recall/ags_copy_pattern_audio_run.c src/ags/audio/recall/ags_clone_channel_run.h src/ags/audio/recall/ags_delay_audio.h src/ags/audio/recall/ags_copy_notation_audio_run.h src/ags/audio/recall/ags_stream.c src/ags/audio/recall/ags_play_audio_file.h src/ags/audio/recall/ags_loop_channel_run.c src/ags/audio/recall/ags_play_pattern.c src/ags/audio/recall/ags_stream_channel_run.h src/ags/audio/recall/ags_amplifier.h src/ags/audio/recall/ags_echo.c src/ags/audio/recall/ags_play_note.c src/ags/audio/recall/ags_buffer_channel.c src/ags/audio/recall/ags_clone_channel_run.c src/ags/audio/recall/ags_peak_channel.h src/ags/audio/recall/ags_peak_recycling.h src/ags/audio/recall/ags_peak_audio_signal.h src/ags/audio/recall/ags_play_recycling.h src/ags/audio/recall/ags_stream_channel.h src/ags/audio/recall/ags_amplifier.c src/ags/audio/recall/ags_mute_audio_signal.h src/ags/audio/recall/ags_copy_notation_audio.c src/ags/audio/recall/ags_buffer_channel_run.h src/ags/audio/recall/ags_copy_recycling.h src/ags/audio/recall/ags_down_mix.h src/ags/audio/recall/ags_volume_recycling.h src/ags/audio/recall/ags_volume_channel_run.h src/ags/audio/recall/ags_stream_channel.c src/ags/audio/recall/ags_echo.h src/ags/audio/recall/ags_delay_audio_run.h src/ags/audio/recall/ags_stream_audio_signal.h src/ags/audio/recall/ags_mute_recycling.c src/ags/audio/recall/ags_play_pattern.h src/ags/audio/recall/ags_delay_audio.c src/ags/audio/recall/ags_buffer_recycling.c src/ags/audio/recall/ags_stream_recycling.h src/ags/audio/recall/ags_play_audio_signal.c src/ags/audio/recall/ags_play_channel_run_master.h src/ags/audio/recall/ags_volume_recycling.c src/ags/audio/recall/ags_loop_channel.c src/ags/audio/recall/ags_buffer_recycling.h src/ags/audio/recall/ags_copy_pattern_channel_run.h src/ags/audio/recall/ags_peak_channel_run.c src/ags/audio/recall/ags_peak_recycling.c src/ags/audio/recall/ags_peak_audio_signal.c src/ags/audio/recall/ags_loop_channel.h src/ags/audio/recall/ags_play_audio.h src/ags/audio/recall/ags_copy_audio_signal.c src/ags/audio/recall/ags_mute_channel_run.h src/ags/audio/recall/ags_copy_channel.h src/ags/audio/recall/ags_play_notation_audio.h src/ags/audio/recall/ags_play_note.h src/ags/audio/recall/ags_synths.h src/ags/audio/recall/ags_play_recycling.c src/ags/audio/recall/ags_mute_channel_run.c src/ags/audio/recall/ags_buffer_channel.h src/ags/audio/recall/ags_play_notation_audio_run.h src/ags/audio/recall/ags_volume_channel_run.c src/ags/audio/recall/ags_play_channel_run_master.c src/ags/audio/recall/ags_stream.h src/ags/audio/recall/ags_copy_pattern_channel.h src/ags/audio/recall/ags_play_channel_run.h src/ags/audio/recall/ags_mute_channel.h src/ags/audio/recall/ags_mute_audio.c src/ags/audio/recall/ags_volume_channel.h src/ags/audio/recall/ags_volume_audio_signal.c src/ags/audio/recall/ags_stream_audio_signal.c src/ags/audio/recall/ags_count_beats_audio_run.h src/ags/audio/recall/ags_copy_audio_signal.h src/ags/audio/recall/ags_copy_channel_run.c src/ags/audio/recall/ags_delay_audio_run.c src/ags/audio/recall/ags_mute_audio_signal.c src/ags/audio/recall/ags_copy_notation_audio.h src/ags/audio/recall/ags_clone_channel.h src/ags/audio/recall/ags_buffer_channel_run.c src/ags/audio/recall/ags_play_audio.c src/ags/audio/recall/ags_copy_pattern_audio.h src/ags/audio/recall/ags_count_beats_audio.c src/ags/audio/recall/ags_play_channel.c src/ags/audio/recall/ags_count_beats_audio_run.c src/ags/audio/recall/ags_copy_pattern_audio_run.h src/ags/audio/recall/ags_stream_recycling.c src/ags/audio/recall/ags_play_audio_file.c src/ags/audio/recall/ags_play_notation_audio.c src/ags/audio/recall/ags_loop_channel_run.h src/ags/audio/recall/ags_mute_recycling.h src/ags/audio/recall/ags_peak_channel.c src/ags/audio/recall/ags_buffer_audio_signal.h src/ags/audio/recall/ags_peak_channel_run.h src/ags/audio/recall/ags_volume_channel.c src/ags/audio/recall/ags_play_audio_signal.h src/ags/audio/recall/ags_copy_channel_run.h src/ags/audio/recall/ags_copy_pattern_channel_run.c src/ags/audio/ags_recall_ladspa.h src/ags/audio/ags_recall_recycling.c src/ags/audio/ags_recall.h src/ags/audio/ags_recall_channel_run.h src/ags/audio/ags_recall_audio.h src/ags/audio/ags_channel.h src/ags/audio/ags_pattern.c src/ags/audio/ags_synths.h src/ags/audio/ags_recall_factory.h src/ags/audio/ags_recall_audio_signal.c src/ags/audio/ags_config.h src/ags/audio/ags_effect.h src/ags/audio/ags_pattern.h src/ags/audio/ags_output.c src/ags/audio/ags_recall_channel_run_dummy.c src/ags/audio/ags_recall_dependency.c src/ags/audio/ags_channel_iter.c src/ags/audio/ags_recall_channel_run_dummy.h src/ags/audio/ags_recall.c src/ags/audio/ags_recall_ladspa_run.h src/ags/audio/ags_recall_recycling_dummy.h src/ags/audio/ags_libao.h src/ags/audio/ags_task.h src/ags/audio/ags_config.c src/ags/audio/ags_recall_channel.c src/ags/audio/ags_audio.c src/ags/audio/ags_recall_ladspa_run.c src/ags/audio/ags_recall_audio_run.h src/ags/audio/ags_recall_id.c src/ags/audio/ags_task.c src/ags/audio/ags_recall_ladspa.c src/ags/audio/ags_recall_factory.c src/ags/audio/ags_recall_container.h src/ags/audio/ags_recycling.h src/ags/audio/ags_recall_recycling_dummy.c src/ags/file/ags_file_util.h src/ags/file/ags_file_sound.h src/ags/file/ags_file_thread.h src/ags/file/ags_file_gui.h src/ags/file/ags_file_lookup.h src/ags/file/ags_file_id_ref.c src/ags/file/ags_file.h src/ags/file/ags_file_link.c src/ags/file/ags_file_write.h src/ags/file/ags_file_read.h src/ags/file/ags_file_id_ref.h src/ags/file/ags_file_sound.c src/ags/file/ags_file_thread.c src/ags/file/ags_file_util.c src/ags/file/ags_file_lookup.c src/ags/file/ags_file_launch.c src/ags/file/ags_file_stock.h src/ags/file/ags_file_gui.c src/ags/file/ags_file.c src/ags/file/ags_file_launch.h src/ags/file/ags_file_link.h src/ags/thread/ags_record_thread.c src/ags/thread/ags_thread_pool.h src/ags/thread/ags_timestamp_thread.h src/ags/thread/ags_mutex_manager.h src/ags/thread/ags_mutex_manager.c src/ags/thread/ags_task_thread.h src/ags/thread/ags_audio_loop.h src/ags/thread/ags_gui_task_thread.h src/ags/thread/ags_task_completion.h src/ags/thread/ags_task_completion.c src/ags/thread/ags_recycling_thread.h src/ags/thread/ags_autosave_thread.h src/ags/thread/ags_returnable_thread.c src/ags/thread/ags_autosave_thread.c src/ags/thread/ags_export_thread.h src/ags/thread/ags_history.h src/ags/thread/ags_iterator_thread.h src/ags/thread/ags_devout_thread.c src/ags/thread/ags_thread_pool.c src/ags/thread/ags_gui_task_thread.c src/ags/thread/ags_gui_thread.h src/ags/thread/ags_task_thread.c src/ags/thread/ags_timestamp_thread.c src/ags/thread/ags_thread-posix.h src/ags/thread/ags_async_queue.h src/ags/thread/ags_record_thread.h src/ags/thread/ags_recycling_thread_callbacks.c src/ags/thread/ags_recycling_thread_callbacks.h src/ags/thread/ags_iterator_thread.c src/ags/thread/ags_async_queue.c src/ags/thread/ags_export_thread.c src/ags/thread/ags_audio_loop.c src/ags/thread/ags_returnable_thread.h src/ags/thread/ags_recycling_thread.c src/ags/thread/ags_devout_thread.h src/ags/thread/ags_single_thread.h src/ags/thread/ags_thread-posix.c src/ags/thread/ags_history.c src/ags/thread/ags_gui_thread.c src/ags/thread/ags_single_thread.c src/ags/server/ags_registry.c src/ags/server/ags_registry.h src/ags/server/ags_server.h src/ags/server/ags_remote_task.h src/ags/server/ags_remote_task.c src/ags/server/ags_server.c src/ags/plugin/ags_plugin_stock.h src/ags/plugin/ags_plugin_factory.h src/ags/plugin/ags_ladspa_manager.h src/ags/plugin/ags_plugin_factory.c src/ags/plugin/ags_ladspa_manager.c src/ags/main.h
 
 ags.desktop: ags.desktop.in
 	$(AM_V_GEN)sed -e 's,\@datadir\@,$(datadir),g' < "$<" > $@
diff --git a/Makefile.in b/Makefile.in
index 4cd44fe..c87d96f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -281,6 +281,8 @@ am_ags_OBJECTS = ags-ags_connectable.$(OBJEXT) \
 	ags-ags_volume_recycling.$(OBJEXT) \
 	ags-ags_loop_channel.$(OBJEXT) \
 	ags-ags_peak_channel_run.$(OBJEXT) \
+	ags-ags_peak_recycling.$(OBJEXT) \
+	ags-ags_peak_audio_signal.$(OBJEXT) \
 	ags-ags_copy_audio_signal.$(OBJEXT) \
 	ags-ags_play_recycling.$(OBJEXT) \
 	ags-ags_mute_channel_run.$(OBJEXT) \
@@ -972,6 +974,8 @@ ags_SOURCES = ./src/ags-lib/object/ags_connectable.c \
 	src/ags/audio/recall/ags_buffer_channel.c \
 	src/ags/audio/recall/ags_clone_channel_run.c \
 	src/ags/audio/recall/ags_peak_channel.h \
+	src/ags/audio/recall/ags_peak_recycling.h \
+	src/ags/audio/recall/ags_peak_audio_signal.h \
 	src/ags/audio/recall/ags_play_recycling.h \
 	src/ags/audio/recall/ags_stream_channel.h \
 	src/ags/audio/recall/ags_amplifier.c \
@@ -998,6 +1002,8 @@ ags_SOURCES = ./src/ags-lib/object/ags_connectable.c \
 	src/ags/audio/recall/ags_buffer_recycling.h \
 	src/ags/audio/recall/ags_copy_pattern_channel_run.h \
 	src/ags/audio/recall/ags_peak_channel_run.c \
+	src/ags/audio/recall/ags_peak_recycling.c \
+	src/ags/audio/recall/ags_peak_audio_signal.c \
 	src/ags/audio/recall/ags_loop_channel.h \
 	src/ags/audio/recall/ags_play_audio.h \
 	src/ags/audio/recall/ags_copy_audio_signal.c \
@@ -1440,8 +1446,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_panel_input_pad.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_parameter.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_pattern.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_peak_audio_signal.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_peak_channel.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_peak_channel_run.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_peak_recycling.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_performance_preferences.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_performance_preferences_callbacks.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ags-ags_persistable.Po at am__quote@
@@ -5020,6 +5028,34 @@ ags-ags_peak_channel_run.obj: src/ags/audio/recall/ags_peak_channel_run.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -c -o ags-ags_peak_channel_run.obj `if test -f 'src/ags/audio/recall/ags_peak_channel_run.c'; then $(CYGPATH_W) 'src/ags/audio/recall/ags_peak_channel_run.c'; else $(CYGPATH_W) '$(srcdir)/src/ags/audio/recall/ags_peak_channel_run.c'; fi`
 
+ags-ags_peak_recycling.o: src/ags/audio/recall/ags_peak_recycling.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -MT ags-ags_peak_recycling.o -MD -MP -MF $(DEPDIR)/ags-ags_peak_recycling.Tpo -c -o ags-ags_peak_recycling.o `test -f 'src/ags/audio/recall/ags_peak_recycling.c' || echo '$(srcdir)/'`src/ags/audio/recall/ags_peak_recycling.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ags-ags_peak_recycling.Tpo $(DEPDIR)/ags-ags_peak_recycling.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/ags/audio/recall/ags_peak_recycling.c' object='ags-ags_peak_recycling.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -c -o ags-ags_peak_recycling.o `test -f 'src/ags/audio/recall/ags_peak_recycling.c' || echo '$(srcdir)/'`src/ags/audio/recall/ags_peak_recycling.c
+
+ags-ags_peak_recycling.obj: src/ags/audio/recall/ags_peak_recycling.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -MT ags-ags_peak_recycling.obj -MD -MP -MF $(DEPDIR)/ags-ags_peak_recycling.Tpo -c -o ags-ags_peak_recycling.obj `if test -f 'src/ags/audio/recall/ags_peak_recycling.c'; then $(CYGPATH_W) 'src/ags/audio/recall/ags_peak_recycling.c'; else $(CYGPATH_W) '$(srcdir)/src/ags/audio/recall/ags_peak_recycling.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ags-ags_peak_recycling.Tpo $(DEPDIR)/ags-ags_peak_recycling.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/ags/audio/recall/ags_peak_recycling.c' object='ags-ags_peak_recycling.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -c -o ags-ags_peak_recycling.obj `if test -f 'src/ags/audio/recall/ags_peak_recycling.c'; then $(CYGPATH_W) 'src/ags/audio/recall/ags_peak_recycling.c'; else $(CYGPATH_W) '$(srcdir)/src/ags/audio/recall/ags_peak_recycling.c'; fi`
+
+ags-ags_peak_audio_signal.o: src/ags/audio/recall/ags_peak_audio_signal.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -MT ags-ags_peak_audio_signal.o -MD -MP -MF $(DEPDIR)/ags-ags_peak_audio_signal.Tpo -c -o ags-ags_peak_audio_signal.o `test -f 'src/ags/audio/recall/ags_peak_audio_signal.c' || echo '$(srcdir)/'`src/ags/audio/recall/ags_peak_audio_signal.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ags-ags_peak_audio_signal.Tpo $(DEPDIR)/ags-ags_peak_audio_signal.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/ags/audio/recall/ags_peak_audio_signal.c' object='ags-ags_peak_audio_signal.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -c -o ags-ags_peak_audio_signal.o `test -f 'src/ags/audio/recall/ags_peak_audio_signal.c' || echo '$(srcdir)/'`src/ags/audio/recall/ags_peak_audio_signal.c
+
+ags-ags_peak_audio_signal.obj: src/ags/audio/recall/ags_peak_audio_signal.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -MT ags-ags_peak_audio_signal.obj -MD -MP -MF $(DEPDIR)/ags-ags_peak_audio_signal.Tpo -c -o ags-ags_peak_audio_signal.obj `if test -f 'src/ags/audio/recall/ags_peak_audio_signal.c'; then $(CYGPATH_W) 'src/ags/audio/recall/ags_peak_audio_signal.c'; else $(CYGPATH_W) '$(srcdir)/src/ags/audio/recall/ags_peak_audio_signal.c'; fi`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ags-ags_peak_audio_signal.Tpo $(DEPDIR)/ags-ags_peak_audio_signal.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='src/ags/audio/recall/ags_peak_audio_signal.c' object='ags-ags_peak_audio_signal.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -c -o ags-ags_peak_audio_signal.obj `if test -f 'src/ags/audio/recall/ags_peak_audio_signal.c'; then $(CYGPATH_W) 'src/ags/audio/recall/ags_peak_audio_signal.c'; else $(CYGPATH_W) '$(srcdir)/src/ags/audio/recall/ags_peak_audio_signal.c'; fi`
+
 ags-ags_copy_audio_signal.o: src/ags/audio/recall/ags_copy_audio_signal.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ags_CFLAGS) $(CFLAGS) -MT ags-ags_copy_audio_signal.o -MD -MP -MF $(DEPDIR)/ags-ags_copy_audio_signal.Tpo -c -o ags-ags_copy_audio_signal.o `test -f 'src/ags/audio/recall/ags_copy_audio_signal.c' || echo '$(srcdir)/'`src/ags/audio/recall/ags_copy_audio_signal.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ags-ags_copy_audio_signal.Tpo $(DEPDIR)/ags-ags_copy_audio_signal.Po
diff --git a/src/ags/X/ags_line_callbacks.c b/src/ags/X/ags_line_callbacks.c
index 3ffcef4..ea9701f 100644
--- a/src/ags/X/ags_line_callbacks.c
+++ b/src/ags/X/ags_line_callbacks.c
@@ -24,10 +24,12 @@
 #include <ags/audio/ags_recall.h>
 #include <ags/audio/ags_recall_audio.h>
 #include <ags/audio/ags_recall_audio_run.h>
+#include <ags/audio/ags_recall_channel.h>
 #include <ags/audio/ags_recall_id.h>
 #include <ags/audio/ags_port.h>
 #include <ags/audio/ags_recycling_container.h>
 
+#include <ags/audio/recall/ags_peak_channel.h>
 #include <ags/audio/recall/ags_volume_channel.h>
 #include <ags/audio/recall/ags_copy_pattern_channel.h>
 #include <ags/audio/recall/ags_copy_pattern_channel_run.h>
@@ -156,7 +158,7 @@ ags_line_volume_callback(GtkRange *range,
 }
 
 void
-ags_line_peak_run_post_callback(AgsRecall *peak_channel,
+ags_line_peak_run_post_callback(AgsRecall *peak_channel_run,
 				AgsLine *line)
 {
   AgsTaskThread *task_thread;
@@ -181,18 +183,17 @@ ags_line_peak_run_post_callback(AgsRecall *peak_channel,
 
       child = gtk_bin_get_child(GTK_BIN(list->data));
 
-      if(AGS_RECYCLING_CONTAINER(peak_channel->recall_id->recycling_container)->parent == NULL){
-	port = AGS_LINE_MEMBER(list->data)->port;
-      }else{
-	port = AGS_LINE_MEMBER(list->data)->recall_port;
-      }
-
+      port = AGS_PEAK_CHANNEL(AGS_RECALL_CHANNEL_RUN(peak_channel_run)->recall_channel)->peak;
+	
       g_value_init(&value, G_TYPE_DOUBLE);
       ags_port_safe_read(port,
 			 &value);
 
       peak = g_value_get_double(&value);
 
+      //      if(peak_channel_run->recall_id->recycling_container->parent == NULL)
+	//	g_message("%f\0", peak);
+      
       change_indicator = ags_change_indicator_new((AgsIndicator *) child,
 						  peak);
 
diff --git a/src/ags/X/ags_menu_bar_callbacks.c b/src/ags/X/ags_menu_bar_callbacks.c
index 6b54950..9fc8e6b 100644
--- a/src/ags/X/ags_menu_bar_callbacks.c
+++ b/src/ags/X/ags_menu_bar_callbacks.c
@@ -1,4 +1,3 @@
-
 /* AGS - Advanced GTK Sequencer
  * Copyright (C) 2005-2011 Joël Krähemann
  *
diff --git a/src/ags/X/machine/ags_drum_input_line.c b/src/ags/X/machine/ags_drum_input_line.c
index d9dffdb..4dc627c 100644
--- a/src/ags/X/machine/ags_drum_input_line.c
+++ b/src/ags/X/machine/ags_drum_input_line.c
@@ -424,6 +424,50 @@ ags_drum_input_line_map_recall(AgsLine *line,
 
   source = line->channel;
 
+  /* ags-peak */
+  ags_recall_factory_create(audio,
+			    NULL, NULL,
+			    "ags-peak\0",
+			    source->audio_channel, source->audio_channel + 1, 
+			    source->pad, source->pad + 1,
+			    (AGS_RECALL_FACTORY_INPUT |
+			     AGS_RECALL_FACTORY_PLAY |
+			     AGS_RECALL_FACTORY_RECALL |
+			     AGS_RECALL_FACTORY_ADD),
+			    0);
+
+  /* play - connect run_post */
+  list = ags_recall_template_find_type(source->play,
+				       AGS_TYPE_PEAK_CHANNEL_RUN);
+
+  if(list != NULL){
+    play_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
+
+    recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
+
+    recall_handler->signal_name = "run-post\0";
+    recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
+    recall_handler->data = (gpointer) line;
+
+    ags_recall_add_handler(AGS_RECALL(play_peak_channel_run), recall_handler);
+  }
+
+  /* recall - connect run_post */
+  list = ags_recall_template_find_type(source->recall,
+				       AGS_TYPE_PEAK_CHANNEL_RUN);
+
+  if(list != NULL){
+    recall_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
+
+    recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
+
+    recall_handler->signal_name = "run-post\0";
+    recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
+    recall_handler->data = (gpointer) line;
+
+    ags_recall_add_handler(AGS_RECALL(recall_peak_channel_run), recall_handler);
+  }
+
   /* ags-copy-pattern */
   ags_recall_factory_create(audio,
 			    NULL, NULL,
@@ -475,50 +519,6 @@ ags_drum_input_line_map_recall(AgsLine *line,
     list = list->next;
   }
 
-  /* ags-peak */
-  ags_recall_factory_create(audio,
-			    NULL, NULL,
-			    "ags-peak\0",
-			    source->audio_channel, source->audio_channel + 1, 
-			    source->pad, source->pad + 1,
-			    (AGS_RECALL_FACTORY_INPUT |
-			     AGS_RECALL_FACTORY_PLAY |
-			     AGS_RECALL_FACTORY_RECALL |
-			     AGS_RECALL_FACTORY_ADD),
-			    0);
-
-  /* play - connect run_post */
-  list = ags_recall_template_find_type(source->play,
-				       AGS_TYPE_PEAK_CHANNEL_RUN);
-
-  if(list != NULL){
-    play_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
-
-    recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
-
-    recall_handler->signal_name = "run-post\0";
-    recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
-    recall_handler->data = (gpointer) line;
-
-    ags_recall_add_handler(AGS_RECALL(play_peak_channel_run), recall_handler);
-  }
-
-  /* recall - connect run_post */
-  list = ags_recall_template_find_type(source->recall,
-				       AGS_TYPE_PEAK_CHANNEL_RUN);
-
-  if(list != NULL){
-    recall_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
-
-    recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
-
-    recall_handler->signal_name = "run-post\0";
-    recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
-    recall_handler->data = (gpointer) line;
-
-    ags_recall_add_handler(AGS_RECALL(recall_peak_channel_run), recall_handler);
-  }
-
   /* ags-volume */
   ags_recall_factory_create(audio,
 			    NULL, NULL,
diff --git a/src/ags/X/machine/ags_matrix.c b/src/ags/X/machine/ags_matrix.c
index c2a9f84..bf5d26a 100644
--- a/src/ags/X/machine/ags_matrix.c
+++ b/src/ags/X/machine/ags_matrix.c
@@ -895,7 +895,7 @@ ags_matrix_draw_gutter(AgsMatrix *matrix)
                       0, 0,
                       288, 80);
 
-  channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, (guint) matrix->adjustment->value);
+  channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, AGS_MACHINE(matrix)->audio->input_lines - (guint) matrix->adjustment->value - 1);
 
   if(AGS_MACHINE(matrix)->audio->input_pads > AGS_MATRIX_OCTAVE){
     gutter = AGS_MATRIX_OCTAVE;
@@ -914,7 +914,7 @@ ags_matrix_draw_gutter(AgsMatrix *matrix)
       ags_matrix_redraw_gutter_point (matrix, channel, j, i);
     }
 
-    channel = channel->next;
+    channel = channel->prev;
   }
 
   pthread_mutex_unlock(audio_mutex);
@@ -943,7 +943,7 @@ ags_matrix_draw_matrix(AgsMatrix *matrix)
 
   pthread_mutex_lock(audio_mutex);
 
-  channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, (guint) matrix->adjustment->value);
+  channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, AGS_MACHINE(matrix)->audio->input_lines - (guint) matrix->adjustment->value - 1);
 
   if(channel == NULL){
     pthread_mutex_unlock(audio_mutex);
@@ -961,7 +961,7 @@ ags_matrix_draw_matrix(AgsMatrix *matrix)
     for (j = 0; j < 32; j++)
       ags_matrix_redraw_gutter_point (matrix, channel, j, i);
 
-    channel = channel->next;
+    channel = channel->prev;
   }
 
   pthread_mutex_unlock(audio_mutex);
diff --git a/src/ags/X/machine/ags_matrix_callbacks.c b/src/ags/X/machine/ags_matrix_callbacks.c
index 83780ef..193fe5a 100644
--- a/src/ags/X/machine/ags_matrix_callbacks.c
+++ b/src/ags/X/machine/ags_matrix_callbacks.c
@@ -144,10 +144,10 @@ ags_matrix_drawing_area_button_press_callback(GtkWidget *widget, GdkEventButton
 
     index1 = ((guint) g_ascii_strtoull(matrix->selected->button.label_text, NULL, 10)) - 1;
     
-    channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, i + (guint) matrix->adjustment->value);
+    channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, AGS_MACHINE(matrix)->audio->input_lines - (i + (guint) matrix->adjustment->value) - 1);
 
     toggle_pattern_bit = ags_toggle_pattern_bit_new(channel->pattern->data,
-						    i + (guint) matrix->adjustment->value,
+						    AGS_MACHINE(matrix)->audio->input_lines - (i + (guint) matrix->adjustment->value) - 1,
 						    0, index1,
 						    j);
     g_signal_connect(G_OBJECT(toggle_pattern_bit), "refresh-gui\0",
@@ -227,7 +227,7 @@ ags_matrix_refresh_gui_callback(AgsTogglePatternBit *toggle_pattern_bit,
 
   channel = ags_channel_nth(AGS_MACHINE(matrix)->audio->input, toggle_pattern_bit->line);
 
-  ags_matrix_redraw_gutter_point(matrix, channel, toggle_pattern_bit->bit, toggle_pattern_bit->line - (guint) matrix->adjustment->value);
+  ags_matrix_redraw_gutter_point(matrix, channel, toggle_pattern_bit->bit, (-1 * (toggle_pattern_bit->line - AGS_MACHINE(matrix)->audio->input_lines + 1) - (guint) matrix->adjustment->value) % AGS_MATRIX_OCTAVE);
 }
 
 void
diff --git a/src/ags/audio/ags_audio.c b/src/ags/audio/ags_audio.c
index 2f6df26..73fed40 100644
--- a/src/ags/audio/ags_audio.c
+++ b/src/ags/audio/ags_audio.c
@@ -2645,9 +2645,9 @@ ags_audio_add_recall(AgsAudio *audio, GObject *recall, gboolean play)
   g_object_ref(G_OBJECT(recall));
 
   if(play){
-    audio->play = g_list_append(audio->play, recall);
+    audio->play = g_list_prepend(audio->play, recall);
   }else{
-    audio->recall = g_list_append(audio->recall, recall);
+    audio->recall = g_list_prepend(audio->recall, recall);
   }
   
   pthread_mutex_unlock(mutex);
@@ -2755,11 +2755,13 @@ ags_audio_duplicate_recall(AgsAudio *audio,
   
   /* get the appropriate list */
   if(recall_id->recycling_container->parent == NULL){
-    list_recall_start = 
-      list_recall = audio->play;
+    list_recall = g_list_copy(audio->play);
+    list_recall_start =
+      list_recall = g_list_reverse(list_recall);
   }else{
+    list_recall = g_list_copy(audio->recall);
     list_recall_start =
-      list_recall = audio->recall;
+      list_recall = g_list_reverse(list_recall);
   }
 
   /* return if already duplicated */
@@ -2825,6 +2827,8 @@ ags_audio_duplicate_recall(AgsAudio *audio,
   }
 
   pthread_mutex_unlock(mutex);
+
+  g_list_free(list_recall_start);
 }
 
 /**
diff --git a/src/ags/audio/ags_channel.c b/src/ags/audio/ags_channel.c
index 5393c19..ec09ea0 100644
--- a/src/ags/audio/ags_channel.c
+++ b/src/ags/audio/ags_channel.c
@@ -931,9 +931,9 @@ ags_channel_add_recall(AgsChannel *channel, GObject *recall, gboolean play)
   g_object_ref(recall);
 
   if(play){
-    channel->play = g_list_append(channel->play, recall);
+    channel->play = g_list_prepend(channel->play, recall);
   }else{
-    channel->recall = g_list_append(channel->recall, recall);
+    channel->recall = g_list_prepend(channel->recall, recall);
   }
 }
 
@@ -2683,7 +2683,7 @@ ags_channel_duplicate_recall(AgsChannel *channel,
 {
   AgsAudio *audio;
   AgsRecall *recall, *copy;
-  GList *list_recall;
+  GList *list_recall, *list_recall_start;
   gboolean playback, sequencer, notation;
 
   if(channel == NULL ||
@@ -2715,9 +2715,13 @@ ags_channel_duplicate_recall(AgsChannel *channel,
   
   /* get the appropriate lists */
   if(recall_id->recycling_container->parent == NULL){
-    list_recall = channel->play;
+    list_recall = g_list_copy(channel->play);
+    list_recall_start = 
+      list_recall = g_list_reverse(list_recall);
   }else{
-    list_recall = channel->recall;
+    list_recall = g_list_copy(channel->recall);
+    list_recall_start =
+      list_recall = g_list_reverse(list_recall);
   }
 
   /*  */
@@ -2764,6 +2768,8 @@ ags_channel_duplicate_recall(AgsChannel *channel,
     /* iterate */    
     list_recall = list_recall->next;
   }
+
+  g_list_free(list_recall_start);
 }
 
 /**
diff --git a/src/ags/audio/recall/ags_mute_audio_signal.c b/src/ags/audio/recall/ags_mute_audio_signal.c
index cdefbd4..a2cf426 100644
--- a/src/ags/audio/recall/ags_mute_audio_signal.c
+++ b/src/ags/audio/recall/ags_mute_audio_signal.c
@@ -261,6 +261,8 @@ ags_mute_audio_signal_run_inter(AgsRecall *recall)
     return;
   }
 
+  g_message("mute\0");
+  
   /* mute */
   memset((signed short *) stream_source->data, 0, buffer_size * sizeof(signed short));
 }
diff --git a/src/ags/audio/recall/ags_peak_audio_signal.c b/src/ags/audio/recall/ags_peak_audio_signal.c
new file mode 100644
index 0000000..9dc8361
--- /dev/null
+++ b/src/ags/audio/recall/ags_peak_audio_signal.c
@@ -0,0 +1,260 @@
+/* AGS - Advanced GTK Sequencer
+ * Copyright (C) 2015 Joël Krähemann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <ags/audio/recall/ags_peak_audio_signal.h>
+#include <ags/audio/recall/ags_peak_channel.h>
+
+#include <ags-lib/object/ags_connectable.h>
+
+#include <ags/main.h>
+
+#include <ags/lib/ags_list.h>
+#include <ags/lib/ags_parameter.h>
+
+#include <ags/object/ags_dynamic_connectable.h>
+
+#include <ags/audio/ags_recall_channel_run.h>
+
+void ags_peak_audio_signal_class_init(AgsPeakAudioSignalClass *peak_audio_signal);
+void ags_peak_audio_signal_connectable_interface_init(AgsConnectableInterface *connectable);
+void ags_peak_audio_signal_dynamic_connectable_interface_init(AgsDynamicConnectableInterface *dynamic_connectable);
+void ags_peak_audio_signal_init(AgsPeakAudioSignal *peak_audio_signal);
+void ags_peak_audio_signal_set_property(GObject *gobject,
+					guint prop_id,
+					const GValue *value,
+					GParamSpec *param_spec);
+void ags_peak_audio_signal_get_property(GObject *gobject,
+					guint prop_id,
+					GValue *value,
+					GParamSpec *param_spec);
+void ags_peak_audio_signal_connect(AgsConnectable *connectable);
+void ags_peak_audio_signal_disconnect(AgsConnectable *connectable);
+void ags_peak_audio_signal_connect_dynamic(AgsDynamicConnectable *dynamic_connectable);
+void ags_peak_audio_signal_disconnect_dynamic(AgsDynamicConnectable *dynamic_connectable);
+void ags_peak_audio_signal_finalize(GObject *gobject);
+
+void ags_peak_audio_signal_run_inter(AgsRecall *recall);
+AgsRecall* ags_peak_audio_signal_duplicate(AgsRecall *recall,
+					   AgsRecallID *recall_id,
+					   guint *n_params, GParameter *parameter);
+
+/**
+ * SECTION:ags_peak_audio_signal
+ * @short_description: peaks audio signal
+ * @title: AgsPeakAudioSignal
+ * @section_id:
+ * @include: ags/audio/recall/ags_peak_audio_signal.h
+ *
+ * The #AgsPeakAudioSignal class peaks the audio signal.
+ */
+
+enum{
+  PROP_0,
+  PROP_PEAK,
+};
+
+static gpointer ags_peak_audio_signal_parent_class = NULL;
+static AgsConnectableInterface *ags_peak_audio_signal_parent_connectable_interface;
+static AgsDynamicConnectableInterface *ags_peak_audio_signal_parent_dynamic_connectable_interface;
+
+GType
+ags_peak_audio_signal_get_type()
+{
+  static GType ags_type_peak_audio_signal = 0;
+
+  if(!ags_type_peak_audio_signal){
+    static const GTypeInfo ags_peak_audio_signal_info = {
+      sizeof (AgsPeakAudioSignalClass),
+      NULL, /* base_init */
+      NULL, /* base_finalize */
+      (GClassInitFunc) ags_peak_audio_signal_class_init,
+      NULL, /* class_finalize */
+      NULL, /* class_data */
+      sizeof (AgsPeakAudioSignal),
+      0,    /* n_preallocs */
+      (GInstanceInitFunc) ags_peak_audio_signal_init,
+    };
+
+    static const GInterfaceInfo ags_connectable_interface_info = {
+      (GInterfaceInitFunc) ags_peak_audio_signal_connectable_interface_init,
+      NULL, /* interface_finalize */
+      NULL, /* interface_data */
+    };
+
+    static const GInterfaceInfo ags_dynamic_connectable_interface_info = {
+      (GInterfaceInitFunc) ags_peak_audio_signal_dynamic_connectable_interface_init,
+      NULL, /* interface_finalize */
+      NULL, /* interface_data */
+    };
+
+    ags_type_peak_audio_signal = g_type_register_static(AGS_TYPE_RECALL_AUDIO_SIGNAL,
+							"AgsPeakAudioSignal\0",
+							&ags_peak_audio_signal_info,
+							0);
+
+    g_type_add_interface_static(ags_type_peak_audio_signal,
+				AGS_TYPE_CONNECTABLE,
+				&ags_connectable_interface_info);
+
+    g_type_add_interface_static(ags_type_peak_audio_signal,
+				AGS_TYPE_DYNAMIC_CONNECTABLE,
+				&ags_dynamic_connectable_interface_info);
+  }
+
+  return (ags_type_peak_audio_signal);
+}
+
+void
+ags_peak_audio_signal_class_init(AgsPeakAudioSignalClass *peak_audio_signal)
+{
+  GObjectClass *gobject;
+  AgsRecallClass *recall;
+  GParamSpec *param_spec;
+
+  ags_peak_audio_signal_parent_class = g_type_class_peek_parent(peak_audio_signal);
+
+  /* GObjectClass */
+  gobject = (GObjectClass *) peak_audio_signal;
+
+  gobject->finalize = ags_peak_audio_signal_finalize;
+
+  /* AgsRecallClass */
+  recall = (AgsRecallClass *) peak_audio_signal;
+
+  recall->run_inter = ags_peak_audio_signal_run_inter;
+}
+
+void
+ags_peak_audio_signal_connectable_interface_init(AgsConnectableInterface *connectable)
+{
+  ags_peak_audio_signal_parent_connectable_interface = g_type_interface_peek_parent(connectable);
+
+  connectable->connect = ags_peak_audio_signal_connect;
+  connectable->disconnect = ags_peak_audio_signal_disconnect;
+}
+
+void
+ags_peak_audio_signal_dynamic_connectable_interface_init(AgsDynamicConnectableInterface *dynamic_connectable)
+{
+  ags_peak_audio_signal_parent_dynamic_connectable_interface = g_type_interface_peek_parent(dynamic_connectable);
+
+  dynamic_connectable->connect_dynamic = ags_peak_audio_signal_connect_dynamic;
+  dynamic_connectable->disconnect_dynamic = ags_peak_audio_signal_disconnect_dynamic;
+}
+
+void
+ags_peak_audio_signal_init(AgsPeakAudioSignal *peak_audio_signal)
+{
+  AGS_RECALL(peak_audio_signal)->name = "ags-peak\0";
+  AGS_RECALL(peak_audio_signal)->version = AGS_EFFECTS_DEFAULT_VERSION;
+  AGS_RECALL(peak_audio_signal)->build_id = AGS_BUILD_ID;
+  AGS_RECALL(peak_audio_signal)->xml_type = "ags-peak-audio-signal\0";
+  AGS_RECALL(peak_audio_signal)->port = NULL;
+}
+
+void
+ags_peak_audio_signal_finalize(GObject *gobject)
+{
+  /* call parent */
+  G_OBJECT_CLASS(ags_peak_audio_signal_parent_class)->finalize(gobject);
+
+  /* empty */
+}
+
+void
+ags_peak_audio_signal_connect(AgsConnectable *connectable)
+{
+  /* call parent */
+  ags_peak_audio_signal_parent_connectable_interface->connect(connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_audio_signal_disconnect(AgsConnectable *connectable)
+{
+  /* call parent */
+  ags_peak_audio_signal_parent_connectable_interface->disconnect(connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_audio_signal_connect_dynamic(AgsDynamicConnectable *dynamic_connectable)
+{
+  /* call parent */
+  ags_peak_audio_signal_parent_dynamic_connectable_interface->connect_dynamic(dynamic_connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_audio_signal_disconnect_dynamic(AgsDynamicConnectable *dynamic_connectable)
+{
+  /* call parent */
+  ags_peak_audio_signal_parent_dynamic_connectable_interface->disconnect_dynamic(dynamic_connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_audio_signal_run_inter(AgsRecall *recall)
+{
+  AgsPeakAudioSignal *peak_audio_signal;
+
+  AGS_RECALL_CLASS(ags_peak_audio_signal_parent_class)->run_inter(recall);
+
+  peak_audio_signal = AGS_PEAK_AUDIO_SIGNAL(recall);
+
+  if(AGS_RECALL_AUDIO_SIGNAL(recall)->source->stream_current != NULL){
+    AgsPeakChannel *peak_channel;
+    signed short *buffer;
+    gdouble peak;
+    guint buffer_size;
+    guint i;
+    GValue value = {0,};
+
+    peak_channel = AGS_PEAK_CHANNEL(AGS_RECALL_CHANNEL_RUN(recall->parent->parent)->recall_channel);
+
+    ags_peak_channel_retrieve_peak(peak_channel,
+				   TRUE);
+  }else{
+    ags_recall_done(recall);
+  }
+}
+
+/**
+ * ags_peak_audio_signal_new:
+ * @audio_signal: an #AgsAudioSignal
+ *
+ * Creates an #AgsPeakAudioSignal
+ *
+ * Returns: a new #AgsPeakAudioSignal
+ *
+ * Since: 0.4
+ */
+AgsPeakAudioSignal*
+ags_peak_audio_signal_new(AgsAudioSignal *audio_signal)
+{
+  AgsPeakAudioSignal *peak_audio_signal;
+
+  peak_audio_signal = (AgsPeakAudioSignal *) g_object_new(AGS_TYPE_PEAK_AUDIO_SIGNAL,
+							  NULL);
+
+  return(peak_audio_signal);
+}
diff --git a/src/ags/audio/recall/ags_peak_audio_signal.h b/src/ags/audio/recall/ags_peak_audio_signal.h
new file mode 100644
index 0000000..2b40a51
--- /dev/null
+++ b/src/ags/audio/recall/ags_peak_audio_signal.h
@@ -0,0 +1,51 @@
+/* AGS - Advanced GTK Sequencer
+ * Copyright (C) 2015 Joël Krähemann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __AGS_PEAK_AUDIO_SIGNAL_H__
+#define __AGS_PEAK_AUDIO_SIGNAL_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <ags/audio/ags_recall_audio_signal.h>
+
+#define AGS_TYPE_PEAK_AUDIO_SIGNAL                (ags_peak_audio_signal_get_type())
+#define AGS_PEAK_AUDIO_SIGNAL(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_PEAK_AUDIO_SIGNAL, AgsPeakAudioSignal))
+#define AGS_PEAK_AUDIO_SIGNAL_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_PEAK_AUDIO_SIGNAL, AgsPeakAudioSignalClass))
+#define AGS_IS_PEAK_AUDIO_SIGNAL(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AGS_TYPE_PEAK_AUDIO_SIGNAL))
+#define AGS_IS_PEAK_AUDIO_SIGNAL_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE ((class), AGS_TYPE_PEAK_AUDIO_SIGNAL))
+#define AGS_PEAK_AUDIO_SIGNAL_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), AGS_TYPE_PEAK_AUDIO_SIGNAL, AgsPeakAudioSignalClass))
+
+typedef struct _AgsPeakAudioSignal AgsPeakAudioSignal;
+typedef struct _AgsPeakAudioSignalClass AgsPeakAudioSignalClass;
+
+struct _AgsPeakAudioSignal
+{
+  AgsRecallAudioSignal recall_audio_signal;
+};
+
+struct _AgsPeakAudioSignalClass
+{
+  AgsRecallAudioSignalClass recall_audio_signal;
+};
+
+GType ags_peak_audio_signal_get_type();
+
+AgsPeakAudioSignal* ags_peak_audio_signal_new(AgsAudioSignal *audio_signal);
+
+#endif /*__AGS_PEAK_AUDIO_SIGNAL_H__*/
diff --git a/src/ags/audio/recall/ags_peak_channel.c b/src/ags/audio/recall/ags_peak_channel.c
index 8eab4f9..d024825 100644
--- a/src/ags/audio/recall/ags_peak_channel.c
+++ b/src/ags/audio/recall/ags_peak_channel.c
@@ -27,6 +27,7 @@
 
 #include <ags/audio/ags_audio.h>
 #include <ags/audio/ags_output.h>
+#include <ags/audio/ags_input.h>
 
 void ags_peak_channel_class_init(AgsPeakChannelClass *peak_channel);
 void ags_peak_channel_connectable_interface_init(AgsConnectableInterface *connectable);
@@ -313,7 +314,7 @@ ags_peak_channel_retrieve_peak(AgsPeakChannel *peak_channel,
   AgsChannel *source;
   AgsRecycling *recycling;
   GList *audio_signal;
-  double *buffer;
+  signed short *buffer;
   double current_value;
   guint buffer_size;
   static const double scale_precision = 10.0;
@@ -335,18 +336,32 @@ ags_peak_channel_retrieve_peak(AgsPeakChannel *peak_channel,
   recycling = source->first_recycling;
   
   /* initialize buffer */
-  buffer = (double *) malloc(buffer_size * sizeof(double));
-  for(i = 0; i < buffer_size; i++) buffer[i] = 0.0;
+  buffer = (signed short *) malloc(buffer_size * sizeof(signed short));
+  for(i = 0; i < buffer_size; i++) buffer[i] = 0;
 
   while(recycling != source->last_recycling->next){
     audio_signal = recycling->audio_signal;
 
     while(audio_signal != NULL){
-      if(AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current != NULL){
-	/* copy buffer 1:1 */
-	ags_audio_signal_copy_buffer_to_double_buffer(buffer, 1,
-						      (signed short *) AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current->data, 1,
-						      buffer_size);
+      if((AGS_IS_INPUT(source) &&
+	  (AGS_AUDIO_INPUT_HAS_RECYCLING & (AGS_AUDIO(source->audio)->flags)) != 0) ||
+	 (AGS_IS_OUTPUT(source) &&
+	  (AGS_AUDIO_OUTPUT_HAS_RECYCLING & (AGS_AUDIO(source->audio)->flags)) != 0)){
+	if((AGS_AUDIO_SIGNAL_TEMPLATE & (AGS_AUDIO_SIGNAL(audio_signal->data)->flags)) == 0 &&
+	   AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current != NULL){
+	  /* copy buffer 1:1 */
+	  ags_audio_signal_copy_buffer_to_buffer(buffer, 1,
+						 (signed short *) AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current->data, 1,
+						 buffer_size);
+	}
+      }else{
+	if((AGS_AUDIO_SIGNAL_TEMPLATE & (AGS_AUDIO_SIGNAL(audio_signal->data)->flags)) == 0 &&
+	   AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current != NULL){
+	  /* copy buffer 1:1 */
+	  ags_audio_signal_copy_buffer_to_buffer(buffer, 1,
+						 (signed short *) AGS_AUDIO_SIGNAL(audio_signal->data)->stream_current->data, 1,
+						 buffer_size);
+	}
       }
 
       audio_signal = audio_signal->next;
@@ -356,20 +371,22 @@ ags_peak_channel_retrieve_peak(AgsPeakChannel *peak_channel,
   }
 
   /* calculate average value */
-  current_value = 1.0 / (1.0 / G_MAXUINT16 * (1.0 / 45.0));
+  current_value = 0.0;
 
   for(i = 0; i < buffer_size; i++){
     if(buffer[i] == 0){
       continue;
     }
-    
-    current_value +=  (1.0 / (1.0 / G_MAXUINT16 * buffer[i]));
+
+    current_value +=  (1.0 / (1.0 / (double) G_MAXUINT16 * buffer[i]));
   }
   
   /* break down to scale */
   //TODO:JK: verify me
-  current_value = scale_precision * (atan(1.0 / 440.0) / sin(current_value / 440.0));
-
+  if(current_value != 0.0){
+    current_value = scale_precision * (atan(1.0 / 440.0) / sin(current_value / 22000.0));
+  }
+  
   g_value_init(&value, G_TYPE_DOUBLE);
 
   if(current_value < 0.0){
diff --git a/src/ags/audio/recall/ags_peak_channel_run.c b/src/ags/audio/recall/ags_peak_channel_run.c
index 4610345..e30eabe 100644
--- a/src/ags/audio/recall/ags_peak_channel_run.c
+++ b/src/ags/audio/recall/ags_peak_channel_run.c
@@ -17,6 +17,7 @@
  */
 
 #include <ags/audio/recall/ags_peak_channel_run.h>
+#include <ags/audio/recall/ags_peak_recycling.h>
 
 #include <ags-lib/object/ags_connectable.h>
 
@@ -46,7 +47,6 @@ void ags_peak_channel_run_finalize(GObject *gobject);
 AgsRecall* ags_peak_channel_run_duplicate(AgsRecall *recall,
 					    AgsRecallID *recall_id,
 					    guint *n_params, GParameter *parameter);
-void ags_peak_channel_run_run_inter(AgsRecall *recall);
 
 /**
  * SECTION:ags_peak_channel_run
@@ -126,7 +126,6 @@ ags_peak_channel_run_class_init(AgsPeakChannelRunClass *peak_channel_run)
   recall = (AgsRecallClass *) peak_channel_run;
 
   recall->duplicate = ags_peak_channel_run_duplicate;
-  recall->run_inter = ags_peak_channel_run_run_inter;
 }
 
 void
@@ -157,7 +156,7 @@ ags_peak_channel_run_init(AgsPeakChannelRun *peak_channel_run)
   AGS_RECALL(peak_channel_run)->port = NULL;
 
   AGS_RECALL(peak_channel_run)->flags |= AGS_RECALL_INPUT_ORIENTATED;
-  AGS_RECALL(peak_channel_run)->child_type = G_TYPE_NONE;
+  AGS_RECALL(peak_channel_run)->child_type = AGS_TYPE_PEAK_RECYCLING;
 }
 
 void
@@ -218,39 +217,6 @@ ags_peak_channel_run_duplicate(AgsRecall *recall,
   return((AgsRecall *) copy);
 }
 
-void
-ags_peak_channel_run_run_inter(AgsRecall *recall)
-{
-  AgsChannel *source;
-  AgsRecallChannel *recall_channel;
-  GList *list;
-
-  /* call parent */
-  AGS_RECALL_CLASS(ags_peak_channel_run_parent_class)->run_post(recall);
-
-  /*  */
-  source = AGS_RECALL_CHANNEL_RUN(recall)->source;
-  recall_channel = AGS_RECALL_CHANNEL_RUN(recall)->recall_channel;
-
-  if(AGS_RECYCLING_CONTAINER(AGS_RECALL_ID(recall->recall_id)->recycling_container)->parent == NULL){
-    list = ags_recall_find_type(source->play,
-				AGS_TYPE_PEAK_CHANNEL_RUN);
-
-    //    if(g_list_last(list) == recall){
-      ags_peak_channel_retrieve_peak(recall_channel,
-				     TRUE);
-      //    }
-  }else{
-    list = ags_recall_find_type(source->recall,
-				AGS_TYPE_PEAK_CHANNEL_RUN);
-
-    //    if(g_list_last(list) == recall){
-      ags_peak_channel_retrieve_peak(recall_channel,
-				     FALSE);
-      //    }
-  }
-}
-
 /**
  * ags_peak_channel_run_new:
  * @channel: the #AgsChannel as source
diff --git a/src/ags/audio/recall/ags_peak_recycling.c b/src/ags/audio/recall/ags_peak_recycling.c
new file mode 100644
index 0000000..ce5d2d5
--- /dev/null
+++ b/src/ags/audio/recall/ags_peak_recycling.c
@@ -0,0 +1,241 @@
+/* AGS - Advanced GTK Sequencer
+ * Copyright (C) 2015 Joël Krähemann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <ags/audio/recall/ags_peak_recycling.h>
+#include <ags/audio/recall/ags_peak_channel.h>
+#include <ags/audio/recall/ags_peak_audio_signal.h>
+
+#include <ags-lib/object/ags_connectable.h>
+
+#include <ags/main.h>
+
+#include <ags/lib/ags_parameter.h>
+
+#include <ags/object/ags_dynamic_connectable.h>
+
+#include <ags/audio/ags_audio_signal.h>
+#include <ags/audio/ags_recall_id.h>
+
+void ags_peak_recycling_class_init(AgsPeakRecyclingClass *peak_recycling);
+void ags_peak_recycling_connectable_interface_init(AgsConnectableInterface *connectable);
+void ags_peak_recycling_dynamic_connectable_interface_init(AgsDynamicConnectableInterface *dynamic_connectable);
+void ags_peak_recycling_init(AgsPeakRecycling *peak_recycling);
+void ags_peak_recycling_connect(AgsConnectable *connectable);
+void ags_peak_recycling_disconnect(AgsConnectable *connectable);
+void ags_peak_recycling_connect_dynamic(AgsDynamicConnectable *dynamic_connectable);
+void ags_peak_recycling_disconnect_dynamic(AgsDynamicConnectable *dynamic_connectable);
+void ags_peak_recycling_finalize(GObject *gobject);
+
+AgsRecall* ags_peak_recycling_duplicate(AgsRecall *recall,
+					AgsRecallID *recall_id,
+					guint *n_params, GParameter *parameter);
+
+/**
+ * SECTION:ags_peak_recycling
+ * @short_description: peaks recycling
+ * @title: AgsPeakRecycling
+ * @section_id:
+ * @include: ags/audio/recall/ags_peak_recycling.h
+ *
+ * The #AgsPeakRecycling class peaks the recycling.
+ */
+
+static gpointer ags_peak_recycling_parent_class = NULL;
+static AgsConnectableInterface *ags_peak_recycling_parent_connectable_interface;
+static AgsDynamicConnectableInterface *ags_peak_recycling_parent_dynamic_connectable_interface;
+
+GType
+ags_peak_recycling_get_type()
+{
+  static GType ags_type_peak_recycling = 0;
+
+  if(!ags_type_peak_recycling){
+    static const GTypeInfo ags_peak_recycling_info = {
+      sizeof (AgsPeakRecyclingClass),
+      NULL, /* base_init */
+      NULL, /* base_finalize */
+      (GClassInitFunc) ags_peak_recycling_class_init,
+      NULL, /* class_finalize */
+      NULL, /* class_data */
+      sizeof (AgsPeakRecycling),
+      0,    /* n_preallocs */
+      (GInstanceInitFunc) ags_peak_recycling_init,
+    };
+
+    static const GInterfaceInfo ags_connectable_interface_info = {
+      (GInterfaceInitFunc) ags_peak_recycling_connectable_interface_init,
+      NULL, /* interface_finalize */
+      NULL, /* interface_data */
+    };
+
+    static const GInterfaceInfo ags_dynamic_connectable_interface_info = {
+      (GInterfaceInitFunc) ags_peak_recycling_dynamic_connectable_interface_init,
+      NULL, /* interface_finalize */
+      NULL, /* interface_data */
+    };
+
+    ags_type_peak_recycling = g_type_register_static(AGS_TYPE_RECALL_RECYCLING,
+						     "AgsPeakRecycling\0",
+						     &ags_peak_recycling_info,
+						     0);
+
+    g_type_add_interface_static(ags_type_peak_recycling,
+				AGS_TYPE_CONNECTABLE,
+				&ags_connectable_interface_info);
+
+    g_type_add_interface_static(ags_type_peak_recycling,
+				AGS_TYPE_DYNAMIC_CONNECTABLE,
+				&ags_dynamic_connectable_interface_info);
+  }
+
+  return (ags_type_peak_recycling);
+}
+
+void
+ags_peak_recycling_class_init(AgsPeakRecyclingClass *peak_recycling)
+{
+  GObjectClass *gobject;
+  AgsRecallClass *recall;
+  GParamSpec *param_spec;
+
+  ags_peak_recycling_parent_class = g_type_class_peek_parent(peak_recycling);
+
+  /* GObjectClass */
+  gobject = (GObjectClass *) peak_recycling;
+
+  gobject->finalize = ags_peak_recycling_finalize;
+
+  /* AgsRecallClass */
+  recall = (AgsRecallClass *) peak_recycling;
+
+  recall->duplicate = ags_peak_recycling_duplicate;
+}
+
+void
+ags_peak_recycling_connectable_interface_init(AgsConnectableInterface *connectable)
+{
+  ags_peak_recycling_parent_connectable_interface = g_type_interface_peek_parent(connectable);
+
+  connectable->connect = ags_peak_recycling_connect;
+  connectable->disconnect = ags_peak_recycling_disconnect;
+}
+
+void
+ags_peak_recycling_dynamic_connectable_interface_init(AgsDynamicConnectableInterface *dynamic_connectable)
+{
+  ags_peak_recycling_parent_dynamic_connectable_interface = g_type_interface_peek_parent(dynamic_connectable);
+
+  dynamic_connectable->connect_dynamic = ags_peak_recycling_connect_dynamic;
+  dynamic_connectable->disconnect_dynamic = ags_peak_recycling_disconnect_dynamic;
+}
+
+void
+ags_peak_recycling_init(AgsPeakRecycling *peak_recycling)
+{
+  AGS_RECALL(peak_recycling)->name = "ags-peak\0";
+  AGS_RECALL(peak_recycling)->version = AGS_EFFECTS_DEFAULT_VERSION;
+  AGS_RECALL(peak_recycling)->build_id = AGS_BUILD_ID;
+  AGS_RECALL(peak_recycling)->xml_type = "ags-peak-recycling\0";
+  AGS_RECALL(peak_recycling)->port = NULL;
+
+  AGS_RECALL(peak_recycling)->child_type = AGS_TYPE_PEAK_AUDIO_SIGNAL;
+
+  AGS_RECALL_RECYCLING(peak_recycling)->flags |= (AGS_RECALL_RECYCLING_MAP_CHILD_SOURCE);
+}
+
+void
+ags_peak_recycling_finalize(GObject *gobject)
+{
+  /* empty */
+
+  /* call parent */
+  G_OBJECT_CLASS(ags_peak_recycling_parent_class)->finalize(gobject);
+}
+
+void
+ags_peak_recycling_connect(AgsConnectable *connectable)
+{ 
+  /* call parent */
+  ags_peak_recycling_parent_connectable_interface->connect(connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_recycling_disconnect(AgsConnectable *connectable)
+{
+  /* call parent */
+  ags_peak_recycling_parent_connectable_interface->disconnect(connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_recycling_connect_dynamic(AgsDynamicConnectable *dynamic_connectable)
+{
+  /* call parent */
+  ags_peak_recycling_parent_dynamic_connectable_interface->connect_dynamic(dynamic_connectable);
+
+  /* empty */
+}
+
+void
+ags_peak_recycling_disconnect_dynamic(AgsDynamicConnectable *dynamic_connectable)
+{
+  /* call parent */
+  ags_peak_recycling_parent_dynamic_connectable_interface->disconnect_dynamic(dynamic_connectable);
+
+  /* empty */
+}
+
+AgsRecall*
+ags_peak_recycling_duplicate(AgsRecall *recall,
+			     AgsRecallID *recall_id,
+			     guint *n_params, GParameter *parameter)
+{
+  AgsPeakRecycling *copy;
+
+  copy = (AgsPeakRecycling *) AGS_RECALL_CLASS(ags_peak_recycling_parent_class)->duplicate(recall,
+											   recall_id,
+											   n_params, parameter);
+
+  return((AgsRecall *) copy);
+}
+
+/**
+ * ags_peak_recycling_new:
+ * @recycling: the source #AgsRecycling
+ *
+ * Creates an #AgsPeakRecycling
+ *
+ * Returns: a new #AgsPeakRecycling
+ *
+ * Since: 0.4
+ */
+AgsPeakRecycling*
+ags_peak_recycling_new(AgsRecycling *recycling)
+{
+  AgsPeakRecycling *peak_recycling;
+
+  peak_recycling = (AgsPeakRecycling *) g_object_new(AGS_TYPE_PEAK_RECYCLING,
+						     "source\0", recycling,
+						     NULL);
+
+  return(peak_recycling);
+}
+
diff --git a/src/ags/audio/recall/ags_peak_recycling.h b/src/ags/audio/recall/ags_peak_recycling.h
new file mode 100644
index 0000000..7ba728a
--- /dev/null
+++ b/src/ags/audio/recall/ags_peak_recycling.h
@@ -0,0 +1,51 @@
+/* AGS - Advanced GTK Sequencer
+ * Copyright (C) 2015 Joël Krähemann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __AGS_PEAK_RECYCLING_H__
+#define __AGS_PEAK_RECYCLING_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <ags/audio/ags_recall_recycling.h>
+
+#define AGS_TYPE_PEAK_RECYCLING                (ags_peak_recycling_get_type())
+#define AGS_PEAK_RECYCLING(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_PEAK_RECYCLING, AgsPeakRecycling))
+#define AGS_PEAK_RECYCLING_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_PEAK_RECYCLING, AgsPeakRecyclingClass))
+#define AGS_IS_PEAK_RECYCLING(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AGS_TYPE_PEAK_RECYCLING))
+#define AGS_IS_PEAK_RECYCLING_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE ((class), AGS_TYPE_PEAK_RECYCLING))
+#define AGS_PEAK_RECYCLING_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), AGS_TYPE_PEAK_RECYCLING, AgsPeakRecyclingClass))
+
+typedef struct _AgsPeakRecycling AgsPeakRecycling;
+typedef struct _AgsPeakRecyclingClass AgsPeakRecyclingClass;
+
+struct _AgsPeakRecycling
+{
+  AgsRecallRecycling recall_recycling;
+};
+
+struct _AgsPeakRecyclingClass
+{
+  AgsRecallRecyclingClass recall_recycling;
+};
+
+GType ags_peak_recycling_get_type();
+
+AgsPeakRecycling* ags_peak_recycling_new(AgsRecycling *recycling);
+
+#endif /*__AGS_PEAK_RECYCLING_H__*/
diff --git a/src/ags/audio/task/ags_toggle_pattern_bit.c b/src/ags/audio/task/ags_toggle_pattern_bit.c
index 9d20d1c..637ec52 100644
--- a/src/ags/audio/task/ags_toggle_pattern_bit.c
+++ b/src/ags/audio/task/ags_toggle_pattern_bit.c
@@ -168,6 +168,8 @@ ags_toggle_pattern_bit_launch(AgsTask *task)
 
   toggle_pattern_bit = AGS_TOGGLE_PATTERN_BIT(task);
 
+  g_message("toggle pattern\0");
+  
   ags_pattern_toggle_bit((AgsPattern *) toggle_pattern_bit->pattern,
 			 toggle_pattern_bit->index_i, toggle_pattern_bit->index_j,
 			 toggle_pattern_bit->bit);
diff --git a/src/ags/widget/ags_vindicator.c b/src/ags/widget/ags_vindicator.c
index 49a2ad9..1a4b492 100644
--- a/src/ags/widget/ags_vindicator.c
+++ b/src/ags/widget/ags_vindicator.c
@@ -142,7 +142,7 @@ ags_vindicator_draw(AgsVIndicator *indicator)
 
   for(i = 0; i < height / (segment_height + padding); i++){
     if(adjustment->value > 0.0 &&
-       (1 / adjustment->value * i < (height / (segment_height + padding)))){
+       (1.0 / adjustment->value * i < (height / (segment_height + padding)))){
       /* active */
       cairo_set_source_rgba(cr, 0.9, 0.7, 0.2, 1.0);
     }else{

-- 
gsequencer packaging



More information about the pkg-multimedia-commits mailing list