AgsAudio

AgsAudio — A container of channels organizing them as input or output

Synopsis

#include <ags/audio/ags_audio.h>

struct              AgsAudio;
struct              AgsAudioClass;
enum                AgsAudioFlags;
void                ags_audio_add_recall                (AgsAudio *audio,
                                                         GObject *recall,
                                                         gboolean play);
void                ags_audio_add_recall_container      (AgsAudio *audio,
                                                         GObject *recall_container);
void                ags_audio_add_recall_id             (AgsAudio *audio,
                                                         GObject *recall_id);
void                ags_audio_add_recycling_container   (AgsAudio *audio,
                                                         GObject *recycling_container);
void                ags_audio_cancel                    (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
void                ags_audio_done                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
void                ags_audio_duplicate_recall          (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
GList *             ags_audio_find_port                 (AgsAudio *audio);
void                ags_audio_init_recall               (AgsAudio *audio,
                                                         gint stage,
                                                         AgsRecallID *recall_id);
AgsRecallID *       ags_audio_init_run                  (AgsAudio *audio);
gboolean            ags_audio_is_playing                (AgsAudio *audio);
AgsAudio *          ags_audio_new                       ();
void                ags_audio_open_files                (AgsAudio *audio,
                                                         GSList *filenames,
                                                         gboolean overwrite_channels,
                                                         gboolean create_channels);
void                ags_audio_play                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id,
                                                         gint stage);
void                ags_audio_recall_change_state       (AgsAudio *audio,
                                                         gboolean enable);
GList *             ags_audio_recursive_play_init       (AgsAudio *audio,
                                                         gboolean playback,
                                                         gboolean sequencer,
                                                         gboolean notation);
void                ags_audio_remove                    (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
void                ags_audio_remove_recall             (AgsAudio *audio,
                                                         GObject *recall,
                                                         gboolean play);
void                ags_audio_remove_recall_container   (AgsAudio *audio,
                                                         GObject *recall_container);
void                ags_audio_remove_recall_id          (AgsAudio *audio,
                                                         GObject *recall_id);
void                ags_audio_remove_recycling_container
                                                        (AgsAudio *audio,
                                                         GObject *recycling_container);
void                ags_audio_resolve_recall            (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
void                ags_audio_set_audio_channels        (AgsAudio *audio,
                                                         guint audio_channels);
void                ags_audio_set_devout                (AgsAudio *audio,
                                                         GObject *devout);
void                ags_audio_set_flags                 (AgsAudio *audio,
                                                         guint flags);
void                ags_audio_set_pads                  (AgsAudio *audio,
                                                         GType type,
                                                         guint pads);
void                ags_audio_set_sequence_length       (AgsAudio *audio,
                                                         guint sequence_length);
void                ags_audio_tact                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id);
void                ags_audio_unset_flags               (AgsAudio *audio,
                                                         guint flags);

Description

AgsAudio organizes AgsChannel objects either as input or output and is responsible of their alignment. The class can contain AgsRecall objects in order to perform computation on all channels or in audio context. Therefor exists AgsRecyclingContainer acting as tree context.

At least one AgsRecallID is assigned to it and has one more if AGS_AUDIO_OUTPUT_HAS_RECYCLING is set as flag.

If AGS_AUDIO_HAS_NOTATION is set as flag one AgsNotation is allocated per audio channel.

Details

struct AgsAudio

struct AgsAudio {
  GObject object;

  guint flags;

  GObject *devout;
  guint level;
  
  guint sequence_length;
  guint audio_channels;
  guint frequence;

  guint output_pads;
  guint output_lines;

  guint input_pads;
  guint input_lines;

  AgsChannel *output;
  AgsChannel *input;

  gpointer devout_play_domain;

  GList *notation;

  GList *recall_id;
  GList *recycling_container;

  GList *container;
  GList *recall;
  GList *play;

  GList *recall_remove; //TODO:JK: verify deprecation
  GList *play_remove; //TODO:JK: verify deprecation

  GtkWidget *machine;
};

struct AgsAudioClass

struct AgsAudioClass {
  GObjectClass object;

  void (*set_audio_channels)(AgsAudio *audio,
			     guint audio_channels, guint audio_channels_old);
  void (*set_pads)(AgsAudio *audio,
		   GType type,
		   guint pads, guint pads_old);

  AgsRecallID* (*init_run)(AgsAudio *audio);
  void (*tact)(AgsAudio *audio, AgsRecallID *recall_id);
  void (*done)(AgsAudio *audio, AgsRecallID *recall_id);
};

enum AgsAudioFlags

typedef enum {
  AGS_AUDIO_OUTPUT_HAS_RECYCLING        = 1,
  AGS_AUDIO_INPUT_HAS_RECYCLING         = 1 <<  1,
  AGS_AUDIO_INPUT_TAKES_FILE            = 1 <<  2,
  AGS_AUDIO_HAS_NOTATION                = 1 <<  3,
  AGS_AUDIO_SYNC                        = 1 <<  4, // can be combined with below
  AGS_AUDIO_ASYNC                       = 1 <<  5,
  AGS_AUDIO_RUNNING                     = 1 <<  6,
  AGS_AUDIO_PLAYING                     = 1 <<  7,
  AGS_AUDIO_NOTATION_DEFAULT            = 1 <<  8,
} AgsAudioFlags;

ags_audio_add_recall ()

void                ags_audio_add_recall                (AgsAudio *audio,
                                                         GObject *recall,
                                                         gboolean play);

Adds a recall.

audio :

an AgsAudio

recall_container :

the AgsRecall

play :

TRUE if simple playback.

Since 0.4


ags_audio_add_recall_container ()

void                ags_audio_add_recall_container      (AgsAudio *audio,
                                                         GObject *recall_container);

Adds a recall container.

audio :

an AgsAudio

recall_container :

the AgsRecallContainer

Since 0.4


ags_audio_add_recall_id ()

void                ags_audio_add_recall_id             (AgsAudio *audio,
                                                         GObject *recall_id);

Adds a recall id.

audio :

an AgsAudio

recall_id :

the AgsRecallID

Since 0.4


ags_audio_add_recycling_container ()

void                ags_audio_add_recycling_container   (AgsAudio *audio,
                                                         GObject *recycling_container);

Adds a recycling container.

audio :

an AgsAudio

recycling_container :

the AgsRecyclingContainer

Since 0.4


ags_audio_cancel ()

void                ags_audio_cancel                    (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Cancel processing audio data.

audio :

the AgsAudio

recall_id :

the AgsRecallID to apply to

Since 0.4


ags_audio_done ()

void                ags_audio_done                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Is emitted as playing audio is done.

audio :

an AgsAudio

recall_id :

the current AgsRecallID

Since 0.4


ags_audio_duplicate_recall ()

void                ags_audio_duplicate_recall          (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Duplicate all AgsRecall templates of this AgsAudio.

audio :

an AgsAudio

recall_id :

an AgsRecallID

Since 0.4


ags_audio_find_port ()

GList *             ags_audio_find_port                 (AgsAudio *audio);

Retrieve all ports of AgsAudio.

audio :

an AgsAudio

Returns :

a new GList containing AgsPort

Since 0.4


ags_audio_init_recall ()

void                ags_audio_init_recall               (AgsAudio *audio,
                                                         gint stage,
                                                         AgsRecallID *recall_id);

Initializes the recalls of audio

audio :

the AgsAudio

stage :

stage benning at 0 up to 2, or just -1

recall_id :

the AgsRecallID to use or NULL

Since 0.4


ags_audio_init_run ()

AgsRecallID *       ags_audio_init_run                  (AgsAudio *audio);

Is emitted as audio is initialized.

audio :

an AgsAudio

Returns :

the current AgsRecallID

Since 0.4


ags_audio_is_playing ()

gboolean            ags_audio_is_playing                (AgsAudio *audio);

Determine if AgsAudio is playing.

audio :

the AgsAudio

Returns :

TRUE if it's playing otherwise FALSE

Since 0.4


ags_audio_new ()

AgsAudio *          ags_audio_new                       ();

Creates an AgsAudio, with defaults of devout.

devout :

an AgsDevout

Returns :

a new AgsAudio

Since 0.3


ags_audio_open_files ()

void                ags_audio_open_files                (AgsAudio *audio,
                                                         GSList *filenames,
                                                         gboolean overwrite_channels,
                                                         gboolean create_channels);

Open some files.

audio :

the AgsAudio

filenames :

the files to open

overwrite_channels :

if existing channels should be assigned

create_channels :

if new channels should be created as not fitting if combined with overwrite_channels

Since 0.4


ags_audio_play ()

void                ags_audio_play                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id,
                                                         gint stage);

Performs on single play call of appropriate stage.

audio :

the AgsAudio

recall_id :

the AgsRecallID to apply to

stage :

valid range is from 0 up to 2

Since 0.4


ags_audio_recall_change_state ()

void                ags_audio_recall_change_state       (AgsAudio *audio,
                                                         gboolean enable);

ags_audio_recursive_play_init ()

GList *             ags_audio_recursive_play_init       (AgsAudio *audio,
                                                         gboolean playback,
                                                         gboolean sequencer,
                                                         gboolean notation);

Initializes AgsAudio in order to do playback, sequencer or notation.

audio :

the AgsAudio object

playback :

if doing playback

sequencer :

if doing sequencer

notation :

if doing notation

Returns :

a list containing all AgsRecallID

Since 0.4


ags_audio_remove ()

void                ags_audio_remove                    (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Remove processing audio data.

audio :

the AgsAudio

recall_id :

the AgsRecallID to apply to

Since 0.4


ags_audio_remove_recall ()

void                ags_audio_remove_recall             (AgsAudio *audio,
                                                         GObject *recall,
                                                         gboolean play);

Removes a recall.

audio :

an AgsAudio

recall_container :

the AgsRecall

play :

TRUE if simple playback.

Since 0.4


ags_audio_remove_recall_container ()

void                ags_audio_remove_recall_container   (AgsAudio *audio,
                                                         GObject *recall_container);

Removes a recall container.

audio :

an AgsAudio

recall_container :

the AgsRecallContainer

Since 0.4


ags_audio_remove_recall_id ()

void                ags_audio_remove_recall_id          (AgsAudio *audio,
                                                         GObject *recall_id);

Removes a recall id.

audio :

an AgsAudio

recall_id :

the AgsRecallID

Since 0.4


ags_audio_remove_recycling_container ()

void                ags_audio_remove_recycling_container
                                                        (AgsAudio *audio,
                                                         GObject *recycling_container);

Removes a recycling container.

audio :

an AgsAudio

recycling_container :

the AgsRecyclingContainer

Since 0.4


ags_audio_resolve_recall ()

void                ags_audio_resolve_recall            (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Performs resolving of recalls.

audio :

the AgsAudio

recall_id :

the AgsRecallID to use

Since 0.4


ags_audio_set_audio_channels ()

void                ags_audio_set_audio_channels        (AgsAudio *audio,
                                                         guint audio_channels);

Resize audio channels AgsInput will be allocated first.

audio :

the AgsAudio

audio_channels :

new audio channels

Since 0.3


ags_audio_set_devout ()

void                ags_audio_set_devout                (AgsAudio *audio,
                                                         GObject *devout);

Sets a devout object on audio.

audio :

the AgsAudio

devout :

an AgsDevout

Since 0.4


ags_audio_set_flags ()

void                ags_audio_set_flags                 (AgsAudio *audio,
                                                         guint flags);

Enable a feature of AgsAudio.

audio :

an AgsAudio

flags :

see enum AgsAudioFlags

Since 0.4


ags_audio_set_pads ()

void                ags_audio_set_pads                  (AgsAudio *audio,
                                                         GType type,
                                                         guint pads);

Sets pad count for the apropriate type

audio :

an AgsAudio

type :

AGS_TYPE_INPUT or AGS_TYPE_OUTPUT

pads :

new pad count

Since 0.3


ags_audio_set_sequence_length ()

void                ags_audio_set_sequence_length       (AgsAudio *audio,
                                                         guint sequence_length);

Sets sequence length.

audio :

an AgsAudio

sequence_length :

the sequence length

Since 0.4


ags_audio_tact ()

void                ags_audio_tact                      (AgsAudio *audio,
                                                         AgsRecallID *recall_id);

Is emitted as audio is played.

audio :

an AgsAudio

recall_id :

the current AgsRecallID

Since 0.4


ags_audio_unset_flags ()

void                ags_audio_unset_flags               (AgsAudio *audio,
                                                         guint flags);

Disable a feature of AgsAudio.

audio :

an AgsAudio

flags :

see enum AgsAudioFlags

Since 0.4