## AgsAudioSignal

AgsAudioSignal — Contains the audio data and its alignment

## Stability Level

Stable, unless otherwise indicated

## Functions

#define | AGS_AUDIO_SIGNAL_GET_OBJ_MUTEX()
#define | AGS_AUDIO_SIGNAL_GET_STREAM_MUTEX()
#define | AGS_AUDIO_SIGNAL_GET_BACKLOG_MUTEX()
GRecMutex * | ags_audio_signal_get_obj_mutex ()
void | ags_audio_signal_stream_lock ()
void | ags_audio_signal_stream_unlock ()
gboolean | ags_audio_signal_test_flags ()
void | ags_audio_signal_set_flags ()
void | ags_audio_signal_unset_flags ()
gboolean | ags_audio_signal_test_key_format ()
void | ags_audio_signal_set_key_format ()
void * | ags_stream_alloc ()
void | ags_stream_free ()
void * | ags_stream_slice_alloc ()
void | ags_stream_slice_free ()
GObject * | ags_audio_signal_get_recycling ()
void | ags_audio_signal_set_recycling ()
GObject * | ags_audio_signal_get_output_soundcard ()
void | ags_audio_signal_set_output_soundcard ()
GObject * | ags_audio_signal_get_input_soundcard ()
void | ags_audio_signal_set_input_soundcard ()
guint | ags_audio_signal_get_samplerate ()
void | ags_audio_signal_set_samplerate ()
guint | ags_audio_signal_get_buffer_size ()
void | ags_audio_signal_set_buffer_size ()
AgsSoundcardFormat | ags_audio_signal_get_format ()
void | ags_audio_signal_set_format ()
guint | ags_audio_signal_get_attack ()
void | ags_audio_signal_set_attack ()
GList * | ags_audio_signal_get_note ()
void | ags_audio_signal_set_note ()
void | ags_audio_signal_add_note ()
void | ags_audio_signal_remove_note ()
GList * | ags_audio_signal_get_stream ()
void | ags_audio_signal_set_stream ()
gboolean | ags_audio_signal_test_stream_mode ()
void | ags_audio_signal_set_stream_mode ()
guint | ags_audio_signal_get_note_256th_attack ()
void | ags_audio_signal_set_note_256th_attack ()
void | ags_audio_signal_refresh_data ()
void | ags_audio_signal_add_stream ()
void | ags_audio_signal_stream_resize ()
void | ags_audio_signal_stream_safe_resize ()
void | ags_audio_signal_clear ()
void | ags_audio_signal_duplicate_stream ()
void | ags_audio_signal_feed ()
void | ags_audio_signal_feed_extended ()
void | ags_audio_signal_open_feed ()
void | ags_audio_signal_continue_feed ()
void | ags_audio_signal_close_feed ()
guint | ags_audio_signal_get_length_till_current ()
gboolean | ags_audio_signal_contains_note ()
AgsAudioSignal * | ags_audio_signal_get_default_template ()
GList * | ags_audio_signal_get_rt_template ()
GList * | ags_audio_signal_find_stream_current ()
GList * | ags_audio_signal_find_by_recall_id ()
gboolean | ags_audio_signal_is_active ()
AgsAudioSignal * | ags_audio_signal_new ()
AgsAudioSignal * | ags_audio_signal_new_with_length ()

## Properties

guint | attack | Read / Write
guint | buffer-size | Read / Write
AgsComplex * | damping | Read / Write
AgsAudioSignal * | default-template | Read / Write
double | delay | Read / Write
guint | first-frame | Read / Write
guint | format | Read / Write
guint | frame-count | Read / Write
GObject * | input-soundcard | Read / Write
int | input-soundcard-channel | Read / Write
guint | last-frame | Read / Write
guint | length | Read / Write
guint | loop-end | Read / Write
guint | loop-start | Read / Write
gpointer | note | Read / Write
guint | note-256th-attack | Read / Write
GObject * | output-soundcard | Read / Write
int | output-soundcard-channel | Read / Write
AgsRecallID * | recall-id | Read / Write
AgsRecycling * | recycling | Read / Write
AgsAudioSignal * | rt-template | Read / Write
guint | samplerate | Read / Write
gpointer | stream | Read
gpointer | stream-current | Read
gpointer | stream-end | Read
guint | timbre-end | Read / Write
guint | timbre-start | Read / Write
AgsComplex * | vibration | Read / Write
guint | word-size | Read

