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

Sequencer multi-track project helpers implementation. Plus de détails...

#include "seq_project.h"
#include <string.h>
#include "brick_config.h"
#include "board/board_flash.h"
#include "cart/cart_registry.h"

Macros

#define SEQ_PROJECT_DIRECTORY_MAGIC   0x4250524FU /* 'BPRO' */
 
#define SEQ_PROJECT_PATTERN_MAGIC   0x42504154U /* 'BPAT' */
 
#define SEQ_PROJECT_DIRECTORY_VERSION   1U
 
#define SEQ_PROJECT_PATTERN_VERSION   1U
 

Énumérations

enum  { STEP_FLAG_ACTIVE = 1U << 0 , STEP_FLAG_AUTOMATION = 1U << 1 , STEP_FLAG_OFFSETS = 1U << 2 }
 
enum  track_load_policy_t { TRACK_LOAD_FULL = 0 , TRACK_LOAD_REMAPPED , TRACK_LOAD_DIFFERENT_CART , TRACK_LOAD_ABSENT }
 

Fonctions

struct __attribute__ ((packed))
 
void seq_project_init (seq_project_t *project)
 
bool seq_project_assign_track (seq_project_t *project, uint8_t track_index, seq_model_pattern_t *pattern)
 
seq_model_pattern_tseq_project_get_track (seq_project_t *project, uint8_t track_index)
 
const seq_model_pattern_tseq_project_get_track_const (const seq_project_t *project, uint8_t track_index)
 
bool seq_project_set_active_track (seq_project_t *project, uint8_t track_index)
 
uint8_t seq_project_get_active_track (const seq_project_t *project)
 
seq_model_pattern_tseq_project_get_active_pattern (seq_project_t *project)
 
const seq_model_pattern_tseq_project_get_active_pattern_const (const seq_project_t *project)
 
uint8_t seq_project_get_track_count (const seq_project_t *project)
 
void seq_project_clear_track (seq_project_t *project, uint8_t track_index)
 
void seq_project_bump_generation (seq_project_t *project)
 
const seq_model_gen_tseq_project_get_generation (const seq_project_t *project)
 
void seq_project_set_track_cart (seq_project_t *project, uint8_t track_index, const seq_project_cart_ref_t *cart)
 
const seq_project_cart_ref_tseq_project_get_track_cart (const seq_project_t *project, uint8_t track_index)
 
bool seq_project_set_active_slot (seq_project_t *project, uint8_t bank, uint8_t pattern)
 
uint8_t seq_project_get_active_bank (const seq_project_t *project)
 
uint8_t seq_project_get_active_pattern_index (const seq_project_t *project)
 
seq_project_pattern_desc_tseq_project_get_pattern_descriptor (seq_project_t *project, uint8_t bank, uint8_t pattern)
 
const seq_project_pattern_desc_tseq_project_get_pattern_descriptor_const (const seq_project_t *project, uint8_t bank, uint8_t pattern)
 
bool seq_project_save (uint8_t project_index)
 
bool seq_project_load (uint8_t project_index)
 
bool seq_pattern_save (uint8_t bank, uint8_t pattern)
 
bool seq_pattern_load (uint8_t bank, uint8_t pattern)
 

Variables

 seq_project_directory_entry_t
 
 seq_project_directory_t
 
 pattern_blob_header_t
 
 pattern_track_header_t
 
 pattern_step_header_t
 
 pattern_voice_payload_t
 
 pattern_offsets_payload_t
 
 pattern_plock_payload_t
 

Description détaillée

Sequencer multi-track project helpers implementation.

Documentation des macros

◆ SEQ_PROJECT_DIRECTORY_MAGIC

#define SEQ_PROJECT_DIRECTORY_MAGIC   0x4250524FU /* 'BPRO' */

◆ SEQ_PROJECT_DIRECTORY_VERSION

#define SEQ_PROJECT_DIRECTORY_VERSION   1U

◆ SEQ_PROJECT_PATTERN_MAGIC

#define SEQ_PROJECT_PATTERN_MAGIC   0x42504154U /* 'BPAT' */

◆ SEQ_PROJECT_PATTERN_VERSION

#define SEQ_PROJECT_PATTERN_VERSION   1U

Documentation du type de l'énumération

◆ anonymous enum

anonymous enum
Valeurs énumérées
STEP_FLAG_ACTIVE 
STEP_FLAG_AUTOMATION 
STEP_FLAG_OFFSETS 

◆ track_load_policy_t

