Advanced Gtk+ Sequencer - News: GSequencer v3.3.x replaced all recalls by ags-fx engine
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
Powered by Savane 3.14-3b9d.
Corresponding source code