## AgsAutomation

AgsAutomation — Automation class supporting selection and clipboard

## Stability Level

Stable, unless otherwise indicated

## Functions

#define | AGS_AUTOMATION_GET_OBJ_MUTEX()
GRecMutex * | ags_automation_get_obj_mutex ()
gboolean | ags_automation_test_flags ()
void | ags_automation_set_flags ()
void | ags_automation_unset_flags ()
GList * | ags_automation_find_port ()
GList * | ags_automation_find_near_timestamp ()
GList * | ags_automation_find_near_timestamp_extended ()
gint | ags_automation_sort_func ()
GList * | ags_automation_add ()
GList * | ags_automation_remove_all_empty ()
GObject * | ags_automation_get_audio ()
void | ags_automation_set_audio ()
GType | ags_automation_get_channel_type ()
void | ags_automation_set_channel_type ()
guint | ags_automation_get_line ()
void | ags_automation_set_line ()
AgsTimestamp * | ags_automation_get_timestamp ()
void | ags_automation_set_timestamp ()
gpointer | ags_automation_get_control_key ()
void | ags_automation_set_control_key ()
gchar * | ags_automation_get_control_name ()
void | ags_automation_set_control_name ()
guint | ags_automation_get_steps ()
void | ags_automation_set_steps ()
gdouble | ags_automation_get_upper ()
void | ags_automation_set_upper ()
gdouble | ags_automation_get_lower ()
void | ags_automation_set_lower ()
gdouble | ags_automation_get_default_value ()
void | ags_automation_set_default_value ()
GObject * | ags_automation_get_port ()
void | ags_automation_set_port ()
GList * | ags_automation_get_acceleration ()
void | ags_automation_set_acceleration ()
void | ags_automation_add_acceleration ()
void | ags_automation_remove_acceleration ()
gboolean | ags_automation_remove_acceleration_at_position ()
GList * | ags_automation_get_selection ()
gboolean | ags_automation_is_acceleration_selected ()
AgsAcceleration * | ags_automation_find_point ()
GList * | ags_automation_find_region ()
void | ags_automation_free_selection ()
void | ags_automation_free_all_selection ()
void | ags_automation_add_point_to_selection ()
void | ags_automation_remove_point_from_selection ()
void | ags_automation_add_region_to_selection ()
void | ags_automation_remove_region_from_selection ()
void | ags_automation_add_all_to_selection ()
xmlNode * | ags_automation_copy_selection ()
xmlNode * | ags_automation_cut_selection ()
void | ags_automation_insert_from_clipboard ()
void | ags_automation_insert_from_clipboard_extended ()
gchar ** | ags_automation_get_specifier_unique ()
gchar ** | ags_automation_get_specifier_unique_with_channel_type ()
GList * | ags_automation_find_specifier ()
GList * | ags_automation_find_channel_type_with_control_name ()
GList * | ags_automation_find_specifier_with_type_and_line ()
GList * | ags_automation_filter ()
guint | ags_automation_get_value ()
AgsAutomation * | ags_automation_new ()

## Properties

gpointer | acceleration | Read / Write
AgsAudio * | audio | Read / Write
GType * | channel-type | Read / Write
gpointer | control-key | Read / Write
char * | control-name | Read / Write
double | default-value | Read / Write
guint | line | Read / Write
double | lower | Read / Write
AgsPort * | port | Read / Write
guint | steps | Read / Write
AgsTimestamp * | timestamp | Read / Write
double | upper | Read / Write

## Types and Values

#define | AGS_AUTOMATION_DEFAULT_BPM
#define | AGS_AUTOMATION_TICS_PER_BEAT
#define | AGS_AUTOMATION_MINIMUM_ACCELERATION_LENGTH
#define | AGS_AUTOMATION_MAXIMUM_ACCELERATION_LENGTH
#define | AGS_AUTOMATION_DEFAULT_LENGTH
#define | AGS_AUTOMATION_DEFAULT_JIFFIE
#define | AGS_AUTOMATION_DEFAULT_DURATION
#define | AGS_AUTOMATION_DEFAULT_OFFSET
#define | AGS_AUTOMATION_DEFAULT_PRECISION
#define | AGS_AUTOMATION_MAXIMUM_STEPS
#define | AGS_AUTOMATION_CLIPBOARD_VERSION
#define | AGS_AUTOMATION_CLIPBOARD_TYPE
#define | AGS_AUTOMATION_CLIPBOARD_FORMAT
#define | AGS_AUTOMATION_CLIPBOARD_LEGACY_FORMAT
enum | AgsAutomationFlags