## Signals

void | add-note | Run Last
void | refresh-data | Run Last
void | remove-note | Run Last

## Types and Values

enum | AgsAudioSignalFlags
enum | AgsAudioSignalStreamMode

## Object Hierarchy

        GFlags
        ├── AgsAudioSignalFlags
        ╰── AgsAudioSignalStreamMode
        GObject
        ╰── AgsAudioSignal

## Includes

    #include <ags/audio/ags_audio_signal.h>

## Description

AgsAudioSignal organizes audio data within a GList whereby data pointing to the buffer.

It has `output-soundcard` and `input-soundcard` properties AgsRecall implementations should default to.

The `stream` property contains the processing audio data. You may set `loop-start` and `loop-end` to loop over samples until desired audio buffer length is achieved.

As accessing the audio data you should lock it with `ags_audio_signal_stream_lock()` and as completed your work you release the lock with `ags_audio_signal_stream_unlock()`.

The `note` property contains information about assigned AgsNote objects coming from AgsNotation residing in AgsAudio.

As you might see multiple key presses may apply to one AgsAudioSignal.

## Functions

### AGS_AUDIO_SIGNAL_GET_OBJ_MUTEX()

    #define AGS_AUDIO_SIGNAL_GET_OBJ_MUTEX(obj) (&(((AgsAudioSignal *) obj)->obj_mutex))

### AGS_AUDIO_SIGNAL_GET_STREAM_MUTEX()

    #define AGS_AUDIO_SIGNAL_GET_STREAM_MUTEX(obj) (&(((AgsAudioSignal *) obj)->stream_mutex))

### AGS_AUDIO_SIGNAL_GET_BACKLOG_MUTEX()

    #define AGS_AUDIO_SIGNAL_GET_BACKLOG_MUTEX(obj) (&(((AgsAudioSignal *) obj)->backlog_mutex))

### ags_audio_signal_get_obj_mutex ()

    GRecMutex *
    ags_audio_signal_get_obj_mutex (AgsAudioSignal *audio_signal);

Get object mutex.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the GRecMutex to lock `audio_signal`

Since: 3.1.0

### ags_audio_signal_stream_lock ()

    void
    ags_audio_signal_stream_lock (AgsAudioSignal *audio_signal);

Lock stream mutex.

#### Parameters

audio_signal | the AgsAudioSignal |

Since: 3.1.0

### ags_audio_signal_stream_unlock ()

    void
    ags_audio_signal_stream_unlock (AgsAudioSignal *audio_signal);

Unlock stream mutex.

#### Parameters

audio_signal | the AgsAudioSignal |

Since: 3.1.0

### ags_audio_signal_test_flags ()

    gboolean
    ags_audio_signal_test_flags (AgsAudioSignal *audio_signal,
                                 AgsAudioSignalFlags flags);

Test `flags` to be set on `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
flags | the flags |

#### Returns

`TRUE` if flags are set, else `FALSE`

Since: 3.0.0

### ags_audio_signal_set_flags ()

    void
    ags_audio_signal_set_flags (AgsAudioSignal *audio_signal,
                                AgsAudioSignalFlags flags);

Enable a feature of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
flags | see AgsAudioSignalFlags |

Since: 3.0.0

### ags_audio_signal_unset_flags ()

    void
    ags_audio_signal_unset_flags (AgsAudioSignal *audio_signal,
                                  AgsAudioSignalFlags flags);

Disable a feature of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
flags | see AgsAudioSignalFlags |

Since: 3.0.0

### ags_audio_signal_test_key_format ()

    gboolean
    ags_audio_signal_test_key_format (AgsAudioSignal *audio_signal,
                                      AgsSoundKeyFormat key_format);

Test `key_format` to be set on `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
key_format | the key format |

#### Returns

`TRUE` if key format is set, else `FALSE`

Since: 6.2.0

### ags_audio_signal_set_key_format ()

    void
    ags_audio_signal_set_key_format (AgsAudioSignal *audio_signal,
                                     AgsSoundKeyFormat key_format);

