krähemann.com

AgsSequencer

AgsSequencer — unique access to sequencers

Signals

void offset-changed Run Last
void tic Run Last

Object Hierarchy

    GInterface
    ╰── AgsSequencer

Includes

#include <ags/object/ags_sequencer.h>

Description

The AgsSequencer interface gives you a unique access to MIDI devices.

Functions

ags_sequencer_set_device ()

void
ags_sequencer_set_device (AgsSequencer *sequencer,
                          gchar *card_id);

Set device.

Parameters

sequencer

the AgsSequencer

 

card_id

the device to set

 

Since: 3.0.0


ags_sequencer_get_device ()

gchar *
ags_sequencer_get_device (AgsSequencer *sequencer);

Get device.

Parameters

sequencer

the AgsSequencer

 

Returns

the device's identifier

Since: 3.0.0


ags_sequencer_list_cards ()

void
ags_sequencer_list_cards (AgsSequencer *sequencer,
                          GList **card_id,
                          GList **card_name);

Retrieve card_id and card_name as a list of strings.

Parameters

sequencer

the AgsSequencer

 

card_id

a list containing card ids.

[element-type utf8][out callee-allocates][array zero-terminated=1][transfer full]

card_name

a list containing card names.

[element-type utf8][out callee-allocates][array zero-terminated=1][transfer full]

Since: 3.0.0


ags_sequencer_is_starting ()

gboolean
ags_sequencer_is_starting (AgsSequencer *sequencer);

Get starting.

Parameters

sequencer

the AgsSequencer

 

Returns

TRUE if starting, else FALSE

Since: 3.0.0


ags_sequencer_is_playing ()

gboolean
ags_sequencer_is_playing (AgsSequencer *sequencer);

Get playing.

Parameters

sequencer

the AgsSequencer

 

Returns

TRUE if playing, else FALSE

Since: 3.0.0


ags_sequencer_is_recording ()

gboolean
ags_sequencer_is_recording (AgsSequencer *sequencer);

Get recording.

Parameters

sequencer

the AgsSequencer

 

Returns

TRUE if recording, else FALSE

Since: 3.0.0


ags_sequencer_play_init ()

void
ags_sequencer_play_init (AgsSequencer *sequencer,
                         GError **error);

Initializes the sequencer for playback.

Parameters

sequencer

the AgsSequencer

 

error

an error that may occure

 

Since: 3.0.0


ags_sequencer_play ()

void
ags_sequencer_play (AgsSequencer *sequencer,
                    GError **error);

Plays the current buffer of sequencer.

Parameters

sequencer

the AgsSequencer

 

error

an error that may occure

 

Since: 3.0.0


ags_sequencer_record_init ()

void
ags_sequencer_record_init (AgsSequencer *sequencer,
                           GError **error);

Initializes the sequencer for recordback.

Parameters

sequencer

the AgsSequencer

 

error

an error that may occure

 

Since: 3.0.0


ags_sequencer_record ()

void
ags_sequencer_record (AgsSequencer *sequencer,
                      GError **error);

Records the current buffer of sequencer.

Parameters

sequencer

the AgsSequencer

 

error

an error that may occure

 

Since: 3.0.0


ags_sequencer_stop ()

void
ags_sequencer_stop (AgsSequencer *sequencer);

Stops the sequencer from playing to it.

Parameters

sequencer

the AgsSequencer

 

Since: 3.0.0


ags_sequencer_tic ()

void
ags_sequencer_tic (AgsSequencer *sequencer);

Every call to play may generate a tic.

Parameters

sequencer

the AgsSequencer

 

Since: 3.0.0


ags_sequencer_offset_changed ()

void
ags_sequencer_offset_changed (AgsSequencer *sequencer,
                              guint note_offset);

Callback when counter expires minor note offset.

Parameters

sequencer

the AgsSequencer

 

note_offset

the note offset

 

Since: 3.0.0


ags_sequencer_get_buffer ()

void *
ags_sequencer_get_buffer (AgsSequencer *sequencer,
                          guint *buffer_length);

Get current playback buffer.

Parameters

sequencer

the AgsSequencer

 

buffer_length

the buffer's length

 

Returns

current playback buffer

Since: 3.0.0


ags_sequencer_get_next_buffer ()

void *
ags_sequencer_get_next_buffer (AgsSequencer *sequencer,
                               guint *buffer_length);

Get future playback buffer.

Parameters

sequencer

the AgsSequencer

 

buffer_length

the buffer's length

 

Returns

next playback buffer

Since: 3.0.0


ags_sequencer_lock_buffer ()

void
ags_sequencer_lock_buffer (AgsSequencer *sequencer,
                           void *buffer);