## Object Hierarchy

        GFlags
        ╰── AgsAutomationFlags
        GObject
        ╰── AgsAutomation

## Includes

    #include <ags/audio/ags_automation.h>

## Description

AgsAutomation acts as a container of AgsAcceleration. The `timestamp` property tells the engine what the first x offset of AgsAcceleration applies.

You can lookup AgsAutomation by start x offset with `ags_automation_find_near_timestamp()`. The next x offset is calculated as following:

next_x_offset = x_offset + AGS_AUTOMATION_DEFAULT_OFFSET;

Use `ags_automation_add_acceleration()` to add AgsAcceleration to AgsAutomation and `ags_automation_remove_acceleration()` to remove it again.

In order to copy or cut accelerations you select them first by calling `ags_automation_add_region_to_selection()`.

## Functions

### AGS_AUTOMATION_GET_OBJ_MUTEX()

    #define AGS_AUTOMATION_GET_OBJ_MUTEX(obj) (&(((AgsAutomation *) obj)->obj_mutex))

### ags_automation_get_obj_mutex ()

    GRecMutex *
    ags_automation_get_obj_mutex (AgsAutomation *automation);

Get object mutex.

#### Parameters

automation | the AgsAutomation |

#### Returns

the GRecMutex to lock `automation`

Since: 3.1.0

### ags_automation_test_flags ()

    gboolean
    ags_automation_test_flags (AgsAutomation *automation,
                               AgsAutomationFlags flags);

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

#### Parameters

automation | the AgsAutomation |
flags | the flags |

#### Returns

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

Since: 3.0.0

### ags_automation_set_flags ()

    void
    ags_automation_set_flags (AgsAutomation *automation,
                              AgsAutomationFlags flags);

Set `flags` on `automation` .

#### Parameters

automation | the AgsAutomation |
flags | the flags |

Since: 3.0.0

### ags_automation_unset_flags ()

    void
    ags_automation_unset_flags (AgsAutomation *automation,
                                AgsAutomationFlags flags);

Unset `flags` on `automation` .

#### Parameters

automation | the AgsAutomation |
flags | the flags |

Since: 3.0.0

### ags_automation_find_port ()

    GList *
    ags_automation_find_port (GList *automation,
                              GObject *port);

Find automation by port.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
port | the AgsPort to match |

#### Returns

next matching automation as GList or `NULL` if not found.

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

Since: 3.0.0

### ags_automation_find_near_timestamp ()

    GList *
    ags_automation_find_near_timestamp (GList *automation,
                                        guint line,
                                        AgsTimestamp *timestamp);

Retrieve appropriate automation for timestamp.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
line | the matching audio channel |
timestamp | the matching timestamp |

#### Returns

Next matching GList or `NULL` if not found.

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

Since: 3.0.0

### ags_automation_find_near_timestamp_extended ()

    GList *
    ags_automation_find_near_timestamp_extended
                                   (GList *automation,
                                    guint line,
                                    GType channel_type,
                                    gchar *control_name,
                                    AgsTimestamp *timestamp);

Retrieve appropriate automation for timestamp.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
line | the matching audio channel |
channel_type | the matching channel type |
control_name | the matching control name |
timestamp | the matching timestamp |

#### Returns

Next matching GList or `NULL` if not found.

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

Since: 3.0.0

### ags_automation_sort_func ()

    gint
    ags_automation_sort_func (gconstpointer a,
                              gconstpointer b);

Compare `a` to `b` .

#### Parameters

a | an AgsAutomation |
b | an other AgsAutomation |

#### Returns

0 if equal, -1 if smaller and 1 if bigger offset

Since: 3.0.0

### ags_automation_add ()

    GList *
    ags_automation_add (GList *automation,
                        AgsAutomation *new_automation);

Add `new_automation` sorted to `automation`

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
new_automation | the AgsAutomation to add |

#### Returns

the new beginning of `automation` .

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

Since: 3.0.0

