[SCM] gsequencer/master: Dropped patches

umlaeute at users.alioth.debian.org umlaeute at users.alioth.debian.org
Tue Jan 31 10:42:08 UTC 2017


The following commit has been merged in the master branch:
commit 95069b73151aaaf1a4cc52c7d21c733fc18b660b
Author: IOhannes m zmölnig <zmoelnig at iem.at>
Date:   Tue Jan 31 11:07:07 2017 +0100

    Dropped patches
    
    Gbp-Dch: ignore

diff --git a/debian/patches/fix-changelog.patch b/debian/patches/fix-changelog.patch
deleted file mode 100644
index 4a48d3d..0000000
--- a/debian/patches/fix-changelog.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Description: Added ChangLog entries.
-Author: Joël Krähmann <jkraehemann at gmail.com>
-Applied-Upstream: 0.7.122.x, http://git.savannah.gnu.org/cgit/gsequencer.git
-Last-Update: 2017-01-31
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,14 @@
-+ags (0.7.122.1)
-+
-+	[ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ]
-+	* critical bug-fixes to concurrent access of memory
-+	* fixed machine selector of automation editor
-+	* fixed NULL pointer access in AgsJackMidiin::stop()
-+	* fixed missing refresh of start animation
-+	* fixed possible memory corruption while AgsExportSoundcard setup
-+	* fixed data-race while clearing buffer
-+	* fixed implementation of immediate sync of threads
-+
- ags (0.7.122)
- 
- 	[ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ]
diff --git a/debian/patches/fix-configure.patch b/debian/patches/fix-configure.patch
deleted file mode 100644
index d42112b..0000000
--- a/debian/patches/fix-configure.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-Description: Modified version identifier in configure.ac and
- configure.
-Author: Joël Krähmann <jkraehemann at gmail.com>
-Applied-Upstream: 0.7.122.x, http://git.savannah.gnu.org/cgit/gsequencer.git
-Last-Update: 2017-01-31
---- a/configure
-+++ b/configure
-@@ -1,6 +1,6 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.69 for gsequencer 0.7.122.
-+# Generated by GNU Autoconf 2.69 for gsequencer 0.7.122.1.
- #
- # Report bugs to <jkraehemann-guest at users.alioth.debian.org>.
- #
-@@ -590,8 +590,8 @@
- # Identity of this package.
- PACKAGE_NAME='gsequencer'
- PACKAGE_TARNAME='gsequencer'
--PACKAGE_VERSION='0.7.122'
--PACKAGE_STRING='gsequencer 0.7.122'
-+PACKAGE_VERSION='0.7.122.1'
-+PACKAGE_STRING='gsequencer 0.7.122.1'
- PACKAGE_BUGREPORT='jkraehemann-guest at users.alioth.debian.org'
- PACKAGE_URL=''
- 
-@@ -1436,7 +1436,7 @@
-   # Omit some internal or obsolete options to make the list less imposing.
-   # This message is too long to be a string in the A/UX 3.1 sh.
-   cat <<_ACEOF
--\`configure' configures gsequencer 0.7.122 to adapt to many kinds of systems.
-+\`configure' configures gsequencer 0.7.122.1 to adapt to many kinds of systems.
- 
- Usage: $0 [OPTION]... [VAR=VALUE]...
- 
-@@ -1511,7 +1511,7 @@
- 
- if test -n "$ac_init_help"; then
-   case $ac_init_help in
--     short | recursive ) echo "Configuration of gsequencer 0.7.122:";;
-+     short | recursive ) echo "Configuration of gsequencer 0.7.122.1:";;
-    esac
-   cat <<\_ACEOF
- 
-@@ -1698,7 +1698,7 @@
- test -n "$ac_init_help" && exit $ac_status
- if $ac_init_version; then
-   cat <<\_ACEOF
--gsequencer configure 0.7.122
-+gsequencer configure 0.7.122.1
- generated by GNU Autoconf 2.69
- 
- Copyright (C) 2012 Free Software Foundation, Inc.
-@@ -2175,7 +2175,7 @@
- This file contains any messages produced by compilers while
- running configure, to aid debugging if configure makes a mistake.
- 
--It was created by gsequencer $as_me 0.7.122, which was
-+It was created by gsequencer $as_me 0.7.122.1, which was
- generated by GNU Autoconf 2.69.  Invocation command line was
- 
-   $ $0 $@
-@@ -3041,7 +3041,7 @@
- 
- # Define the identity of the package.
-  PACKAGE='gsequencer'
-- VERSION='0.7.122'
-+ VERSION='0.7.122.1'
- 
- 
- cat >>confdefs.h <<_ACEOF
-@@ -16408,7 +16408,7 @@
- # report actual input values of CONFIG_FILES etc. instead of their
- # values after options handling.
- ac_log="
--This file was extended by gsequencer $as_me 0.7.122, which was
-+This file was extended by gsequencer $as_me 0.7.122.1, which was
- generated by GNU Autoconf 2.69.  Invocation command line was
- 
-   CONFIG_FILES    = $CONFIG_FILES
-@@ -16474,7 +16474,7 @@
- cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
- ac_cs_version="\\
--gsequencer config.status 0.7.122
-+gsequencer config.status 0.7.122.1
- configured by $0, generated by GNU Autoconf 2.69,
-   with options \\"\$ac_cs_config\\"
- 
---- a/configure.ac
-+++ b/configure.ac
-@@ -6,7 +6,7 @@
- # Process this file with autoconf to produce a configure script.
- 
- AC_PREREQ([2.69])
--AC_INIT([gsequencer],[0.7.122],[jkraehemann-guest at users.alioth.debian.org])
-+AC_INIT([gsequencer],[0.7.122.1],[jkraehemann-guest at users.alioth.debian.org])
- AM_INIT_AUTOMAKE([subdir-objects])
- AC_CONFIG_SRCDIR([config.h.in])
- AC_CONFIG_HEADERS([ags/config.h])
diff --git a/debian/patches/fix-critical-bugs.patch b/debian/patches/fix-critical-bugs.patch
deleted file mode 100644
index 6e1400b..0000000
--- a/debian/patches/fix-critical-bugs.patch
+++ /dev/null
@@ -1,2911 +0,0 @@
-Description: Critical bug-fixes to concurrent access of memory.
- Fixed machine selector of automation editor. Fixed NULL pointer
- access in AgsJackMidiin::stop(). Fixed missing refresh of start
- animation. Fixed possible memory corruption while AgsExportSoundcard
- setup. Fixed data-race while clearing buffer. Proper implementation of
- immediate sync of threads. Minor fixes.
-Author: Joël Krähmann <jkraehemann at gmail.com>
-Applied-Upstream: 0.7.122.x, http://git.savannah.gnu.org/cgit/gsequencer.git
-Last-Update: 2017-01-31
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -963,6 +963,7 @@
- 	ags/audio/task/ags_cancel_channel.h \
- 	ags/audio/task/ags_cancel_recall.h \
- 	ags/audio/task/ags_change_soundcard.h \
-+	ags/audio/task/ags_clear_buffer.h \
- 	ags/audio/task/ags_export_output.h \
- 	ags/audio/task/ags_free_selection.h \
- 	ags/audio/task/ags_init_audio.h \
-@@ -1024,6 +1025,7 @@
- 	ags/audio/task/ags_cancel_channel.c \
- 	ags/audio/task/ags_cancel_recall.c \
- 	ags/audio/task/ags_change_soundcard.c \
-+	ags/audio/task/ags_clear_buffer.c \
- 	ags/audio/task/ags_export_output.c \
- 	ags/audio/task/ags_free_selection.c \
- 	ags/audio/task/ags_init_audio.c \
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -308,6 +308,7 @@
- 	ags/audio/task/libags_audio_la-ags_cancel_channel.lo \
- 	ags/audio/task/libags_audio_la-ags_cancel_recall.lo \
- 	ags/audio/task/libags_audio_la-ags_change_soundcard.lo \
-+	ags/audio/task/libags_audio_la-ags_clear_buffer.lo \
- 	ags/audio/task/libags_audio_la-ags_export_output.lo \
- 	ags/audio/task/libags_audio_la-ags_free_selection.lo \
- 	ags/audio/task/libags_audio_la-ags_init_audio.lo \
-@@ -2220,6 +2221,7 @@
- 	ags/audio/task/ags_cancel_channel.h \
- 	ags/audio/task/ags_cancel_recall.h \
- 	ags/audio/task/ags_change_soundcard.h \
-+	ags/audio/task/ags_clear_buffer.h \
- 	ags/audio/task/ags_export_output.h \
- 	ags/audio/task/ags_free_selection.h \
- 	ags/audio/task/ags_init_audio.h \
-@@ -2280,6 +2282,7 @@
- 	ags/audio/task/ags_cancel_channel.c \
- 	ags/audio/task/ags_cancel_recall.c \
- 	ags/audio/task/ags_change_soundcard.c \
-+	ags/audio/task/ags_clear_buffer.c \
- 	ags/audio/task/ags_export_output.c \
- 	ags/audio/task/ags_free_selection.c \
- 	ags/audio/task/ags_init_audio.c \
-@@ -3352,6 +3355,9 @@
- ags/audio/task/libags_audio_la-ags_change_soundcard.lo:  \
- 	ags/audio/task/$(am__dirstamp) \
- 	ags/audio/task/$(DEPDIR)/$(am__dirstamp)
-+ags/audio/task/libags_audio_la-ags_clear_buffer.lo:  \
-+	ags/audio/task/$(am__dirstamp) \
-+	ags/audio/task/$(DEPDIR)/$(am__dirstamp)
- ags/audio/task/libags_audio_la-ags_export_output.lo:  \
- 	ags/audio/task/$(am__dirstamp) \
- 	ags/audio/task/$(DEPDIR)/$(am__dirstamp)
-@@ -4995,6 +5001,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_cancel_channel.Plo at am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_cancel_recall.Plo at am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_change_soundcard.Plo at am__quote@
-+ at AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_clear_buffer.Plo at am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_export_output.Plo at am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_free_selection.Plo at am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote at ags/audio/task/$(DEPDIR)/libags_audio_la-ags_init_audio.Plo at am__quote@
-@@ -6126,6 +6133,13 @@
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libags_audio_la_CFLAGS) $(CFLAGS) -c -o ags/audio/task/libags_audio_la-ags_change_soundcard.lo `test -f 'ags/audio/task/ags_change_soundcard.c' || echo '$(srcdir)/'`ags/audio/task/ags_change_soundcard.c
- 
-+ags/audio/task/libags_audio_la-ags_clear_buffer.lo: ags/audio/task/ags_clear_buffer.c
-+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libags_audio_la_CFLAGS) $(CFLAGS) -MT ags/audio/task/libags_audio_la-ags_clear_buffer.lo -MD -MP -MF ags/audio/task/$(DEPDIR)/libags_audio_la-ags_clear_buffer.Tpo -c -o ags/audio/task/libags_audio_la-ags_clear_buffer.lo `test -f 'ags/audio/task/ags_clear_buffer.c' || echo '$(srcdir)/'`ags/audio/task/ags_clear_buffer.c
-+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ags/audio/task/$(DEPDIR)/libags_audio_la-ags_clear_buffer.Tpo ags/audio/task/$(DEPDIR)/libags_audio_la-ags_clear_buffer.Plo
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ags/audio/task/ags_clear_buffer.c' object='ags/audio/task/libags_audio_la-ags_clear_buffer.lo' libtool=yes @AMDEPBACKSLASH@
-+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libags_audio_la_CFLAGS) $(CFLAGS) -c -o ags/audio/task/libags_audio_la-ags_clear_buffer.lo `test -f 'ags/audio/task/ags_clear_buffer.c' || echo '$(srcdir)/'`ags/audio/task/ags_clear_buffer.c
-+
- ags/audio/task/libags_audio_la-ags_export_output.lo: ags/audio/task/ags_export_output.c
- @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libags_audio_la_CFLAGS) $(CFLAGS) -MT ags/audio/task/libags_audio_la-ags_export_output.lo -MD -MP -MF ags/audio/task/$(DEPDIR)/libags_audio_la-ags_export_output.Tpo -c -o ags/audio/task/libags_audio_la-ags_export_output.lo `test -f 'ags/audio/task/ags_export_output.c' || echo '$(srcdir)/'`ags/audio/task/ags_export_output.c
- @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) ags/audio/task/$(DEPDIR)/libags_audio_la-ags_export_output.Tpo ags/audio/task/$(DEPDIR)/libags_audio_la-ags_export_output.Plo
---- a/ags/X/ags_export_soundcard_callbacks.c
-+++ b/ags/X/ags_export_soundcard_callbacks.c
-@@ -61,12 +61,16 @@
-   soundcard = NULL;
- 
-   if(application_context != NULL){
--    soundcard = ags_sound_provider_get_soundcard(AGS_SOUNDCARD(application_context));
-+    soundcard = ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context));
-   }
- 
-   backend = gtk_combo_box_text_get_active_text(export_soundcard->backend);
-   device = gtk_combo_box_text_get_active_text(export_soundcard->card);
- 
-+  if(device == NULL){
-+    return;
-+  }
-+  
-   found_card = FALSE;
-   
-   while(soundcard != NULL){
-@@ -154,12 +158,16 @@
-   soundcard = NULL;
-     
-   if(application_context != NULL){
--    soundcard = ags_sound_provider_get_soundcard(AGS_SOUNDCARD(application_context));
-+    soundcard = ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context));
-   }
- 
-   backend = gtk_combo_box_text_get_active_text(export_soundcard->backend);
-   device = gtk_combo_box_text_get_active_text(export_soundcard->card);
- 
-+  if(device == NULL){
-+    return;
-+  }
-+  
-   found_card = FALSE;
- 
-   while(soundcard != NULL){
---- a/ags/X/ags_line_callbacks.c
-+++ b/ags/X/ags_line_callbacks.c
-@@ -423,27 +423,63 @@
-   AgsChannel *channel;
-   AgsPlayback *playback;
-   AgsChannel *next_pad;
-+  AgsRecallID *match_recall_id;
-+
-+  AgsMutexManager *mutex_manager;
- 
-   gboolean all_done;
- 
-+  pthread_mutex_t *application_mutex;
-+  pthread_mutex_t *channel_mutex;
-+
-+  mutex_manager = ags_mutex_manager_get_instance();
-+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
-+
-   gdk_threads_enter();
-   
-+  /* retrieve channel */
-   channel = AGS_PAD(AGS_LINE(line)->pad)->channel;
-+
-+  /* retrieve channel mutex */
-+  pthread_mutex_lock(application_mutex);
-+
-+  channel_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					   (GObject *) channel);
-+
-+  pthread_mutex_unlock(application_mutex);
-+
-+  /* get next pad */
-+  pthread_mutex_lock(channel_mutex);
-+
-   next_pad = channel->next_pad;
- 
-+  pthread_mutex_unlock(channel_mutex);
-+
-   all_done = TRUE;
- 
-   while(channel != next_pad){
-+    pthread_mutex_lock(channel_mutex);
-+
-     playback = AGS_PLAYBACK(channel->playback);
--    
--    if(playback->recall_id[0] != NULL){
-+    match_recall_id = playback->recall_id[0];
-+		
-+    pthread_mutex_unlock(channel_mutex);
-+
-+    /* check if pending */
-+    if(match_recall_id != NULL){
-       all_done = FALSE;
-       break;
-     }
--    
-+
-+    /* iterate */
-+    pthread_mutex_lock(channel_mutex);
-+
-     channel = channel->next;
-+
-+    pthread_mutex_unlock(channel_mutex);
-   }
- 
-+  /* toggle play button if all playback done */
-   if(all_done){
-     AgsPad *pad;
- 
---- a/ags/X/ags_pad_callbacks.c
-+++ b/ags/X/ags_pad_callbacks.c
-@@ -33,6 +33,7 @@
- #include <ags/audio/ags_playback.h>
- #include <ags/audio/ags_pattern.h>
- #include <ags/audio/ags_recall.h>
-+#include <ags/audio/ags_recall_id.h>
- 
- #include <ags/audio/thread/ags_audio_loop.h>
- #include <ags/audio/thread/ags_soundcard_thread.h>
-@@ -325,6 +326,7 @@
- ags_pad_init_channel_launch_callback(AgsTask *task, AgsPad *input_pad)
- { 
-   AgsSoundcard *soundcard;
-+  AgsAudio *audio;
-   AgsChannel *channel, *next_pad;
-   AgsRecycling *recycling, *end_recycling;
- 
-@@ -338,11 +340,28 @@
-   pthread_mutex_t *application_mutex;
-   pthread_mutex_t *audio_mutex;
-   pthread_mutex_t *channel_mutex;
-+  pthread_mutex_t *recycling_mutex;
-  
-   mutex_manager = ags_mutex_manager_get_instance();
-   application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
- 
--  /* get audio loop and audio mutex */
-+  /* get channel and its mutex */
-+  channel = input_pad->channel;
-+
-+  pthread_mutex_lock(application_mutex);
-+
-+  channel_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					   (GObject *) channel);
-+
-+  pthread_mutex_unlock(application_mutex);
-+
-+  /* get audio and its audio mutex */
-+  pthread_mutex_lock(channel_mutex);
-+
-+  audio = AGS_AUDIO(channel->audio);
-+  
-+  pthread_mutex_unlock(channel_mutex);
-+
-   pthread_mutex_lock(application_mutex);
-   
-   audio_mutex = ags_mutex_manager_lookup(mutex_manager,
-@@ -353,7 +372,7 @@
-   /* get soundcard */
-   pthread_mutex_lock(audio_mutex);
-   
--  soundcard = AGS_SOUNDCARD(AGS_AUDIO(input_pad->channel->audio)->soundcard);
-+  soundcard = AGS_SOUNDCARD(audio->soundcard);
-   
-   pthread_mutex_unlock(audio_mutex);
- 
-@@ -361,16 +380,6 @@
-   list_start = 
-     list = gtk_container_get_children((GtkContainer *) input_pad->expander_set);
- 
--  /* get channel and its mutex */
--  channel = input_pad->channel;
--
--  pthread_mutex_lock(application_mutex);
--
--  channel_mutex = ags_mutex_manager_lookup(mutex_manager,
--					   (GObject *) channel);
--
--  pthread_mutex_unlock(application_mutex);
--
-   /* get next pad */
-   pthread_mutex_lock(channel_mutex);
-   
-@@ -407,6 +416,7 @@
-     
-     if(recall != NULL){
-       AgsAudioSignal *audio_signal;
-+      AgsRecallID *current_recall_id;
-       
-       g_signal_connect_after(channel, "done\0",
- 			     G_CALLBACK(ags_line_channel_done_callback), AGS_LINE(list->data));
-@@ -416,13 +426,25 @@
-       
-       recycling = channel->first_recycling;
-       end_recycling = channel->last_recycling->next;
-+
-+      current_recall_id = AGS_RECALL(recall->data)->recall_id;
-       
-       pthread_mutex_unlock(channel_mutex);
- 
-       while(recycling != end_recycling){
-+	/* get recycling mutex */
-+	pthread_mutex_lock(application_mutex);
-+  
-+	recycling_mutex = ags_mutex_manager_lookup(mutex_manager,
-+						   (GObject *) recycling);
-+	
-+	pthread_mutex_unlock(application_mutex);
-+
-+	/* instantiate audio signal */
- 	audio_signal = ags_audio_signal_new((GObject *) soundcard,
- 					    (GObject *) recycling,
--					    (GObject *) AGS_RECALL(recall->data)->recall_id);
-+					    (GObject *) current_recall_id);
-+	
- 	/* add audio signal */
- 	ags_recycling_create_audio_signal_with_defaults(recycling,
- 							audio_signal,
-@@ -436,7 +458,13 @@
- 	ags_recycling_add_audio_signal(recycling,
- 				       audio_signal);
- 
-+
-+	/* iterate recycling */
-+	pthread_mutex_lock(recycling_mutex);
-+
- 	recycling = recycling->next;
-+
-+	pthread_mutex_unlock(recycling_mutex);
-       }    
-     }
- 
---- a/ags/X/ags_xorg_application_context.c
-+++ b/ags/X/ags_xorg_application_context.c
-@@ -63,6 +63,9 @@
- #include <ags/audio/jack/ags_jack_port.h>
- #include <ags/audio/jack/ags_jack_devout.h>
- 
-+#include <ags/audio/task/ags_cancel_audio.h>
-+#include <ags/audio/task/ags_cancel_channel.h>
-+
- #include <ags/audio/recall/ags_play_audio.h>
- #include <ags/audio/recall/ags_play_channel.h>
- #include <ags/audio/recall/ags_play_channel_run.h>
-@@ -634,10 +637,10 @@
-   */
-     
-   /* AgsWindow */
--  window = ags_window_new((GObject *) xorg_application_context);
--  g_object_set(window,
--	       "soundcard\0", soundcard,
--	       NULL);
-+  window = g_object_new(AGS_TYPE_WINDOW,
-+			"soundcard\0", soundcard,
-+			"application-context\0", xorg_application_context,
-+			NULL);
-   AGS_XORG_APPLICATION_CONTEXT(xorg_application_context)->window = window;
-   g_object_ref(G_OBJECT(window));
- 
-@@ -982,6 +985,12 @@
-   /*  */
-   ags_audio_file_get_type();
-   ags_audio_file_link_get_type();
-+
-+  /* register tasks */
-+  ags_cancel_audio_get_type();
-+  ags_cancel_channel_get_type();
-+  
-+  //TODO:JK: extend me
-   
-   /* register recalls */
-   ags_recall_channel_run_dummy_get_type();
---- a/ags/X/editor/ags_machine_selector.c
-+++ b/ags/X/editor/ags_machine_selector.c
-@@ -25,6 +25,7 @@
- #include <ags/audio/ags_notation.h>
- 
- #include <ags/X/ags_editor.h>
-+#include <ags/X/ags_automation_editor.h>
- 
- #include <ags/X/editor/ags_machine_radio_button.h>
- 
-@@ -225,10 +226,7 @@
-   
-   GList *list, *list_start;
- 
--  editor = (AgsEditor *) gtk_widget_get_ancestor((GtkWidget *) machine_selector,
--						 AGS_TYPE_EDITOR);
--
--  /* emit changed */
-+  /* get machine radio button */
-   machine_radio_button = NULL;
- 
-   list_start = 
-@@ -243,28 +241,106 @@
-   }
-   
-   g_list_free(list_start);
-+
-+  if(machine_radio_button == NULL){
-+    return;
-+  }
-   
--  /* destroy edit widgets */
--  if(machine_radio_button != NULL){
-+  /*  */
-+  editor = (AgsEditor *) gtk_widget_get_ancestor((GtkWidget *) machine_selector,
-+						 AGS_TYPE_EDITOR);
-+
-+  if(editor != NULL){  
-+    /* destroy edit widgets */
-     if(machine_radio_button->machine != NULL){
-+      AgsEditorChild *editor_child;
-+
-+      editor_child = NULL;
-+      
-       list = editor->editor_child;
- 
-       while(list != NULL){
- 	if(AGS_EDITOR_CHILD(list->data)->machine == machine_radio_button->machine){
--	  gtk_widget_destroy((GtkWidget *) AGS_EDITOR_CHILD(list->data)->notebook);
--	  gtk_widget_destroy((GtkWidget *) AGS_EDITOR_CHILD(list->data)->meter);
--	  gtk_widget_destroy((GtkWidget *) AGS_EDITOR_CHILD(list->data)->edit_widget);
--	
-+	  editor_child = AGS_EDITOR_CHILD(list->data);
-+	  
-+	  gtk_widget_destroy((GtkWidget *) editor_child->notebook);
-+	  gtk_widget_destroy((GtkWidget *) editor_child->meter);
-+	  gtk_widget_destroy((GtkWidget *) editor_child->edit_widget);
-+
-+	  editor->current_notebook = NULL;
-+	  editor->current_meter = NULL;
-+	  editor->current_edit_widget = NULL;
-+	  
- 	  break;
- 	}
-     
- 	list = list->next;
-       }
-+
-+      if(editor_child != NULL){
-+	editor->editor_child = g_list_remove(editor->editor_child,
-+					     editor_child);
-+	free(editor_child);
-+      }
-+    }
-+  }else{
-+    AgsAutomationEditor *automation_editor;
-+    
-+    automation_editor = (AgsAutomationEditor *) gtk_widget_get_ancestor((GtkWidget *) machine_selector,
-+									AGS_TYPE_AUTOMATION_EDITOR);
-+
-+    if(automation_editor != NULL){
-+      /* destroy edit widgets */
-+      if(machine_radio_button->machine != NULL){
-+	AgsAutomationEditorChild *automation_editor_child;
-+
-+	automation_editor_child = NULL;
-+	
-+	list = automation_editor->automation_editor_child;
-+
-+	while(list != NULL){
-+	  if(AGS_AUTOMATION_EDITOR_CHILD(list->data)->machine == machine_radio_button->machine){
-+	    automation_editor_child = AGS_AUTOMATION_EDITOR_CHILD(list->data);
-+	    
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->audio_scale);
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->audio_automation_edit);
-+	    
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->output_scale);
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->output_notebook);
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->output_automation_edit);
-+
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->input_scale);
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->input_notebook);
-+	    gtk_widget_destroy((GtkWidget *) automation_editor_child->input_automation_edit);
-+
-+	    automation_editor->current_audio_scale = NULL;
-+	    automation_editor->current_audio_automation_edit = NULL;
-+
-+	    automation_editor->current_output_notebook = NULL;
-+	    automation_editor->current_output_scale = NULL;
-+	    automation_editor->current_output_automation_edit = NULL;
-+
-+	    automation_editor->current_input_notebook = NULL;
-+	    automation_editor->current_input_scale = NULL;
-+	    automation_editor->current_input_automation_edit = NULL;
-+
-+	    break;
-+	  }
-+    
-+	  list = list->next;
-+	}
-+
-+	if(automation_editor_child != NULL){
-+	  automation_editor->automation_editor_child = g_list_remove(automation_editor->automation_editor_child,
-+								     automation_editor_child);
-+	  free(automation_editor_child);
-+	}
-+      }
-     }
--  
--    /**/
--    gtk_widget_destroy(GTK_WIDGET(machine_radio_button));
-   }
-+  
-+  /**/
-+  gtk_widget_destroy(GTK_WIDGET(machine_radio_button));
- }
- 
- void
---- a/ags/X/file/ags_simple_file.c
-+++ b/ags/X/file/ags_simple_file.c
-@@ -1692,6 +1692,14 @@
- 					  "reference\0", gobject,
- 					  NULL));
- 
-+  /* set name if available */
-+  str = xmlGetProp(node,
-+		   AGS_FILE_NAME_PROP);
-+
-+  if(str != NULL){
-+    gobject->name = g_strdup(str);
-+  }
-+  
-   /* retrieve window */  
-   window = AGS_XORG_APPLICATION_CONTEXT(simple_file->application_context)->window;
- 
-@@ -5016,7 +5024,11 @@
-   xmlNewProp(node,
- 	     (xmlChar *) AGS_FILE_TYPE_PROP,
- 	     (xmlChar *) G_OBJECT_TYPE_NAME(machine));
--  
-+
-+  xmlNewProp(node,
-+	     (xmlChar *) AGS_FILE_NAME_PROP,
-+	     (xmlChar *) machine->name);
-+
-   ags_simple_file_add_id_ref(simple_file,
- 			     g_object_new(AGS_TYPE_FILE_ID_REF,
- 					  "application-context\0", simple_file->application_context,
---- a/ags/X/file/ags_simple_file.dtd
-+++ b/ags/X/file/ags_simple_file.dtd
-@@ -46,6 +46,7 @@
- <!ATTLIST ags-sf-machine
- 	  id                      CDATA     #REQUIRED
- 	  type                    CDATA     #REQUIRED
-+	  name                    CDATA     #REQUIRED
- 	  filename                CDATA     #IMPLIED
- 	  preset                  CDATA     #IMPLIED
- 	  instrument              CDATA     #IMPLIED
---- a/ags/audio/ags_devout.c
-+++ b/ags/audio/ags_devout.c
-@@ -33,6 +33,7 @@
- #include <ags/thread/ags_poll_fd.h>
- 
- #include <ags/audio/task/ags_tic_device.h>
-+#include <ags/audio/task/ags_clear_buffer.h>
- #include <ags/audio/task/ags_switch_buffer_flag.h>
- #include <ags/audio/task/ags_notify_soundcard.h>
- 
-@@ -775,6 +776,12 @@
-   devout->buffer[1] = NULL;
-   devout->buffer[2] = NULL;
-   devout->buffer[3] = NULL;
-+
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-+  
-+  devout->ring_buffer_size = AGS_DEVOUT_DEFAULT_RING_BUFFER_SIZE;
-+  devout->nth_ring_buffer = 0;
-   
-   devout->ring_buffer = NULL;
- 
-@@ -1830,7 +1837,11 @@
- #endif
-       
-       if((POLLOUT & revents) != 0){
--	return(TRUE);
-+	g_atomic_int_set(&(devout->available),
-+			 TRUE);
-+	AGS_POLL_FD(list->data)->poll_fd->revents = 0;
-+
-+  	return(TRUE);
-       }
-     }else{
- #ifdef AGS_WITH_OSS
-@@ -1840,6 +1851,10 @@
-       FD_SET(AGS_POLL_FD(list->data)->poll_fd->fd, &writefds);
-       
-       if(FD_ISSET(AGS_POLL_FD(list->data)->poll_fd->fd, &writefds)){
-+	g_atomic_int_set(&(devout->available),
-+			 TRUE);
-+	AGS_POLL_FD(list->data)->poll_fd->revents = 0;
-+
- 	return(TRUE);
-       }
- #endif
-@@ -1974,6 +1989,7 @@
-   guint word_size;
-   int format;
-   int tmp;
-+  guint i;
- 
-   pthread_mutex_t *mutex;
- 
-@@ -2051,10 +2067,17 @@
-   memset(devout->buffer[3], 0, devout->pcm_channels * devout->buffer_size * word_size);
- 
-   /* allocate ring buffer */
--  devout->ring_buffer = (unsigned char **) malloc(2 * sizeof(unsigned char *));
--  devout->ring_buffer[0] = (unsigned char *) malloc(devout->pcm_channels * devout->buffer_size * word_size * sizeof(unsigned char));
--  devout->ring_buffer[1] = (unsigned char *) malloc(devout->pcm_channels * devout->buffer_size * word_size * sizeof(unsigned char));
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-   
-+    devout->ring_buffer = (unsigned char **) malloc(devout->ring_buffer_size * sizeof(unsigned char *));
-+
-+  for(i = 0; i < devout->ring_buffer_size; i++){
-+    devout->ring_buffer[i] = (unsigned char *) malloc(devout->pcm_channels *
-+						      devout->buffer_size * word_size *
-+						      sizeof(unsigned char));
-+  }
-+
- #ifdef AGS_WITH_OSS
-   /* open device fd */
-   str = devout->out.oss.device;
-@@ -2192,6 +2215,8 @@
-   devout->delay_counter = 0.0;
-   devout->tic_counter = 0;
- 
-+  devout->nth_ring_buffer = 0;
-+  
-   ags_soundcard_get_poll_fd(soundcard);
-   
-   devout->flags |= AGS_DEVOUT_INITIALIZED;
-@@ -2209,27 +2234,34 @@
- {
-   AgsDevout *devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-   AgsTicDevice *tic_device;
-+  AgsClearBuffer *clear_buffer;
-   AgsSwitchBufferFlag *switch_buffer_flag;
-   
-   AgsThread *task_thread;
-+  AgsPollFd *poll_fd;
-   AgsMutexManager *mutex_manager;
- 
-   AgsApplicationContext *application_context;
- 
-   GList *task;
--  
-+  GList *list;
-+
-   gchar *str;
-   
-   guint word_size;
-   guint nth_buffer;
--  guint next_buffer;
--  guint nth_ring_buffer;
- 
-   int n_write;
-   
-   pthread_mutex_t *mutex;
- 
-+  static const struct timespec poll_interval = {
-+    0,
-+    250,
-+  };
-+  
-   auto void ags_devout_oss_play_fill_ring_buffer(void *buffer, guint ags_format, unsigned char *ring_buffer, guint channels, guint buffer_size);
- 
-   void ags_devout_oss_play_fill_ring_buffer(void *buffer, guint ags_format, unsigned char *ring_buffer, guint channels, guint buffer_size){
-@@ -2330,17 +2362,19 @@
-   /* lock */
-   pthread_mutex_lock(mutex);
- 
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard);
-+  
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-   /* retrieve word size */
-   switch(devout->format){
-@@ -2386,42 +2420,59 @@
-   /* check buffer flag */
-   if((AGS_DEVOUT_BUFFER0 & (devout->flags)) != 0){
-     nth_buffer = 0;
--    next_buffer = 1;
--    nth_ring_buffer = 0;
-   }else if((AGS_DEVOUT_BUFFER1 & (devout->flags)) != 0){
-     nth_buffer = 1;
--    next_buffer = 2;
--    nth_ring_buffer = 1;
-   }else if((AGS_DEVOUT_BUFFER2 & (devout->flags)) != 0){
-     nth_buffer = 2;
--    next_buffer = 3;
--    nth_ring_buffer = 0;
-   }else if((AGS_DEVOUT_BUFFER3 & devout->flags) != 0){
-     nth_buffer = 3;
--    next_buffer = 0;
--    nth_ring_buffer = 1;
-   }
- 
--  /* clear next buffer */
--  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
--
- #ifdef AGS_WITH_OSS    
-   /* fill ring buffer */
-   ags_devout_oss_play_fill_ring_buffer(devout->buffer[nth_buffer],
- 				       devout->format,
--				       devout->ring_buffer[nth_ring_buffer],
-+				       devout->ring_buffer[devout->nth_ring_buffer],
- 				       devout->pcm_channels,
- 				       devout->buffer_size);
- 
-+  /* wait until available */
-+  list = ags_soundcard_get_poll_fd(soundcard);
-+
-+  if(!ags_soundcard_is_available(soundcard) &&
-+     !g_atomic_int_get(&(devout->available)) &&
-+     list != NULL){
-+    poll_fd = list->data;
-+    poll_fd->poll_fd->events = POLLOUT;
-+    
-+    while(!ags_soundcard_is_available(soundcard) &&
-+	  !g_atomic_int_get(&(devout->available))){
-+      ppoll(poll_fd->poll_fd,
-+	    1,
-+	    &poll_interval,
-+	    NULL);
-+    }
-+  }
-+  
-   /* write ring buffer */
-   n_write = write(devout->out.oss.device_fd,
--		  devout->ring_buffer[nth_ring_buffer],
-+		  devout->ring_buffer[devout->nth_ring_buffer],
- 		  devout->pcm_channels * devout->buffer_size * word_size * sizeof (char));
- 
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-+  
-   if(n_write != devout->pcm_channels * devout->buffer_size * word_size * sizeof (char)){
-     g_critical("write() return doesn't match written bytes\0");
-   }
- #endif
-+
-+  /* increment nth ring-buffer */
-+  if(devout->nth_ring_buffer + 1 >= devout->ring_buffer_size){
-+    devout->nth_ring_buffer = 0;
-+  }else{
-+    devout->nth_ring_buffer += 1;
-+  }
-   
-   pthread_mutex_unlock(mutex);
- 
-@@ -2435,6 +2486,11 @@
-   task = g_list_append(task,
- 		       tic_device);
-   
-+  /* reset - clear buffer */
-+  clear_buffer = ags_clear_buffer_new((GObject *) devout);
-+  task = g_list_append(task,
-+		       clear_buffer);
-+
-   /* reset - switch buffer flags */
-   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
-   task = g_list_append(task,
-@@ -2450,12 +2506,16 @@
- {
-   AgsDevout *devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-+  
-   AgsMutexManager *mutex_manager;
- 
-   AgsApplicationContext *application_context;
- 
-   GList *poll_fd;
- 
-+  guint i;
-+  
-   pthread_mutex_t *mutex;
-   
-   devout = AGS_DEVOUT(soundcard);
-@@ -2471,19 +2531,50 @@
-   
-   pthread_mutex_unlock(application_context->mutex);
- 
-+  /*  */
-+  pthread_mutex_lock(mutex);
-+
-+#ifdef AGS_WITH_OSS
-+  /* remove poll fd */
-+  poll_fd = devout->poll_fd;
-+  
-+  while(poll_fd != NULL){
-+    ags_polling_thread_remove_poll_fd(AGS_POLL_FD(poll_fd->data)->polling_thread,
-+				      poll_fd->data);
-+    g_object_unref(poll_fd->data);
-+    
-+    poll_fd = poll_fd->next;
-+  }
-+
-+  g_list_free(poll_fd);
-+
-+  devout->poll_fd = NULL;
-+#endif
-+
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard);
-+
-   if((AGS_DEVOUT_INITIALIZED & (devout->flags)) == 0){
-+    pthread_mutex_unlock(mutex);
-+    
-     return;
-   }
-   
-   close(devout->out.oss.device_fd);
-   devout->out.oss.device_fd = -1;
- 
--  free(devout->ring_buffer[0]);
--  free(devout->ring_buffer[1]);
-+  /* free ring-buffer */
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-+  
-+  for(i = 0; i < devout->ring_buffer_size; i++){
-+    free(devout->ring_buffer[i]);
-+  }
-+  
-   free(devout->ring_buffer);
- 
-   devout->ring_buffer = NULL;
--  
-+
-+  /* reset flags */
-   devout->flags &= (~(AGS_DEVOUT_BUFFER0 |
- 		      AGS_DEVOUT_BUFFER1 |
- 		      AGS_DEVOUT_BUFFER2 |
-@@ -2492,19 +2583,21 @@
- 		      AGS_DEVOUT_INITIALIZED));
- 
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-   devout->note_offset = 0;
-   devout->note_offset_absolute = 0;
-+
-+  pthread_mutex_unlock(mutex);
- }
- 
- void
-@@ -2542,6 +2635,7 @@
- #endif
- 
-   guint word_size;
-+  guint i;
-   
-   pthread_mutex_t *mutex; 
-  
-@@ -2628,10 +2722,17 @@
- 
-   /* allocate ring buffer */
- #ifdef AGS_WITH_ALSA
--  devout->ring_buffer = (unsigned char **) malloc(2 * sizeof(unsigned char *));
--  devout->ring_buffer[0] = (unsigned char *) malloc(devout->pcm_channels * devout->buffer_size * (snd_pcm_format_physical_width(format) / 8) * sizeof(unsigned char));
--  devout->ring_buffer[1] = (unsigned char *) malloc(devout->pcm_channels * devout->buffer_size * (snd_pcm_format_physical_width(format) / 8) * sizeof(unsigned char));
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-   
-+  devout->ring_buffer = (unsigned char **) malloc(devout->ring_buffer_size * sizeof(unsigned char *));
-+
-+  for(i = 0; i < devout->ring_buffer_size; i++){
-+    devout->ring_buffer[i] = (unsigned char *) malloc(devout->pcm_channels *
-+						      devout->buffer_size * (snd_pcm_format_physical_width(format) / 8) *
-+						      sizeof(unsigned char));
-+  }
-+ 
-   /*  */
-   period_event = 0;
-   
-@@ -2933,6 +3034,8 @@
-   devout->delay_counter = 0.0;
-   devout->tic_counter = 0;
- 
-+  devout->nth_ring_buffer = 0;
-+  
-   ags_soundcard_get_poll_fd(soundcard);
-   
-   devout->flags |= AGS_DEVOUT_INITIALIZED;
-@@ -2950,25 +3053,32 @@
- {
-   AgsDevout *devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-   AgsTicDevice *tic_device;
-+  AgsClearBuffer *clear_buffer;
-   AgsSwitchBufferFlag *switch_buffer_flag;
-   
-   AgsThread *task_thread;
-+  AgsPollFd *poll_fd;
-   AgsMutexManager *mutex_manager;
- 
-   AgsApplicationContext *application_context;
- 
-   GList *task;
-+  GList *list;
-   
-   gchar *str;
-   
-   guint word_size;
-   guint nth_buffer;
--  guint next_buffer;
--  guint nth_ring_buffer;
-   
-   pthread_mutex_t *mutex;
- 
-+  static const struct timespec poll_interval = {
-+    0,
-+    250,
-+  };
-+  
- #ifdef AGS_WITH_ALSA
-   auto void ags_devout_alsa_play_fill_ring_buffer(void *buffer, guint ags_format, unsigned char *ring_buffer, guint channels, guint buffer_size);
- 
-@@ -3089,17 +3199,19 @@
-   /* lock */
-   pthread_mutex_lock(mutex);
- 
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard);
-+
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-   /* retrieve word size */
-   switch(devout->format){
-@@ -3129,7 +3241,10 @@
-     }
-     break;
-   default:
-+    pthread_mutex_unlock(mutex);
-+    
-     g_warning("ags_devout_alsa_play(): unsupported word size\0");
-+
-     return;
-   }
- 
-@@ -3150,37 +3265,47 @@
-   /* check buffer flag */
-   if((AGS_DEVOUT_BUFFER0 & (devout->flags)) != 0){
-     nth_buffer = 0;
--    next_buffer = 1;
--    nth_ring_buffer = 0;
-   }else if((AGS_DEVOUT_BUFFER1 & (devout->flags)) != 0){
-     nth_buffer = 1;
--    next_buffer = 2;
--    nth_ring_buffer = 1;
-   }else if((AGS_DEVOUT_BUFFER2 & (devout->flags)) != 0){
-     nth_buffer = 2;
--    next_buffer = 3;
--    nth_ring_buffer = 0;
-   }else if((AGS_DEVOUT_BUFFER3 & devout->flags) != 0){
-     nth_buffer = 3;
--    next_buffer = 0;
--    nth_ring_buffer = 1;
-   }
- 
--  /* clear next buffer */
--  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
--
- #ifdef AGS_WITH_ALSA
- 
-   /* fill ring buffer */
-   ags_devout_alsa_play_fill_ring_buffer(devout->buffer[nth_buffer], devout->format,
--					devout->ring_buffer[nth_ring_buffer],
-+					devout->ring_buffer[devout->nth_ring_buffer],
- 					devout->pcm_channels, devout->buffer_size);
- 
-+  /* wait until available */
-+  list = ags_soundcard_get_poll_fd(soundcard);
-+
-+  if(!ags_soundcard_is_available(soundcard) &&
-+     !g_atomic_int_get(&(devout->available)) &&
-+     list != NULL){
-+    poll_fd = list->data;
-+    poll_fd->poll_fd->events = POLLOUT;
-+    
-+    while(!ags_soundcard_is_available(soundcard) &&
-+	  !g_atomic_int_get(&(devout->available))){
-+      ppoll(poll_fd->poll_fd,
-+	    1,
-+	    &poll_interval,
-+	    NULL);
-+    }
-+  }
-+  
-   /* write ring buffer */
-   devout->out.alsa.rc = snd_pcm_writei(devout->out.alsa.handle,
--				       devout->ring_buffer[nth_ring_buffer],
-+				       devout->ring_buffer[devout->nth_ring_buffer],
- 				       (snd_pcm_uframes_t) (devout->buffer_size));
- 
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-+  
-   /* check error flag */
-   if((AGS_DEVOUT_NONBLOCKING & (devout->flags)) == 0){
-     if(devout->out.alsa.rc == -EPIPE){
-@@ -3216,6 +3341,16 @@
-   
- #endif
- 
-+  /* increment nth ring-buffer */
-+  g_atomic_int_set(&(devout->available),
-+		   FALSE);
-+  
-+  if(devout->nth_ring_buffer + 1 >= devout->ring_buffer_size){
-+    devout->nth_ring_buffer = 0;
-+  }else{
-+    devout->nth_ring_buffer += 1;
-+  }
-+  
-   pthread_mutex_unlock(mutex);
- 
-   /* update soundcard */
-@@ -3227,7 +3362,12 @@
-   tic_device = ags_tic_device_new((GObject *) devout);
-   task = g_list_append(task,
- 		       tic_device);
--  
-+
-+  /* reset - clear buffer */
-+  clear_buffer = ags_clear_buffer_new((GObject *) devout);
-+  task = g_list_append(task,
-+		       clear_buffer);
-+
-   /* reset - switch buffer flags */
-   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
-   task = g_list_append(task,
-@@ -3247,15 +3387,33 @@
- {
-   AgsDevout *devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-+
-   AgsMutexManager *mutex_manager;
- 
-   AgsApplicationContext *application_context;
- 
-   GList *poll_fd;
- 
-+  guint i;
-+  
-   pthread_mutex_t *mutex;
-   
-   devout = AGS_DEVOUT(soundcard);
-+  
-+  application_context = ags_soundcard_get_application_context(soundcard);
-+  
-+  pthread_mutex_lock(application_context->mutex);
-+  
-+  mutex_manager = ags_mutex_manager_get_instance();
-+
-+  mutex = ags_mutex_manager_lookup(mutex_manager,
-+				   (GObject *) devout);
-+  
-+  pthread_mutex_unlock(application_context->mutex);
-+
-+  /* lock */
-+  pthread_mutex_lock(mutex);
- 
- #ifdef AGS_WITH_ALSA
-   /* remove poll fd */
-@@ -3273,19 +3431,12 @@
- 
-   devout->poll_fd = NULL;
- #endif
--  
--  application_context = ags_soundcard_get_application_context(soundcard);
--  
--  pthread_mutex_lock(application_context->mutex);
--  
--  mutex_manager = ags_mutex_manager_get_instance();
- 
--  mutex = ags_mutex_manager_lookup(mutex_manager,
--				   (GObject *) devout);
--  
--  pthread_mutex_unlock(application_context->mutex);
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard);
- 
-   if((AGS_DEVOUT_INITIALIZED & (devout->flags)) == 0){
-+    pthread_mutex_unlock(mutex);
-+    
-     return;
-   }
-   
-@@ -3295,12 +3446,16 @@
-   devout->out.alsa.handle = NULL;
- #endif
- 
--  free(devout->ring_buffer[0]);
--  free(devout->ring_buffer[1]);
-+  /* free ring-buffer */
-+  for(i = 0; i < devout->ring_buffer_size; i++){
-+    free(devout->ring_buffer[i]);
-+  }
-+
-   free(devout->ring_buffer);
- 
-   devout->ring_buffer = NULL;
--  
-+
-+  /* reset flags */
-   devout->flags &= (~(AGS_DEVOUT_BUFFER0 |
- 		      AGS_DEVOUT_BUFFER1 |
- 		      AGS_DEVOUT_BUFFER2 |
-@@ -3309,19 +3464,21 @@
- 		      AGS_DEVOUT_INITIALIZED));
- 
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-   devout->note_offset = 0;
-   devout->note_offset_absolute = 0;
-+
-+  pthread_mutex_unlock(mutex);
- }
- 
- void
---- a/ags/audio/ags_devout.h
-+++ b/ags/audio/ags_devout.h
-@@ -45,6 +45,8 @@
- #define AGS_DEVOUT_DEFAULT_ALSA_DEVICE "hw:0,0\0"
- #define AGS_DEVOUT_DEFAULT_OSS_DEVICE "/dev/dsp\0"
- 
-+#define AGS_DEVOUT_DEFAULT_RING_BUFFER_SIZE (8)
-+
- typedef struct _AgsDevout AgsDevout;
- typedef struct _AgsDevoutClass AgsDevoutClass;
- 
-@@ -95,6 +97,12 @@
-   guint samplerate; // sample_rate
- 
-   void** buffer;
-+
-+  volatile gboolean available;
-+  
-+  guint ring_buffer_size;
-+  guint nth_ring_buffer;
-+  
-   unsigned char **ring_buffer;
- 
-   double bpm; // beats per minute
---- a/ags/audio/jack/ags_jack_client.c
-+++ b/ags/audio/jack/ags_jack_client.c
-@@ -722,9 +722,9 @@
-   
-     pthread_mutex_unlock(audio_loop->timing_mutex);
-   
--    ags_main_loop_interrupt(AGS_MAIN_LOOP(audio_loop),
--			    AGS_THREAD_SUSPEND_SIG,
--			    0, &time_spent);
-+    //    ags_main_loop_interrupt(AGS_MAIN_LOOP(audio_loop),
-+    //			    AGS_THREAD_SUSPEND_SIG,
-+    //			    0, &time_spent);
-   }
- 
-   if(task_thread != NULL){
-@@ -886,14 +886,8 @@
-       }
-     
-       if(!no_event){
--	memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
--
- 	/* signal finish */
--	pthread_mutex_lock(device_mutex);
--
- 	callback_finish_mutex = jack_devout->callback_finish_mutex;
--
--	pthread_mutex_unlock(device_mutex);
- 	
- 	pthread_mutex_lock(callback_finish_mutex);
- 
-@@ -1021,11 +1015,7 @@
- 	}
- 
- 	/* signal finish */
--	pthread_mutex_lock(device_mutex);
--
- 	callback_finish_mutex = jack_midiin->callback_finish_mutex;
--
--	pthread_mutex_unlock(device_mutex);
- 	
- 	pthread_mutex_lock(callback_finish_mutex);
- 
---- a/ags/audio/jack/ags_jack_devout.c
-+++ b/ags/audio/jack/ags_jack_devout.c
-@@ -40,6 +40,7 @@
- 
- #include <ags/audio/task/ags_notify_soundcard.h>
- #include <ags/audio/task/ags_tic_device.h>
-+#include <ags/audio/task/ags_clear_buffer.h>
- #include <ags/audio/task/ags_switch_buffer_flag.h>
- 
- #include <ags/audio/thread/ags_audio_loop.h>
-@@ -1610,11 +1611,14 @@
-   AgsJackClient *jack_client;
-   AgsJackDevout *jack_devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-+  
-   AgsMutexManager *mutex_manager;
-   AgsTaskThread *task_thread;
- 
-   AgsApplicationContext *application_context;
- 
-+  guint word_size;
-   gboolean jack_client_activated;
-   
-   pthread_mutex_t *mutex;
-@@ -1650,13 +1654,49 @@
-   pthread_mutex_lock(mutex);
-   
-   jack_devout->flags &= (~AGS_JACK_DEVOUT_START_PLAY);
--
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard);
-+  
-   if((AGS_JACK_DEVOUT_INITIALIZED & (jack_devout->flags)) == 0){
-     pthread_mutex_unlock(mutex);
-     
-     return;
-   }
- 
-+  switch(jack_devout->format){
-+  case AGS_SOUNDCARD_SIGNED_8_BIT:
-+    {
-+      word_size = sizeof(signed char);
-+    }
-+    break;
-+  case AGS_SOUNDCARD_SIGNED_16_BIT:
-+    {
-+      word_size = sizeof(signed short);
-+    }
-+    break;
-+  case AGS_SOUNDCARD_SIGNED_24_BIT:
-+    {      
-+      //NOTE:JK: The 24-bit linear samples use 32-bit physical space
-+      word_size = sizeof(signed long);
-+    }
-+    break;
-+  case AGS_SOUNDCARD_SIGNED_32_BIT:
-+    {
-+      word_size = sizeof(signed long);
-+    }
-+    break;
-+  case AGS_SOUNDCARD_SIGNED_64_BIT:
-+    {
-+      word_size = sizeof(signed long long);
-+    }
-+    break;
-+  default:
-+    pthread_mutex_unlock(mutex);
-+    
-+    g_warning("ags_jack_devout_port_play(): unsupported word size\0");
-+    
-+    return;
-+  }
-+
-   pthread_mutex_unlock(mutex);
- 
-   /*  */
-@@ -1715,19 +1755,20 @@
-   }
- 
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-   if(task_thread != NULL){
-     AgsTicDevice *tic_device;
-+    AgsClearBuffer *clear_buffer;
-     AgsSwitchBufferFlag *switch_buffer_flag;
-       
-     GList *task;
-@@ -1738,7 +1779,12 @@
-     tic_device = ags_tic_device_new((GObject *) jack_devout);
-     task = g_list_append(task,
- 			 tic_device);
--  
-+
-+    /* reset - clear buffer */
-+    clear_buffer = ags_clear_buffer_new((GObject *) jack_devout);
-+    task = g_list_append(task,
-+			 clear_buffer);
-+
-     /* reset - switch buffer flags */
-     switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) jack_devout);
-     task = g_list_append(task,
-@@ -1748,9 +1794,24 @@
-     ags_task_thread_append_tasks((AgsTaskThread *) task_thread,
- 				 task);
-   }else{
-+    guint nth_buffer;
-+    
-     /* tic */
-     ags_soundcard_tic(AGS_SOUNDCARD(jack_devout));
--	  
-+
-+    /* reset - clear buffer */
-+    if((AGS_JACK_DEVOUT_BUFFER0 & (jack_devout->flags)) != 0){
-+      nth_buffer = 3;
-+    }else if((AGS_JACK_DEVOUT_BUFFER1 & (jack_devout->flags)) != 0){
-+      nth_buffer = 0;
-+    }else if((AGS_JACK_DEVOUT_BUFFER2 & (jack_devout->flags)) != 0){
-+      nth_buffer = 1;
-+    }else if((AGS_JACK_DEVOUT_BUFFER3 & jack_devout->flags) != 0){
-+      nth_buffer = 2;
-+    }
-+
-+    memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
-+
-     /* reset - switch buffer flags */
-     ags_jack_devout_switch_buffer_flag(jack_devout);
-   }
-@@ -1761,6 +1822,8 @@
- {
-   AgsJackDevout *jack_devout;
- 
-+  AgsNotifySoundcard *notify_soundcard;
-+  
-   AgsMutexManager *mutex_manager;
- 
-   AgsApplicationContext *application_context;
-@@ -1786,15 +1849,21 @@
-   pthread_mutex_unlock(application_context->mutex);
- 
-   /*  */
-+  pthread_mutex_lock(mutex);
-+
-+  notify_soundcard = AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard);
-+
-   if((AGS_JACK_DEVOUT_INITIALIZED & (jack_devout->flags)) == 0){
-+    pthread_mutex_unlock(mutex);
-+
-     return;
-   }
- 
-+  g_object_ref(notify_soundcard);
-+  
-   //  g_atomic_int_or(&(AGS_THREAD(application_context->main_loop)->flags),
-   //		  AGS_THREAD_TIMING);
- 
--  pthread_mutex_lock(mutex);
--
-   callback_mutex = jack_devout->callback_mutex;
-   callback_finish_mutex = jack_devout->callback_finish_mutex;
-   
-@@ -1808,8 +1877,6 @@
- 		  AGS_JACK_DEVOUT_PASS_THROUGH);
-   g_atomic_int_and(&(jack_devout->sync_flags),
- 		   (~AGS_JACK_DEVOUT_INITIAL_CALLBACK));
--  
--  pthread_mutex_unlock(mutex);
- 
-   /* signal callback */
-   pthread_mutex_lock(callback_mutex);
-@@ -1836,20 +1903,20 @@
-   pthread_mutex_unlock(callback_finish_mutex);
- 
-   /* notify cyclic task */
--  pthread_mutex_lock(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_lock(notify_soundcard->return_mutex);
- 
--  g_atomic_int_or(&(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->flags),
-+  g_atomic_int_or(&(notify_soundcard->flags),
- 		  AGS_NOTIFY_SOUNDCARD_DONE_RETURN);
-   
--  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->flags)))) != 0){
--    pthread_cond_signal(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_cond);
-+  if((AGS_NOTIFY_SOUNDCARD_WAIT_RETURN & (g_atomic_int_get(&(notify_soundcard->flags)))) != 0){
-+    pthread_cond_signal(notify_soundcard->return_cond);
-   }
-   
--  pthread_mutex_unlock(AGS_NOTIFY_SOUNDCARD(jack_devout->notify_soundcard)->return_mutex);
-+  pthread_mutex_unlock(notify_soundcard->return_mutex);
- 
-+  g_object_unref(notify_soundcard);
-+  
-   /*  */
--  pthread_mutex_lock(mutex);
--
-   jack_devout->note_offset = 0;
-   jack_devout->note_offset_absolute = 0;
- 
---- a/ags/audio/jack/ags_jack_midiin.c
-+++ b/ags/audio/jack/ags_jack_midiin.c
-@@ -1232,6 +1232,8 @@
-   pthread_mutex_t *callback_mutex;
-   pthread_mutex_t *callback_finish_mutex;
-   
-+  jack_midiin = AGS_JACK_MIDIIN(sequencer);
-+
-   application_context = ags_sequencer_get_application_context(sequencer);
-   
-   pthread_mutex_lock(application_context->mutex);
-@@ -1245,8 +1247,6 @@
- 
-   pthread_mutex_lock(mutex);
- 
--  jack_midiin = AGS_JACK_MIDIIN(sequencer);
--
-   if((AGS_JACK_MIDIIN_INITIALIZED & (jack_midiin->flags)) == 0){
-     pthread_mutex_unlock(mutex);
-     
---- a/ags/audio/recall/ags_copy_pattern_channel_run.c
-+++ b/ags/audio/recall/ags_copy_pattern_channel_run.c
-@@ -364,7 +364,7 @@
- 						      gdouble delay, guint attack,
- 						      AgsCopyPatternChannelRun *copy_pattern_channel_run)
- {
--  AgsChannel *output, *source;
-+  AgsChannel *source;
-   AgsPattern *pattern;
-   AgsCopyPatternAudio *copy_pattern_audio;
-   AgsCopyPatternAudioRun *copy_pattern_audio_run;
-@@ -380,7 +380,8 @@
- 
-   pthread_mutex_t *application_mutex;
-   pthread_mutex_t *pattern_mutex;
--
-+  pthread_mutex_t *source_mutex;
-+  
-   if(delay != 0.0){
-     return;
-   }
-@@ -440,34 +441,66 @@
- 
-   /*  */
-   if(current_bit){
-+    AgsChannel *link;
-     AgsRecycling *recycling;
-+    AgsRecycling *end_recycling;
-     AgsAudioSignal *audio_signal;
- 
-     gdouble delay;
-     guint attack;
-   
-+    pthread_mutex_t *link_mutex;
-+    
-     //    g_message("ags_copy_pattern_channel_run_sequencer_alloc_callback - playing channel: %u; playing pattern: %u\0",
-     //	      AGS_RECALL_CHANNEL(copy_pattern_channel)->source->line,
-     //	      copy_pattern_audio_run->count_beats_audio_run->sequencer_counter);
- 
-     /* get source */
-     source = AGS_RECALL_CHANNEL(copy_pattern_channel)->source;
-+
-+    pthread_mutex_lock(application_mutex);
-+  
-+    source_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					    (GObject *) source);
-+    
-+    pthread_mutex_unlock(application_mutex);
-+    
-+    /* source fields */
-+    pthread_mutex_lock(source_mutex);
-+
-+    link = source->link;
-     
--    /* create new audio signals */
-     recycling = source->first_recycling;
-+
-+    if(recycling != NULL){
-+      end_recycling = source->last_recycling->next;
-+    }
-     
--    //TODO:JK: unclear
-+    pthread_mutex_unlock(source_mutex);
- 
-+    /* link */
-+    if(link != NULL){
-+      pthread_mutex_lock(application_mutex);
-+      
-+      link_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					    (GObject *) link);
-+      
-+      pthread_mutex_unlock(application_mutex);
-+    }
-+
-+    /* create audio signals */
-     if(recycling != NULL){
-       AgsRecallID *child_recall_id;
- 
--      while(recycling != source->last_recycling->next){
--	if(source->link == NULL){
-+      while(recycling != end_recycling){
-+	if(link == NULL){
- 	  child_recall_id = AGS_RECALL(copy_pattern_channel_run)->recall_id;
- 	}else{
- 	  GList *list;
- 
--	  list = source->link->recall_id;
-+	  pthread_mutex_lock(link_mutex);
-+	  
-+	  list = link->recall_id;
- 
- 	  while(list != NULL){
- 	    if(AGS_RECALL_ID(list->data)->recycling_context->parent == AGS_RECALL(copy_pattern_channel_run)->recall_id->recycling_context){
-@@ -481,6 +514,8 @@
- 	  if(list == NULL){
- 	    child_recall_id = NULL;
- 	  }
-+
-+	  pthread_mutex_unlock(link_mutex);
- 	}
- 
- 	audio_signal = ags_audio_signal_new(AGS_RECALL(copy_pattern_audio)->soundcard,
---- a/ags/audio/recall/ags_count_beats_audio_run.c
-+++ b/ags/audio/recall/ags_count_beats_audio_run.c
-@@ -1446,38 +1446,87 @@
-   }else{      
-     if(count_beats_audio_run->sequencer_counter >= (guint) loop_end - 1.0){
-       AgsAudio *audio;
-+
-+      AgsMutexManager *mutex_manager;
-+
-       GList *playback;
- 
-+      pthread_mutex_t *application_mutex;
-+      pthread_mutex_t *audio_mutex;
-+      
-+      audio = AGS_RECALL_AUDIO_RUN(count_beats_audio_run)->recall_audio->audio;
-+
-+      mutex_manager = ags_mutex_manager_get_instance();
-+      application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
-+  
-+      /* lookup audio mutex */
-+      pthread_mutex_lock(application_mutex);
-+  
-+      audio_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					     audio);
-+  
-+      pthread_mutex_unlock(application_mutex);
-+
-+      /* reset sequencer counter */
-       count_beats_audio_run->sequencer_counter = 0;
- 
--      audio = AGS_RECALL_AUDIO_RUN(count_beats_audio_run)->recall_audio->audio;
-+      /* get playback */
-+      pthread_mutex_lock(audio_mutex);
-+      
-       playback = AGS_PLAYBACK_DOMAIN(audio->playback_domain)->playback;
- 
-+      pthread_mutex_unlock(audio_mutex);
-+      
-       /* emit stop signals */
-       ags_count_beats_audio_run_sequencer_stop(count_beats_audio_run,
- 					       FALSE);
- 
-       /* set done flag in soundcard play */
-       while(playback != NULL){
--	if(AGS_PLAYBACK(playback->data)->recall_id[1] != NULL &&
--	   AGS_PLAYBACK(playback->data)->recall_id[1]->recycling_context == AGS_RECALL(count_beats_audio_run)->recall_id->recycling_context){
--	  AgsChannel *channel;
-+	AgsChannel *channel;
-+	AgsRecyclingContext *recycling_context;
-+	
-+	pthread_mutex_lock(audio_mutex);
-+
-+	channel = audio->output;
-+	
-+	if(AGS_PLAYBACK(playback->data)->recall_id[1] != NULL){
-+	  recycling_context = AGS_PLAYBACK(playback->data)->recall_id[1]->recycling_context;
-+	}else{
-+	  recycling_context = NULL;
-+	}
-+
-+	pthread_mutex_unlock(audio_mutex);
-+
-+	if(recycling_context == AGS_RECALL(count_beats_audio_run)->recall_id->recycling_context){
- 	  AgsStreamChannelRun *stream_channel_run;
-+	  
- 	  GList *list;
- 	  GList *recall_recycling_list, *recall_audio_signal_list;
-+	  
- 	  gboolean found;
- 
-+	  pthread_mutex_t *channel_mutex;
-+
- 	  //	    AGS_PLAYBACK(playback->data)->flags |= AGS_PLAYBACK_DONE;
- 
-+	  /* lookup channel mutex */
-+	  pthread_mutex_lock(application_mutex);
-+	  
-+	  channel_mutex = ags_mutex_manager_lookup(mutex_manager,
-+						   channel);
-+	  
-+	  pthread_mutex_unlock(application_mutex);
-+
- 	  /* check if to stop audio processing */
--	  channel = audio->output;
- 	  found = FALSE;
- 
-+	  pthread_mutex_lock(channel_mutex);
-+	  
- 	  list = channel->play;
--
- 	  list = ags_recall_find_type_with_recycling_context(list,
- 							     AGS_TYPE_STREAM_CHANNEL_RUN,
--							     (GObject *) AGS_RECALL(count_beats_audio_run)->recall_id->recycling_context);
-+							     (GObject *) recycling_context);
- 
- 	  if(list != NULL){
- 	    stream_channel_run = AGS_STREAM_CHANNEL_RUN(list->data);
-@@ -1500,6 +1549,8 @@
- 	    }
- 	  }
- 
-+	  pthread_mutex_unlock(channel_mutex);
-+
- 	  /* stop audio processing*/
- 	  if(!found){
- 	    ags_count_beats_audio_run_stop(count_beats_audio_run,
-@@ -1509,7 +1560,12 @@
- 	  break;
- 	}
- 
--	playback = playback->next;
-+	/* iterate playback */
-+	pthread_mutex_lock(audio_mutex);
-+	
-+      	playback = playback->next;
-+
-+	pthread_mutex_unlock(audio_mutex);
-       }
- 
-       return;
---- a/ags/audio/recall/ags_delay_audio_run.c
-+++ b/ags/audio/recall/ags_delay_audio_run.c
-@@ -26,6 +26,8 @@
- #include <ags/object/ags_soundcard.h>
- #include <ags/object/ags_plugin.h>
- 
-+#include <ags/thread/ags_mutex_manager.h>
-+
- #include <ags/file/ags_file_stock.h>
- #include <ags/file/ags_file_id_ref.h>
- #include <ags/file/ags_file_lookup.h>
-@@ -441,16 +443,24 @@
-   AgsDelayAudio *delay_audio;
-   AgsDelayAudioRun *delay_audio_run;
- 
-+  AgsMutexManager *mutex_manager;
-+  
-   gdouble notation_delay, sequencer_delay;
-+  gdouble delay;
-+  guint attack;
- 
-   GValue value = { 0, };
- 
-+  pthread_mutex_t *application_mutex;
-+  pthread_mutex_t *soundcard_mutex;
-+  
-   AGS_RECALL_CLASS(ags_delay_audio_run_parent_class)->run_pre(recall);
- 
-   //  g_message("ags_delay_audio_run_run_pre()\0");
-   
-   delay_audio_run = AGS_DELAY_AUDIO_RUN(recall);
- 
-+  /* check done */  
-   if((AGS_RECALL_PERSISTENT & (recall->flags)) == 0 &&
-      delay_audio_run->dependency_ref == 0){
-     delay_audio_run->notation_counter = 0;
-@@ -463,6 +473,17 @@
- 
-   delay_audio = AGS_DELAY_AUDIO(AGS_RECALL_AUDIO_RUN(delay_audio_run)->recall_audio);
- 
-+  mutex_manager = ags_mutex_manager_get_instance();
-+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
-+  
-+  /* lookup soundcard mutex */
-+  pthread_mutex_lock(application_mutex);
-+  
-+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
-+					     recall->soundcard);
-+  
-+  pthread_mutex_unlock(application_mutex);
-+
-   /* read notation-delay port */
-   g_value_init(&value, G_TYPE_DOUBLE);
- 
-@@ -489,22 +510,22 @@
-   }else{
-     delay_audio_run->sequencer_counter += 1;
-   }
-+  
-+  /* delay and attack */
-+  pthread_mutex_lock(soundcard_mutex);
-+
-+  attack = ags_soundcard_get_attack(AGS_SOUNDCARD(recall->soundcard));
-+  
-+  pthread_mutex_unlock(soundcard_mutex);
-+  
-+  delay = 0.0;
- 
-+  /* notation */
-   if(delay_audio_run->notation_counter == 0){    
-     guint run_order;
--    gdouble delay;
--    guint attack;
- 
-     run_order = 0; //NOTE:JK: old hide_ref style
- 
--    /* delay and attack */
--    //TODO:JK: unclear
--    attack = ags_soundcard_get_attack(AGS_SOUNDCARD(recall->soundcard));
--      
--    delay = 0.0; // soundcard->delay[((soundcard->tic_counter + 1 == AGS_NOTATION_TICS_PER_BEAT) ?
--      //		   0:
--      //		   soundcard->tic_counter + 1)];
--
-     //    g_message("ags_delay_audio_run_run_pre@%llu: alloc notation[%u]\0",
-     //	      delay_audio_run,
-     //	      run_order);
-@@ -521,8 +542,6 @@
- 				       delay, attack);
-   }else{
-     guint run_order;
--    gdouble delay;
--    guint attack;
- 
-     run_order = 0;
-     
-@@ -541,17 +560,9 @@
- 				       delay, attack);
-   }
- 
-+  /* sequencer */
-   if(delay_audio_run->sequencer_counter == 0){
-     guint run_order;
--    gdouble delay;
--    guint attack;
--
--    /* delay and attack */
--    //TODO:JK: unclear
--    attack = ags_soundcard_get_attack(AGS_SOUNDCARD(recall->soundcard));
--    delay = 0.0; // soundcard->delay[((soundcard->tic_counter + 1 == AGS_NOTATION_TICS_PER_BEAT) ?
--      //		   0:
--      //		   soundcard->tic_counter + 1)];
- 
-     run_order = 0;
- 
-@@ -572,8 +583,6 @@
- 					delay, attack);
-   }else{
-     guint run_order;
--    gdouble delay;
--    guint attack;
- 
-     run_order = 0;
-     
---- a/ags/audio/recall/ags_play_audio_signal.c
-+++ b/ags/audio/recall/ags_play_audio_signal.c
-@@ -246,7 +246,7 @@
- 
-   play_audio_signal = AGS_PLAY_AUDIO_SIGNAL(recall);
- 
--  soundcard = AGS_RECALL(play_audio_signal)->soundcard;
-+  soundcard = recall->soundcard;
-   source = AGS_AUDIO_SIGNAL(AGS_RECALL_AUDIO_SIGNAL(play_audio_signal)->source);
-   stream = source->stream_current;
- 
---- a/ags/audio/recall/ags_record_midi_audio_run.c
-+++ b/ags/audio/recall/ags_record_midi_audio_run.c
-@@ -87,7 +87,7 @@
-  * @section_id:
-  * @include: ags/audio/recall/ags_record_midi_audio_run.h
-  *
-- * The #AgsRecordMidiAudioRun class record midi.
-+ * The #AgsRecordMidiAudioRun does record midi.
-  */
- 
- enum{
-@@ -610,7 +610,7 @@
- 				    AgsRecallID *recall_id,
- 				    guint *n_params, GParameter *parameter)
- {
--  AgsRecordMidiAudioRun *copy, *record_midi_audio_run;
-+  AgsRecordMidiAudioRun *copy;
- 
-   copy = AGS_RECORD_MIDI_AUDIO_RUN(AGS_RECALL_CLASS(ags_record_midi_audio_run_parent_class)->duplicate(recall,
- 												       recall_id,
-@@ -687,8 +687,10 @@
- 
-   glong division, tempo, bpm;
-   guint notation_counter;
-+  gboolean reverse_mapping;
-   gboolean pattern_mode;
-   gboolean playback, record;
-+  guint midi_channel;
-   guint audio_start_mapping;
-   guint midi_start_mapping, midi_end_mapping;
-   guint input_pads;
-@@ -703,22 +705,15 @@
-   pthread_mutex_t *audio_mutex;
-   pthread_mutex_t *channel_mutex;
- 
-+  /*  */
-+  mutex_manager = ags_mutex_manager_get_instance();
-+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
-+
-+  /* get defaults */
-   record_midi_audio_run = AGS_RECORD_MIDI_AUDIO_RUN(recall);
-   record_midi_audio = AGS_RECORD_MIDI_AUDIO(AGS_RECALL_AUDIO_RUN(recall)->recall_audio);
- 
--  delay_audio_run = record_midi_audio_run->delay_audio_run;
--  count_beats_audio_run = AGS_COUNT_BEATS_AUDIO_RUN(record_midi_audio_run->count_beats_audio_run);
--  
-   audio = AGS_RECALL_AUDIO(record_midi_audio)->audio;
--  sequencer = audio->sequencer;
--
--  if(sequencer == NULL){
--    return;
--  }
--
--  /*  */
--  mutex_manager = ags_mutex_manager_get_instance();
--  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
- 
-   /* get audio mutex */
-   pthread_mutex_lock(application_mutex);
-@@ -728,10 +723,29 @@
- 
-   pthread_mutex_unlock(application_mutex);
- 
-+  /*  */
-+  pthread_mutex_lock(audio_mutex);
-+  
-+  delay_audio_run = record_midi_audio_run->delay_audio_run;
-+  count_beats_audio_run = AGS_COUNT_BEATS_AUDIO_RUN(record_midi_audio_run->count_beats_audio_run);
-+  
-+  sequencer = audio->sequencer;
-+
-+  pthread_mutex_unlock(audio_mutex);
-+
-+  if(sequencer == NULL){
-+    return;
-+  }
-+
-   /* get audio fields */
-   pthread_mutex_lock(audio_mutex);
- 
-+  reverse_mapping = ((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0) ? TRUE: FALSE;
-+  
-   pattern_mode = ((AGS_AUDIO_PATTERN_MODE & (audio->flags)) != 0) ? TRUE: FALSE;
-+
-+  midi_channel = audio->midi_channel;
-+  
-   audio_start_mapping = audio->audio_start_mapping;
- 
-   midi_start_mapping = audio->midi_start_mapping;
-@@ -785,10 +799,10 @@
-     notation = NULL;
-   }
-   
--  pthread_mutex_unlock(audio_mutex);
--
-   /*  */
-   notation_counter = count_beats_audio_run->notation_counter;
-+  
-+  pthread_mutex_unlock(audio_mutex);
- 
-   /* get mode */
-   g_value_init(&value,
-@@ -852,18 +866,20 @@
- 	  AgsNote *current_note;
- 	  
- 	  /* key on - check within mapping */
--	  if(audio->midi_channel == (0x0f & midi_iter[0])){
-+	  if(midi_channel == (0x0f & midi_iter[0])){
- 	    if(midi_start_mapping <= (0x7f & midi_iter[1]) &&
--	       (((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0 &&
-+	       ((reverse_mapping &&
- 		 input_pads - ((0x7f & midi_iter[1]) - midi_start_mapping) - 1 > 0) ||
--		((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) == 0 &&
-+		(!reverse_mapping &&
- 		 (0x7f & midi_iter[1]) - midi_start_mapping < midi_end_mapping))){
- 	      current_note = NULL;
- 	      note = record_midi_audio_run->note;
- 
-+	      pthread_mutex_lock(audio_mutex);
-+	      
- 	      while(note != NULL){
- 		/* check current notes */
--		if((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0){
-+		if(reverse_mapping){
- 		  if(AGS_NOTE(note->data)->y == input_pads - ((0x7f & midi_iter[1]) - midi_start_mapping) - 1){
- 		    current_note = note->data;
- 
-@@ -879,7 +895,9 @@
- 	    
- 		note = note->next;
- 	      }
--	    
-+
-+	      pthread_mutex_unlock(audio_mutex);
-+
- 	      /* add note */
- 	      if(current_note == NULL){
- 		if((0x7f & (midi_iter[2])) != 0){
-@@ -888,7 +906,7 @@
- 		  current_note->x[0] = notation_counter;
- 		  current_note->x[1] = notation_counter + 1;
- 	      
--		  if((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0){
-+		  if(reverse_mapping){
- 		    current_note->y = input_pads - ((0x7f & midi_iter[1]) - midi_start_mapping) - 1;
- 		  }else{
- 		    current_note->y = (0x7f & midi_iter[1]) - midi_start_mapping;
-@@ -946,10 +964,12 @@
- 	    /* key off - find matching note */
- 	    current_note = NULL;
- 	    note = record_midi_audio_run->note;
--
-+	    
-+	    pthread_mutex_lock(audio_mutex);
-+	    
- 	    while(note != NULL){
- 	      /* check current notes */
--	      if((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0){
-+	      if(reverse_mapping){
- 		if(AGS_NOTE(note->data)->y == input_pads - ((0x7f & midi_iter[1]) - midi_start_mapping) - 1){
- 		  current_note = note->data;
- 
-@@ -965,7 +985,9 @@
- 	    
- 	      note = note->next;
- 	    }
--	  
-+
-+	    pthread_mutex_unlock(audio_mutex);
-+	    
- 	    /* remove current note */
- 	    if(current_note != NULL){
- 	      pthread_mutex_lock(audio_mutex);
-@@ -992,9 +1014,11 @@
- 	    current_note = NULL;
- 	    note = record_midi_audio_run->note;
- 
-+	    pthread_mutex_lock(audio_mutex);
-+
- 	    while(note != NULL){
- 	      /* check current notes */
--	      if((AGS_AUDIO_REVERSE_MAPPING & (audio->flags)) != 0){
-+	      if(reverse_mapping){
- 		if(AGS_NOTE(note->data)->y == input_pads - ((0x7f & midi_iter[1]) - midi_start_mapping) - 1){
- 		  current_note = note->data;
- 
-@@ -1010,7 +1034,9 @@
- 	    
- 	      note = note->next;
- 	    }
--	    
-+
-+	    pthread_mutex_unlock(audio_mutex);
-+
- 	    /* feed note */
- 	    if(current_note != NULL){
- 	      current_note->x[1] = notation_counter + 1;
-@@ -1116,6 +1142,7 @@
-     }
-   }
- 
-+  /* call parent */
-   AGS_RECALL_CLASS(ags_record_midi_audio_run_parent_class)->run_pre(recall);
- }
- 
---- /dev/null
-+++ b/ags/audio/task/ags_clear_buffer.c
-@@ -0,0 +1,379 @@
-+/* GSequencer - Advanced GTK Sequencer
-+ * Copyright (C) 2005-2015 Joël Krähemann
-+ *
-+ * This file is part of GSequencer.
-+ *
-+ * GSequencer 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.
-+ *
-+ * GSequencer 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 GSequencer.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <ags/audio/task/ags_clear_buffer.h>
-+
-+#include <ags/object/ags_connectable.h>
-+#include <ags/object/ags_soundcard.h>
-+
-+#include <ags/audio/ags_devout.h>
-+#include <ags/audio/ags_midiin.h>
-+
-+#include <ags/audio/jack/ags_jack_devout.h>
-+#include <ags/audio/jack/ags_jack_midiin.h>
-+
-+void ags_clear_buffer_class_init(AgsClearBufferClass *clear_buffer);
-+void ags_clear_buffer_connectable_interface_init(AgsConnectableInterface *connectable);
-+void ags_clear_buffer_init(AgsClearBuffer *clear_buffer);
-+void ags_clear_buffer_set_property(GObject *gobject,
-+					 guint prop_id,
-+					 const GValue *value,
-+					 GParamSpec *param_spec);
-+void ags_clear_buffer_get_property(GObject *gobject,
-+					 guint prop_id,
-+					 GValue *value,
-+					 GParamSpec *param_spec);
-+void ags_clear_buffer_connect(AgsConnectable *connectable);
-+void ags_clear_buffer_disconnect(AgsConnectable *connectable);
-+void ags_clear_buffer_finalize(GObject *gobject);
-+
-+void ags_clear_buffer_launch(AgsTask *task);
-+
-+/**
-+ * SECTION:ags_clear_buffer
-+ * @short_description: switch buffer flag of device
-+ * @title: AgsClearBuffer
-+ * @section_id:
-+ * @include: ags/audio/task/ags_clear_buffer.h
-+ *
-+ * The #AgsClearBuffer task switches the buffer flag of device.
-+ */
-+
-+static gpointer ags_clear_buffer_parent_class = NULL;
-+static AgsConnectableInterface *ags_clear_buffer_parent_connectable_interface;
-+
-+enum{
-+  PROP_0,
-+  PROP_DEVICE,
-+};
-+
-+GType
-+ags_clear_buffer_get_type()
-+{
-+  static GType ags_type_clear_buffer = 0;
-+
-+  if(!ags_type_clear_buffer){
-+    static const GTypeInfo ags_clear_buffer_info = {
-+      sizeof (AgsClearBufferClass),
-+      NULL, /* base_init */
-+      NULL, /* base_finalize */
-+      (GClassInitFunc) ags_clear_buffer_class_init,
-+      NULL, /* class_finalize */
-+      NULL, /* class_data */
-+      sizeof (AgsClearBuffer),
-+      0,    /* n_preallocs */
-+      (GInstanceInitFunc) ags_clear_buffer_init,
-+    };
-+
-+    static const GInterfaceInfo ags_connectable_interface_info = {
-+      (GInterfaceInitFunc) ags_clear_buffer_connectable_interface_init,
-+      NULL, /* interface_finalize */
-+      NULL, /* interface_data */
-+    };
-+
-+    ags_type_clear_buffer = g_type_register_static(AGS_TYPE_TASK,
-+							 "AgsClearBuffer\0",
-+							 &ags_clear_buffer_info,
-+							 0);
-+
-+    g_type_add_interface_static(ags_type_clear_buffer,
-+				AGS_TYPE_CONNECTABLE,
-+				&ags_connectable_interface_info);
-+  }
-+  
-+  return (ags_type_clear_buffer);
-+}
-+
-+void
-+ags_clear_buffer_class_init(AgsClearBufferClass *clear_buffer)
-+{
-+  GObjectClass *gobject;
-+  AgsTaskClass *task;
-+  GParamSpec *param_spec;
-+
-+  ags_clear_buffer_parent_class = g_type_class_peek_parent(clear_buffer);
-+
-+  /* gobject */
-+  gobject = (GObjectClass *) clear_buffer;
-+
-+  gobject->set_property = ags_clear_buffer_set_property;
-+  gobject->get_property = ags_clear_buffer_get_property;
-+
-+  gobject->finalize = ags_clear_buffer_finalize;
-+
-+  /* properties */
-+  /**
-+   * AgsClearBuffer:device:
-+   *
-+   * The assigned #AgsSoundcard or #AgsSequencer
-+   * 
-+   * Since: 0.7.124
-+   */
-+  param_spec = g_param_spec_object("device\0",
-+				   "device of change device\0",
-+				   "The device of change device task\0",
-+				   G_TYPE_OBJECT,
-+				   G_PARAM_READABLE | G_PARAM_WRITABLE);
-+  g_object_class_install_property(gobject,
-+				  PROP_DEVICE,
-+				  param_spec);
-+
-+  /* task */
-+  task = (AgsTaskClass *) clear_buffer;
-+
-+  task->launch = ags_clear_buffer_launch;
-+}
-+
-+void
-+ags_clear_buffer_connectable_interface_init(AgsConnectableInterface *connectable)
-+{
-+  ags_clear_buffer_parent_connectable_interface = g_type_interface_peek_parent(connectable);
-+
-+  connectable->connect = ags_clear_buffer_connect;
-+  connectable->disconnect = ags_clear_buffer_disconnect;
-+}
-+
-+void
-+ags_clear_buffer_init(AgsClearBuffer *clear_buffer)
-+{
-+  clear_buffer->device = NULL;
-+}
-+
-+void
-+ags_clear_buffer_set_property(GObject *gobject,
-+				    guint prop_id,
-+				    const GValue *value,
-+				    GParamSpec *param_spec)
-+{
-+  AgsClearBuffer *clear_buffer;
-+
-+  clear_buffer = AGS_CLEAR_BUFFER(gobject);
-+
-+  switch(prop_id){
-+  case PROP_DEVICE:
-+    {
-+      GObject *device;
-+
-+      device = (GObject *) g_value_get_object(value);
-+
-+      if(clear_buffer->device == (GObject *) device){
-+	return;
-+      }
-+
-+      if(clear_buffer->device != NULL){
-+	g_object_unref(clear_buffer->device);
-+      }
-+
-+      if(device != NULL){
-+	g_object_ref(device);
-+      }
-+
-+      clear_buffer->device = (GObject *) device;
-+    }
-+    break;
-+  default:
-+    G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec);
-+    break;
-+  }
-+}
-+
-+void
-+ags_clear_buffer_get_property(GObject *gobject,
-+				    guint prop_id,
-+				    GValue *value,
-+				    GParamSpec *param_spec)
-+{
-+  AgsClearBuffer *clear_buffer;
-+
-+  clear_buffer = AGS_CLEAR_BUFFER(gobject);
-+
-+  switch(prop_id){
-+  case PROP_DEVICE:
-+    {
-+      g_value_set_object(value, clear_buffer->device);
-+    }
-+    break;
-+  default:
-+    G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, param_spec);
-+    break;
-+  }
-+}
-+
-+void
-+ags_clear_buffer_connect(AgsConnectable *connectable)
-+{
-+  ags_clear_buffer_parent_connectable_interface->connect(connectable);
-+
-+  /* empty */
-+}
-+
-+void
-+ags_clear_buffer_disconnect(AgsConnectable *connectable)
-+{
-+  ags_clear_buffer_parent_connectable_interface->disconnect(connectable);
-+
-+  /* empty */
-+}
-+
-+void
-+ags_clear_buffer_finalize(GObject *gobject)
-+{
-+  G_OBJECT_CLASS(ags_clear_buffer_parent_class)->finalize(gobject);
-+
-+  /* empty */
-+}
-+
-+void
-+ags_clear_buffer_launch(AgsTask *task)
-+{
-+  AgsClearBuffer *clear_buffer;
-+
-+  guint nth_buffer;
-+  guint word_size;
-+  
-+  clear_buffer = AGS_CLEAR_BUFFER(task);
-+
-+  if(AGS_IS_DEVOUT(clear_buffer->device)){
-+    AgsDevout *devout;
-+
-+    devout = clear_buffer->device;
-+
-+    /* retrieve word size */
-+    switch(devout->format){
-+    case AGS_SOUNDCARD_SIGNED_8_BIT:
-+      {
-+	word_size = sizeof(signed char);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_16_BIT:
-+      {
-+	word_size = sizeof(signed short);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_24_BIT:
-+      {
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_32_BIT:
-+      {
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_64_BIT:
-+      {
-+	word_size = sizeof(signed long long);
-+      }
-+      break;
-+    default:
-+      g_warning("ags_clear_buffer_launch(): unsupported word size\0");
-+
-+      return;
-+    }
-+
-+    
-+    if((AGS_DEVOUT_BUFFER0 & (devout->flags)) != 0){
-+      nth_buffer = 0;
-+    }else if((AGS_DEVOUT_BUFFER1 & (devout->flags)) != 0){
-+      nth_buffer = 1;
-+    }else if((AGS_DEVOUT_BUFFER2 & (devout->flags)) != 0){
-+      nth_buffer = 2;
-+    }else if((AGS_DEVOUT_BUFFER3 & devout->flags) != 0){
-+      nth_buffer = 3;
-+    }
-+    
-+    memset(devout->buffer[nth_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
-+  }else if(AGS_IS_JACK_DEVOUT(clear_buffer->device)){
-+    AgsJackDevout *jack_devout;
-+    
-+    jack_devout = clear_buffer->device;
-+
-+    switch(jack_devout->format){
-+    case AGS_SOUNDCARD_SIGNED_8_BIT:
-+      {
-+	word_size = sizeof(signed char);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_16_BIT:
-+      {
-+	word_size = sizeof(signed short);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_24_BIT:
-+      {      
-+	//NOTE:JK: The 24-bit linear samples use 32-bit physical space
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_32_BIT:
-+      {
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_64_BIT:
-+      {
-+	word_size = sizeof(signed long long);
-+      }
-+      break;
-+    default:    
-+      g_warning("ags_clear_buffer_launch(): unsupported word size\0");
-+    
-+      return;
-+    }
-+    
-+    if((AGS_JACK_DEVOUT_BUFFER0 & (jack_devout->flags)) != 0){
-+      nth_buffer = 3;
-+    }else if((AGS_JACK_DEVOUT_BUFFER1 & (jack_devout->flags)) != 0){
-+      nth_buffer = 0;
-+    }else if((AGS_JACK_DEVOUT_BUFFER2 & (jack_devout->flags)) != 0){
-+      nth_buffer = 1;
-+    }else if((AGS_JACK_DEVOUT_BUFFER3 & jack_devout->flags) != 0){
-+      nth_buffer = 2;
-+    }
-+      
-+    memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
-+  }else if(AGS_IS_MIDIIN(clear_buffer->device)){
-+    //TODO:JK: implement me
-+  }else if(AGS_IS_JACK_MIDIIN(clear_buffer->device)){
-+    //TODO:JK: implement me
-+  }
-+}
-+
-+/**
-+ * ags_clear_buffer_new:
-+ * @device: the #AgsSoundcard or #AgsSequencer
-+ *
-+ * Creates an #AgsClearBuffer.
-+ *
-+ * Returns: an new #AgsClearBuffer.
-+ *
-+ * Since: 0.7.124
-+ */
-+AgsClearBuffer*
-+ags_clear_buffer_new(GObject *device)
-+{
-+  AgsClearBuffer *clear_buffer;
-+
-+  clear_buffer = (AgsClearBuffer *) g_object_new(AGS_TYPE_CLEAR_BUFFER,
-+							    NULL);
-+
-+  clear_buffer->device = device;
-+
-+  return(clear_buffer);
-+}
---- /dev/null
-+++ b/ags/audio/task/ags_clear_buffer.h
-@@ -0,0 +1,54 @@
-+/* GSequencer - Advanced GTK Sequencer
-+ * Copyright (C) 2005-2015 Joël Krähemann
-+ *
-+ * This file is part of GSequencer.
-+ *
-+ * GSequencer 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.
-+ *
-+ * GSequencer 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 GSequencer.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#ifndef __AGS_CLEAR_BUFFER_H__
-+#define __AGS_CLEAR_BUFFER_H__
-+
-+#include <glib.h>
-+#include <glib-object.h>
-+
-+#include <ags/thread/ags_task.h>
-+
-+#define AGS_TYPE_CLEAR_BUFFER                (ags_clear_buffer_get_type())
-+#define AGS_CLEAR_BUFFER(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBuffer))
-+#define AGS_CLEAR_BUFFER_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
-+#define AGS_IS_CLEAR_BUFFER(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj), AGS_TYPE_CLEAR_BUFFER))
-+#define AGS_IS_CLEAR_BUFFER_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE((class), AGS_TYPE_CLEAR_BUFFER))
-+#define AGS_CLEAR_BUFFER_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
-+
-+typedef struct _AgsClearBuffer AgsClearBuffer;
-+typedef struct _AgsClearBufferClass AgsClearBufferClass;
-+
-+struct _AgsClearBuffer
-+{
-+  AgsTask task;
-+
-+  GObject *device;
-+};
-+
-+struct _AgsClearBufferClass
-+{
-+  AgsTaskClass task;
-+};
-+
-+GType ags_clear_buffer_get_type();
-+
-+AgsClearBuffer* ags_clear_buffer_new(GObject *device);
-+
-+#endif /*__AGS_CLEAR_BUFFER_H__*/
---- a/ags/audio/thread/ags_audio_loop.c
-+++ b/ags/audio/thread/ags_audio_loop.c
-@@ -294,9 +294,6 @@
-   mutex_manager = ags_mutex_manager_get_instance();
-   application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
- 
--  //  g_atomic_int_or(&(thread->flags),
--  //		  AGS_THREAD_TIMING);
--
-   //  thread->flags |= AGS_THREAD_WAIT_FOR_CHILDREN;
-   pthread_mutex_lock(application_mutex);
- 
-@@ -624,8 +621,8 @@
-     /*  */
-     AGS_THREAD_CLASS(ags_audio_loop_parent_class)->start(thread);
- 
--    pthread_create(audio_loop->timing_thread, NULL,
--    		   ags_audio_loop_timing_thread, audio_loop);
-+    //    pthread_create(audio_loop->timing_thread, NULL,
-+    //		   ags_audio_loop_timing_thread, audio_loop);
-   }
- }
- 
-@@ -832,9 +829,9 @@
- 
-     g_atomic_int_set(&(audio_loop->time_spent),
- 		     audio_loop->time_cycle);
--    ags_main_loop_interrupt(AGS_MAIN_LOOP(thread),
--    			    AGS_THREAD_SUSPEND_SIG,
--    			    audio_loop->time_cycle, &time_spent);
-+    //    ags_main_loop_interrupt(AGS_MAIN_LOOP(thread),
-+    //			    AGS_THREAD_SUSPEND_SIG,
-+    //			    audio_loop->time_cycle, &time_spent);
-     
-     //    g_message("inter\0");    
-   }
---- a/ags/audio/thread/ags_export_thread.c
-+++ b/ags/audio/thread/ags_export_thread.c
-@@ -365,9 +365,9 @@
- ags_export_thread_run(AgsThread *thread)
- {
-   AgsExportThread *export_thread;
--  AgsSoundcard *soundcard;
- 
-   AgsMutexManager *mutex_manager;
-+  AgsSoundcard *soundcard;
- 
-   void *soundcard_buffer;
- 
---- a/ags/audio/thread/ags_soundcard_thread.c
-+++ b/ags/audio/thread/ags_soundcard_thread.c
-@@ -24,6 +24,7 @@
- #include <ags/object/ags_connectable.h>
- #include <ags/object/ags_main_loop.h>
- 
-+#include <ags/thread/ags_mutex_manager.h>
- #include <ags/thread/ags_polling_thread.h>
- #include <ags/thread/ags_poll_fd.h>
- #include <ags/thread/ags_timestamp_thread.h>
-@@ -179,6 +180,9 @@
- 		  (AGS_THREAD_START_SYNCED_FREQ |
- 		   AGS_THREAD_INTERMEDIATE_POST_SYNC));  
-   
-+  //  g_atomic_int_or(&(thread->flags),
-+  //		  AGS_THREAD_TIMING);
-+
-   config = ags_config_get_instance();
- 
-   str0 = ags_config_get_value(config,
-@@ -382,10 +386,19 @@
-     
-   while(poll_fd != NULL){
-     if(polling_thread != NULL){
-+      gint position;
-+      
-       ags_polling_thread_add_poll_fd(polling_thread,
- 				     poll_fd->data);
-       g_signal_connect(G_OBJECT(poll_fd->data), "dispatch\0",
- 		       G_CALLBACK(ags_soundcard_thread_dispatch_callback), soundcard_thread);
-+
-+      position = ags_polling_thread_fd_position(polling_thread,
-+						AGS_POLL_FD(poll_fd->data)->fd);
-+      
-+      if(position != -1){
-+	polling_thread->fds[position].events = POLLOUT;
-+      }
-     }
-     
-     poll_fd = poll_fd->next;
-@@ -401,18 +414,33 @@
- {
-   AgsSoundcardThread *soundcard_thread;
- 
-+  AgsMutexManager *mutex_manager;
-   AgsSoundcard *soundcard;
- 
-   GList *poll_fd;
-   
--  long delay;
-+  gboolean is_playing;
-   
-   GError *error;
- 
-+  pthread_mutex_t *application_mutex;
-+  pthread_mutex_t *mutex;
-+
-   soundcard_thread = AGS_SOUNDCARD_THREAD(thread);
- 
-   soundcard = AGS_SOUNDCARD(soundcard_thread->soundcard);
--    
-+
-+  /*  */
-+  mutex_manager = ags_mutex_manager_get_instance();
-+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
-+
-+  pthread_mutex_lock(application_mutex);
-+
-+  mutex = ags_mutex_manager_lookup(mutex_manager,
-+				   (GObject *) soundcard_thread->soundcard);
-+
-+  pthread_mutex_unlock(application_mutex);
-+  
-   /* real-time setup */
-   if((AGS_THREAD_RT_SETUP & (g_atomic_int_get(&(thread->flags)))) == 0){
-     struct sched_param param;
-@@ -428,7 +456,14 @@
- 		    AGS_THREAD_RT_SETUP);
-   }
- 
--  if(ags_soundcard_is_playing(soundcard)){
-+  /* playback */
-+  pthread_mutex_lock(mutex);
-+  
-+  is_playing = ags_soundcard_is_playing(soundcard);
-+
-+  pthread_mutex_unlock(mutex);
-+  
-+  if(is_playing){
-     error = NULL;
-     ags_soundcard_play(soundcard,
- 		       &error);
-@@ -447,9 +482,15 @@
- {
-   AgsSoundcardThread *soundcard_thread;
- 
--  AgsSoundcard *soundcard;
-+  AgsThread *main_loop;
-+  AgsPollingThread *polling_thread;
-   
-+  AgsSoundcard *soundcard;
-+
-+  GList *poll_fd;
-+    
-   soundcard_thread = AGS_SOUNDCARD_THREAD(thread);
-+  main_loop = ags_thread_get_toplevel(thread);
- 
-   soundcard = AGS_SOUNDCARD(soundcard_thread->soundcard);
- 
-@@ -458,6 +499,24 @@
- 
-   //FIXME:JK: is this safe?
-   ags_soundcard_stop(soundcard);
-+
-+  /* find polling thread */
-+  polling_thread = (AgsPollingThread *) ags_thread_find_type(main_loop,
-+							     AGS_TYPE_POLLING_THREAD);
-+    
-+  /* remove poll fd */
-+  poll_fd = ags_soundcard_get_poll_fd(soundcard);
-+    
-+  while(poll_fd != NULL){
-+    if(polling_thread != NULL){
-+      gint position;
-+      
-+      ags_polling_thread_remove_poll_fd(polling_thread,
-+					poll_fd->data);
-+    }
-+    
-+    poll_fd = poll_fd->next;
-+  }
- }
- 
- void
-@@ -478,9 +537,9 @@
- 
-     pthread_mutex_unlock(audio_loop->timing_mutex);
- 
--    ags_main_loop_interrupt(AGS_MAIN_LOOP(audio_loop),
--			    AGS_THREAD_SUSPEND_SIG,
--			    0, &time_spent);
-+    //    ags_main_loop_interrupt(AGS_MAIN_LOOP(audio_loop),
-+    //			    AGS_THREAD_SUSPEND_SIG,
-+    //			    0, &time_spent);
- 
-     if(poll_fd->polling_thread != NULL){
-       poll_fd->polling_thread->flags |= AGS_POLLING_THREAD_OMIT;
---- a/ags/gsequencer_main.c
-+++ b/ags/gsequencer_main.c
-@@ -21,6 +21,7 @@
- #include <glib-object.h>
- 
- #include <gdk/gdk.h>
-+#include <pango/pangocairo.h>
- 
- #include <X11/Xlib.h>
- 
-@@ -164,10 +165,11 @@
- {
-   GtkWidget *window;
-   GdkRectangle rectangle;
--  
--  cairo_t *cr;
-+
-+  cairo_t *gdk_cr, *cr;
-   cairo_surface_t *surface;
--  
-+  cairo_surface_t *cached_surface;
-+
-   AgsLog *log;
- 
-   gchar *filename;
-@@ -187,21 +189,24 @@
-   rectangle.width = 800;
-   rectangle.height = 450;
-   
--  cr = gdk_cairo_create(window->window);
-+  gdk_cr = gdk_cairo_create(window->window);
-   
-   filename = g_strdup_printf("%s%s\0", DESTDIR, "/gsequencer/images/ags_supermoon-800x450.png\0");
- 
-   surface = cairo_image_surface_create_from_png(filename);
-+  cr = cairo_create(surface);
-   
-   cairo_select_font_face(cr, "Georgia\0",
- 			 CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
-   cairo_set_font_size(cr, (gdouble) 11.0);
--
-+  
-   gdk_window_show(window->window);
-   
-   gdk_threads_leave();
- 
--  log = ags_log_get_instance();    
-+  cached_surface = NULL;
-+  
-+  log = ags_log_get_instance();  
-   nth = 0;
-   
-   while(g_atomic_int_get(&(ags_show_start_animation))){
-@@ -226,8 +231,9 @@
- 	
- 	cairo_move_to(cr,
- 		      x0, y0);
-+
- 	cairo_show_text(cr, list->data);
--	
-+
- 	list = list->next;
- 	y0 -= 12.0;
-       }
-@@ -235,10 +241,14 @@
-       cairo_move_to(cr,
- 		    x0, 4.0 + (i + 1) * 12.0);
-       cairo_show_text(cr, "...\0");
--
--      gdk_flush();
-+      
-       nth = g_list_length(start);
--    }    
-+    }
-+
-+    cairo_set_source_surface(gdk_cr, surface, 0, 0);
-+    cairo_paint(gdk_cr);
-+    cairo_surface_flush(surface);
-+    gdk_flush();
-   }
- 
-   gdk_threads_enter();
-@@ -424,6 +434,8 @@
-   ags_application_context->argc = argc;
-   ags_application_context->argv = argv;
- 
-+  ags_application_context_register_types(ags_application_context);
-+
-   /* fix cross-references in managers */
-   lv2_worker_manager->thread_pool = ((AgsXorgApplicationContext *) ags_application_context)->thread_pool;
-   
---- a/ags/thread/ags_polling_thread.c
-+++ b/ags/thread/ags_polling_thread.c
-@@ -300,10 +300,10 @@
- 	  ags_poll_fd_dispatch(list->data);
-       
- 	  AGS_POLL_FD(list->data)->flags &= (~(AGS_POLL_FD_INPUT |
-+					       AGS_POLL_FD_PRIORITY_INPUT |   
- 					       AGS_POLL_FD_OUTPUT |
- 					       AGS_POLL_FD_HANG_UP));
--	  AGS_POLL_FD(list->data)->poll_fd->revents = 0;
--
-+	  
- 	  AGS_POLL_FD(list->data)->delay_counter = 0.0;
- 	}else{
- 	  AGS_POLL_FD(list->data)->delay_counter += 1.0;
---- a/ags/thread/ags_thread-posix.c
-+++ b/ags/thread/ags_thread-posix.c
-@@ -2288,6 +2288,7 @@
- 	
- 	chaos_tree = ags_thread_chaos_tree(thread);
- 
-+	//FIXME:JK: it works but I think its wrong
- 	/* set tic delay */
- 	if((AGS_THREAD_INTERMEDIATE_PRE_SYNC & (g_atomic_int_get(&(thread->flags)))) != 0){
- 	  /* intermediate pre sync */
-@@ -2298,10 +2299,12 @@
- 	  }
- 	}else if((AGS_THREAD_INTERMEDIATE_POST_SYNC & (g_atomic_int_get(&(thread->flags)))) != 0){
- 	  /* intermediate post sync */
--	  if(chaos_tree->tic_delay < thread->delay){
--	    thread->tic_delay = chaos_tree->tic_delay + 1;
--	  }else{
-+	  if(chaos_tree->tic_delay + 1 < thread->delay){
-+	    thread->tic_delay = chaos_tree->tic_delay + 2;
-+	  }else if(chaos_tree->tic_delay + 1 == thread->delay){
- 	    thread->tic_delay = 0;
-+	  }else{
-+	    thread->tic_delay = 1;
- 	  }
- 	}else{
- 	  /* ordinary sync */
-@@ -2523,48 +2526,46 @@
-     pthread_mutex_unlock(thread->timer_mutex);
-   }
- #else
--  if(g_atomic_pointer_get(&(thread->parent)) == NULL){
-+  if(thread->tic_delay == thread->delay &&
-+     (AGS_THREAD_TIMING & (g_atomic_int_get(&(thread->flags)))) != 0){
-     gdouble time_spent, relative_time_spent;
-     gdouble time_cycle;
- 
-     static const gdouble nsec_per_jiffie = NSEC_PER_SEC / AGS_THREAD_HERTZ_JIFFIE;
-     
--    if(thread->tic_delay == thread->delay &&
--       (AGS_THREAD_TIMING & (g_atomic_int_get(&(thread->flags)))) != 0){
--      struct timespec timed_sleep = {
--	0,
--	0,
--      };
-+    struct timespec timed_sleep = {
-+      0,
-+      0,
-+    };
- 
--      clock_gettime(CLOCK_MONOTONIC, &time_now);
-+    clock_gettime(CLOCK_MONOTONIC, &time_now);
-       
--      if(time_now.tv_sec == thread->computing_time->tv_sec + 1){
--	time_spent = (time_now.tv_nsec) + (NSEC_PER_SEC - thread->computing_time->tv_nsec);
--      }else if(time_now.tv_sec > thread->computing_time->tv_sec + 1){
--	time_spent = (time_now.tv_sec - thread->computing_time->tv_sec) * NSEC_PER_SEC;
--	time_spent += (time_now.tv_nsec - thread->computing_time->tv_nsec);
--      }else{
--	time_spent = time_now.tv_nsec - thread->computing_time->tv_nsec;
--      }
-+    if(time_now.tv_sec == thread->computing_time->tv_sec + 1){
-+      time_spent = (time_now.tv_nsec) + (NSEC_PER_SEC - thread->computing_time->tv_nsec);
-+    }else if(time_now.tv_sec > thread->computing_time->tv_sec + 1){
-+      time_spent = (time_now.tv_sec - thread->computing_time->tv_sec) * NSEC_PER_SEC;
-+      time_spent += (time_now.tv_nsec - thread->computing_time->tv_nsec);
-+    }else{
-+      time_spent = time_now.tv_nsec - thread->computing_time->tv_nsec;
-+    }
- 
--      time_cycle = NSEC_PER_SEC / thread->freq;
-+    time_cycle = NSEC_PER_SEC / thread->freq;
-       
--      relative_time_spent = time_cycle - time_spent - g_atomic_int_get(&(thread->time_late)) - AGS_THREAD_TOLERANCE;
-+    relative_time_spent = time_cycle - time_spent - g_atomic_int_get(&(thread->time_late)) - AGS_THREAD_TOLERANCE;
- 
--      if(relative_time_spent < 0.0){
--	g_atomic_int_set(&(thread->time_late),
--			 (guint) ceil(-1.25 * relative_time_spent));
--      }else if(relative_time_spent > 0.0 &&
--	       relative_time_spent < time_cycle){
--	g_atomic_int_set(&(thread->time_late),
--			 0);
--	timed_sleep.tv_nsec = (long) relative_time_spent - (1.0 / 45.0) * time_cycle;
-+    if(relative_time_spent < 0.0){
-+      g_atomic_int_set(&(thread->time_late),
-+		       (guint) ceil(-1.25 * relative_time_spent));
-+    }else if(relative_time_spent > 0.0 &&
-+	     relative_time_spent < time_cycle){
-+      g_atomic_int_set(&(thread->time_late),
-+		       0);
-+      timed_sleep.tv_nsec = (long) relative_time_spent - (1.0 / 45.0) * time_cycle;
-       
--	nanosleep(&timed_sleep, NULL);
--      }
--
--      clock_gettime(CLOCK_MONOTONIC, thread->computing_time);
-+      nanosleep(&timed_sleep, NULL);
-     }
-+
-+    clock_gettime(CLOCK_MONOTONIC, thread->computing_time);
-   }
- #endif
-   
---- a/ags/widget/ags_hindicator.h
-+++ b/ags/widget/ags_hindicator.h
-@@ -22,6 +22,7 @@
- 
- #include <glib.h>
- #include <glib-object.h>
-+
- #include <gtk/gtk.h>
- 
- #include "ags_indicator.h"
-@@ -43,7 +44,7 @@
- 
- struct _AgsHIndicatorClass
- {
--  GtkWidgetClass indicator;
-+  AgsIndicatorClass indicator;
- };
- 
- GType ags_hindicator_get_type(void);
---- a/ags/widget/ags_vindicator.h
-+++ b/ags/widget/ags_vindicator.h
-@@ -22,6 +22,7 @@
- 
- #include <glib.h>
- #include <glib-object.h>
-+
- #include <gtk/gtk.h>
- 
- #include "ags_indicator.h"
-@@ -43,7 +44,7 @@
- 
- struct _AgsVIndicatorClass
- {
--  GtkWidgetClass indicator;
-+  AgsIndicatorClass indicator;
- };
- 
- GType ags_vindicator_get_type(void);
diff --git a/debian/patches/fix-generated-symbols.patch b/debian/patches/fix-generated-symbols.patch
deleted file mode 100644
index 24ece7f..0000000
--- a/debian/patches/fix-generated-symbols.patch
+++ /dev/null
@@ -1,1960 +0,0 @@
-Description: Fixes new symbols related to previous patch
- fix-critical-bugs.patch introduced AgsClearBuffer task.
- Note you could do `make gen-symbols-ags-audio` to achieve
- the same result.
-Author: Joël Krähmann <jkraehemann at gmail.com>
-Applied-Upstream: 0.7.122.x, http://git.savannah.gnu.org/cgit/gsequencer.git
-Last-Update: 2017-01-31
---- a/libags_audio.sym
-+++ b/libags_audio.sym
-@@ -1,36 +1,20 @@
--ags_lv2_conversion_get_type
--ags_lv2_conversion_new
--ags_base_plugin_get_type
--ags_port_descriptor_alloc
--ags_port_descriptor_free
--ags_base_plugin_find_filename
--ags_base_plugin_find_effect
--ags_base_plugin_sort
--ags_base_plugin_apply_port_group_by_prefix
--ags_base_plugin_instantiate
--ags_base_plugin_connect_port
--ags_base_plugin_activate
--ags_base_plugin_deactivate
--ags_base_plugin_run
--ags_base_plugin_load_plugin
--ags_base_plugin_new
-+ags_lv2_uri_map_manager_get_type
-+ags_lv2_uri_map_manager_insert
-+ags_lv2_uri_map_manager_remove
-+ags_lv2_uri_map_manager_lookup
-+ags_lv2_uri_map_manager_load_default
-+ags_lv2_uri_map_manager_uri_to_id
-+ags_lv2_uri_map_manager_get_instance
-+ags_lv2_uri_map_manager_new
- ags_ladspa_plugin_get_type
- ags_ladspa_plugin_new
--ags_ladspa_manager_get_type
--ags_ladspa_manager_get_filenames
--ags_ladspa_manager_find_ladspa_plugin
--ags_ladspa_manager_load_blacklist
--ags_ladspa_manager_load_file
--ags_ladspa_manager_load_default_directory
--ags_ladspa_manager_get_instance
--ags_ladspa_manager_new
--ags_ladspa_conversion_get_type
--ags_ladspa_conversion_new
--ags_lv2_log_manager_get_type
--ags_lv2_log_manager_printf
--ags_lv2_log_manager_vprintf
--ags_lv2_log_manager_get_instance
--ags_lv2_log_manager_new
-+ags_lv2_worker_manager_get_type
-+ags_lv2_worker_manager_pull_worker
-+ags_lv2_worker_manager_get_instance
-+ags_lv2_worker_manager_new
-+ags_dssi_plugin_get_type
-+ags_dssi_plugin_change_program
-+ags_dssi_plugin_new
- ags_lv2_urid_manager_get_type
- ags_lv2_urid_manager_insert
- ags_lv2_urid_manager_remove
-@@ -40,6 +24,36 @@
- ags_lv2_urid_manager_unmap
- ags_lv2_urid_manager_get_instance
- ags_lv2_urid_manager_new
-+ags_lv2_worker_get_type
-+ags_lv2_worker_alloc_response_data
-+ags_lv2_worker_free_response_data
-+ags_lv2_worker_respond
-+ags_lv2_worker_schedule_work
-+ags_lv2_worker_safe_run
-+ags_lv2_worker_interrupted_callback
-+ags_lv2_worker_new
-+ags_lv2ui_plugin_get_type
-+ags_lv2ui_plugin_new
-+ags_lv2ui_manager_get_type
-+ags_lv2ui_manager_get_filenames
-+ags_lv2ui_manager_find_lv2ui_plugin
-+ags_lv2ui_manager_load_blacklist
-+ags_lv2ui_manager_load_file
-+ags_lv2ui_manager_load_default_directory
-+ags_lv2ui_manager_get_instance
-+ags_lv2ui_manager_new
-+ags_ladspa_conversion_get_type
-+ags_ladspa_conversion_new
-+ags_lv2_plugin_get_type
-+ags_lv2_plugin_alloc_event_buffer
-+ags_lv2_plugin_concat_event_buffer
-+ags_lv2_plugin_event_buffer_append_midi
-+ags_lv2_plugin_clear_event_buffer
-+ags_lv2_plugin_alloc_atom_sequence
-+ags_lv2_plugin_concat_atom_sequence
-+ags_lv2_plugin_atom_sequence_append_midi
-+ags_lv2_plugin_clear_atom_sequence
-+ags_lv2_plugin_new
- ags_plugin_factory_get_type
- ags_plugin_factory_read_file
- ags_plugin_factory_list_by_name
-@@ -48,6 +62,13 @@
- ags_plugin_factory_get_instance
- ags_plugin_factory_new_from_file
- ags_plugin_factory_new
-+ags_lv2_conversion_get_type
-+ags_lv2_conversion_new
-+ags_lv2_event_manager_get_type
-+ags_lv2_event_manager_lv2_event_ref
-+ags_lv2_event_manager_lv2_event_unref
-+ags_lv2_event_manager_get_instance
-+ags_lv2_event_manager_new
- ags_dssi_manager_get_type
- ags_dssi_manager_get_filenames
- ags_dssi_manager_find_dssi_plugin
-@@ -56,39 +77,28 @@
- ags_dssi_manager_load_default_directory
- ags_dssi_manager_get_instance
- ags_dssi_manager_new
--ags_lv2_worker_manager_get_type
--ags_lv2_worker_manager_pull_worker
--ags_lv2_worker_manager_get_instance
--ags_lv2_worker_manager_new
--ags_lv2ui_manager_get_type
--ags_lv2ui_manager_get_filenames
--ags_lv2ui_manager_find_lv2ui_plugin
--ags_lv2ui_manager_load_blacklist
--ags_lv2ui_manager_load_file
--ags_lv2ui_manager_load_default_directory
--ags_lv2ui_manager_get_instance
--ags_lv2ui_manager_new
--ags_lv2_uri_map_manager_get_type
--ags_lv2_uri_map_manager_insert
--ags_lv2_uri_map_manager_remove
--ags_lv2_uri_map_manager_lookup
--ags_lv2_uri_map_manager_load_default
--ags_lv2_uri_map_manager_uri_to_id
--ags_lv2_uri_map_manager_get_instance
--ags_lv2_uri_map_manager_new
--ags_lv2_worker_get_type
--ags_lv2_worker_alloc_response_data
--ags_lv2_worker_free_response_data
--ags_lv2_worker_respond
--ags_lv2_worker_schedule_work
--ags_lv2_worker_safe_run
--ags_lv2_worker_interrupted_callback
--ags_lv2_worker_new
--ags_dssi_plugin_get_type
--ags_dssi_plugin_change_program
--ags_dssi_plugin_new
--ags_lv2ui_plugin_get_type
--ags_lv2ui_plugin_new
-+ags_ladspa_manager_get_type
-+ags_ladspa_manager_get_filenames
-+ags_ladspa_manager_find_ladspa_plugin
-+ags_ladspa_manager_load_blacklist
-+ags_ladspa_manager_load_file
-+ags_ladspa_manager_load_default_directory
-+ags_ladspa_manager_get_instance
-+ags_ladspa_manager_new
-+ags_base_plugin_get_type
-+ags_port_descriptor_alloc
-+ags_port_descriptor_free
-+ags_base_plugin_find_filename
-+ags_base_plugin_find_effect
-+ags_base_plugin_sort
-+ags_base_plugin_apply_port_group_by_prefix
-+ags_base_plugin_instantiate
-+ags_base_plugin_connect_port
-+ags_base_plugin_activate
-+ags_base_plugin_deactivate
-+ags_base_plugin_run
-+ags_base_plugin_load_plugin
-+ags_base_plugin_new
- ags_lv2_manager_get_type
- ags_lv2_manager_get_filenames
- ags_lv2_manager_find_lv2_plugin
-@@ -97,23 +107,417 @@
- ags_lv2_manager_load_default_directory
- ags_lv2_manager_get_instance
- ags_lv2_manager_new
--ags_lv2_event_manager_get_type
--ags_lv2_event_manager_lv2_event_ref
--ags_lv2_event_manager_lv2_event_unref
--ags_lv2_event_manager_get_instance
--ags_lv2_event_manager_new
--ags_lv2_plugin_get_type
--ags_lv2_plugin_alloc_event_buffer
--ags_lv2_plugin_concat_event_buffer
--ags_lv2_plugin_event_buffer_append_midi
--ags_lv2_plugin_clear_event_buffer
--ags_lv2_plugin_alloc_atom_sequence
--ags_lv2_plugin_concat_atom_sequence
--ags_lv2_plugin_atom_sequence_append_midi
--ags_lv2_plugin_clear_atom_sequence
--ags_lv2_plugin_new
--ags_audio_application_context_get_type
--ags_audio_application_context_new
-+ags_lv2_log_manager_get_type
-+ags_lv2_log_manager_printf
-+ags_lv2_log_manager_vprintf
-+ags_lv2_log_manager_get_instance
-+ags_lv2_log_manager_new
-+ags_playback_get_type
-+ags_playback_find_source
-+ags_playback_new
-+ags_notation_get_type
-+ags_notation_find_near_timestamp
-+ags_notation_add_note
-+ags_notation_remove_note_at_position
-+ags_notation_get_selection
-+ags_notation_is_note_selected
-+ags_notation_find_point
-+ags_notation_find_region
-+ags_notation_free_selection
-+ags_notation_add_all_to_selection
-+ags_notation_add_point_to_selection
-+ags_notation_remove_point_from_selection
-+ags_notation_add_region_to_selection
-+ags_notation_remove_region_from_selection
-+ags_notation_copy_selection
-+ags_notation_cut_selection
-+ags_notation_insert_from_clipboard
-+ags_notation_get_current
-+ags_notation_new
-+ags_recall_recycling_dummy_get_type
-+ags_recall_recycling_dummy_new
-+ags_acceleration_get_type
-+ags_acceleration_duplicate
-+ags_acceleration_new
-+ags_midiin_get_type
-+ags_midiin_error_quark
-+ags_midiin_new
-+ags_buffer_audio_signal_get_type
-+ags_buffer_audio_signal_new
-+ags_play_channel_run_get_type
-+ags_play_channel_run_new
-+ags_play_channel_run_master_get_type
-+ags_play_channel_run_master_streamer_free
-+ags_play_channel_run_master_streamer_alloc
-+ags_play_channel_run_master_find_streamer
-+ags_play_channel_run_master_new
-+ags_feed_channel_run_get_type
-+ags_feed_channel_run_new
-+ags_copy_audio_signal_get_type
-+ags_copy_audio_signal_new
-+ags_play_channel_get_type
-+ags_play_channel_new
-+ags_envelope_recycling_get_type
-+ags_envelope_recycling_new
-+ags_copy_recycling_get_type
-+ags_copy_recycling_new
-+ags_mute_channel_run_get_type
-+ags_mute_channel_run_new
-+ags_delay_audio_run_get_type
-+ags_delay_audio_run_notation_alloc_output
-+ags_delay_audio_run_notation_alloc_input
-+ags_delay_audio_run_notation_count
-+ags_delay_audio_run_sequencer_alloc_output
-+ags_delay_audio_run_sequencer_alloc_input
-+ags_delay_audio_run_sequencer_count
-+ags_delay_audio_run_new
-+ags_envelope_channel_run_get_type
-+ags_envelope_channel_run_new
-+ags_route_lv2_audio_get_type
-+ags_route_lv2_audio_new
-+ags_buffer_channel_run_get_type
-+ags_buffer_channel_run_new
-+ags_play_notation_audio_get_type
-+ags_play_notation_audio_new
-+ags_count_beats_audio_run_get_type
-+ags_count_beats_audio_run_notation_start
-+ags_count_beats_audio_run_notation_loop
-+ags_count_beats_audio_run_notation_stop
-+ags_count_beats_audio_run_sequencer_start
-+ags_count_beats_audio_run_sequencer_loop
-+ags_count_beats_audio_run_sequencer_stop
-+ags_count_beats_audio_run_new
-+ags_envelope_channel_get_type
-+ags_envelope_channel_new
-+ags_volume_audio_signal_get_type
-+ags_volume_audio_signal_new
-+ags_peak_audio_signal_get_type
-+ags_peak_audio_signal_new
-+ags_copy_pattern_channel_run_get_type
-+ags_copy_pattern_channel_run_new
-+ags_volume_channel_get_type
-+ags_volume_channel_new
-+ags_volume_channel_run_get_type
-+ags_volume_channel_run_new
-+ags_mute_recycling_get_type
-+ags_mute_recycling_new
-+ags_envelope_audio_signal_get_type
-+ags_envelope_audio_signal_new
-+ags_feed_recycling_get_type
-+ags_feed_recycling_new
-+ags_mute_audio_signal_get_type
-+ags_mute_audio_signal_new
-+ags_buffer_recycling_get_type
-+ags_buffer_recycling_new
-+ags_play_audio_signal_get_type
-+ags_play_audio_signal_new
-+ags_record_midi_audio_get_type
-+ags_record_midi_audio_new
-+ags_play_note_get_type
-+ags_play_note_new
-+ags_route_dssi_audio_get_type
-+ags_route_dssi_audio_new
-+ags_feed_channel_get_type
-+ags_feed_channel_new
-+ags_peak_recycling_get_type
-+ags_peak_recycling_new
-+ags_copy_pattern_audio_get_type
-+ags_copy_pattern_audio_new
-+ags_route_dssi_audio_run_get_type
-+ags_route_dssi_audio_run_new
-+ags_stream_channel_get_type
-+ags_stream_channel_new
-+ags_peak_channel_run_get_type
-+ags_peak_channel_run_new
-+ags_delay_audio_get_type
-+ags_delay_audio_notation_duration_changed
-+ags_delay_audio_sequencer_duration_changed
-+ags_delay_audio_new
-+ags_loop_channel_run_get_type
-+ags_loop_channel_run_new
-+ags_stream_channel_run_get_type
-+ags_stream_channel_run_new
-+ags_copy_channel_get_type
-+ags_copy_channel_new
-+ags_copy_channel_run_get_type
-+ags_copy_channel_run_new
-+ags_mute_audio_run_get_type
-+ags_mute_audio_run_new
-+ags_buffer_channel_get_type
-+ags_buffer_channel_new
-+ags_stream_recycling_get_type
-+ags_stream_recycling_new
-+ags_route_lv2_audio_run_get_type
-+ags_route_lv2_audio_run_new
-+ags_stream_get_type
-+ags_stream
-+ags_stream_new
-+ags_record_midi_audio_run_get_type
-+ags_record_midi_audio_run_new
-+ags_play_audio_get_type
-+ags_play_audio_new
-+ags_feed_audio_signal_get_type
-+ags_feed_audio_signal_new
-+ags_stream_audio_signal_get_type
-+ags_stream_audio_signal_new
-+ags_copy_notation_audio_run_get_type
-+ags_copy_notation_audio_run_new
-+ags_play_notation_audio_run_get_type
-+ags_play_notation_audio_run_new
-+ags_loop_channel_get_type
-+ags_loop_channel_new
-+ags_copy_notation_audio_get_type
-+ags_copy_notation_audio_new
-+ags_mute_channel_get_type
-+ags_mute_channel_new
-+ags_copy_pattern_channel_get_type
-+ags_copy_pattern_channel_template_find_source_and_destination
-+ags_copy_pattern_channel_new
-+ags_volume_recycling_get_type
-+ags_volume_recycling_new
-+ags_mute_audio_get_type
-+ags_mute_audio_new
-+ags_count_beats_audio_get_type
-+ags_count_beats_audio_new
-+ags_copy_pattern_audio_run_get_type
-+ags_copy_pattern_audio_run_new
-+ags_peak_channel_get_type
-+ags_peak_channel_retrieve_peak
-+ags_peak_channel_new
-+ags_play_audio_file_get_type
-+ags_play_audio_file_new
-+ags_play_recycling_get_type
-+ags_play_recycling_new
-+ags_synth_generator_get_type
-+ags_synth_generator_new
-+ags_recall_ladspa_get_type
-+ags_recall_ladspa_load
-+ags_recall_ladspa_load_ports
-+ags_recall_ladspa_load_conversion
-+ags_recall_ladspa_find
-+ags_recall_ladspa_new
-+ags_recycling_context_get_type
-+ags_recycling_context_replace
-+ags_recycling_context_add
-+ags_recycling_context_remove
-+ags_recycling_context_insert
-+ags_recycling_context_get_toplevel
-+ags_recycling_context_find
-+ags_recycling_context_find_child
-+ags_recycling_context_find_parent
-+ags_recycling_context_add_child
-+ags_recycling_context_remove_child
-+ags_recycling_context_get_child_recall_id
-+ags_recycling_context_reset_recycling
-+ags_recycling_context_new
-+ags_recall_audio_signal_get_type
-+ags_recall_audio_signal_new
-+ags_recall_channel_run_get_type
-+ags_recall_channel_run_run_order_changed
-+ags_recall_channel_run_get_run_order
-+ags_recall_channel_run_new
-+ags_ipatch_get_type
-+ags_ipatch_check_suffix
-+ags_ipatch_new
-+ags_audio_file_get_type
-+ags_audio_file_check_suffix
-+ags_audio_file_open
-+ags_audio_file_open_from_data
-+ags_audio_file_rw_open
-+ags_audio_file_close
-+ags_audio_file_read_audio_signal
-+ags_audio_file_seek
-+ags_audio_file_write
-+ags_audio_file_flush
-+ags_audio_file_new
-+ags_sndfile_get_type
-+ags_sndfile_new
-+ags_ipatch_sf2_reader_get_type
-+ags_ipatch_sf2_reader_new
-+ags_file_read_soundcard
-+ags_file_write_soundcard
-+ags_file_read_soundcard_list
-+ags_file_write_soundcard_list
-+ags_file_read_playback
-+ags_file_write_playback
-+ags_file_read_playback_list
-+ags_file_write_playback_list
-+ags_file_read_audio
-+ags_file_write_audio
-+ags_file_read_audio_list
-+ags_file_write_audio_list
-+ags_file_read_channel
-+ags_file_write_channel
-+ags_file_read_channel_list
-+ags_file_write_channel_list
-+ags_file_read_input
-+ags_file_write_input
-+ags_file_read_output
-+ags_file_write_output
-+ags_file_read_recall
-+ags_file_write_recall
-+ags_file_read_recall_list
-+ags_file_write_recall_list
-+ags_file_read_recall_container
-+ags_file_write_recall_container
-+ags_file_read_recall_container_list
-+ags_file_write_recall_container_list
-+ags_file_read_recall_audio
-+ags_file_write_recall_audio
-+ags_file_read_recall_audio_run
-+ags_file_write_recall_audio_run
-+ags_file_read_recall_channel
-+ags_file_write_recall_channel
-+ags_file_read_recall_channel_run
-+ags_file_write_recall_channel_run
-+ags_file_read_recall_recycling
-+ags_file_write_recall_recycling
-+ags_file_read_recall_audio_signal
-+ags_file_write_recall_audio_signal
-+ags_file_read_port
-+ags_file_write_port
-+ags_file_read_port_list
-+ags_file_write_port_list
-+ags_file_read_recycling
-+ags_file_write_recycling
-+ags_file_read_recycling_list
-+ags_file_write_recycling_list
-+ags_file_read_audio_signal
-+ags_file_write_audio_signal
-+ags_file_read_audio_signal_list
-+ags_file_write_audio_signal_list
-+ags_file_read_stream
-+ags_file_write_stream
-+ags_file_read_stream_list
-+ags_file_write_stream_list
-+ags_file_read_pattern
-+ags_file_write_pattern
-+ags_file_read_pattern_list
-+ags_file_write_pattern_list
-+ags_file_read_pattern_data
-+ags_file_write_pattern_data
-+ags_file_read_pattern_data_list
-+ags_file_write_pattern_data_list
-+ags_file_read_notation
-+ags_file_write_notation
-+ags_file_read_notation_list
-+ags_file_write_notation_list
-+ags_file_read_note
-+ags_file_write_note
-+ags_file_read_note_list
-+ags_file_write_note_list
-+ags_file_read_automation
-+ags_file_write_automation
-+ags_file_read_automation_list
-+ags_file_write_automation_list
-+ags_file_read_acceleration
-+ags_file_write_acceleration
-+ags_file_read_acceleration_list
-+ags_file_write_acceleration_list
-+ags_file_read_task
-+ags_file_write_task
-+ags_file_read_task_list
-+ags_file_write_task_list
-+ags_file_read_embedded_audio
-+ags_file_write_embedded_audio
-+ags_file_read_embedded_audio_list
-+ags_file_write_embedded_audio_list
-+ags_ipatch_dls2_reader_get_type
-+ags_ipatch_dls2_reader_new
-+ags_audio_file_link_get_type
-+ags_audio_file_link_new
-+ags_remote_input_get_type
-+ags_remote_input_new
-+ags_remote_output_get_type
-+ags_remote_output_new
-+ags_remote_channel_get_type
-+ags_remote_channel_error_quark
-+ags_remote_channel_new
-+ags_recall_factory_get_type
-+ags_recall_factory_create
-+ags_recall_factory_remove
-+ags_recall_factory_get_instance
-+ags_recall_factory_new
-+ags_playable_get_type
-+ags_playable_error_quark
-+ags_playable_open
-+ags_playable_rw_open
-+ags_playable_level_count
-+ags_playable_nth_level
-+ags_playable_selected_level
-+ags_playable_sublevel_names
-+ags_playable_level_select
-+ags_playable_level_up
-+ags_playable_iter_start
-+ags_playable_iter_next
-+ags_playable_info
-+ags_playable_get_samplerate
-+ags_playable_get_format
-+ags_playable_read
-+ags_playable_write
-+ags_playable_flush
-+ags_playable_seek
-+ags_playable_close
-+ags_playable_read_audio_signal
-+ags_input_get_type
-+ags_input_open_file
-+ags_input_apply_synth
-+ags_input_new
-+ags_recall_channel_run_dummy_get_type
-+ags_recall_channel_run_dummy_new
-+ags_output_get_type
-+ags_output_find_first_input_recycling
-+ags_output_find_last_input_recycling
-+ags_output_new
-+ags_devout_get_type
-+ags_devout_error_quark
-+ags_devout_switch_buffer_flag
-+ags_devout_adjust_delay_and_attack
-+ags_devout_realloc_buffer
-+ags_devout_new
-+ags_recall_ladspa_run_get_type
-+ags_recall_ladspa_run_new
-+ags_audio_get_type
-+ags_audio_set_soundcard
-+ags_audio_set_flags
-+ags_audio_unset_flags
-+ags_audio_check_connection
-+ags_audio_set_audio_channels
-+ags_audio_set_pads
-+ags_audio_set_samplerate
-+ags_audio_set_buffer_size
-+ags_audio_set_format
-+ags_audio_set_sequence_length
-+ags_audio_add_audio_connection
-+ags_audio_remove_audio_connection
-+ags_audio_add_notation
-+ags_audio_remove_notation
-+ags_audio_add_automation
-+ags_audio_remove_automation
-+ags_audio_add_recall_id
-+ags_audio_remove_recall_id
-+ags_audio_add_recycling_context
-+ags_audio_remove_recycling_context
-+ags_audio_add_recall_container
-+ags_audio_remove_recall_container
-+ags_audio_add_recall
-+ags_audio_remove_recall
-+ags_audio_recall_change_state
-+ags_audio_init_run
-+ags_audio_duplicate_recall
-+ags_audio_init_recall
-+ags_audio_resolve_recall
-+ags_audio_is_playing
-+ags_audio_play
-+ags_audio_tact
-+ags_audio_done
-+ags_audio_cancel
-+ags_audio_remove
-+ags_audio_find_port
-+ags_audio_open_files
-+ags_audio_recursive_set_property
-+ags_audio_recursive_play_init
-+ags_audio_new
- ags_automation_get_type
- ags_automation_find_port
- ags_automation_find_near_timestamp
-@@ -139,27 +543,95 @@
- ags_automation_find_specifier_with_type_and_line
- ags_automation_get_value
- ags_automation_new
--ags_audio_signal_get_type
--ags_stream_alloc
--ags_stream_free
--ags_audio_signal_set_samplerate
--ags_audio_signal_set_buffer_size
--ags_audio_signal_set_format
--ags_audio_signal_get_length_till_current
--ags_audio_signal_add_stream
--ags_audio_signal_stream_resize
--ags_audio_signal_stream_safe_resize
--ags_audio_signal_realloc_buffer_size
--ags_audio_signal_duplicate_stream
--ags_audio_signal_get_template
--ags_audio_signal_get_stream_current
--ags_audio_signal_get_by_recall_id
--ags_audio_signal_tile
--ags_audio_signal_scale
--ags_audio_signal_feed
--ags_audio_signal_envelope
--ags_audio_signal_new
--ags_audio_signal_new_with_length
-+ags_audio_buffer_util_format_from_soundcard
-+ags_audio_buffer_util_get_copy_mode
-+ags_audio_buffer_util_clear_float
-+ags_audio_buffer_util_clear_double
-+ags_audio_buffer_util_clear_buffer
-+ags_audio_buffer_util_envelope_s8
-+ags_audio_buffer_util_envelope_s16
-+ags_audio_buffer_util_envelope_s24
-+ags_audio_buffer_util_envelope_s32
-+ags_audio_buffer_util_envelope_s64
-+ags_audio_buffer_util_envelope_float
-+ags_audio_buffer_util_envelope_double
-+ags_audio_buffer_util_envelope
-+ags_audio_buffer_util_volume_s8
-+ags_audio_buffer_util_volume_s16
-+ags_audio_buffer_util_volume_s24
-+ags_audio_buffer_util_volume_s32
-+ags_audio_buffer_util_volume_s64
-+ags_audio_buffer_util_volume_float
-+ags_audio_buffer_util_volume_double
-+ags_audio_buffer_util_volume
-+ags_audio_buffer_util_resample_s8
-+ags_audio_buffer_util_resample_s16
-+ags_audio_buffer_util_resample_s24
-+ags_audio_buffer_util_resample_s32
-+ags_audio_buffer_util_resample_s64
-+ags_audio_buffer_util_resample_float
-+ags_audio_buffer_util_resample_double
-+ags_audio_buffer_util_resample
-+ags_audio_buffer_util_copy_s8_to_s8
-+ags_audio_buffer_util_copy_s8_to_s16
-+ags_audio_buffer_util_copy_s8_to_s24
-+ags_audio_buffer_util_copy_s8_to_s32
-+ags_audio_buffer_util_copy_s8_to_s64
-+ags_audio_buffer_util_copy_s8_to_float
-+ags_audio_buffer_util_copy_s8_to_double
-+ags_audio_buffer_util_copy_s16_to_s8
-+ags_audio_buffer_util_copy_s16_to_s16
-+ags_audio_buffer_util_copy_s16_to_s24
-+ags_audio_buffer_util_copy_s16_to_s32
-+ags_audio_buffer_util_copy_s16_to_s64
-+ags_audio_buffer_util_copy_s16_to_float
-+ags_audio_buffer_util_copy_s16_to_double
-+ags_audio_buffer_util_copy_s24_to_s8
-+ags_audio_buffer_util_copy_s24_to_s16
-+ags_audio_buffer_util_copy_s24_to_s24
-+ags_audio_buffer_util_copy_s24_to_s32
-+ags_audio_buffer_util_copy_s24_to_s64
-+ags_audio_buffer_util_copy_s24_to_float
-+ags_audio_buffer_util_copy_s24_to_double
-+ags_audio_buffer_util_copy_s32_to_s8
-+ags_audio_buffer_util_copy_s32_to_s16
-+ags_audio_buffer_util_copy_s32_to_s24
-+ags_audio_buffer_util_copy_s32_to_s32
-+ags_audio_buffer_util_copy_s32_to_s64
-+ags_audio_buffer_util_copy_s32_to_float
-+ags_audio_buffer_util_copy_s32_to_double
-+ags_audio_buffer_util_copy_s64_to_s8
-+ags_audio_buffer_util_copy_s64_to_s16
-+ags_audio_buffer_util_copy_s64_to_s24
-+ags_audio_buffer_util_copy_s64_to_s32
-+ags_audio_buffer_util_copy_s64_to_s64
-+ags_audio_buffer_util_copy_s64_to_float
-+ags_audio_buffer_util_copy_s64_to_double
-+ags_audio_buffer_util_copy_float_to_s8
-+ags_audio_buffer_util_copy_float_to_s16
-+ags_audio_buffer_util_copy_float_to_s24
-+ags_audio_buffer_util_copy_float_to_s32
-+ags_audio_buffer_util_copy_float_to_s64
-+ags_audio_buffer_util_copy_float_to_float
-+ags_audio_buffer_util_copy_float_to_double
-+ags_audio_buffer_util_copy_double_to_s8
-+ags_audio_buffer_util_copy_double_to_s16
-+ags_audio_buffer_util_copy_double_to_s24
-+ags_audio_buffer_util_copy_double_to_s32
-+ags_audio_buffer_util_copy_double_to_s64
-+ags_audio_buffer_util_copy_double_to_float
-+ags_audio_buffer_util_copy_double_to_double
-+ags_audio_buffer_util_copy_buffer_to_buffer
-+ags_recall_channel_get_type
-+ags_recall_channel_find_channel
-+ags_recall_channel_new
-+ags_pattern_get_type
-+ags_pattern_find_near_timestamp
-+ags_pattern_set_dim
-+ags_pattern_is_empty
-+ags_pattern_get_bit
-+ags_pattern_toggle_bit
-+ags_pattern_new
- ags_note_get_type
- ags_note_find_prev
- ags_note_find_next
-@@ -170,11 +642,10 @@
- ags_note_duplicate
- ags_note_new
- ags_note_new_with_offset
--ags_audio_connection_get_type
--ags_audio_connection_find
--ags_audio_connection_new
--ags_recall_lv2_run_get_type
--ags_recall_lv2_run_new
-+ags_channel_iter_alloc
-+ags_channel_iter_free
-+ags_channel_iter_prev
-+ags_channel_iter_next
- ags_synth_util_sin_s8
- ags_synth_util_sin_s16
- ags_synth_util_sin_s24
-@@ -207,10 +678,196 @@
- ags_synth_util_sawtooth
- ags_synth_util_triangle
- ags_synth_util_square
--ags_midiin_get_type
--ags_midiin_error_quark
--ags_midiin_new
--ags_recycling_thread_iterate_callback
-+ags_recall_dssi_run_get_type
-+ags_recall_dssi_run_new
-+ags_recycling_get_type
-+ags_recycling_set_soundcard
-+ags_recycling_add_audio_signal
-+ags_recycling_remove_audio_signal
-+ags_recycling_create_audio_signal_with_defaults
-+ags_recycling_create_audio_signal_with_frame_count
-+ags_recycling_position
-+ags_recycling_find_next_channel
-+ags_recycling_new
-+ags_jack_midiin_get_type
-+ags_jack_midiin_error_quark
-+ags_jack_midiin_new
-+ags_jack_server_get_type
-+ags_jack_server_find_url
-+ags_jack_server_find_client
-+ags_jack_server_find_port
-+ags_jack_server_add_client
-+ags_jack_server_remove_client
-+ags_jack_server_connect_client
-+ags_jack_server_new
-+ags_jack_port_get_type
-+ags_jack_port_find
-+ags_jack_port_register
-+ags_jack_port_unregister
-+ags_jack_port_new
-+ags_jack_devout_get_type
-+ags_jack_devout_error_quark
-+ags_jack_devout_switch_buffer_flag
-+ags_jack_devout_adjust_delay_and_attack
-+ags_jack_devout_realloc_buffer
-+ags_jack_devout_new
-+ags_jack_client_get_type
-+ags_jack_client_find_uuid
-+ags_jack_client_find
-+ags_jack_client_open
-+ags_jack_client_add_device
-+ags_jack_client_remove_device
-+ags_jack_client_add_port
-+ags_jack_client_remove_port
-+ags_jack_client_activate
-+ags_jack_client_deactivate
-+ags_jack_client_new
-+ags_port_get_type
-+ags_port_safe_read
-+ags_port_safe_write
-+ags_port_safe_write_raw
-+ags_port_safe_get_property
-+ags_port_safe_set_property
-+ags_port_find_specifier
-+ags_port_new
-+ags_recall_dssi_get_type
-+ags_recall_dssi_load
-+ags_recall_dssi_load_ports
-+ags_recall_dssi_load_conversion
-+ags_recall_dssi_find
-+ags_recall_dssi_new
-+ags_recall_recycling_get_type
-+ags_recall_recycling_get_child_source
-+ags_recall_recycling_new
-+ags_append_audio_get_type
-+ags_append_audio_new
-+ags_apply_synth_get_type
-+ags_apply_synth_new
-+ags_tic_device_get_type
-+ags_tic_device_new
-+ags_resize_audio_get_type
-+ags_resize_audio_new
-+ags_set_muted_get_type
-+ags_set_muted_new
-+ags_apply_sequencer_length_get_type
-+ags_apply_sequencer_length_new
-+ags_apply_tact_get_type
-+ags_apply_tact_new
-+ags_apply_bpm_get_type
-+ags_apply_bpm_new
-+ags_init_audio_get_type
-+ags_init_audio_new
-+ags_cancel_channel_get_type
-+ags_cancel_channel_new
-+ags_free_selection_get_type
-+ags_free_selection_new
-+ags_open_single_file_get_type
-+ags_open_single_file_new
-+ags_append_audio_threaded_get_type
-+ags_append_audio_threaded_new
-+ags_apply_presets_get_type
-+ags_apply_presets_soundcard
-+ags_apply_presets_new
-+ags_clear_buffer_get_type
-+ags_clear_buffer_new
-+ags_remove_region_from_selection_get_type
-+ags_remove_region_from_selection_new
-+ags_remove_recall_container_get_type
-+ags_remove_recall_container_new
-+ags_init_channel_get_type
-+ags_init_channel_new
-+ags_add_effect_get_type
-+ags_add_effect_new
-+ags_open_file_get_type
-+ags_open_file_new
-+ags_add_soundcard_get_type
-+ags_add_soundcard_new
-+ags_cancel_recall_get_type
-+ags_cancel_recall_new
-+ags_append_channel_get_type
-+ags_append_channel_new
-+ags_change_soundcard_get_type
-+ags_change_soundcard_new
-+ags_set_output_device_get_type
-+ags_set_output_device_new
-+ags_add_region_to_selection_get_type
-+ags_add_region_to_selection_new
-+ags_remove_recall_get_type
-+ags_remove_recall_new
-+ags_add_point_to_selection_get_type
-+ags_add_point_to_selection_new
-+ags_remove_audio_signal_get_type
-+ags_remove_audio_signal_new
-+ags_set_samplerate_get_type
-+ags_set_samplerate_new
-+ags_switch_buffer_flag_get_type
-+ags_switch_buffer_flag_new
-+ags_reset_audio_connection_get_type
-+ags_reset_audio_connection_new
-+ags_remove_audio_get_type
-+ags_remove_audio_new
-+ags_remove_note_get_type
-+ags_remove_note_new
-+ags_save_file_get_type
-+ags_save_file_new
-+ags_add_note_get_type
-+ags_add_note_new
-+ags_remove_point_from_selection_get_type
-+ags_remove_point_from_selection_new
-+ags_set_audio_channels_get_type
-+ags_set_audio_channels_new
-+ags_export_output_get_type
-+ags_export_output_new
-+ags_append_recall_get_type
-+ags_append_recall_new
-+ags_set_input_device_get_type
-+ags_set_input_device_new
-+ags_unref_audio_signal_get_type
-+ags_unref_audio_signal_new
-+ags_add_recall_get_type
-+ags_add_recall_new
-+ags_seek_soundcard_get_type
-+ags_seek_soundcard_new
-+ags_set_format_get_type
-+ags_set_format_new
-+ags_cancel_audio_get_type
-+ags_cancel_audio_new
-+ags_add_audio_get_type
-+ags_add_audio_new
-+ags_set_buffer_size_get_type
-+ags_set_buffer_size_new
-+ags_add_recall_container_get_type
-+ags_add_recall_container_new
-+ags_open_sf2_sample_get_type
-+ags_open_sf2_sample_new
-+ags_remove_soundcard_get_type
-+ags_remove_soundcard_new
-+ags_link_channel_get_type
-+ags_link_channel_new
-+ags_add_audio_signal_get_type
-+ags_add_audio_signal_new
-+ags_toggle_pattern_bit_get_type
-+ags_toggle_pattern_bit_refresh_gui
-+ags_toggle_pattern_bit_new
-+ags_start_sequencer_get_type
-+ags_start_sequencer_new
-+ags_notify_soundcard_get_type
-+ags_notify_soundcard_new
-+ags_start_soundcard_get_type
-+ags_start_soundcard_new
-+ags_recall_audio_run_get_type
-+ags_recall_audio_run_new
-+ags_recall_container_get_type
-+ags_recall_container_get_recall_audio
-+ags_recall_container_get_recall_audio_run
-+ags_recall_container_get_recall_channel
-+ags_recall_container_get_recall_channel_run
-+ags_recall_container_find
-+ags_recall_container_new
-+ags_record_thread_get_type
-+ags_record_thread_new
-+ags_audio_thread_get_type
-+ags_audio_thread_new
- ags_audio_loop_get_type
- ags_audio_loop_add_audio
- ags_audio_loop_remove_audio
-@@ -222,12 +879,13 @@
- ags_soundcard_thread_get_type
- ags_soundcard_thread_find_soundcard
- ags_soundcard_thread_new
-+ags_sequencer_thread_get_type
-+ags_sequencer_thread_interval_timeout
-+ags_sequencer_thread_find_sequencer
-+ags_sequencer_thread_new
- ags_export_thread_get_type
- ags_export_thread_find_soundcard
- ags_export_thread_new
--ags_iterator_thread_get_type
--ags_iterator_thread_children_ready
--ags_iterator_thread_new
- ags_recycling_thread_get_type
- ags_recycling_thread_worker_alloc
- ags_recycling_thread_add_worker
-@@ -239,46 +897,21 @@
- ags_recycling_thread_new
- ags_channel_thread_get_type
- ags_channel_thread_new
--ags_record_thread_get_type
--ags_record_thread_new
--ags_sequencer_thread_get_type
--ags_sequencer_thread_interval_timeout
--ags_sequencer_thread_find_sequencer
--ags_sequencer_thread_new
--ags_audio_thread_get_type
--ags_audio_thread_new
--ags_recall_dssi_run_get_type
--ags_recall_dssi_run_new
--ags_recall_channel_run_dummy_get_type
--ags_recall_channel_run_dummy_new
-+ags_iterator_thread_get_type
-+ags_iterator_thread_children_ready
-+ags_iterator_thread_new
-+ags_recycling_thread_iterate_callback
-+ags_recall_lv2_get_type
-+ags_recall_lv2_load
-+ags_recall_lv2_load_ports
-+ags_recall_lv2_load_conversion
-+ags_recall_lv2_find
-+ags_recall_lv2_new
- ags_fifoout_get_type
- ags_fifoout_error_quark
- ags_fifoout_adjust_delay_and_attack
- ags_fifoout_realloc_buffer
- ags_fifoout_new
--ags_recall_id_get_type
--ags_recall_id_get_run_stage
--ags_recall_id_set_run_stage
--ags_recall_id_unset_run_stage
--ags_recall_id_find_recycling_context
--ags_recall_id_find_parent_recycling_context
--ags_recall_id_new
--ags_output_get_type
--ags_output_find_first_input_recycling
--ags_output_find_last_input_recycling
--ags_output_new
--ags_recall_channel_run_get_type
--ags_recall_channel_run_run_order_changed
--ags_recall_channel_run_get_run_order
--ags_recall_channel_run_new
--ags_playback_get_type
--ags_playback_find_source
--ags_playback_new
--ags_recall_dependency_get_type
--ags_recall_dependency_find_dependency
--ags_recall_dependency_find_dependency_by_provider
--ags_recall_dependency_resolve
--ags_recall_dependency_new
- ags_recall_get_type
- ags_recall_set_flags
- ags_recall_load_automation
-@@ -325,120 +958,10 @@
- ags_recall_lock_port
- ags_recall_unlock_port
- ags_recall_new
--ags_init_channel_get_type
--ags_init_channel_new
--ags_remove_soundcard_get_type
--ags_remove_soundcard_new
--ags_remove_audio_signal_get_type
--ags_remove_audio_signal_new
--ags_add_audio_get_type
--ags_add_audio_new
--ags_remove_audio_get_type
--ags_remove_audio_new
--ags_remove_recall_container_get_type
--ags_remove_recall_container_new
--ags_cancel_audio_get_type
--ags_cancel_audio_new
--ags_remove_recall_get_type
--ags_remove_recall_new
--ags_add_note_get_type
--ags_add_note_new
--ags_resize_audio_get_type
--ags_resize_audio_new
--ags_link_channel_get_type
--ags_link_channel_new
--ags_append_audio_get_type
--ags_append_audio_new
--ags_set_audio_channels_get_type
--ags_set_audio_channels_new
--ags_remove_note_get_type
--ags_remove_note_new
--ags_start_sequencer_get_type
--ags_start_sequencer_new
--ags_apply_synth_get_type
--ags_apply_synth_new
--ags_append_audio_threaded_get_type
--ags_append_audio_threaded_new
--ags_export_output_get_type
--ags_export_output_new
--ags_unref_audio_signal_get_type
--ags_unref_audio_signal_new
--ags_free_selection_get_type
--ags_free_selection_new
--ags_add_recall_container_get_type
--ags_add_recall_container_new
--ags_set_muted_get_type
--ags_set_muted_new
--ags_apply_bpm_get_type
--ags_apply_bpm_new
--ags_apply_tact_get_type
--ags_apply_tact_new
--ags_apply_sequencer_length_get_type
--ags_apply_sequencer_length_new
--ags_notify_soundcard_get_type
--ags_notify_soundcard_new
--ags_cancel_channel_get_type
--ags_cancel_channel_new
--ags_init_audio_get_type
--ags_init_audio_new
--ags_seek_soundcard_get_type
--ags_seek_soundcard_new
--ags_append_recall_get_type
--ags_append_recall_new
--ags_add_soundcard_get_type
--ags_add_soundcard_new
--ags_apply_presets_get_type
--ags_apply_presets_soundcard
--ags_apply_presets_new
--ags_add_recall_get_type
--ags_add_recall_new
--ags_add_effect_get_type
--ags_add_effect_new
--ags_save_file_get_type
--ags_save_file_new
--ags_tic_device_get_type
--ags_tic_device_new
--ags_change_soundcard_get_type
--ags_change_soundcard_new
--ags_append_channel_get_type
--ags_append_channel_new
--ags_remove_point_from_selection_get_type
--ags_remove_point_from_selection_new
--ags_add_point_to_selection_get_type
--ags_add_point_to_selection_new
--ags_set_samplerate_get_type
--ags_set_samplerate_new
--ags_set_buffer_size_get_type
--ags_set_buffer_size_new
--ags_set_format_get_type
--ags_set_format_new
--ags_switch_buffer_flag_get_type
--ags_switch_buffer_flag_new
--ags_cancel_recall_get_type
--ags_cancel_recall_new
--ags_add_region_to_selection_get_type
--ags_add_region_to_selection_new
--ags_open_sf2_sample_get_type
--ags_open_sf2_sample_new
--ags_add_audio_signal_get_type
--ags_add_audio_signal_new
--ags_toggle_pattern_bit_get_type
--ags_toggle_pattern_bit_refresh_gui
--ags_toggle_pattern_bit_new
--ags_reset_audio_connection_get_type
--ags_reset_audio_connection_new
--ags_start_soundcard_get_type
--ags_start_soundcard_new
--ags_open_single_file_get_type
--ags_open_single_file_new
--ags_open_file_get_type
--ags_open_file_new
--ags_set_input_device_get_type
--ags_set_input_device_new
--ags_remove_region_from_selection_get_type
--ags_remove_region_from_selection_new
--ags_set_output_device_get_type
--ags_set_output_device_new
-+ags_recall_lv2_run_get_type
-+ags_recall_lv2_run_new
-+ags_playback_domain_get_type
-+ags_playback_domain_new
- ags_sound_provider_get_type
- ags_sound_provider_set_soundcard
- ags_sound_provider_get_soundcard
-@@ -448,213 +971,8 @@
- ags_sound_provider_get_sequencer
- ags_sound_provider_set_distributed_manager
- ags_sound_provider_get_distributed_manager
--ags_loop_channel_get_type
--ags_loop_channel_new
--ags_envelope_recycling_get_type
--ags_envelope_recycling_new
--ags_play_notation_audio_get_type
--ags_play_notation_audio_new
--ags_volume_channel_run_get_type
--ags_volume_channel_run_new
--ags_mute_recycling_get_type
--ags_mute_recycling_new
--ags_envelope_channel_run_get_type
--ags_envelope_channel_run_new
--ags_count_beats_audio_get_type
--ags_count_beats_audio_new
--ags_play_channel_run_get_type
--ags_play_channel_run_new
--ags_route_dssi_audio_get_type
--ags_route_dssi_audio_new
--ags_mute_audio_get_type
--ags_mute_audio_new
--ags_peak_recycling_get_type
--ags_peak_recycling_new
--ags_buffer_channel_run_get_type
--ags_buffer_channel_run_new
--ags_play_channel_get_type
--ags_play_channel_new
--ags_stream_channel_run_get_type
--ags_stream_channel_run_new
--ags_mute_channel_run_get_type
--ags_mute_channel_run_new
--ags_play_audio_get_type
--ags_play_audio_new
--ags_count_beats_audio_run_get_type
--ags_count_beats_audio_run_notation_start
--ags_count_beats_audio_run_notation_loop
--ags_count_beats_audio_run_notation_stop
--ags_count_beats_audio_run_sequencer_start
--ags_count_beats_audio_run_sequencer_loop
--ags_count_beats_audio_run_sequencer_stop
--ags_count_beats_audio_run_new
--ags_mute_channel_get_type
--ags_mute_channel_new
--ags_buffer_audio_signal_get_type
--ags_buffer_audio_signal_new
--ags_mute_audio_signal_get_type
--ags_mute_audio_signal_new
--ags_peak_audio_signal_get_type
--ags_peak_audio_signal_new
--ags_feed_channel_run_get_type
--ags_feed_channel_run_new
--ags_volume_recycling_get_type
--ags_volume_recycling_new
--ags_copy_pattern_channel_get_type
--ags_copy_pattern_channel_template_find_source_and_destination
--ags_copy_pattern_channel_new
--ags_delay_audio_get_type
--ags_delay_audio_notation_duration_changed
--ags_delay_audio_sequencer_duration_changed
--ags_delay_audio_new
--ags_play_notation_audio_run_get_type
--ags_play_notation_audio_run_new
--ags_envelope_channel_get_type
--ags_envelope_channel_new
--ags_play_recycling_get_type
--ags_play_recycling_new
--ags_envelope_audio_signal_get_type
--ags_envelope_audio_signal_new
--ags_loop_channel_run_get_type
--ags_loop_channel_run_new
--ags_copy_notation_audio_run_get_type
--ags_copy_notation_audio_run_new
--ags_play_note_get_type
--ags_play_note_new
--ags_record_midi_audio_run_get_type
--ags_record_midi_audio_run_new
--ags_buffer_recycling_get_type
--ags_buffer_recycling_new
--ags_copy_audio_signal_get_type
--ags_copy_audio_signal_new
--ags_copy_pattern_channel_run_get_type
--ags_copy_pattern_channel_run_new
--ags_buffer_channel_get_type
--ags_buffer_channel_new
--ags_peak_channel_get_type
--ags_peak_channel_retrieve_peak
--ags_peak_channel_new
--ags_peak_channel_run_get_type
--ags_peak_channel_run_new
--ags_copy_channel_get_type
--ags_copy_channel_new
--ags_stream_recycling_get_type
--ags_stream_recycling_new
--ags_route_lv2_audio_get_type
--ags_route_lv2_audio_new
--ags_feed_channel_get_type
--ags_feed_channel_new
--ags_copy_pattern_audio_get_type
--ags_copy_pattern_audio_new
--ags_play_audio_signal_get_type
--ags_play_audio_signal_new
--ags_route_dssi_audio_run_get_type
--ags_route_dssi_audio_run_new
--ags_stream_get_type
--ags_stream
--ags_stream_new
--ags_volume_audio_signal_get_type
--ags_volume_audio_signal_new
--ags_route_lv2_audio_run_get_type
--ags_route_lv2_audio_run_new
--ags_record_midi_audio_get_type
--ags_record_midi_audio_new
--ags_stream_channel_get_type
--ags_stream_channel_new
--ags_play_audio_file_get_type
--ags_play_audio_file_new
--ags_mute_audio_run_get_type
--ags_mute_audio_run_new
--ags_copy_recycling_get_type
--ags_copy_recycling_new
--ags_delay_audio_run_get_type
--ags_delay_audio_run_notation_alloc_output
--ags_delay_audio_run_notation_alloc_input
--ags_delay_audio_run_notation_count
--ags_delay_audio_run_sequencer_alloc_output
--ags_delay_audio_run_sequencer_alloc_input
--ags_delay_audio_run_sequencer_count
--ags_delay_audio_run_new
--ags_copy_channel_run_get_type
--ags_copy_channel_run_new
--ags_play_channel_run_master_get_type
--ags_play_channel_run_master_streamer_free
--ags_play_channel_run_master_streamer_alloc
--ags_play_channel_run_master_find_streamer
--ags_play_channel_run_master_new
--ags_feed_recycling_get_type
--ags_feed_recycling_new
--ags_feed_audio_signal_get_type
--ags_feed_audio_signal_new
--ags_stream_audio_signal_get_type
--ags_stream_audio_signal_new
--ags_copy_notation_audio_get_type
--ags_copy_notation_audio_new
--ags_copy_pattern_audio_run_get_type
--ags_copy_pattern_audio_run_new
--ags_volume_channel_get_type
--ags_volume_channel_new
--ags_playback_domain_get_type
--ags_playback_domain_new
--ags_jack_devout_get_type
--ags_jack_devout_error_quark
--ags_jack_devout_switch_buffer_flag
--ags_jack_devout_adjust_delay_and_attack
--ags_jack_devout_realloc_buffer
--ags_jack_devout_new
--ags_jack_client_get_type
--ags_jack_client_find_uuid
--ags_jack_client_find
--ags_jack_client_open
--ags_jack_client_add_device
--ags_jack_client_remove_device
--ags_jack_client_add_port
--ags_jack_client_remove_port
--ags_jack_client_activate
--ags_jack_client_deactivate
--ags_jack_client_new
--ags_jack_server_get_type
--ags_jack_server_find_url
--ags_jack_server_find_client
--ags_jack_server_find_port
--ags_jack_server_add_client
--ags_jack_server_remove_client
--ags_jack_server_connect_client
--ags_jack_server_new
--ags_jack_port_get_type
--ags_jack_port_find
--ags_jack_port_register
--ags_jack_port_unregister
--ags_jack_port_new
--ags_jack_midiin_get_type
--ags_jack_midiin_error_quark
--ags_jack_midiin_new
--ags_message_key_on
--ags_message_key_off
--ags_message_key_pressure
--ags_message_change_parameter
--ags_message_change_mode
--ags_message_pitch_bend
--ags_message_set_bpm
--ags_message_set_delay_factor
--ags_recycling_get_type
--ags_recycling_set_soundcard
--ags_recycling_add_audio_signal
--ags_recycling_remove_audio_signal
--ags_recycling_create_audio_signal_with_defaults
--ags_recycling_create_audio_signal_with_frame_count
--ags_recycling_position
--ags_recycling_find_next_channel
--ags_recycling_new
--ags_recall_recycling_dummy_get_type
--ags_recall_recycling_dummy_new
--ags_pattern_get_type
--ags_pattern_find_near_timestamp
--ags_pattern_set_dim
--ags_pattern_is_empty
--ags_pattern_get_bit
--ags_pattern_toggle_bit
--ags_pattern_new
-+ags_recall_audio_get_type
-+ags_recall_audio_new
- ags_channel_get_type
- ags_channel_error_quark
- ags_channel_find_recall
-@@ -705,295 +1023,107 @@
- ags_channel_tillrecycling_cancel
- ags_channel_recursive_reset_recall_ids
- ags_channel_new
--ags_recall_audio_run_get_type
--ags_recall_audio_run_new
--ags_recall_channel_get_type
--ags_recall_channel_find_channel
--ags_recall_channel_new
--ags_recycling_context_get_type
--ags_recycling_context_replace
--ags_recycling_context_add
--ags_recycling_context_remove
--ags_recycling_context_insert
--ags_recycling_context_get_toplevel
--ags_recycling_context_find
--ags_recycling_context_find_child
--ags_recycling_context_find_parent
--ags_recycling_context_add_child
--ags_recycling_context_remove_child
--ags_recycling_context_get_child_recall_id
--ags_recycling_context_reset_recycling
--ags_recycling_context_new
--ags_playable_get_type
--ags_playable_error_quark
--ags_playable_open
--ags_playable_rw_open
--ags_playable_level_count
--ags_playable_nth_level
--ags_playable_selected_level
--ags_playable_sublevel_names
--ags_playable_level_select
--ags_playable_level_up
--ags_playable_iter_start
--ags_playable_iter_next
--ags_playable_info
--ags_playable_get_samplerate
--ags_playable_get_format
--ags_playable_read
--ags_playable_write
--ags_playable_flush
--ags_playable_seek
--ags_playable_close
--ags_playable_read_audio_signal
--ags_audio_buffer_util_format_from_soundcard
--ags_audio_buffer_util_get_copy_mode
--ags_audio_buffer_util_clear_float
--ags_audio_buffer_util_clear_double
--ags_audio_buffer_util_clear_buffer
--ags_audio_buffer_util_envelope_s8
--ags_audio_buffer_util_envelope_s16
--ags_audio_buffer_util_envelope_s24
--ags_audio_buffer_util_envelope_s32
--ags_audio_buffer_util_envelope_s64
--ags_audio_buffer_util_envelope_float
--ags_audio_buffer_util_envelope_double
--ags_audio_buffer_util_envelope
--ags_audio_buffer_util_volume_s8
--ags_audio_buffer_util_volume_s16
--ags_audio_buffer_util_volume_s24
--ags_audio_buffer_util_volume_s32
--ags_audio_buffer_util_volume_s64
--ags_audio_buffer_util_volume_float
--ags_audio_buffer_util_volume_double
--ags_audio_buffer_util_volume
--ags_audio_buffer_util_resample_s8
--ags_audio_buffer_util_resample_s16
--ags_audio_buffer_util_resample_s24
--ags_audio_buffer_util_resample_s32
--ags_audio_buffer_util_resample_s64
--ags_audio_buffer_util_resample_float
--ags_audio_buffer_util_resample_double
--ags_audio_buffer_util_resample
--ags_audio_buffer_util_copy_s8_to_s8
--ags_audio_buffer_util_copy_s8_to_s16
--ags_audio_buffer_util_copy_s8_to_s24
--ags_audio_buffer_util_copy_s8_to_s32
--ags_audio_buffer_util_copy_s8_to_s64
--ags_audio_buffer_util_copy_s8_to_float
--ags_audio_buffer_util_copy_s8_to_double
--ags_audio_buffer_util_copy_s16_to_s8
--ags_audio_buffer_util_copy_s16_to_s16
--ags_audio_buffer_util_copy_s16_to_s24
--ags_audio_buffer_util_copy_s16_to_s32
--ags_audio_buffer_util_copy_s16_to_s64
--ags_audio_buffer_util_copy_s16_to_float
--ags_audio_buffer_util_copy_s16_to_double
--ags_audio_buffer_util_copy_s24_to_s8
--ags_audio_buffer_util_copy_s24_to_s16
--ags_audio_buffer_util_copy_s24_to_s24
--ags_audio_buffer_util_copy_s24_to_s32
--ags_audio_buffer_util_copy_s24_to_s64
--ags_audio_buffer_util_copy_s24_to_float
--ags_audio_buffer_util_copy_s24_to_double
--ags_audio_buffer_util_copy_s32_to_s8
--ags_audio_buffer_util_copy_s32_to_s16
--ags_audio_buffer_util_copy_s32_to_s24
--ags_audio_buffer_util_copy_s32_to_s32
--ags_audio_buffer_util_copy_s32_to_s64
--ags_audio_buffer_util_copy_s32_to_float
--ags_audio_buffer_util_copy_s32_to_double
--ags_audio_buffer_util_copy_s64_to_s8
--ags_audio_buffer_util_copy_s64_to_s16
--ags_audio_buffer_util_copy_s64_to_s24
--ags_audio_buffer_util_copy_s64_to_s32
--ags_audio_buffer_util_copy_s64_to_s64
--ags_audio_buffer_util_copy_s64_to_float
--ags_audio_buffer_util_copy_s64_to_double
--ags_audio_buffer_util_copy_float_to_s8
--ags_audio_buffer_util_copy_float_to_s16
--ags_audio_buffer_util_copy_float_to_s24
--ags_audio_buffer_util_copy_float_to_s32
--ags_audio_buffer_util_copy_float_to_s64
--ags_audio_buffer_util_copy_float_to_float
--ags_audio_buffer_util_copy_float_to_double
--ags_audio_buffer_util_copy_double_to_s8
--ags_audio_buffer_util_copy_double_to_s16
--ags_audio_buffer_util_copy_double_to_s24
--ags_audio_buffer_util_copy_double_to_s32
--ags_audio_buffer_util_copy_double_to_s64
--ags_audio_buffer_util_copy_double_to_float
--ags_audio_buffer_util_copy_double_to_double
--ags_audio_buffer_util_copy_buffer_to_buffer
--ags_recall_audio_signal_get_type
--ags_recall_audio_signal_new
--ags_notation_get_type
--ags_notation_find_near_timestamp
--ags_notation_add_note
--ags_notation_remove_note_at_position
--ags_notation_get_selection
--ags_notation_is_note_selected
--ags_notation_find_point
--ags_notation_find_region
--ags_notation_free_selection
--ags_notation_add_all_to_selection
--ags_notation_add_point_to_selection
--ags_notation_remove_point_from_selection
--ags_notation_add_region_to_selection
--ags_notation_remove_region_from_selection
--ags_notation_copy_selection
--ags_notation_cut_selection
--ags_notation_insert_from_clipboard
--ags_notation_get_current
--ags_notation_new
--ags_port_get_type
--ags_port_safe_read
--ags_port_safe_write
--ags_port_safe_write_raw
--ags_port_safe_get_property
--ags_port_safe_set_property
--ags_port_find_specifier
--ags_port_new
--ags_recall_ladspa_get_type
--ags_recall_ladspa_load
--ags_recall_ladspa_load_ports
--ags_recall_ladspa_load_conversion
--ags_recall_ladspa_find
--ags_recall_ladspa_new
--ags_channel_iter_alloc
--ags_channel_iter_free
--ags_channel_iter_prev
--ags_channel_iter_next
--ags_recall_dssi_get_type
--ags_recall_dssi_load
--ags_recall_dssi_load_ports
--ags_recall_dssi_load_conversion
--ags_recall_dssi_find
--ags_recall_dssi_new
--ags_recall_ladspa_run_get_type
--ags_recall_ladspa_run_new
--ags_input_get_type
--ags_input_open_file
--ags_input_apply_synth
--ags_input_new
--ags_synth_generator_get_type
--ags_synth_generator_new
--ags_audio_file_link_get_type
--ags_audio_file_link_new
--ags_audio_file_get_type
--ags_audio_file_check_suffix
--ags_audio_file_open
--ags_audio_file_open_from_data
--ags_audio_file_rw_open
--ags_audio_file_close
--ags_audio_file_read_audio_signal
--ags_audio_file_seek
--ags_audio_file_write
--ags_audio_file_flush
--ags_audio_file_new
--ags_sndfile_get_type
--ags_sndfile_new
--ags_ipatch_dls2_reader_get_type
--ags_ipatch_dls2_reader_new
--ags_ipatch_get_type
--ags_ipatch_check_suffix
--ags_ipatch_new
--ags_file_read_soundcard
--ags_file_write_soundcard
--ags_file_read_soundcard_list
--ags_file_write_soundcard_list
--ags_file_read_playback
--ags_file_write_playback
--ags_file_read_playback_list
--ags_file_write_playback_list
--ags_file_read_audio
--ags_file_write_audio
--ags_file_read_audio_list
--ags_file_write_audio_list
--ags_file_read_channel
--ags_file_write_channel
--ags_file_read_channel_list
--ags_file_write_channel_list
--ags_file_read_input
--ags_file_write_input
--ags_file_read_output
--ags_file_write_output
--ags_file_read_recall
--ags_file_write_recall
--ags_file_read_recall_list
--ags_file_write_recall_list
--ags_file_read_recall_container
--ags_file_write_recall_container
--ags_file_read_recall_container_list
--ags_file_write_recall_container_list
--ags_file_read_recall_audio
--ags_file_write_recall_audio
--ags_file_read_recall_audio_run
--ags_file_write_recall_audio_run
--ags_file_read_recall_channel
--ags_file_write_recall_channel
--ags_file_read_recall_channel_run
--ags_file_write_recall_channel_run
--ags_file_read_recall_recycling
--ags_file_write_recall_recycling
--ags_file_read_recall_audio_signal
--ags_file_write_recall_audio_signal
--ags_file_read_port
--ags_file_write_port
--ags_file_read_port_list
--ags_file_write_port_list
--ags_file_read_recycling
--ags_file_write_recycling
--ags_file_read_recycling_list
--ags_file_write_recycling_list
--ags_file_read_audio_signal
--ags_file_write_audio_signal
--ags_file_read_audio_signal_list
--ags_file_write_audio_signal_list
--ags_file_read_stream
--ags_file_write_stream
--ags_file_read_stream_list
--ags_file_write_stream_list
--ags_file_read_pattern
--ags_file_write_pattern
--ags_file_read_pattern_list
--ags_file_write_pattern_list
--ags_file_read_pattern_data
--ags_file_write_pattern_data
--ags_file_read_pattern_data_list
--ags_file_write_pattern_data_list
--ags_file_read_notation
--ags_file_write_notation
--ags_file_read_notation_list
--ags_file_write_notation_list
--ags_file_read_note
--ags_file_write_note
--ags_file_read_note_list
--ags_file_write_note_list
--ags_file_read_automation
--ags_file_write_automation
--ags_file_read_automation_list
--ags_file_write_automation_list
--ags_file_read_acceleration
--ags_file_write_acceleration
--ags_file_read_acceleration_list
--ags_file_write_acceleration_list
--ags_file_read_task
--ags_file_write_task
--ags_file_read_task_list
--ags_file_write_task_list
--ags_file_read_embedded_audio
--ags_file_write_embedded_audio
--ags_file_read_embedded_audio_list
--ags_file_write_embedded_audio_list
--ags_ipatch_sf2_reader_get_type
--ags_ipatch_sf2_reader_new
--ags_recall_container_get_type
--ags_recall_container_get_recall_audio
--ags_recall_container_get_recall_audio_run
--ags_recall_container_get_recall_channel
--ags_recall_container_get_recall_channel_run
--ags_recall_container_find
--ags_recall_container_new
-+ags_audio_signal_get_type
-+ags_stream_alloc
-+ags_stream_free
-+ags_audio_signal_set_samplerate
-+ags_audio_signal_set_buffer_size
-+ags_audio_signal_set_format
-+ags_audio_signal_get_length_till_current
-+ags_audio_signal_add_stream
-+ags_audio_signal_stream_resize
-+ags_audio_signal_stream_safe_resize
-+ags_audio_signal_realloc_buffer_size
-+ags_audio_signal_duplicate_stream
-+ags_audio_signal_get_template
-+ags_audio_signal_get_stream_current
-+ags_audio_signal_get_by_recall_id
-+ags_audio_signal_tile
-+ags_audio_signal_scale
-+ags_audio_signal_feed
-+ags_audio_signal_envelope
-+ags_audio_signal_new
-+ags_audio_signal_new_with_length
-+ags_audio_application_context_get_type
-+ags_audio_application_context_new
-+ags_audio_connection_get_type
-+ags_audio_connection_find
-+ags_audio_connection_new
-+ags_message_key_on
-+ags_message_key_off
-+ags_message_key_pressure
-+ags_message_change_parameter
-+ags_message_change_mode
-+ags_message_pitch_bend
-+ags_message_set_bpm
-+ags_message_set_delay_factor
-+ags_recall_id_get_type
-+ags_recall_id_get_run_stage
-+ags_recall_id_set_run_stage
-+ags_recall_id_unset_run_stage
-+ags_recall_id_find_recycling_context
-+ags_recall_id_find_parent_recycling_context
-+ags_recall_id_new
-+ags_recall_dependency_get_type
-+ags_recall_dependency_find_dependency
-+ags_recall_dependency_find_dependency_by_provider
-+ags_recall_dependency_resolve
-+ags_recall_dependency_new
-+ags_midi_builder_get_type
-+ags_midi_builder_header_alloc
-+ags_midi_builder_header_free
-+ags_midi_builder_track_alloc
-+ags_midi_builder_track_free
-+ags_midi_builder_track_find_delta_time_with_track_name
-+ags_midi_builder_track_insert_midi_message
-+ags_midi_builder_track_get_delta_time_offset
-+ags_midi_builder_midi_putc
-+ags_midi_builder_on_error
-+ags_midi_builder_append_header
-+ags_midi_builder_append_track
-+ags_midi_builder_append_key_on
-+ags_midi_builder_append_key_off
-+ags_midi_builder_append_key_pressure
-+ags_midi_builder_append_change_parameter
-+ags_midi_builder_append_change_pitch_bend
-+ags_midi_builder_append_change_program
-+ags_midi_builder_append_change_pressure
-+ags_midi_builder_append_sysex
-+ags_midi_builder_append_quarter_frame
-+ags_midi_builder_append_song_position
-+ags_midi_builder_append_song_select
-+ags_midi_builder_append_tune_request
-+ags_midi_builder_append_sequence_number
-+ags_midi_builder_append_smtpe
-+ags_midi_builder_append_tempo
-+ags_midi_builder_append_time_signature
-+ags_midi_builder_append_key_signature
-+ags_midi_builder_append_sequencer_meta_event
-+ags_midi_builder_append_text_event
-+ags_midi_builder_append_xml_node
-+ags_midi_builder_from_xml_doc
-+ags_midi_builder_build
-+ags_midi_builder_new
-+ags_midi_util_is_key_on
-+ags_midi_util_is_key_off
-+ags_midi_util_is_key_pressure
-+ags_midi_util_is_change_parameter
-+ags_midi_util_is_pitch_bend
-+ags_midi_util_is_change_program
-+ags_midi_util_is_change_pressure
-+ags_midi_util_is_sysex
-+ags_midi_util_is_quarter_frame
-+ags_midi_util_is_song_position
-+ags_midi_util_is_song_select
-+ags_midi_util_is_tune_request
-+ags_midi_util_is_meta_event
-+ags_midi_util_to_smf
-+ags_midi_util_envelope_to_velocity
-+ags_midi_util_velocity_to_envelope
-+ags_midi_util_envelope_to_pressure
-+ags_midi_util_pressure_to_envelope
-+ags_midi_util_delta_time_to_offset
-+ags_midi_util_offset_to_delta_time
- ags_midi_parser_get_type
- ags_midi_parser_read_gint16
- ags_midi_parser_read_gint24
-@@ -1029,26 +1159,39 @@
- ags_midi_parser_meta_misc
- ags_midi_parser_text_event
- ags_midi_parser_new
--ags_midi_util_is_key_on
--ags_midi_util_is_key_off
--ags_midi_util_is_key_pressure
--ags_midi_util_is_change_parameter
--ags_midi_util_is_pitch_bend
--ags_midi_util_is_change_program
--ags_midi_util_is_change_pressure
--ags_midi_util_is_sysex
--ags_midi_util_is_quarter_frame
--ags_midi_util_is_song_position
--ags_midi_util_is_song_select
--ags_midi_util_is_tune_request
--ags_midi_util_is_meta_event
--ags_midi_util_to_smf
--ags_midi_util_envelope_to_velocity
--ags_midi_util_velocity_to_envelope
--ags_midi_util_envelope_to_pressure
--ags_midi_util_pressure_to_envelope
--ags_midi_util_delta_time_to_offset
--ags_midi_util_offset_to_delta_time
-+ags_midi_file_writer_get_type
-+ags_midi_file_writer_write_bytes
-+ags_midi_file_writer_write_channel_message
-+ags_midi_file_writer_write_status_message
-+ags_midi_file_writer_new
-+ags_midi_file_get_type
-+ags_midi_file_open
-+ags_midi_file_open_from_data
-+ags_midi_file_rw_open
-+ags_midi_file_close
-+ags_midi_file_read
-+ags_midi_file_write
-+ags_midi_file_seek
-+ags_midi_file_flush
-+ags_midi_file_read_gint16
-+ags_midi_file_read_gint24
-+ags_midi_file_read_gint32
-+ags_midi_file_read_varlength
-+ags_midi_file_read_text
-+ags_midi_file_write_gint16
-+ags_midi_file_write_gint24
-+ags_midi_file_write_gint32
-+ags_midi_file_write_varlength
-+ags_midi_file_write_text
-+ags_midi_file_read_header
-+ags_midi_file_write_header
-+ags_midi_file_read_track_data
-+ags_midi_file_write_track_data
-+ags_midi_file_new
-+ags_midi_file_reader_get_type
-+ags_midi_file_reader_read_channel_message
-+ags_midi_file_reader_read_status_message
-+ags_midi_file_reader_new
- ags_midi_buffer_util_get_varlength_size
- ags_midi_buffer_util_put_varlength
- ags_midi_buffer_util_get_varlength
-@@ -1104,144 +1247,3 @@
- ags_midi_buffer_util_get_end_of_track
- ags_midi_buffer_util_seek_message
- ags_midi_buffer_util_decode
--ags_midi_builder_get_type
--ags_midi_builder_header_alloc
--ags_midi_builder_header_free
--ags_midi_builder_track_alloc
--ags_midi_builder_track_free
--ags_midi_builder_track_find_delta_time_with_track_name
--ags_midi_builder_track_insert_midi_message
--ags_midi_builder_track_get_delta_time_offset
--ags_midi_builder_midi_putc
--ags_midi_builder_on_error
--ags_midi_builder_append_header
--ags_midi_builder_append_track
--ags_midi_builder_append_key_on
--ags_midi_builder_append_key_off
--ags_midi_builder_append_key_pressure
--ags_midi_builder_append_change_parameter
--ags_midi_builder_append_change_pitch_bend
--ags_midi_builder_append_change_program
--ags_midi_builder_append_change_pressure
--ags_midi_builder_append_sysex
--ags_midi_builder_append_quarter_frame
--ags_midi_builder_append_song_position
--ags_midi_builder_append_song_select
--ags_midi_builder_append_tune_request
--ags_midi_builder_append_sequence_number
--ags_midi_builder_append_smtpe
--ags_midi_builder_append_tempo
--ags_midi_builder_append_time_signature
--ags_midi_builder_append_key_signature
--ags_midi_builder_append_sequencer_meta_event
--ags_midi_builder_append_text_event
--ags_midi_builder_append_xml_node
--ags_midi_builder_from_xml_doc
--ags_midi_builder_build
--ags_midi_builder_new
--ags_midi_file_get_type
--ags_midi_file_open
--ags_midi_file_open_from_data
--ags_midi_file_rw_open
--ags_midi_file_close
--ags_midi_file_read
--ags_midi_file_write
--ags_midi_file_seek
--ags_midi_file_flush
--ags_midi_file_read_gint16
--ags_midi_file_read_gint24
--ags_midi_file_read_gint32
--ags_midi_file_read_varlength
--ags_midi_file_read_text
--ags_midi_file_write_gint16
--ags_midi_file_write_gint24
--ags_midi_file_write_gint32
--ags_midi_file_write_varlength
--ags_midi_file_write_text
--ags_midi_file_read_header
--ags_midi_file_write_header
--ags_midi_file_read_track_data
--ags_midi_file_write_track_data
--ags_midi_file_new
--ags_midi_file_writer_get_type
--ags_midi_file_writer_write_bytes
--ags_midi_file_writer_write_channel_message
--ags_midi_file_writer_write_status_message
--ags_midi_file_writer_new
--ags_midi_file_reader_get_type
--ags_midi_file_reader_read_channel_message
--ags_midi_file_reader_read_status_message
--ags_midi_file_reader_new
--ags_remote_channel_get_type
--ags_remote_channel_error_quark
--ags_remote_channel_new
--ags_remote_output_get_type
--ags_remote_output_new
--ags_remote_input_get_type
--ags_remote_input_new
--ags_recall_audio_get_type
--ags_recall_audio_new
--ags_acceleration_get_type
--ags_acceleration_duplicate
--ags_acceleration_new
--ags_recall_factory_get_type
--ags_recall_factory_create
--ags_recall_factory_remove
--ags_recall_factory_get_instance
--ags_recall_factory_new
--ags_recall_recycling_get_type
--ags_recall_recycling_get_child_source
--ags_recall_recycling_new
--ags_recall_lv2_get_type
--ags_recall_lv2_load
--ags_recall_lv2_load_ports
--ags_recall_lv2_load_conversion
--ags_recall_lv2_find
--ags_recall_lv2_new
--ags_devout_get_type
--ags_devout_error_quark
--ags_devout_switch_buffer_flag
--ags_devout_adjust_delay_and_attack
--ags_devout_realloc_buffer
--ags_devout_new
--ags_audio_get_type
--ags_audio_set_soundcard
--ags_audio_set_flags
--ags_audio_unset_flags
--ags_audio_check_connection
--ags_audio_set_audio_channels
--ags_audio_set_pads
--ags_audio_set_samplerate
--ags_audio_set_buffer_size
--ags_audio_set_format
--ags_audio_set_sequence_length
--ags_audio_add_audio_connection
--ags_audio_remove_audio_connection
--ags_audio_add_notation
--ags_audio_remove_notation
--ags_audio_add_automation
--ags_audio_remove_automation
--ags_audio_add_recall_id
--ags_audio_remove_recall_id
--ags_audio_add_recycling_context
--ags_audio_remove_recycling_context
--ags_audio_add_recall_container
--ags_audio_remove_recall_container
--ags_audio_add_recall
--ags_audio_remove_recall
--ags_audio_recall_change_state
--ags_audio_init_run
--ags_audio_duplicate_recall
--ags_audio_init_recall
--ags_audio_resolve_recall
--ags_audio_is_playing
--ags_audio_play
--ags_audio_tact
--ags_audio_done
--ags_audio_cancel
--ags_audio_remove
--ags_audio_find_port
--ags_audio_open_files
--ags_audio_recursive_set_property
--ags_audio_recursive_play_init
--ags_audio_new
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 6877fea..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,4 +0,0 @@
-fix-configure.patch
-fix-changelog.patch
-fix-generated-symbols.patch
-fix-critical-bugs.patch

-- 
gsequencer packaging



More information about the pkg-multimedia-commits mailing list