Advanced Gtk+ Sequencer - News
GSequencer v2.0.0 - forecast
Item posted by Joël Krähemann <jkraehemann> on Tue 06 Feb 2018 03:04:57 PM UTC.
The Advanced Gtk+ Sequencer branch 2.0.x was just created, few days ago. First a big refactoring will take place. I have tried to figure out common enumerations and specify them in ags/audio/ags_sound_enums.h. It looks currently like:
typedef enum{
AGS_SOUND_ABILITY_PLAYBACK = 1,
AGS_SOUND_ABILITY_NOTATION = 1 << 1,
AGS_SOUND_ABILITY_SEQUENCER = 1 << 2,
AGS_SOUND_ABILITY_WAVE = 1 << 3,
AGS_SOUND_ABILITY_MIDI = 1 << 4,
}AgsSoundAbilityFlags;
typedef enum{
AGS_SOUND_BEHAVIOUR_PATTERN_MODE = 1,
AGS_SOUND_BEHAVIOUR_BULK_MODE = 1 << 1,
AGS_SOUND_BEHAVIOUR_REVERSE_MAPPING = 1 << 2,
AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_OUTPUT = 1 << 3,
AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_INPUT = 1 << 4,
AGS_SOUND_BEHAVIOUR_CHAINED_TO_OUTPUT = 1 << 5,
AGS_SOUND_BEHAVIOUR_CHAINED_TO_INPUT = 1 << 6,
AGS_SOUND_BEHAVIOUR_PERSISTENT = 1 << 7,
AGS_SOUND_BEHAVIOUR_PERSISTENT_PLAYBACK = 1 << 8,
AGS_SOUND_BEHAVIOUR_PERSISTENT_NOTATION = 1 << 9,
AGS_SOUND_BEHAVIOUR_PERSISTENT_SEQUENCER = 1 << 10,
AGS_SOUND_BEHAVIOUR_PERSISTENT_WAVE = 1 << 11,
AGS_SOUND_BEHAVIOUR_PERSISTENT_MIDI = 1 << 12,
AGS_SOUND_BEHAVIOUR_PROPAGATE_DONE = 1 << 13,
}AgsSoundBehaviourFlags;
typedef enum{
AGS_SOUND_SCOPE_PLAYBACK,
AGS_SOUND_SCOPE_NOTATION,
AGS_SOUND_SCOPE_SEQUENCER,
AGS_SOUND_SCOPE_WAVE,
AGS_SOUND_SCOPE_MIDI,
AGS_SOUND_SCOPE_LAST,
}AgsSoundScope;
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 = 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_CANCEL = 1 << 11,
AGS_SOUND_STAGING_DONE = 1 << 12,
AGS_SOUND_STAGING_REMOVE = 1 << 13,
}AgsSoundStagingFlags;
tyepdef enum{
AGS_SOUND_STATE_IS_WAITING = 1,
AGS_SOUND_STATE_IS_ACTIVE = 1 << 1,
AGS_SOUND_STATE_IS_PROCESSING = 1 << 2,
AGS_SOUND_STATE_IS_TERMINATING = 1 << 3,
}AgsSoundStateFlags;
Resources only per ability
To distinguish what an AgsAudio or alike can do and what no, the AgsSoundAbilityFlags was created.
Behaviour of processing
Processing audio data has got many flavors and are updated, too.
The 5 scopes
The highlight are definitively the specified scopes. 2 of them are completely new: AGS_SCOPE_WAVE and AGS_SCOPE_MIDI. A scope is usually processed by its own thread. AgsWave has yet been added to the source code and is yet ready for use. But the addition of AgsMidi is still missing. It shall be able to record raw MIDI data and store it as SMF.
Staging specification
Better semantics of what is processed seems to be necessary as extending the capabilities of GSequencer.
State handling
An other common enumeration is done to tell what state the scope currently is in.
Powered by Savane 3.13-8ccc.
Corresponding source code