Advanced Gtk+ Sequencer - News
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.16.
Corresponding source code