### ags_automation_remove_all_empty ()

    GList *
    ags_automation_remove_all_empty (GList *automation);

Remove all empty `automation` .

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]

#### Returns

the new beginning of `automation` .

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

Since: 5.3.8

### ags_automation_get_audio ()

    GObject *
    ags_automation_get_audio (AgsAutomation *automation);

Get audio.

#### Parameters

automation | the AgsAutomation |

#### Returns

the AgsAudio.

[transfer full]

Since: 3.1.0

### ags_automation_set_audio ()

    void
    ags_automation_set_audio (AgsAutomation *automation,
                              GObject *audio);

Set audio.

#### Parameters

automation | the AgsAutomation |
audio | the AgsAudio |

Since: 3.1.0

### ags_automation_get_channel_type ()

    GType
    ags_automation_get_channel_type (AgsAutomation *automation);

Gets channel type.

#### Parameters

automation | the AgsAutomation |

#### Returns

the channel type

Since: 3.1.0

### ags_automation_set_channel_type ()

    void
    ags_automation_set_channel_type (AgsAutomation *automation,
                                     GType channel_type);

Sets channel type.

#### Parameters

automation | the AgsAutomation |
channel_type | the channel type |

Since: 3.1.0

### ags_automation_get_line ()

    guint
    ags_automation_get_line (AgsAutomation *automation);

Gets line.

#### Parameters

automation | the AgsAutomation |

#### Returns

the line

Since: 3.1.0

### ags_automation_set_line ()

    void
    ags_automation_set_line (AgsAutomation *automation,
                             guint line);

Sets line.

#### Parameters

automation | the AgsAutomation |
line | the line |

Since: 3.1.0

### ags_automation_get_timestamp ()

    AgsTimestamp *
    ags_automation_get_timestamp (AgsAutomation *automation);

Get timestamp.

#### Parameters

automation | the AgsAutomation |

#### Returns

the AgsTimestamp.

[transfer full]

Since: 3.1.0

### ags_automation_set_timestamp ()

    void
    ags_automation_set_timestamp (AgsAutomation *automation,
                                  AgsTimestamp *timestamp);

Set timestamp.

#### Parameters

automation | the AgsAutomation |
timestamp | the AgsTimestamp |

Since: 3.1.0

### ags_automation_get_control_key ()

    gpointer
    ags_automation_get_control_key (AgsAutomation *automation);

Get control key.

#### Parameters

automation | the AgsAutomation |

#### Returns

the control key.

[transfer full]

Since: 5.4.0

### ags_automation_set_control_key ()

    void
    ags_automation_set_control_key (AgsAutomation *automation,
                                    gpointer control_key);

Set control key.

#### Parameters

automation | the AgsAutomation |
control_key | the control key |

Since: 5.4.0

### ags_automation_get_control_name ()

    gchar *
    ags_automation_get_control_name (AgsAutomation *automation);

Get control name.

#### Parameters

automation | the AgsAutomation |

#### Returns

the control name.

[transfer full]

Since: 3.1.0

### ags_automation_set_control_name ()

    void
    ags_automation_set_control_name (AgsAutomation *automation,
                                     gchar *control_name);

Set control name.

#### Parameters

automation | the AgsAutomation |
control_name | the control name |

Since: 3.1.0

### ags_automation_get_steps ()

    guint
    ags_automation_get_steps (AgsAutomation *automation);

Gets steps.

#### Parameters

automation | the AgsAutomation |

#### Returns

the steps

Since: 3.1.0

### ags_automation_set_steps ()

    void
    ags_automation_set_steps (AgsAutomation *automation,
                              guint steps);

Sets steps.

#### Parameters

automation | the AgsAutomation |
steps | the steps |

Since: 3.1.0

### ags_automation_get_upper ()

    gdouble
    ags_automation_get_upper (AgsAutomation *automation);

Gets upper.

#### Parameters

automation | the AgsAutomation |

#### Returns

the upper

Since: 3.1.0

### ags_automation_set_upper ()

    void
    ags_automation_set_upper (AgsAutomation *automation,
                              gdouble upper);

Sets upper.

#### Parameters

automation | the AgsAutomation |
upper | the upper |

Since: 3.1.0

### ags_automation_get_lower ()

    gdouble
    ags_automation_get_lower (AgsAutomation *automation);

