Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier seq_engine.h

Sequencer engine skeleton (reader, scheduler, player) definitions. Plus de détails...

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include "ch.h"
#include "clock_manager.h"
#include "seq_model.h"

Aller au code source de ce fichier.

Structures de données

struct  seq_engine_note_on_t
 
struct  seq_engine_note_off_t
 
struct  seq_engine_plock_t
 
struct  seq_engine_event_t
 
struct  seq_engine_scheduler_t
 
struct  seq_engine_reader_t
 
struct  seq_engine_player_t
 
struct  seq_engine_callbacks_t
 
struct  seq_engine_config_t
 
struct  seq_engine_t
 

Macros

#define SEQ_ENGINE_SCHEDULER_CAPACITY   64U
 

Définitions de type

typedef msg_t(* seq_engine_note_on_cb_t) (const seq_engine_note_on_t *note_on, systime_t scheduled_time)
 
typedef msg_t(* seq_engine_note_off_cb_t) (const seq_engine_note_off_t *note_off, systime_t scheduled_time)
 
typedef msg_t(* seq_engine_plock_cb_t) (const seq_engine_plock_t *plock, systime_t scheduled_time)
 
typedef bool(* seq_engine_track_muted_cb_t) (uint8_t track)
 

Énumérations

enum  seq_engine_event_type_t { SEQ_ENGINE_EVENT_NOTE_ON = 0 , SEQ_ENGINE_EVENT_NOTE_OFF , SEQ_ENGINE_EVENT_PLOCK }
 
enum  seq_engine_plock_action_t { SEQ_ENGINE_PLOCK_APPLY = 0 , SEQ_ENGINE_PLOCK_RESTORE }
 

Fonctions

void seq_engine_init (seq_engine_t *engine, const seq_engine_config_t *config)
 
void seq_engine_set_callbacks (seq_engine_t *engine, const seq_engine_callbacks_t *callbacks)
 
void seq_engine_attach_pattern (seq_engine_t *engine, seq_model_pattern_t *pattern)
 
msg_t seq_engine_start (seq_engine_t *engine)
 
void seq_engine_stop (seq_engine_t *engine)
 
void seq_engine_reset (seq_engine_t *engine)
 
bool seq_engine_scheduler_push (seq_engine_scheduler_t *scheduler, const seq_engine_event_t *event)
 
bool seq_engine_scheduler_pop (seq_engine_scheduler_t *scheduler, seq_engine_event_t *out_event)
 
bool seq_engine_scheduler_peek (const seq_engine_scheduler_t *scheduler, seq_engine_event_t *out_event)
 
void seq_engine_scheduler_clear (seq_engine_scheduler_t *scheduler)
 
void seq_engine_process_step (seq_engine_t *engine, const clock_step_info_t *info)
 

Description détaillée

Sequencer engine skeleton (reader, scheduler, player) definitions.

Documentation des macros

◆ SEQ_ENGINE_SCHEDULER_CAPACITY

#define SEQ_ENGINE_SCHEDULER_CAPACITY   64U

Maximum number of scheduled events retained by the scheduler.

Documentation des définitions de type

◆ seq_engine_note_off_cb_t

typedef msg_t(* seq_engine_note_off_cb_t) (const seq_engine_note_off_t *note_off, systime_t scheduled_time)

Callback type for NOTE OFF events.

◆ seq_engine_note_on_cb_t

typedef msg_t(* seq_engine_note_on_cb_t) (const seq_engine_note_on_t *note_on, systime_t scheduled_time)

Callback type for NOTE ON events.

◆ seq_engine_plock_cb_t

typedef msg_t(* seq_engine_plock_cb_t) (const seq_engine_plock_t *plock, systime_t scheduled_time)

Callback type for parameter lock dispatch.

◆ seq_engine_track_muted_cb_t

typedef bool(* seq_engine_track_muted_cb_t) (uint8_t track)

Callback invoked to query whether a given track is muted.

Documentation du type de l'énumération

◆ seq_engine_event_type_t

Enumerates the type of events the scheduler can handle.

Valeurs énumérées
SEQ_ENGINE_EVENT_NOTE_ON 

Dispatch a NOTE ON event.

SEQ_ENGINE_EVENT_NOTE_OFF 

Dispatch a NOTE OFF event.

SEQ_ENGINE_EVENT_PLOCK 

Dispatch a parameter lock.

◆ seq_engine_plock_action_t

Describes how a parameter lock should be applied by the runner.

Valeurs énumérées
SEQ_ENGINE_PLOCK_APPLY 

Apply the locked value.

SEQ_ENGINE_PLOCK_RESTORE 

Restore the pre-step value.

Documentation des fonctions

◆ seq_engine_attach_pattern()

void seq_engine_attach_pattern ( seq_engine_t engine,
seq_model_pattern_t pattern 
)

◆ seq_engine_init()

void seq_engine_init ( seq_engine_t engine,
const seq_engine_config_t config 
)

◆ seq_engine_process_step()

void seq_engine_process_step ( seq_engine_t engine,
const clock_step_info_t info 
)

◆ seq_engine_reset()

void seq_engine_reset ( seq_engine_t engine)

◆ seq_engine_scheduler_clear()

void seq_engine_scheduler_clear ( seq_engine_scheduler_t scheduler)

◆ seq_engine_scheduler_peek()

bool seq_engine_scheduler_peek ( const seq_engine_scheduler_t scheduler,
seq_engine_event_t out_event 
)

◆ seq_engine_scheduler_pop()

bool seq_engine_scheduler_pop ( seq_engine_scheduler_t scheduler,
seq_engine_event_t out_event 
)

◆ seq_engine_scheduler_push()

bool seq_engine_scheduler_push ( seq_engine_scheduler_t scheduler,
const seq_engine_event_t event 
)

◆ seq_engine_set_callbacks()

void seq_engine_set_callbacks ( seq_engine_t engine,
const seq_engine_callbacks_t callbacks 
)

◆ seq_engine_start()

msg_t seq_engine_start ( seq_engine_t engine)

◆ seq_engine_stop()

void seq_engine_stop ( seq_engine_t engine)