Set `key_format` on `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
key_format | the key format |

Since: 6.2.0

### ags_stream_alloc ()

    void *
    ags_stream_alloc (guint buffer_size,
                      AgsSoundcardFormat format);

Allocs an audio buffer.

#### Parameters

buffer_size | the buffer size |
format | the format |

#### Returns

the audio data array

Since: 3.0.0

### ags_stream_free ()

    void
    ags_stream_free (void *buffer);

Frees an audio buffer.

#### Parameters

buffer | the buffer |

Since: 3.0.0

### ags_stream_slice_alloc ()

    void *
    ags_stream_slice_alloc (guint buffer_size,
                            AgsSoundcardFormat format);

Allocs an audio buffer.

#### Parameters

buffer_size | the buffer size |
format | the format |

#### Returns

the audio data array

Since: 3.3.0

### ags_stream_slice_free ()

    void
    ags_stream_slice_free (guint buffer_size,
                           AgsSoundcardFormat format,
                           void *buffer);

Frees an audio buffer.

#### Parameters

buffer_size | the buffer size |
format | the format |
buffer | the buffer |

Since: 3.3.0

### ags_audio_signal_get_recycling ()

    GObject *
    ags_audio_signal_get_recycling (AgsAudioSignal *audio_signal);

Get recycling.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the AgsRecycling.

[transfer full]

Since: 3.1.0

### ags_audio_signal_set_recycling ()

    void
    ags_audio_signal_set_recycling (AgsAudioSignal *audio_signal,
                                    GObject *recycling);

Set recycling.

#### Parameters

audio_signal | the AgsAudioSignal |
recycling | the AgsRecycling |

Since: 3.1.0

### ags_audio_signal_get_output_soundcard ()

    GObject *
    ags_audio_signal_get_output_soundcard (AgsAudioSignal *audio_signal);

Get the output soundcard object of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the output soundcard.

[transfer full]

Since: 3.1.0

### ags_audio_signal_set_output_soundcard ()

    void
    ags_audio_signal_set_output_soundcard (AgsAudioSignal *audio_signal,
                                           GObject *output_soundcard);

Set the output soundcard object of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
output_soundcard | the GObject implementing AgsSoundcard |

Since: 3.0.0

### ags_audio_signal_get_input_soundcard ()

    GObject *
    ags_audio_signal_get_input_soundcard (AgsAudioSignal *audio_signal);

Get the input soundcard object of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the input soundcard.

[transfer full]

Since: 3.1.0

### ags_audio_signal_set_input_soundcard ()

    void
    ags_audio_signal_set_input_soundcard (AgsAudioSignal *audio_signal,
                                          GObject *input_soundcard);

Set the input soundcard object of `audio_signal` .

#### Parameters

audio_signal | an AgsAudioSignal |
input_soundcard | the GObject implementing AgsSoundcard |

Since: 3.0.0

### ags_audio_signal_get_samplerate ()

    guint
    ags_audio_signal_get_samplerate (AgsAudioSignal *audio_signal);

Gets samplerate.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the samplerate

Since: 3.1.0

### ags_audio_signal_set_samplerate ()

    void
    ags_audio_signal_set_samplerate (AgsAudioSignal *audio_signal,
                                     guint samplerate);

Set samplerate.

#### Parameters

audio_signal | the AgsAudioSignal |
samplerate | the samplerate |

Since: 3.0.0

### ags_audio_signal_get_buffer_size ()

    guint
    ags_audio_signal_get_buffer_size (AgsAudioSignal *audio_signal);

Gets buffer size.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the buffer size

Since: 3.1.0

### ags_audio_signal_set_buffer_size ()

    void
    ags_audio_signal_set_buffer_size (AgsAudioSignal *audio_signal,
                                      guint buffer_size);

Set buffer size.

#### Parameters

audio_signal | the AgsAudioSignal |
buffer_size | the buffer size |

Since: 3.0.0

### ags_audio_signal_get_format ()

    AgsSoundcardFormat
    ags_audio_signal_get_format (AgsAudioSignal *audio_signal);

Gets format.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the format

Since: 3.1.0

### ags_audio_signal_set_format ()

    void
    ags_audio_signal_set_format (AgsAudioSignal *audio_signal,
                                 AgsSoundcardFormat format);

Set format.

#### Parameters

audio_signal | the AgsAudioSignal |
format | the format |

Since: 3.0.0

### ags_audio_signal_get_attack ()

    guint
    ags_audio_signal_get_attack (AgsAudioSignal *audio_signal);

Get attack of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the attack

Since: 6.2.0

### ags_audio_signal_set_attack ()

    void
    ags_audio_signal_set_attack (AgsAudioSignal *audio_signal,
                                 guint attack);

Set `attack` of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
attack | the attack |

Since: 6.2.0

### ags_audio_signal_get_note ()

    GList *
    ags_audio_signal_get_note (AgsAudioSignal *audio_signal);

Get note.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the GList containig AgsNote.

[element-type AgsAudio.Note][transfer full]

Since: 3.1.0

### ags_audio_signal_set_note ()

    void
    ags_audio_signal_set_note (AgsAudioSignal *audio_signal,
                               GList *note);

Set note by replacing existing.

#### Parameters

audio_signal | the AgsAudioSignal |
note | the GList containing AgsNote. | [element-type AgsAudio.Note][transfer full]

Since: 3.1.0

### ags_audio_signal_add_note ()

    void
    ags_audio_signal_add_note (AgsAudioSignal *audio_signal,
                               GObject *note);

Add note to `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
note | the AgsNote |