Gets lower.

#### Parameters

automation | the AgsAutomation |

#### Returns

the lower

Since: 3.1.0

### ags_automation_set_lower ()

    void
    ags_automation_set_lower (AgsAutomation *automation,
                              gdouble lower);

Sets lower.

#### Parameters

automation | the AgsAutomation |
lower | the lower |

Since: 3.1.0

### ags_automation_get_default_value ()

    gdouble
    ags_automation_get_default_value (AgsAutomation *automation);

Gets default value.

#### Parameters

automation | the AgsAutomation |

#### Returns

the default value

Since: 3.1.0

### ags_automation_set_default_value ()

    void
    ags_automation_set_default_value (AgsAutomation *automation,
                                      gdouble default_value);

Sets default value.

#### Parameters

automation | the AgsAutomation |
default_value | the default value |

Since: 3.1.0

### ags_automation_get_port ()

    GObject *
    ags_automation_get_port (AgsAutomation *automation);

Get port.

#### Parameters

automation | the AgsAutomation |

#### Returns

the AgsPort.

[transfer full]

Since: 3.1.0

### ags_automation_set_port ()

    void
    ags_automation_set_port (AgsAutomation *automation,
                             GObject *port);

Set port.

#### Parameters

automation | the AgsAutomation |
port | the AgsPort |

Since: 3.1.0

### ags_automation_get_acceleration ()

    GList *
    ags_automation_get_acceleration (AgsAutomation *automation);

Get acceleration.

#### Parameters

automation | the AgsAutomation |

#### Returns

the GList containig AgsAcceleration.

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

Since: 3.1.0

### ags_automation_set_acceleration ()

    void
    ags_automation_set_acceleration (AgsAutomation *automation,
                                     GList *acceleration);

Set acceleration by replacing existing.

#### Parameters

automation | the AgsAutomation |
acceleration | the GList containing AgsAcceleration. | [element-type AgsAudio.Acceleration][transfer full]

Since: 3.1.0

### ags_automation_add_acceleration ()

    void
    ags_automation_add_acceleration (AgsAutomation *automation,
                                     AgsAcceleration *acceleration,
                                     gboolean use_selection_list);

Adds `acceleration` to `automation` .

#### Parameters

automation | the AgsAutomation |
acceleration | the AgsAcceleration to add |
use_selection_list | if `TRUE` add to selection, else to default automation |

Since: 3.0.0

### ags_automation_remove_acceleration ()

    void
    ags_automation_remove_acceleration (AgsAutomation *automation,
                                        AgsAcceleration *acceleration,
                                        gboolean use_selection_list);

Removes `acceleration` from `automation` .

#### Parameters

automation | the AgsAutomation |
acceleration | the AgsAcceleration to remove |
use_selection_list | if `TRUE` remove from selection, else from default automation |

Since: 3.0.0

### ags_automation_remove_acceleration_at_position ()

    gboolean
    ags_automation_remove_acceleration_at_position
                                   (AgsAutomation *automation,
                                    guint x,
                                    gdouble y);

Removes one AgsAcceleration of automation.

#### Parameters

automation | the AgsAutomation |
x | x offset |
y | y value of acceleration |

#### Returns

`TRUE` if successfully removed acceleration, else `FALSE`

Since: 3.0.0

### ags_automation_get_selection ()

    GList *
    ags_automation_get_selection (AgsAutomation *automation);

Retrieve selection.

#### Parameters

automation | the AgsAutomation |

#### Returns

the selection.

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

Since: 3.0.0

### ags_automation_is_acceleration_selected ()

    gboolean
    ags_automation_is_acceleration_selected
                                   (AgsAutomation *automation,
                                    AgsAcceleration *acceleration);

Check selection for acceleration.

#### Parameters

automation | the AgsAutomation |
acceleration | the AgsAcceleration to check for |

#### Returns

`TRUE` if selected, else `FALSE`

Since: 3.0.0

### ags_automation_find_point ()

    AgsAcceleration *
    ags_automation_find_point (AgsAutomation *automation,
                               guint x,
                               gdouble y,
                               gboolean use_selection_list);

Find acceleration by offset and acceleration.

#### Parameters

