AgsPlayable

AgsPlayable — read/write audio

Synopsis

#include <ags/object/ags_playable.h>

#define             AGS_PLAYABLE_ERROR
typedef             AgsPlayable;
enum                AgsPlayableError;
struct              AgsPlayableInterface;
void                ags_playable_close                  (AgsPlayable *playable);
GQuark              ags_playable_error_quark            ();
void                ags_playable_flush                  (AgsPlayable *playable);
void                ags_playable_info                   (AgsPlayable *playable,
                                                         guint *channels,
                                                         guint *frames,
                                                         guint *loop_start,
                                                         guint *loop_end,
                                                         GError **error);
gboolean            ags_playable_iter_next              (AgsPlayable *playable);
void                ags_playable_iter_start             (AgsPlayable *playable);
guint               ags_playable_level_count            (AgsPlayable *playable);
void                ags_playable_level_select           (AgsPlayable *playable,
                                                         guint nth_level,
                                                         gchar *sublevel_name,
                                                         GError **error);
void                ags_playable_level_up               (AgsPlayable *playable,
                                                         guint levels,
                                                         GError **error);
guint               ags_playable_nth_level              (AgsPlayable *playable);
gboolean            ags_playable_open                   (AgsPlayable *playable,
                                                         gchar *name);
signed short *      ags_playable_read                   (AgsPlayable *playable,
                                                         guint channel,
                                                         GError **error);
GList *             ags_playable_read_audio_signal      (AgsPlayable *playable,
                                                         AgsDevout *devout,
                                                         guint start_channel,
                                                         guint channels);
gboolean            ags_playable_rw_open                (AgsPlayable *playable,
                                                         gchar *name,
                                                         gboolean create,
                                                         guint samplerate,
                                                         guint channels,
                                                         guint frames,
                                                         guint format);
void                ags_playable_seek                   (AgsPlayable *playable,
                                                         guint frames,
                                                         gint whence);
gchar *             ags_playable_selected_level         (AgsPlayable *playable);
gchar **            ags_playable_sublevel_names         (AgsPlayable *playable);
void                ags_playable_write                  (AgsPlayable *playable,
                                                         signed short *buffer,
                                                         guint buffer_length);

Description

The AgsPlayable interface gives you a unique access to file related IO operations.

Details

AGS_PLAYABLE_ERROR

#define AGS_PLAYABLE_ERROR (ags_playable_error_quark())

AgsPlayable

typedef void AgsPlayable;

enum AgsPlayableError

typedef enum {
  AGS_PLAYABLE_ERROR_NO_SUCH_LEVEL,
  AGS_PLAYABLE_ERROR_NO_SAMPLE,
} AgsPlayableError;

struct AgsPlayableInterface

struct AgsPlayableInterface {
  GTypeInterface interface;

  gboolean (*open)(AgsPlayable *playable, gchar *name);
  gboolean (*rw_open)(AgsPlayable *playable, gchar *name,
		      gboolean create,
		      guint samplerate, guint channels,
		      guint frames,
		      guint format);

  /* these functions are especially for soundfonts */
  guint (*level_count)(AgsPlayable *playable);
  guint (*nth_level)(AgsPlayable *playable);
  gchar* (*selected_level)(AgsPlayable *playable);

  gchar** (*sublevel_names)(AgsPlayable *playable);
  void (*level_select)(AgsPlayable *playable,
		       guint nth_level, gchar *sublevel_name,
		       GError **error);
  void (*level_up)(AgsPlayable *playable,
		   guint levels,
		   GError **error);

  void (*iter_start)(AgsPlayable *playable);
  gboolean (*iter_next)(AgsPlayable *playable);

  /* read sample data */
  void (*info)(AgsPlayable *playable,
	       guint *channels, guint *frames,
	       guint *loop_start, guint *loop_end,
	       GError **error);
  signed short* (*read)(AgsPlayable *playable,
			guint channel,
			GError **error);

  /* write sample data */
  void (*write)(AgsPlayable *playable,
		signed short *buffer, guint buffer_length);
  void (*flush)(AgsPlayable *playable);

  /* position */
  void (*seek)(AgsPlayable *playable,
	       guint frames, gint whence);

  /* close */
  void (*close)(AgsPlayable *playable);
};

ags_playable_close ()

void                ags_playable_close                  (AgsPlayable *playable);

Close audio file.

playable :

an AgsPlayable

ags_playable_error_quark ()

