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

 
 
Latest News
GSequencer v3.6.x release goals posted by jkraehemann, Fri 31 Jul 2020 10:17:04 AM UTC - 0 replies
GSequencer v3.4.x release goals posted by jkraehemann, Thu 11 Jun 2020 06:58:14 PM UTC - 0 replies
GSequencer v3.3.x replaced all recalls by ags-fx engine posted by jkraehemann, Wed 20 May 2020 07:25:15 AM UTC - 0 replies
Refactor GSequencer's recalls - the ags-fx engine posted by jkraehemann, Sun 03 May 2020 12:08:19 AM UTC - 0 replies
GSequencer v3.3.x release goals posted by jkraehemann, Fri 17 Apr 2020 12:36:11 PM UTC - 0 replies
[Submit News]
[97 news in archive]

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

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

 

Back to the top


Powered by Savane 3.5