newsAdvanced Gtk+ Sequencer - News: GSequencer v3.3.x replaced all recalls by ags-fx engine

 
 
Latest News
Advanced Gtk+ Sequencer version 6.8.x posted by jkraehemann, Wed 17 Apr 2024 01:40:23 PM UTC
Advanced Gtk+ Sequencer version 6.5.x posted by jkraehemann, Sun 11 Feb 2024 05:06:15 PM UTC
Advanced Gtk+ Sequencer version 6.3.5 posted by jkraehemann, Fri 19 Jan 2024 11:53:24 AM UTC
Advanced Gtk+ Sequencer v6.1.0 released posted by jkraehemann, Thu 28 Sep 2023 04:55:19 AM UTC
Advanced Gtk+ Sequencer v6.0.0 released posted by jkraehemann, Mon 21 Aug 2023 11:48:52 AM UTC

GSequencer v3.3.x replaced all recalls by ags-fx engine

Item posted by Joël Krähemann <jkraehemann> on Wed 20 May 2020 07:25:15 AM UTC.

The new release v3.3.3 provides a replacement for ags/audio/recall/ which is located in ags/audio/fx/. The new ags-fx engine relies on AgsRecall, too.

The improvement over the prior implementation is, that the new ags-fx engine only does AgsRecall::automate() and AgsRecall::run-inter() during playback. The initialization staging isn't changed. So the recalls get initialized as usual:

  • AgsRecall::duplicate()
  • AgsRecall::resolve-dependency()
  • AgsRecall::run-init-pre()
  • AgsRecall::run-init-inter()
  • AgsRecall::run-init-post()


The staging program


AgsAudioLoop, AgsAudioThread and AgsChannelThread have got some additional functions, to control the staging program. It calls ags_channel_recursive_run_stage() as specified by:

  • ags_audio_loop_set_staging_program()
  • ags_audio_thread_set_staging_program()
  • ags_channel_thread_set_staging_program()


The staging program uses AgsSoundStagingFlags from ags/audio/ags_sound_enums.h


typedef enum{
  AGS_SOUND_STAGING_CHECK_RT_DATA       = 1,
  AGS_SOUND_STAGING_RUN_INIT_PRE        = 1 <<  1,
  AGS_SOUND_STAGING_RUN_INIT_INTER      = 1 <<  2,
  AGS_SOUND_STAGING_RUN_INIT_POST       = 1 <<  3,
  AGS_SOUND_STAGING_FEED_INPUT_QUEUE    = 1 <<  4,
  AGS_SOUND_STAGING_AUTOMATE            = 1 <<  5,
  AGS_SOUND_STAGING_RUN_PRE             = 1 <<  6,
  AGS_SOUND_STAGING_RUN_INTER           = 1 <<  7,
  AGS_SOUND_STAGING_RUN_POST            = 1 <<  8,
  AGS_SOUND_STAGING_DO_FEEDBACK         = 1 <<  9,
  AGS_SOUND_STAGING_FEED_OUTPUT_QUEUE   = 1 << 10,
  AGS_SOUND_STAGING_FINI                = 1 << 11,
  AGS_SOUND_STAGING_CANCEL              = 1 << 12,
  AGS_SOUND_STAGING_DONE                = 1 << 13,
  AGS_SOUND_STAGING_REMOVE              = 1 << 14,
  AGS_SOUND_STAGING_RESET               = 1 << 15,
  AGS_SOUND_STAGING_FX                  = 1 << 16,
}AgsSoundStagingFlags;


Feature rich AgsRecall implementation


ags-fx-notation does everything related to AgsNotation like playback and recording from MIDI device. ags-fx-dssi and ags-fx-lv2 inherit it.

Another important thing is, the new fx recalls provide AgsRecall implementations for every context:

  • AgsRecallAudio
  • AgsRecallAudioRun
  • AgsRecallChannel
  • AgsRecallChannelRun
  • AgsRecallRecycling
  • AgsRecallAudioSignal


Further we don't use the run suffix anymore, but the processor suffix instead. Like AgsFxNotationAudioProcessor or AgsFxPatternAudioProcessor, which is basically your running AgsRecall.





by Joël

 

Back to the top

Powered by Savane 3.13-4b48.
Corresponding source code