GQuark              ags_playable_error_quark            ();

ags_playable_flush ()

void                ags_playable_flush                  (AgsPlayable *playable);

Flush internal audio buffer.

playable :

an AgsPlayable

ags_playable_info ()

void                ags_playable_info                   (AgsPlayable *playable,
                                                         guint *channels,
                                                         guint *frames,
                                                         guint *loop_start,
                                                         guint *loop_end,
                                                         GError **error);

Retrieve information about selected audio data.

playable :

an AgsPlayable

channels :

channels

frames :

frames

loop_start :

loop start

loop_end :

loop end

error :

returned error

ags_playable_iter_next ()

gboolean            ags_playable_iter_next              (AgsPlayable *playable);

Iterating next on current level.

playable :

an AgsPlayable

ags_playable_iter_start ()

void                ags_playable_iter_start             (AgsPlayable *playable);

Start iterating current level.

playable :

an AgsPlayable

ags_playable_level_count ()

guint               ags_playable_level_count            (AgsPlayable *playable);

Retrieve the count of levels.

playable :

the AgsPlayable

Returns :

level count

ags_playable_level_select ()

void                ags_playable_level_select           (AgsPlayable *playable,
                                                         guint nth_level,
                                                         gchar *sublevel_name,
                                                         GError **error);

Select a level in an monolythic file where nth_level and sublevel_name are equivalent. If sublevel_name is NULL nth_level will be chosen.

playable :

an AgsPlayable

nth_level :

of type guint

sublevel_name :

a gchar pointer

error :

an error that may occure

ags_playable_level_up ()

void                ags_playable_level_up               (AgsPlayable *playable,
                                                         guint levels,
                                                         GError **error);

Move up in hierarchy.

playable :

an AgsPlayable

levels :

n-levels up

error :

returned error

ags_playable_nth_level ()

guint               ags_playable_nth_level              (AgsPlayable *playable);

Retrieve the selected level.

playable :

the AgsPlayable

Returns :

nth level

ags_playable_open ()

gboolean            ags_playable_open                   (AgsPlayable *playable,
                                                         gchar *name);

Opens a file in read-only mode.

playable :

the AgsPlayable

name :

the filename

Returns :

TRUE on success

ags_playable_read ()

signed short *      ags_playable_read                   (AgsPlayable *playable,
                                                         guint channel,
                                                         GError **error);

Read audio buffer of playable audio data.

playable :

an AgsPlayable

channel :

nth channel

error :

returned error

Returns :

audio buffer

ags_playable_read_audio_signal ()

GList *             ags_playable_read_audio_signal      (AgsPlayable *playable,
                                                         AgsDevout *devout,
                                                         guint start_channel,
                                                         guint channels);

Read the audio signal of AgsPlayable.

playable :

an AgsPlayable

devout :

the AgsDevout defaulting to

start_channel :

read from channel

channels_to_read :

n-times

Returns :

a GList of AgsAudioSignal

ags_playable_rw_open ()

gboolean            ags_playable_rw_open                (AgsPlayable *playable,
                                                         gchar *name,
                                                         gboolean create,
                                                         guint samplerate,
                                                         guint channels,
                                                         guint frames,
                                                         guint format);

Opens a file in read/write mode.

playable :

the AgsPlayable

name :

the filename

create :

if TRUE file is created

samplerate :

the samplerate of the file

channels :

the count of audio channels

frames :

the count of frames

format :

the audio file's format

Returns :

TRUE on success.

ags_playable_seek ()

void                ags_playable_seek                   (AgsPlayable *playable,
                                                         guint frames,
                                                         gint whence);

Seek playable to address.

playable :

an AgsPlayable

frames :

n-frames to seek

whence :

SEEK_SET, SEEK_CUR, or SEEK_END

ags_playable_selected_level ()

gchar *             ags_playable_selected_level         (AgsPlayable *playable);

Retrieve the selected level's name.

playable :

the AgsPlayable

Returns :

nth level name

ags_playable_sublevel_names ()

gchar **            ags_playable_sublevel_names         (AgsPlayable *playable);

Retrieve the all sub-level's name.

playable :

the AgsPlayable

Returns :

sub-level names

ags_playable_write ()

void                ags_playable_write                  (AgsPlayable *playable,
                                                         signed short *buffer,
                                                         guint buffer_length);

Write buffer_length of buffer audio data.

playable :

an AgsPlayable

buffer :

audio data

buffer_length :

frame count