1#ifndef BRICK_CORE_SEQ_SEQ_ENGINE_H_
2#define BRICK_CORE_SEQ_SEQ_ENGINE_H_
23#define SEQ_ENGINE_SCHEDULER_CAPACITY 64U
int32_t msg_t
Definition ch.h:13
uint32_t systime_t
Definition ch.h:12
Gestionnaire central d’horloge et de synchronisation tempo / MIDI.
void seq_engine_reset(seq_engine_t *engine)
Definition seq_engine.c:128
bool seq_engine_scheduler_pop(seq_engine_scheduler_t *scheduler, seq_engine_event_t *out_event)
Definition seq_engine.c:174
void seq_engine_init(seq_engine_t *engine, const seq_engine_config_t *config)
Definition seq_engine.c:40
msg_t seq_engine_start(seq_engine_t *engine)
Definition seq_engine.c:75
msg_t(* seq_engine_note_off_cb_t)(const seq_engine_note_off_t *note_off, systime_t scheduled_time)
Definition seq_engine.h:94
void seq_engine_process_step(seq_engine_t *engine, const clock_step_info_t *info)
Definition seq_engine.c:212
bool(* seq_engine_track_muted_cb_t)(uint8_t track)
Definition seq_engine.h:108
seq_engine_plock_action_t
Definition seq_engine.h:33
@ SEQ_ENGINE_PLOCK_RESTORE
Definition seq_engine.h:35
@ SEQ_ENGINE_PLOCK_APPLY
Definition seq_engine.h:34
void seq_engine_attach_pattern(seq_engine_t *engine, seq_model_pattern_t *pattern)
Definition seq_engine.c:68
msg_t(* seq_engine_plock_cb_t)(const seq_engine_plock_t *plock, systime_t scheduled_time)
Definition seq_engine.h:97
msg_t(* seq_engine_note_on_cb_t)(const seq_engine_note_on_t *note_on, systime_t scheduled_time)
Definition seq_engine.h:91
bool seq_engine_scheduler_peek(const seq_engine_scheduler_t *scheduler, seq_engine_event_t *out_event)
Definition seq_engine.c:190
seq_engine_event_type_t
Definition seq_engine.h:26
@ SEQ_ENGINE_EVENT_NOTE_OFF
Definition seq_engine.h:28
@ SEQ_ENGINE_EVENT_PLOCK
Definition seq_engine.h:29
@ SEQ_ENGINE_EVENT_NOTE_ON
Definition seq_engine.h:27
void seq_engine_scheduler_clear(seq_engine_scheduler_t *scheduler)
Definition seq_engine.c:204
bool seq_engine_scheduler_push(seq_engine_scheduler_t *scheduler, const seq_engine_event_t *event)
Definition seq_engine.c:139
void seq_engine_set_callbacks(seq_engine_t *engine, const seq_engine_callbacks_t *callbacks)
Definition seq_engine.c:58
void seq_engine_stop(seq_engine_t *engine)
Definition seq_engine.c:104
#define SEQ_ENGINE_SCHEDULER_CAPACITY
Definition seq_engine.h:23
Brick sequencer data model definitions and helpers.
#define SEQ_MODEL_VOICES_PER_STEP
Definition seq_model.h:20
Informations complètes passées au callback à chaque “step” (1/16).
Definition clock_manager.h:52
Definition seq_engine.h:101
seq_engine_note_on_cb_t note_on
Definition seq_engine.h:102
seq_engine_note_off_cb_t note_off
Definition seq_engine.h:103
seq_engine_plock_cb_t plock
Definition seq_engine.h:104
Definition seq_engine.h:111
seq_engine_track_muted_cb_t is_track_muted
Definition seq_engine.h:114
seq_model_pattern_t * pattern
Definition seq_engine.h:112
seq_engine_callbacks_t callbacks
Definition seq_engine.h:113
Definition seq_engine.h:58
seq_engine_note_on_t note_on
Definition seq_engine.h:62
seq_engine_plock_t plock
Definition seq_engine.h:64
systime_t scheduled_time
Definition seq_engine.h:60
seq_engine_note_off_t note_off
Definition seq_engine.h:63
seq_engine_event_type_t type
Definition seq_engine.h:59
Definition seq_engine.h:46
uint8_t voice
Definition seq_engine.h:47
uint8_t note
Definition seq_engine.h:48
Definition seq_engine.h:39
uint8_t voice
Definition seq_engine.h:40
uint8_t note
Definition seq_engine.h:41
uint8_t velocity
Definition seq_engine.h:42
Definition seq_engine.h:85
thread_t * thread
Definition seq_engine.h:86
bool running
Definition seq_engine.h:87
Definition seq_engine.h:52
seq_model_plock_t plock
Definition seq_engine.h:53
seq_engine_plock_action_t action
Definition seq_engine.h:54
Definition seq_engine.h:76
seq_model_gen_t last_generation
Definition seq_engine.h:79
const seq_model_pattern_t * pattern
Definition seq_engine.h:77
bool step_has_playable_voice
Definition seq_engine.h:80
size_t step_index
Definition seq_engine.h:78
bool step_has_automation
Definition seq_engine.h:81
Definition seq_engine.h:69
size_t count
Definition seq_engine.h:72
size_t head
Definition seq_engine.h:71
Definition seq_engine.h:118
seq_engine_player_t player
Definition seq_engine.h:121
mutex_t scheduler_lock
Definition seq_engine.h:123
binary_semaphore_t player_sem
Definition seq_engine.h:124
seq_engine_config_t config
Definition seq_engine.h:122
seq_engine_scheduler_t scheduler
Definition seq_engine.h:120
seq_engine_reader_t reader
Definition seq_engine.h:119
bool clock_attached
Definition seq_engine.h:125
Definition seq_model.h:30
Definition seq_model.h:150
Definition seq_model.h:82