Lock buffer .

Parameters

sequencer

the AgsSequencer

 

buffer

the buffer to lock

 

Since: 3.0.0


ags_sequencer_unlock_buffer ()

void
ags_sequencer_unlock_buffer (AgsSequencer *sequencer,
                             void *buffer);

Unlock buffer .

Parameters

sequencer

the AgsSequencer

 

buffer

the buffer to unlock

 

Since: 3.0.0


ags_sequencer_set_bpm ()

void
ags_sequencer_set_bpm (AgsSequencer *sequencer,
                       gdouble bpm);

Set current playback bpm.

Parameters

sequencer

the AgsSequencer

 

bpm

the bpm to set

 

Since: 3.0.0


ags_sequencer_get_bpm ()

gdouble
ags_sequencer_get_bpm (AgsSequencer *sequencer);

Get current playback bpm.

Parameters

sequencer

the AgsSequencer

 

Returns

bpm

Since: 3.0.0


ags_sequencer_set_delay_factor ()

void
ags_sequencer_set_delay_factor (AgsSequencer *sequencer,
                                gdouble delay_factor);

Set current playback delay factor.

Parameters

sequencer

the AgsSequencer

 

delay_factor

the delay factor to set

 

Since: 3.0.0


ags_sequencer_get_delay_factor ()

gdouble
ags_sequencer_get_delay_factor (AgsSequencer *sequencer);

Get current playback delay factor.

Parameters

sequencer

the AgsSequencer

 

Returns

delay factor

Since: 3.0.0


ags_sequencer_set_start_note_offset ()

void
ags_sequencer_set_start_note_offset (AgsSequencer *sequencer,
                                     guint start_note_offset);

Set start playback note offset.

Parameters

sequencer

the AgsSequencer

 

start_note_offset

the start note offset to set

 

Since: 3.0.0


ags_sequencer_get_start_note_offset ()

guint
ags_sequencer_get_start_note_offset (AgsSequencer *sequencer);

Get start playback note offset.

Parameters

sequencer

the AgsSequencer

 

Returns

the start note offset

Since: 3.0.0


ags_sequencer_set_note_offset ()

void
ags_sequencer_set_note_offset (AgsSequencer *sequencer,
                               guint note_offset);

Set current playback note offset.

Parameters

sequencer

the AgsSequencer

 

note_offset

the note offset to set

 

Since: 3.0.0


ags_sequencer_get_note_offset ()

guint
ags_sequencer_get_note_offset (AgsSequencer *sequencer);

Get current playback note offset.

Parameters

sequencer

the AgsSequencer

 

Returns

offset

Since: 3.0.0


AGS_IS_SEQUENCER()

#define AGS_IS_SEQUENCER(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE((obj), AGS_TYPE_SEQUENCER))

AGS_IS_SEQUENCER_INTERFACE()

#define AGS_IS_SEQUENCER_INTERFACE(vtable)    (G_TYPE_CHECK_CLASS_TYPE((vtable), AGS_TYPE_SEQUENCER))

AGS_SEQUENCER()

#define AGS_SEQUENCER(obj)                    (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_SEQUENCER, AgsSequencer))

AGS_SEQUENCER_GET_INTERFACE()

#define AGS_SEQUENCER_GET_INTERFACE(obj)      (G_TYPE_INSTANCE_GET_INTERFACE((obj), AGS_TYPE_SEQUENCER, AgsSequencerInterface))

AGS_SEQUENCER_INTERFACE()

#define AGS_SEQUENCER_INTERFACE(vtable)       (G_TYPE_CHECK_CLASS_CAST((vtable), AGS_TYPE_SEQUENCER, AgsSequencerInterface))

ags_sequencer_get_type ()

GType
ags_sequencer_get_type ();

Types and Values

AGS_SEQUENCER_MAX_MIDI_CHANNELS

#define AGS_SEQUENCER_MAX_MIDI_CHANNELS (16)

AGS_SEQUENCER_MAX_MIDI_KEYS

#define AGS_SEQUENCER_MAX_MIDI_KEYS (128)

AGS_SEQUENCER_DEFAULT_SAMPLERATE

#define AGS_SEQUENCER_DEFAULT_SAMPLERATE (44100.0)

AGS_SEQUENCER_DEFAULT_BUFFER_SIZE

#define AGS_SEQUENCER_DEFAULT_BUFFER_SIZE (944)

AGS_SEQUENCER_DEFAULT_DEVICE

#define AGS_SEQUENCER_DEFAULT_DEVICE "hw:0"

AGS_SEQUENCER_DEFAULT_BPM

#define AGS_SEQUENCER_DEFAULT_BPM (120.0)

