## GstBtTempo

GstBtTempo — helper interface for tempo synced gstreamer elements

## Functions

void | gstbt_tempo_change_tempo ()

## Properties

gulong | beats-per-minute | Read / Write
gulong | subticks-per-tick | Read / Write
gulong | ticks-per-beat | Read / Write

## Types and Values

struct | GstBtTempoInterface
| GstBtTempo

## Object Hierarchy

        GInterface
        ╰── GstBtTempo

## Known Implementations

GstBtTempo is implemented by GstBtAudioDelay, GstBtAudioSynth, GstBtEBeats, GstBtFluidSynth, GstBtSidSyn, GstBtSimSyn, GstBtWaveReplay and GstBtWaveTabSyn.

## Includes

    #include <libgstbuzztrax/tempo.h>

## Description

This interface offers three GObject properties to specify a rythmic tempo of the GStreamer pipeline. The tempo can be changed from the application side by calling `gstbt_tempo_change_tempo()`.

GstElements that implement this interface should use the given tempo, to adjust their `gst_object_sync_values()` cycle.

The difference between the tempo iface and the tempo-tag metadata is that the metadata describes the overall tempo, but the iface allows to change the tempo during playback.

## Functions

### gstbt_tempo_change_tempo ()

    void
    gstbt_tempo_change_tempo (GstBtTempo *self,
                              glong beats_per_minute,
                              glong ticks_per_beat,
                              glong subticks_per_tick);

Set all tempo properties at once. Pass -1 to leave a value unchanged.

#### Parameters

self | a GObject that implements GstBtTempo |
beats_per_minute | the number of beats in a minute |
ticks_per_beat | the number of ticks of one beat (measure) |
subticks_per_tick | the number of subticks within one tick |

## Types and Values

### struct GstBtTempoInterface

    struct GstBtTempoInterface {
      GTypeInterface parent;

      void (*change_tempo) (GstBtTempo *self, glong beats_per_minute, glong ticks_per_beat, glong subticks_per_tick);
    };

Interface structure.

#### Members

GTypeInterface `parent`; | parent type |
`change_tempo` () | vmethod for changing the song tempo |

### GstBtTempo

    typedef struct _GstBtTempo GstBtTempo;

Opaque interface handle.

## Property Details

### The `“beats-per-minute”` property

      “beats-per-minute”         gulong

the number of beats per minute the top level pipeline uses.

Flags: Read / Write

Allowed values: >= 1

### The `“subticks-per-tick”` property

      “subticks-per-tick”        gulong

the number of subticks (for smoothing) per tick the top level pipeline uses.

Flags: Read / Write

Allowed values: >= 1

### The `“ticks-per-beat”` property

      “ticks-per-beat”           gulong

the number of ticks (events) per beat the top level pipeline uses.

Flags: Read / Write

Allowed values: >= 1