automation | the AgsAutomation |
x | x offset |
y | y value acceleration, will be ignored |
use_selection_list | if `TRUE` selection is searched |

#### Returns

the matching acceleration.

[transfer none]

Since: 3.0.0

### ags_automation_find_region ()

    GList *
    ags_automation_find_region (AgsAutomation *automation,
                                guint x0,
                                gdouble y0,
                                guint x1,
                                gdouble y1,
                                gboolean use_selection_list);

Find acceleration by offset and value region.

#### Parameters

automation | the AgsAutomation |
x0 | start offset |
y0 | value start |
x1 | end offset |
y1 | value end |
use_selection_list | if `TRUE` selection is searched |

#### Returns

the matching accelerations as GList.

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

Since: 3.0.0

### ags_automation_free_selection ()

    void
    ags_automation_free_selection (AgsAutomation *automation);

Clear selection.

#### Parameters

automation | the AgsAutomation |

Since: 3.0.0

### ags_automation_free_all_selection ()

    void
    ags_automation_free_all_selection (GList *automation);

Clear all selection of `automation` .

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation]

Since: 3.14.10

### ags_automation_add_point_to_selection ()

    void
    ags_automation_add_point_to_selection (AgsAutomation *automation,
                                           guint x,
                                           gdouble y,
                                           gboolean replace_current_selection);

Select acceleration at position.

#### Parameters

automation | the AgsAutomation |
x | x offset |
y | y acceleration value |
replace_current_selection | if `TRUE` selection is replaced |

Since: 3.0.0

### ags_automation_remove_point_from_selection ()

    void
    ags_automation_remove_point_from_selection
                                   (AgsAutomation *automation,
                                    guint x,
                                    gdouble y);

Remove acceleration at position of selection.

#### Parameters

automation | the AgsAutomation |
x | x offset |
y | y acceleration value |

Since: 3.0.0

### ags_automation_add_region_to_selection ()

    void
    ags_automation_add_region_to_selection
                                   (AgsAutomation *automation,
                                    guint x0,
                                    gdouble y0,
                                    guint x1,
                                    gdouble y1,
                                    gboolean replace_current_selection);

### ags_automation_remove_region_from_selection ()

    void
    ags_automation_remove_region_from_selection
                                   (AgsAutomation *automation,
                                    guint x0,
                                    gdouble y0,
                                    guint x1,
                                    gdouble y1);

Remove acceleration within region of selection.

#### Parameters

automation | the AgsAutomation |
x0 | x start offset |
y0 | y start acceleration |
x1 | x end offset |
y1 | y end acceleration |

Since: 3.0.0

### ags_automation_add_all_to_selection ()

    void
    ags_automation_add_all_to_selection (AgsAutomation *automation);

Add all acceleration to selection.

#### Parameters

automation | the AgsAutomation |

Since: 3.0.0

### ags_automation_copy_selection ()

    xmlNode *
    ags_automation_copy_selection (AgsAutomation *automation);

Copy selection to clipboard.

#### Parameters

automation | the AgsAutomation |

#### Returns

the selection as xmlNode.

[transfer none]

Since: 3.0.0

### ags_automation_cut_selection ()

    xmlNode *
    ags_automation_cut_selection (AgsAutomation *automation);

Cut selection to clipboard.

#### Parameters

automation | the AgsAutomation |

#### Returns

the selection as xmlNod.

[transfer none]

Since: 3.0.0

### ags_automation_insert_from_clipboard ()

    void
    ags_automation_insert_from_clipboard (AgsAutomation *automation,
                                          xmlNode *automation_node,
                                          gboolean reset_x_offset,
                                          guint x_offset,
                                          gboolean reset_y_offset,
                                          gdouble y_offset);

Insert clipboard `automation_node` to `automation` .

#### Parameters

automation | the AgsAutomation |
automation_node | the xmlNode |
reset_x_offset | if `TRUE` reset x offset |
x_offset | the x offset to use |
reset_y_offset | if `TRUE` reset y offset |
y_offset | the y offset to use |

Since: 3.0.0

### ags_automation_insert_from_clipboard_extended ()

    void
    ags_automation_insert_from_clipboard_extended
                                   (AgsAutomation *automation,
                                    xmlNode *automation_node,
                                    gboolean reset_x_offset,
                                    guint x_offset,
                                    gboolean reset_y_offset,
                                    gdouble y_offset,
                                    gboolean match_line,
                                    gboolean no_duplicates);

