newsAdvanced Gtk+ Sequencer - News: Lock-free audio processing and ::dispose()

 
 
Latest News
Message delivery to GUI posted by jkraehemann, Sat 09 Dec 2017 04:31:47 PM UTC - 0 replies
Refactoring the notation editor posted by jkraehemann, Thu 07 Dec 2017 10:29:21 PM UTC - 0 replies
Potential dead-lock due to libags-audio callbacks to UI posted by jkraehemann, Fri 17 Nov 2017 08:47:59 AM UTC - 0 replies
Better support for Apple MacOS X High Sierra posted by jkraehemann, Tue 14 Nov 2017 11:55:02 PM UTC - 0 replies
GSequencer 1.2.x goals posted by jkraehemann, Wed 18 Oct 2017 08:27:54 PM UTC - 0 replies
[Submit News]
[45 news in archive]

Lock-free audio processing and ::dispose()

Item posted by Joël Krähemann <jkraehemann> on Tue 07 Mar 2017 08:38:05 AM UTC.

Recently the mutices has been heavily improved. As the design of Advanced Gtk+ Sequencer allows lock free audio processing, why not doing so?

Next stable release will do so. The locks have been removed of ags_audio_play() and ags_channel_play(). This change comes along with major performance improvement.

One more thing to do is proper clean-up of memory. Although the ::finalize() function was implemented, it doesn't care about circular dependencies. So the allocated memory was still there.

So far many ::dispose() functions have been implemented and some ::finalize() were mangled and fixed.

Performance improvement

The optimization of mutices involved in following functions, have a great performance impact:

  • ags_audio_play()
  • ags_channel_play()

I knew about for some time but was not able to remove them. Because GSequencer crashed then but not for now.

Two more composite widget is going to be introduced AgsVLedArray and AgsHLedArray. Since the visual feedback is polled and uses currently gtk_container_get_children(). What is actually quiet bad in view of performance. Since the returned list has to be freed by g_list_free().

AgsMatrix should be able to stay in real-time with the above changes. Currently its output is delayed and causes audio to slow down. As you enable the sequencers with the notation.

Memory clean-up

Circular dependencies can be released by ::dispose(). All of the needed objects in libags implement it and libags_audio is only missing AgsRecall as well sub-classes to do so.

Within a few days there is going to be released 0.7.122.7 including all changes.

by Joël

Comments:

No messages in Lock-free audio processing and ::dispose()

 

Back to the top


Powered by Savane 3.1-cleanup1