newsAdvanced 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.


Back to the top

Powered by Savane 3.13-3cd0.
Corresponding source code