Insert clipboard `automation_node` to `automation` .

#### Parameters

automation | the AgsAutomation |
automation_node | the xmlNode |
reset_x_offset | if `TRUE` reset x offset |
x_offset | the x offset to use |
reset_y_offset | if `TRUE` reset y offset |
y_offset | the y offset to use |
match_line | if `TRUE` match line or discard |
no_duplicates | if `TRUE` eliminate duplicates |

Since: 3.0.0

### ags_automation_get_specifier_unique ()

    gchar **
    ags_automation_get_specifier_unique (GList *automation);

Retrieve automation port specifier.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]

#### Returns

a `NULL` terminated string array.

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

Since: 3.0.0

### ags_automation_get_specifier_unique_with_channel_type ()

    gchar **
    ags_automation_get_specifier_unique_with_channel_type
                                   (GList *automation,
                                    GType channel_type);

Retrieve automation port specifier.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
channel_type | the channel's GType |

#### Returns

a `NULL` terminated string array.

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

Since: 3.0.0

### ags_automation_find_specifier ()

    GList *
    ags_automation_find_specifier (GList *automation,
                                   gchar *specifier);

Find port specifier.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
specifier | the string specifier to find |

#### Returns

Next matching GList.

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

Since: 3.0.0

### ags_automation_find_channel_type_with_control_name ()

    GList *
    ags_automation_find_channel_type_with_control_name
                                   (GList *automation,
                                    GType channel_type,
                                    gchar *specifier);

Find automation by `channel_type` .

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
channel_type | the GType to match |
specifier | the control name |

#### Returns

next matching automation as GList or `NULL` if not found.

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

Since: 3.0.0

### ags_automation_find_specifier_with_type_and_line ()

    GList *
    ags_automation_find_specifier_with_type_and_line
                                   (GList *automation,
                                    gchar *specifier,
                                    GType channel_type,
                                    guint line);

Find port specifier with channel type and line.

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
specifier | the string specifier to find |
channel_type | the channel GType |
line | the line |

#### Returns

Next matching GList.

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

Since: 3.0.0

### ags_automation_filter ()

    GList *
    ags_automation_filter (GList *automation,
                           gchar *specifier,
                           GType channel_type,
                           guint line);

Filter `automation` by `specifier` , `channel_type` and `line` .

#### Parameters

automation | the GList containing AgsAutomation. | [element-type AgsAudio.Automation][transfer none]
specifier | the string specifier to find |
channel_type | the channel GType |
line | the line |

#### Returns

the copied and filtered list.

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

Since: 5.4.0

### ags_automation_get_value ()

    guint
    ags_automation_get_value (AgsAutomation *automation,
                              guint x,
                              guint x_end,
                              gboolean use_prev_on_failure,
                              GValue *value);

Get automation value.

#### Parameters

automation | the AgsAutomation |
x | the x-offset |
x_end | the x-end-offset |
use_prev_on_failure | if `TRUE` use previous value, else return G_MAXUINT |
value | the return location of value. | [out caller-allocates]

#### Returns

the x_offset

Since: 3.0.0

### ags_automation_new ()

    AgsAutomation *
    ags_automation_new (GObject *audio,
                        guint line,
                        GType channel_type,
                        gchar *control_name);

Creates a new instance of AgsAutomation.

#### Parameters

audio | the AgsAudio |
line | the line to apply |
channel_type | the channel type |
control_name | the control name |

#### Returns

the new AgsAutomation

Since: 3.0.0

## Types and Values

### AGS_AUTOMATION_DEFAULT_BPM

    #define AGS_AUTOMATION_DEFAULT_BPM (120.0)

### AGS_AUTOMATION_TICS_PER_BEAT

    #define AGS_AUTOMATION_TICS_PER_BEAT (1.0)

### AGS_AUTOMATION_MINIMUM_ACCELERATION_LENGTH

    #define AGS_AUTOMATION_MINIMUM_ACCELERATION_LENGTH (1.0 / 16.0 / 64.0)

### AGS_AUTOMATION_MAXIMUM_ACCELERATION_LENGTH

    #define AGS_AUTOMATION_MAXIMUM_ACCELERATION_LENGTH (16.0)