Since: 3.0.0

### ags_audio_signal_remove_note ()

    void
    ags_audio_signal_remove_note (AgsAudioSignal *audio_signal,
                                  GObject *note);

Remove note from `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
note | the AgsNote |

Since: 3.0.0

### ags_audio_signal_get_stream ()

    GList *
    ags_audio_signal_get_stream (AgsAudioSignal *audio_signal);

Get stream.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the GList containig audio data.

[element-type guint8][transfer none]

Since: 3.8.11

### ags_audio_signal_set_stream ()

    void
    ags_audio_signal_set_stream (AgsAudioSignal *audio_signal,
                                 GList *stream);

Set stream by replacing existing.

#### Parameters

audio_signal | the AgsAudioSignal |
stream | the GList containing audio data. | [element-type guint8][transfer full]

Since: 3.8.11

### ags_audio_signal_test_stream_mode ()

    gboolean
    ags_audio_signal_test_stream_mode (AgsAudioSignal *audio_signal,
                                       AgsAudioSignalStreamMode stream_mode);

Test `stream_mode` to be set on `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
stream_mode | the stream mode |

#### Returns

`TRUE` if stream mode are set, else `FALSE`

Since: 6.2.0

### ags_audio_signal_set_stream_mode ()

    void
    ags_audio_signal_set_stream_mode (AgsAudioSignal *audio_signal,
                                      AgsAudioSignalStreamMode stream_mode);

Set stream mode of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
stream_mode | see AgsAudioSignalStreamMode |

Since: 6.2.0

### ags_audio_signal_get_note_256th_attack ()

    guint
    ags_audio_signal_get_note_256th_attack
                                   (AgsAudioSignal *audio_signal);

Get note 256th attack of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the note 256th attack

Since: 6.2.0

### ags_audio_signal_set_note_256th_attack ()

    void
    ags_audio_signal_set_note_256th_attack
                                   (AgsAudioSignal *audio_signal,
                                    guint note_256th_attack);