AGS_SEQUENCER_DEFAULT_DELAY_FACTOR

#define AGS_SEQUENCER_DEFAULT_DELAY_FACTOR (1.0 / 4.0)

AGS_SEQUENCER_DEFAULT_JIFFIE

#define AGS_SEQUENCER_DEFAULT_JIFFIE ((double) AGS_SEQUENCER_DEFAULT_SAMPLERATE / (double) AGS_SEQUENCER_DEFAULT_BUFFER_SIZE)

AGS_SEQUENCER_DEFAULT_TACT

#define AGS_SEQUENCER_DEFAULT_TACT (1.0 / 1.0)

AGS_SEQUENCER_DEFAULT_TACT_JIFFIE

#define AGS_SEQUENCER_DEFAULT_TACT_JIFFIE (60.0 / AGS_SEQUENCER_DEFAULT_BPM * AGS_SEQUENCER_DEFAULT_TACT)

AGS_SEQUENCER_DEFAULT_TACTRATE

#define AGS_SEQUENCER_DEFAULT_TACTRATE (1.0 / AGS_SEQUENCER_DEFAULT_TACT_JIFFIE)

AGS_SEQUENCER_DEFAULT_SCALE

#define AGS_SEQUENCER_DEFAULT_SCALE (1.0)

AGS_SEQUENCER_DEFAULT_DELAY

#define AGS_SEQUENCER_DEFAULT_DELAY (AGS_SEQUENCER_DEFAULT_JIFFIE * (60.0 / AGS_SEQUENCER_DEFAULT_BPM))

AGS_SEQUENCER_DEFAULT_PERIOD

#define AGS_SEQUENCER_DEFAULT_PERIOD (64.0)

AGS_SEQUENCER_DEFAULT_LATENCY

#define AGS_SEQUENCER_DEFAULT_LATENCY (400)

AGS_TYPE_SEQUENCER

#define AGS_TYPE_SEQUENCER                    (ags_sequencer_get_type())

AgsSequencer

typedef struct _AgsSequencer AgsSequencer;

struct AgsSequencerInterface

struct AgsSequencerInterface {
  GTypeInterface ginterface;

  void (*set_device)(AgsSequencer *sequencer,
		     gchar *card_id);
  gchar* (*get_device)(AgsSequencer *sequencer);

  void (*list_cards)(AgsSequencer *sequencer,
		     GList **card_id, GList **card_name);

  gboolean (*is_starting)(AgsSequencer *sequencer);
  gboolean (*is_playing)(AgsSequencer *sequencer);
  gboolean (*is_recording)(AgsSequencer *sequencer);

  void (*play_init)(AgsSequencer *sequencer,
		    GError **error);
  void (*play)(AgsSequencer *sequencer,
	       GError **error);

  void (*record_init)(AgsSequencer *sequencer,
		      GError **error);
  void (*record)(AgsSequencer *sequencer,
		 GError **error);

  void (*stop)(AgsSequencer *sequencer);

  void (*tic)(AgsSequencer *sequencer);
  void (*offset_changed)(AgsSequencer *sequencer,
			 guint note_offset);

  void* (*get_buffer)(AgsSequencer *sequencer,
		      guint *buffer_length);
  void* (*get_next_buffer)(AgsSequencer *sequencer,
			   guint *buffer_length);

  void (*lock_buffer)(AgsSequencer *sequencer,
		      void *buffer);
  void (*unlock_buffer)(AgsSequencer *sequencer,
			void *buffer);

  void (*set_bpm)(AgsSequencer *sequencer,
		  gdouble bpm);
  gdouble (*get_bpm)(AgsSequencer *sequencer);

  void (*set_delay_factor)(AgsSequencer *sequencer,
			   gdouble delay_factor);
  gdouble (*get_delay_factor)(AgsSequencer *sequencer);

  void (*set_start_note_offset)(AgsSequencer *sequencer,
				guint start_note_offset);
  guint (*get_start_note_offset)(AgsSequencer *sequencer);

  void (*set_note_offset)(AgsSequencer *sequencer,
			  guint note_offset);
  guint (*get_note_offset)(AgsSequencer *sequencer);
};

Signal Details

The “offset-changed” signal

void
user_function (AgsSequencer *sequencer,
               guint         note_offset,
               gpointer      user_data)

The ::offset-changed signal notifies about changed position within notation.

Parameters

sequencer

the AgsSequencer object

 

note_offset

new notation offset

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 3.0.0


The “tic” signal

void
user_function (AgsSequencer *sequencer,
               gpointer      user_data)

The ::tic signal is emitted every tic of the sequencer. This notifies about a newly played buffer.

Parameters

sequencer

the AgsSequencer object

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last

Since: 3.0.0