Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
seq_project.h
Aller à la documentation de ce fichier.
1#ifndef BRICK_CORE_SEQ_SEQ_PROJECT_H_
2#define BRICK_CORE_SEQ_SEQ_PROJECT_H_
3
9#include <stdbool.h>
10#include <stddef.h>
11#include <stdint.h>
12
13#include "seq_model.h"
14#include "board/board_flash.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
21#define SEQ_PROJECT_MAX_TRACKS 16U
22
24#define SEQ_PROJECT_BANK_COUNT 16U
25
27#define SEQ_PROJECT_PATTERNS_PER_BANK 16U
28
30#define SEQ_PROJECT_PATTERN_STORAGE_MAX 3968U
31
33#define SEQ_PROJECT_FLASH_SLOT_SIZE (1024U * 1024U)
34
36#define SEQ_PROJECT_MAX_PROJECTS (BOARD_FLASH_CAPACITY_BYTES / SEQ_PROJECT_FLASH_SLOT_SIZE)
37
39#define SEQ_PROJECT_NAME_MAX 24U
40
42#define SEQ_PROJECT_PATTERN_NAME_MAX 16U
43
46enum {
49};
50
52typedef uint16_t seq_project_cart_caps_t;
53enum {
55};
56
65
71
73typedef struct {
75 uint8_t valid;
76 uint8_t reserved[3];
78
89
94
108
109void seq_project_init(seq_project_t *project);
110bool seq_project_assign_track(seq_project_t *project, uint8_t track_index, seq_model_pattern_t *pattern);
111seq_model_pattern_t *seq_project_get_track(seq_project_t *project, uint8_t track_index);
112const seq_model_pattern_t *seq_project_get_track_const(const seq_project_t *project, uint8_t track_index);
113bool seq_project_set_active_track(seq_project_t *project, uint8_t track_index);
114uint8_t seq_project_get_active_track(const seq_project_t *project);
117uint8_t seq_project_get_track_count(const seq_project_t *project);
118void seq_project_clear_track(seq_project_t *project, uint8_t track_index);
121void seq_project_set_track_cart(seq_project_t *project, uint8_t track_index, const seq_project_cart_ref_t *cart);
122const seq_project_cart_ref_t *seq_project_get_track_cart(const seq_project_t *project, uint8_t track_index);
123bool seq_project_set_active_slot(seq_project_t *project, uint8_t bank, uint8_t pattern);
124uint8_t seq_project_get_active_bank(const seq_project_t *project);
126seq_project_pattern_desc_t *seq_project_get_pattern_descriptor(seq_project_t *project, uint8_t bank, uint8_t pattern);
127const seq_project_pattern_desc_t *seq_project_get_pattern_descriptor_const(const seq_project_t *project, uint8_t bank, uint8_t pattern);
128bool seq_project_save(uint8_t project_index);
129bool seq_project_load(uint8_t project_index);
130bool seq_pattern_save(uint8_t bank, uint8_t pattern);
131bool seq_pattern_load(uint8_t bank, uint8_t pattern);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* BRICK_CORE_SEQ_SEQ_PROJECT_H_ */
Brick sequencer data model definitions and helpers.
bool seq_pattern_load(uint8_t bank, uint8_t pattern)
Definition seq_project.c:766
uint8_t seq_project_get_active_bank(const seq_project_t *project)
Definition seq_project.c:548
const seq_project_pattern_desc_t * seq_project_get_pattern_descriptor_const(const seq_project_t *project, uint8_t bank, uint8_t pattern)
Definition seq_project.c:569
bool seq_pattern_save(uint8_t bank, uint8_t pattern)
Definition seq_project.c:676
void seq_project_bump_generation(seq_project_t *project)
Definition seq_project.c:506
const seq_model_gen_t * seq_project_get_generation(const seq_project_t *project)
Definition seq_project.c:513
seq_project_pattern_desc_t * seq_project_get_pattern_descriptor(seq_project_t *project, uint8_t bank, uint8_t pattern)
Definition seq_project.c:562
seq_model_pattern_t * seq_project_get_active_pattern(seq_project_t *project)
Definition seq_project.c:471
seq_model_pattern_t * seq_project_get_track(seq_project_t *project, uint8_t track_index)
Definition seq_project.c:431
uint8_t seq_project_cart_flags_t
Definition seq_project.h:45
bool seq_project_set_active_track(seq_project_t *project, uint8_t track_index)
Definition seq_project.c:445
#define SEQ_PROJECT_NAME_MAX
Definition seq_project.h:39
bool seq_project_save(uint8_t project_index)
Definition seq_project.c:616
#define SEQ_PROJECT_MAX_TRACKS
Definition seq_project.h:21
#define SEQ_PROJECT_PATTERN_NAME_MAX
Definition seq_project.h:42
const seq_model_pattern_t * seq_project_get_active_pattern_const(const seq_project_t *project)
Definition seq_project.c:475
bool seq_project_set_active_slot(seq_project_t *project, uint8_t bank, uint8_t pattern)
Definition seq_project.c:534
bool seq_project_load(uint8_t project_index)
Definition seq_project.c:632
void seq_project_init(seq_project_t *project)
Definition seq_project.c:393
void seq_project_set_track_cart(seq_project_t *project, uint8_t track_index, const seq_project_cart_ref_t *cart)
Definition seq_project.c:520
bool seq_project_assign_track(seq_project_t *project, uint8_t track_index, seq_model_pattern_t *pattern)
Definition seq_project.c:412
#define SEQ_PROJECT_BANK_COUNT
Definition seq_project.h:24
@ SEQ_PROJECT_CART_FLAG_NONE
Definition seq_project.h:47
@ SEQ_PROJECT_CART_FLAG_MUTED
Definition seq_project.h:48
uint8_t seq_project_get_track_count(const seq_project_t *project)
Definition seq_project.c:479
#define SEQ_PROJECT_PATTERNS_PER_BANK
Definition seq_project.h:27
@ SEQ_PROJECT_CART_CAP_NONE
Definition seq_project.h:54
void seq_project_clear_track(seq_project_t *project, uint8_t track_index)
Definition seq_project.c:486
uint8_t seq_project_get_active_pattern_index(const seq_project_t *project)
Definition seq_project.c:555
const seq_project_cart_ref_t * seq_project_get_track_cart(const seq_project_t *project, uint8_t track_index)
Definition seq_project.c:527
const seq_model_pattern_t * seq_project_get_track_const(const seq_project_t *project, uint8_t track_index)
Definition seq_project.c:438
uint8_t seq_project_get_active_track(const seq_project_t *project)
Definition seq_project.c:461
uint16_t seq_project_cart_caps_t
Definition seq_project.h:52
Definition seq_model.h:30
Definition seq_model.h:150
Definition seq_project.h:91
Definition seq_project.h:58
uint8_t reserved
Definition seq_project.h:63
seq_project_cart_flags_t flags
Definition seq_project.h:62
uint32_t cart_id
Definition seq_project.h:59
uint8_t slot_id
Definition seq_project.h:60
seq_project_cart_caps_t capabilities
Definition seq_project.h:61
Definition seq_project.h:80
uint32_t storage_length
Definition seq_project.h:86
uint16_t reserved
Definition seq_project.h:84
uint8_t track_count
Definition seq_project.h:83
uint8_t version
Definition seq_project.h:82
uint32_t storage_offset
Definition seq_project.h:85
Definition seq_project.h:73
uint8_t valid
Definition seq_project.h:75
seq_project_cart_ref_t cart
Definition seq_project.h:74
Definition seq_project.h:96
uint8_t active_track
Definition seq_project.h:100
uint32_t tempo
Definition seq_project.h:105
uint8_t active_bank
Definition seq_project.h:101
uint8_t track_count
Definition seq_project.h:99
uint8_t project_index
Definition seq_project.h:103
seq_model_gen_t generation
Definition seq_project.h:104
uint8_t active_pattern
Definition seq_project.h:102
Definition seq_project.h:67
seq_project_cart_ref_t cart
Definition seq_project.h:69
seq_model_pattern_t * pattern
Definition seq_project.h:68