Set `note_256th_attack` of `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |
note_256th_attack | the note 256th attack |

Since: 6.2.0

### ags_audio_signal_refresh_data ()

    void
    ags_audio_signal_refresh_data (AgsAudioSignal *audio_signal);

### ags_audio_signal_add_stream ()

    void
    ags_audio_signal_add_stream (AgsAudioSignal *audio_signal);

Adds a buffer at the end of the stream.

#### Parameters

audio_signal | the AgsAudioSignal |

Since: 3.0.0

### ags_audio_signal_stream_resize ()

    void
    ags_audio_signal_stream_resize (AgsAudioSignal *audio_signal,
                                    guint length);

Resize stream of `audio_signal` to `length` number of buffers.

#### Parameters

audio_signal | the AgsAudioSignal |
length | the new length |

Since: 3.0.0

### ags_audio_signal_stream_safe_resize ()

    void
    ags_audio_signal_stream_safe_resize (AgsAudioSignal *audio_signal,
                                         guint length);

Resize stream of `audio_signal` to `length` number of buffers. But doesn't shrink more than the current stream position.

#### Parameters

audio_signal | the AgsAudioSignal |
length | the new length |

Since: 3.0.0

### ags_audio_signal_clear ()

    void
    ags_audio_signal_clear (AgsAudioSignal *audio_signal);

Clear `audio_signal` .

#### Parameters

audio_signal | the AgsAudioSignal |

Since: 3.4.1

### ags_audio_signal_duplicate_stream ()

    void
    ags_audio_signal_duplicate_stream (AgsAudioSignal *audio_signal,
                                       AgsAudioSignal *default_template);

Apply `default_template` audio data to `audio_signal` . Note should only be invoked by proper recall context because only the stream of `default_template` is locked.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |

Since: 3.0.0

### ags_audio_signal_feed ()

    void
    ags_audio_signal_feed (AgsAudioSignal *audio_signal,
                           AgsAudioSignal *default_template,
                           guint frame_count);

Feed audio signal to grow upto frame count.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |
frame_count | the new frame count |

Since: 3.0.0

### ags_audio_signal_feed_extended ()

    void
    ags_audio_signal_feed_extended (AgsAudioSignal *audio_signal,
                                    AgsAudioSignal *default_template,
                                    guint frame_count,
                                    guint old_frame_count,
                                    gboolean do_open,
                                    gboolean do_close);

Feed audio signal to grow upto frame count.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |
frame_count | the new frame count |
old_frame_count | the old frame count |
do_open | open feed |
do_close | close feed |

Since: 3.3.0

### ags_audio_signal_open_feed ()

    void
    ags_audio_signal_open_feed (AgsAudioSignal *audio_signal,
                                AgsAudioSignal *default_template,
                                guint frame_count,
                                guint old_frame_count);

Feed audio signal to grow upto frame count.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |
frame_count | the new frame count |
old_frame_count | the old frame count |

Since: 3.3.0

### ags_audio_signal_continue_feed ()

    void
    ags_audio_signal_continue_feed (AgsAudioSignal *audio_signal,
                                    AgsAudioSignal *default_template,
                                    guint frame_count,
                                    guint old_frame_count);

Feed audio signal to grow upto frame count.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |
frame_count | the new frame count |
old_frame_count | the old frame count |

Since: 3.3.0

### ags_audio_signal_close_feed ()

    void
    ags_audio_signal_close_feed (AgsAudioSignal *audio_signal,
                                 AgsAudioSignal *default_template,
                                 guint frame_count,
                                 guint old_frame_count);

Feed audio signal to grow upto frame count.

#### Parameters

audio_signal | the AgsAudioSignal |
default_template | the default template AgsAudioSignal |
frame_count | the new frame count |
old_frame_count | the old frame count |

Since: 3.3.0

### ags_audio_signal_get_length_till_current ()

    guint
    ags_audio_signal_get_length_till_current
                                   (AgsAudioSignal *audio_signal);

Counts the buffers from :stream upto :stream-current.

#### Parameters

audio_signal | the AgsAudioSignal |

#### Returns

the counted length.

Since: 3.0.0

### ags_audio_signal_contains_note ()

    gboolean
    ags_audio_signal_contains_note (AgsAudioSignal *audio_signal,
                                    AgsNote *note);

Check if `audio_signal` contains `note` .

#### Parameters

audio_signal | the AgsAudioSignal |
note | the AgsNote |

#### Returns

`TRUE` on success, otherwise `FALSE`

Since: 3.3.0

### ags_audio_signal_get_default_template ()

    AgsAudioSignal *
    ags_audio_signal_get_default_template (GList *audio_signal);

Retrieve the default template audio signal.

#### Parameters

audio_signal | the GList containing AgsAudioSignal. | [element-type AgsAudio.AudioSignal][transfer none]

#### Returns

the default template AgsAudioSignal or `NULL` if not found.

[transfer full]

Since: 5.0.0

### ags_audio_signal_get_rt_template ()

    GList *
    ags_audio_signal_get_rt_template (GList *audio_signal);

Retrieve the realtime template audio signal.

#### Parameters

audio_signal | a GList containing AgsAudioSignal. | [element-type AgsAudio.AudioSignal][transfer none]

#### Returns

the rt-templates as GList containing AgsAudioSignal.

[element-type AgsAudio.AudioSignal][transfer full]

Since: 3.0.0

### ags_audio_signal_find_stream_current ()

    GList *
    ags_audio_signal_find_stream_current (GList *audio_signal,
                                          GObject *recall_id);

Retrieve next current stream of AgsAudioSignal list. Warning this function does not lock the stream mutex.

#### Parameters

audio_signal | the GList containing AgsAudioSignal. | [element-type AgsAudio.AudioSignal][transfer none]
recall_id | the matching AgsRecallID |

#### Returns

next GList matching AgsRecallID.

[element-type AgsAudio.AudioSignal][transfer none]

Since: 3.0.0

### ags_audio_signal_find_by_recall_id ()

    GList *
    ags_audio_signal_find_by_recall_id (GList *audio_signal,
                                        GObject *recall_id);

Retrieve next audio signal refering to `recall_id`

#### Parameters

audio_signal | a GList containing AgsAudioSignal. | [element-type AgsAudio.AudioSignal][transfer none]
recall_id | matching AgsRecallID |

#### Returns

matching GList containing AgsAudioSignal.

[element-type AgsAudio.AudioSignal][transfer none]

Since: 3.0.0

### ags_audio_signal_is_active ()

    gboolean
    ags_audio_signal_is_active (GList *audio_signal,
                                GObject *recall_id);

Check if is active.

#### Parameters

audio_signal | the GList containing AgsAudioSignal. | [element-type AgsAudio.AudioSignal][transfer none]
recall_id | the AgsRecallID |

#### Returns

`TRUE` if related audio signal to recall id is available, otherwise `FALSE`

Since: 3.0.0

### ags_audio_signal_new ()

    AgsAudioSignal *
    ags_audio_signal_new (GObject *output_soundcard,
                          GObject *recycling,
                          GObject *recall_id);

Creates a AgsAudioSignal, with defaults of `output_soundcard` , linking `recycling` tree and refering to `recall_id` .

#### Parameters

output_soundcard | the assigned output AgsSoundcard |
recycling | the AgsRecycling |
recall_id | the AgsRecallID, it can be NULL if `AGS_AUDIO_SIGNAL_DEFAULT_TEMPLATE` is set |

#### Returns

a new AgsAudioSignal

Since: 3.0.0

### ags_audio_signal_new_with_length ()

    AgsAudioSignal *
    ags_audio_signal_new_with_length (GObject *output_soundcard,
                                      GObject *recycling,
                                      GObject *recall_id,
                                      guint length);

Creates a AgsAudioSignal, with defaults of `soundcard` , linking `recycling` tree and refering to `recall_id` . The audio data is tiled to `length` frame count.

#### Parameters

output_soundcard | the assigned output AgsSoundcard |
recycling | the AgsRecycling |
recall_id | the AgsRecallID, it can be NULL if `AGS_AUDIO_SIGNAL_DEFAULT_TEMPLATE` is set |
length | audio data frame count |

#### Returns

a new AgsAudioSignal

Since: 3.0.0

## Types and Values

### enum AgsAudioSignalFlags

Enum values to control the behavior or indicate internal state of AgsAudioSignal by enable/disable as flags.

#### Members

AGS_AUDIO_SIGNAL_TEMPLATE | the audio signal acts as template |
AGS_AUDIO_SIGNAL_RT_TEMPLATE | the audio signal acts as a realtime template |
AGS_AUDIO_SIGNAL_MASTER | the audio signal needs master |
AGS_AUDIO_SIGNAL_FEED | the audio signal needs feed |
AGS_AUDIO_SIGNAL_RECYCLED | the audio signal is recycled |
AGS_AUDIO_SIGNAL_STREAM | the audio signal needs stream |
AGS_AUDIO_SIGNAL_SLICE_ALLOC | the audio signal allocates from slice |

### enum AgsAudioSignalStreamMode

Enum values to set the mode of AgsAudioSignal stream behaviour by enable/disable setting mode.

#### Members

AGS_AUDIO_SIGNAL_STREAM_CONTINUES_FEED |  |
AGS_AUDIO_SIGNAL_STREAM_DUAL_BUFFERED |  |

## Property Details

### The `“attack”` property

      “attack”                   guint

The attack to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“buffer-size”` property

      “buffer-size”              guint

