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

Spécifications UI des cartouches Brick (menus/pages/paramètres + cycles BM). Plus de détails...

#include <stdint.h>
#include <stdbool.h>
#include "ui_types.h"

Aller au code source de ce fichier.

Structures de données

struct  ui_param_range_t
 Plage d’un paramètre continu (CONT). Plus de détails...
 
struct  ui_param_enum_t
 Métadonnées d’un paramètre énuméré (ENUM). Plus de détails...
 
union  ui_param_meta_t
 Union des métadonnées de paramètre (continu ou énuméré). Plus de détails...
 
struct  ui_param_spec_t
 Spécification d’un paramètre UI. Plus de détails...
 
struct  ui_page_spec_t
 Spécification d’une page UI (groupe de paramètres). Plus de détails...
 
struct  ui_menu_spec_t
 Spécification d’un menu UI (ensemble de pages). Plus de détails...
 
struct  ui_cycle_idx_spec_t
 Décrit un cycle pour un bouton menu (BMx) via des indices de menus. Plus de détails...
 
struct  ui_cart_spec_t
 Spécification UI complète d’une cartouche. Plus de détails...
 

Macros

#define UI_PARAMS_PER_PAGE   4
 Nombre de paramètres par page UI (par défaut 4).
 
#define UI_PAGES_PER_MENU   5
 Nombre de pages par menu UI (par défaut 5).
 
#define UI_MENUS_PER_CART   16
 Nombre maximal de menus exposés par une cartouche (par défaut 16).
 
#define UI_CYCLE_MAX_OPTS   4
 Nombre maximal d’options cyclables par bouton BM (par défaut 4).
 

Définitions de type

typedef struct ui_param_range_t ui_param_range_t
 Plage d’un paramètre continu (CONT).
 
typedef struct ui_param_enum_t ui_param_enum_t
 Métadonnées d’un paramètre énuméré (ENUM).
 
typedef union ui_param_meta_t ui_param_meta_t
 Union des métadonnées de paramètre (continu ou énuméré).
 
typedef struct ui_param_spec_t ui_param_spec_t
 Spécification d’un paramètre UI.
 
typedef struct ui_page_spec_t ui_page_spec_t
 Spécification d’une page UI (groupe de paramètres).
 
typedef struct ui_menu_spec_t ui_menu_spec_t
 Spécification d’un menu UI (ensemble de pages).
 
typedef struct ui_cycle_idx_spec_t ui_cycle_idx_spec_t
 Décrit un cycle pour un bouton menu (BMx) via des indices de menus.
 
typedef struct ui_cart_spec_t ui_cart_spec_t
 Spécification UI complète d’une cartouche.
 

Description détaillée

Spécifications UI des cartouches Brick (menus/pages/paramètres + cycles BM).

Ce header décrit les structures purement UI utilisées pour :

  • définir les menus, pages et paramètres affichés (OLED),
  • typer chaque paramètre (booléen, enum, continu),
  • décrire les cycles de menus (BM1..BM8) via des indices statiques,
  • fournir les métadonnées nécessaires au rendu et au pilotage (labels, plages, step).

Points clés

  • Les cycles BM sont déclaratifs : chaque cartouche peut définir pour ses boutons BMx un groupe de menus cyclés (ex. BM8 → FX1→FX2→FX3→FX4).
  • Aucune dépendance logique : le contrôleur UI lit ces infos mais la cartouche ne connaît pas ui_controller.h.
  • Les structures ici ne contiennent aucune logique et ne dépendent pas du backend ou du bus — c’est du pur modèle UI.

Documentation des macros

◆ UI_CYCLE_MAX_OPTS

#define UI_CYCLE_MAX_OPTS   4

Nombre maximal d’options cyclables par bouton BM (par défaut 4).

◆ UI_MENUS_PER_CART

#define UI_MENUS_PER_CART   16

Nombre maximal de menus exposés par une cartouche (par défaut 16).

◆ UI_PAGES_PER_MENU

#define UI_PAGES_PER_MENU   5

Nombre de pages par menu UI (par défaut 5).

◆ UI_PARAMS_PER_PAGE

#define UI_PARAMS_PER_PAGE   4

Nombre de paramètres par page UI (par défaut 4).

< ui_param_kind_t, etc.

Documentation des définitions de type

◆ ui_cart_spec_t

Spécification UI complète d’une cartouche.

  • cart_name : nom affiché dans la barre de titre / entête.
  • menus : tableau fixe de UI_MENUS_PER_CART menus.
  • cycles : configuration optionnelle des boutons BM cyclés.

Cette structure reste purement déclarative et ne référence aucune logique UI ou backend.

◆ ui_cycle_idx_spec_t

Décrit un cycle pour un bouton menu (BMx) via des indices de menus.

  • count : nombre d’options dans le cycle (0 = désactivé).
  • idxs : indices des menus cibles dans ui_cart_spec_t::menus[].
  • resume : si true, le cycle reprend là où il était laissé.

Exemple : BM8 → FX1→FX2→FX3→FX4

[7] = { .count=4, .idxs={4,5,6,7}, .resume=true },

◆ ui_menu_spec_t

Spécification d’un menu UI (ensemble de pages).

  • name : nom court du menu (affichage).
  • page_titles : titres individuels des pages (peuvent être NULL).
  • pages : tableau fixe de UI_PAGES_PER_MENU pages.

◆ ui_page_spec_t

Spécification d’une page UI (groupe de paramètres).

  • params : tableau fixe de UI_PARAMS_PER_PAGE paramètres.
  • header_label : en-tête optionnel affiché sur la page (peut être NULL).

◆ ui_param_enum_t

Métadonnées d’un paramètre énuméré (ENUM).

  • labels peut être NULL (valeurs numériques brutes).
  • count est le nombre d’entrées dans l’énumération.

◆ ui_param_meta_t

Union des métadonnées de paramètre (continu ou énuméré).

◆ ui_param_range_t

Plage d’un paramètre continu (CONT).

  • min / max sont en int16_t pour supporter 0..255 et des bornes négatives.
  • step est le pas appliqué à chaque “cran” d’encodeur (>= 1).

◆ ui_param_spec_t

Spécification d’un paramètre UI.

Ordre des champs important (compatibilité initialisations XVA1) : label → kind → dest_id → default_value → meta → is_bitwise → bit_mask.

  • dest_id : identifiant “cartouche” (utilisé côté bus/uart via ui_backend).
  • default_value : valeur initiale côté UI/model.
  • is_bitwise/bit_mask : support des paramètres empaquetés (bitfields).