### AGS_AUTOMATION_DEFAULT_LENGTH

    #define AGS_AUTOMATION_DEFAULT_LENGTH (64.0 * 16.0 * 16.0 * 1200.0 / AGS_AUTOMATION_TICS_PER_BEAT)

### AGS_AUTOMATION_DEFAULT_JIFFIE

    #define AGS_AUTOMATION_DEFAULT_JIFFIE (60.0 / AGS_AUTOMATION_DEFAULT_BPM / AGS_AUTOMATION_TICS_PER_BEAT)

### AGS_AUTOMATION_DEFAULT_DURATION

    #define AGS_AUTOMATION_DEFAULT_DURATION (AGS_AUTOMATION_DEFAULT_LENGTH * AGS_AUTOMATION_DEFAULT_JIFFIE * AGS_USEC_PER_SEC)

### AGS_AUTOMATION_DEFAULT_OFFSET

    #define AGS_AUTOMATION_DEFAULT_OFFSET (64.0 * (1.0 / AGS_AUTOMATION_MINIMUM_ACCELERATION_LENGTH))

### AGS_AUTOMATION_DEFAULT_PRECISION

    #define AGS_AUTOMATION_DEFAULT_PRECISION (8)

### AGS_AUTOMATION_MAXIMUM_STEPS

    #define AGS_AUTOMATION_MAXIMUM_STEPS (128)

### AGS_AUTOMATION_CLIPBOARD_VERSION

    #define AGS_AUTOMATION_CLIPBOARD_VERSION "1.3.0"

### AGS_AUTOMATION_CLIPBOARD_TYPE

    #define AGS_AUTOMATION_CLIPBOARD_TYPE "AgsAutomationClipboardXml"

### AGS_AUTOMATION_CLIPBOARD_FORMAT

    #define AGS_AUTOMATION_CLIPBOARD_FORMAT "AgsAutomationNativeScale"

### AGS_AUTOMATION_CLIPBOARD_LEGACY_FORMAT

    #define AGS_AUTOMATION_CLIPBOARD_LEGACY_FORMAT "AgsAutomationNativePiano"

### enum AgsAutomationFlags

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

#### Members

AGS_AUTOMATION_BYPASS | ignore any automation data |

## Property Details

### The `“acceleration”` property

      “acceleration”             gpointer

The acceleration list.

[transfer full]

Owner: AgsAutomation

Flags: Read / Write

Since: 3.0.0

### The `“audio”` property

      “audio”                    AgsAudio *

The assigned AgsAudio

Owner: AgsAutomation

Flags: Read / Write

Since: 3.0.0

### The `“channel-type”` property

      “channel-type”             GType *

The effect's assigned channel type.

Owner: AgsAutomation

Flags: Read / Write

Allowed values: void

Since: 3.0.0

### The `“control-key”` property

      “control-key”              gpointer

The effect's assigned control key.

Owner: AgsAutomation

Flags: Read / Write

Since: 5.4.0

### The `“control-name”` property

      “control-name”             char *

The effect's assigned control name.

Owner: AgsAutomation

Flags: Read / Write

Default value: NULL

Since: 3.0.0

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

      “default-value”            double

The effect's default-value.

Owner: AgsAutomation

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“line”` property

      “line”                     guint

The effect's line.

Owner: AgsAutomation

Flags: Read / Write

Allowed values: <= 65535

Default value: 0

Since: 3.0.0

### The `“lower”` property

      “lower”                    double

The effect's lower.

Owner: AgsAutomation

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“port”` property

      “port”                     AgsPort *

The assigned AgsPort

Owner: AgsAutomation

Flags: Read / Write

Since: 3.0.0

### The `“steps”` property

      “steps”                    guint

The effect's steps.

Owner: AgsAutomation

Flags: Read / Write

Default value: 0

Since: 3.0.0

### The `“timestamp”` property

      “timestamp”                AgsTimestamp *

The automation's timestamp.

Owner: AgsAutomation

Flags: Read / Write

Since: 3.0.0

### The `“upper”` property

      “upper”                    double

The effect's upper.

Owner: AgsAutomation

Flags: Read / Write

Default value: 0

Since: 3.0.0