The buffer size to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“damping”` property

      “damping”                  AgsComplex *

Damping of timbre.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“default-template”` property

      “default-template”         AgsAudioSignal *

The assigned AgsAudioSignal default template.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 5.0.0

### The `“delay”` property

      “delay”                    double

The delay to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 3.0.0

### The `“first-frame”` property

      “first-frame”              guint

The first frame of stream.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“format”` property

      “format”                   guint

The format to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“frame-count”` property

      “frame-count”              guint

The initial size of audio data.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“input-soundcard”` property

      “input-soundcard”          GObject *

The assigned input AgsSoundcard.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“input-soundcard-channel”` property

      “input-soundcard-channel”  int

The input soundcard channel.

Owner: AgsAudioSignal

Flags: Read / Write

Allowed values: >= -1

Default value: 0

Since: 3.0.0

### The `“last-frame”` property

      “last-frame”               guint

The last frame of stream.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“length”` property

      “length”                   guint

The length of the stream.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“loop-end”` property

      “loop-end”                 guint

The loop end of stream.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“loop-start”` property

      “loop-start”               guint

The loop start of stream.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“note”` property

      “note”                     gpointer

The assigned AgsNote providing default settings.

[transfer full]

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“note-256th-attack”` property

      “note-256th-attack”        guint

The note 256th attack to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 6.2.0

### The `“output-soundcard”` property

      “output-soundcard”         GObject *

The assigned output AgsSoundcard providing default settings.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“output-soundcard-channel”` property

      “output-soundcard-channel” int