Valeurs énumérées
TRACK_LOAD_FULL 
TRACK_LOAD_REMAPPED 
TRACK_LOAD_DIFFERENT_CART 
TRACK_LOAD_ABSENT 

Documentation des fonctions

◆ __attribute__()

struct __attribute__ ( (packed)  )

< Relative offset inside the project slot.

< Payload length in bytes.

< On-disk pattern version.

< Tracks stored in the payload.

< Reserved for future use.

< Directory identifier.

< Directory format version.

< Slot index inside external flash.

< Project tempo snapshot.

< Active bank when saved.

< Active pattern when saved.

< Runtime track count when saved.

< Reserved for alignment.

< Project label.

< Pattern blob identifier.

< Pattern blob version.

< Number of tracks stored in this blob.

< Reserved for alignment.

< Cartridge identifier.

< Size of the serialized payload.

< Slot used during save.

< Track flags (muted...).

< Capability mask.

< Step index inside the pattern.

< Step flags bitmask.

< Mask of enabled voices.

< Number of serialized parameter locks.

◆ seq_pattern_load()

bool seq_pattern_load ( uint8_t  bank,
uint8_t  pattern 
)

◆ seq_pattern_save()

bool seq_pattern_save ( uint8_t  bank,
uint8_t  pattern 
)

◆ seq_project_assign_track()

bool seq_project_assign_track ( seq_project_t project,
uint8_t  track_index,
seq_model_pattern_t pattern 
)

◆ seq_project_bump_generation()

void seq_project_bump_generation ( seq_project_t project)

◆ seq_project_clear_track()

void seq_project_clear_track ( seq_project_t project,
uint8_t  track_index 
)

◆ seq_project_get_active_bank()

uint8_t seq_project_get_active_bank ( const seq_project_t project)

◆ seq_project_get_active_pattern()

seq_model_pattern_t * seq_project_get_active_pattern ( seq_project_t project)

◆ seq_project_get_active_pattern_const()

const seq_model_pattern_t * seq_project_get_active_pattern_const ( const seq_project_t project)

◆ seq_project_get_active_pattern_index()

uint8_t seq_project_get_active_pattern_index ( const seq_project_t project)

◆ seq_project_get_active_track()

uint8_t seq_project_get_active_track ( const seq_project_t project)

◆ seq_project_get_generation()

const seq_model_gen_t * seq_project_get_generation ( const seq_project_t project)

◆ seq_project_get_pattern_descriptor()

seq_project_pattern_desc_t * seq_project_get_pattern_descriptor ( seq_project_t project,
uint8_t  bank,
uint8_t  pattern 
)

◆ seq_project_get_pattern_descriptor_const()

const seq_project_pattern_desc_t * seq_project_get_pattern_descriptor_const ( const seq_project_t project,
uint8_t  bank,
uint8_t  pattern 
)

◆ seq_project_get_track()

seq_model_pattern_t * seq_project_get_track ( seq_project_t project,
uint8_t  track_index 
)

◆ seq_project_get_track_cart()

const seq_project_cart_ref_t * seq_project_get_track_cart ( const seq_project_t project,
uint8_t  track_index 
)

◆ seq_project_get_track_const()

const seq_model_pattern_t * seq_project_get_track_const ( const seq_project_t project,
uint8_t  track_index 
)

◆ seq_project_get_track_count()

uint8_t seq_project_get_track_count ( const seq_project_t project)

◆ seq_project_init()

void seq_project_init ( seq_project_t project)

◆ seq_project_load()

bool seq_project_load ( uint8_t  project_index)

◆ seq_project_save()

bool seq_project_save ( uint8_t  project_index)

◆ seq_project_set_active_slot()

bool seq_project_set_active_slot ( seq_project_t project,
uint8_t  bank,
uint8_t  pattern 
)

◆ seq_project_set_active_track()

bool seq_project_set_active_track ( seq_project_t project,
uint8_t  track_index 
)

◆ seq_project_set_track_cart()

void seq_project_set_track_cart ( seq_project_t project,
uint8_t  track_index,
const seq_project_cart_ref_t cart 
)

Documentation des variables

◆ pattern_blob_header_t

pattern_blob_header_t

◆ pattern_offsets_payload_t

pattern_offsets_payload_t

◆ pattern_plock_payload_t

pattern_plock_payload_t

◆ pattern_step_header_t

pattern_step_header_t

◆ pattern_track_header_t

pattern_track_header_t

◆ pattern_voice_payload_t

pattern_voice_payload_t

◆ seq_project_directory_entry_t

seq_project_directory_entry_t

◆ seq_project_directory_t

seq_project_directory_t