The output soundcard channel.

Owner: AgsAudioSignal

Flags: Read / Write

Allowed values: >= -1

Default value: 0

Since: 3.0.0

### The `“recall-id”` property

      “recall-id”                AgsRecallID *

The assigned AgsRecallID providing context.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“recycling”` property

      “recycling”                AgsRecycling *

The assigned AgsRecycling linking tree.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“rt-template”` property

      “rt-template”              AgsAudioSignal *

The assigned AgsAudioSignal realtime template.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“samplerate”` property

      “samplerate”               guint

The samplerate to be used.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“stream”` property

      “stream”                   gpointer

The stream it contains.

Owner: AgsAudioSignal

Flags: Read

Since: 3.0.0

### The `“stream-current”` property

      “stream-current”           gpointer

The current stream.

Owner: AgsAudioSignal

Flags: Read

Since: 3.0.0

### The `“stream-end”` property

      “stream-end”               gpointer

The end of stream.

Owner: AgsAudioSignal

Flags: Read

Since: 3.0.0

### The `“timbre-end”` property

      “timbre-end”               guint

The timbre's end frame.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“timbre-start”` property

      “timbre-start”             guint

The timbre's start frame.

Owner: AgsAudioSignal

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“vibration”` property

      “vibration”                AgsComplex *

Vibration of timbre.

Owner: AgsAudioSignal

Flags: Read / Write

Since: 3.0.0

### The `“word-size”` property

      “word-size”                guint

The word size of frame.

Owner: AgsAudioSignal

Flags: Read

Default value: 0

Since: 3.0.0

## Signal Details

### The `“add-note”` signal

    void
    user_function (AgsAudioSignal *audio_signal,
                   GObject        *note,
                   gpointer        user_data)

The ::add-note signal notifies about adding `note` .

#### Parameters

audio_signal | the AgsAudioSignal |
note | the AgsNote |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

Since: 3.0.0

### The `“refresh-data”` signal

    void
    user_function (AgsAudioSignal *audio_signal,
                   gpointer        user_data)

The ::refresh-data signal notifies about requesting to refresh data.

#### Parameters

audio_signal | the AgsAudioSignal |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

Since: 3.0.0

### The `“remove-note”` signal

    void
    user_function (AgsAudioSignal *audio_signal,
                   GObject        *note,
                   gpointer        user_data)

The ::remove-note signal notifies about removing `note` .

#### Parameters

audio_signal | the AgsAudioSignal |
note | the AgsNote |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

Since: 3.0.0