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

Générateur d’horloge MIDI (24 PPQN) basé sur GPT3. Plus de détails...

#include "ch.h"
#include "hal.h"
#include "brick_config.h"
#include "midi_clock.h"
#include "midi.h"

Macros

#define MIDI_GPT_DRIVER   GPTD3
 
#define MIDI_GPT_BASE_HZ   1000000U
 

Fonctions

void midi_clock_register_tick_callback (midi_tick_cb_t cb)
 Enregistre un callback appelé à chaque tick MIDI (24 PPQN).
 
void midi_clock_init (void)
 Initialise le générateur MIDI Clock (thread + GPT3).
 
void midi_clock_start (void)
 Démarre la génération de MIDI Clock.
 
void midi_clock_stop (void)
 Arrête la génération de MIDI Clock.
 
void midi_clock_set_bpm (float bpm)
 Modifie le tempo du générateur.
 
float midi_clock_get_bpm (void)
 Retourne le tempo actuel (BPM).
 
bool midi_clock_is_running (void)
 Indique si la clock MIDI est active.
 

Description détaillée

Générateur d’horloge MIDI (24 PPQN) basé sur GPT3.

Ce module implémente la génération précise des ticks MIDI Clock (F8) :

  • Utilise le timer matériel TIM3 (via GPTD3) à 1 MHz.
  • Envoie les messages 0xF8 à intervalles réguliers selon le BPM courant.
  • Fournit un callback applicatif à chaque tick (pour séquenceur, clock_manager, etc.).
  • Supporte start/stop dynamique et recalcul automatique à changement de tempo.
Note
Résolution : 1 µs (bpm min ≈ 38.2 à 24 PPQN).

Documentation des macros

◆ MIDI_GPT_BASE_HZ

#define MIDI_GPT_BASE_HZ   1000000U

◆ MIDI_GPT_DRIVER

#define MIDI_GPT_DRIVER   GPTD3

Documentation des fonctions

◆ midi_clock_get_bpm()

float midi_clock_get_bpm ( void  )

Retourne le tempo actuel (BPM).

◆ midi_clock_init()

void midi_clock_init ( void  )

Initialise le générateur MIDI Clock (thread + GPT3).

Initialise le générateur d’horloge MIDI.

◆ midi_clock_is_running()

bool midi_clock_is_running ( void  )

Indique si la clock MIDI est active.

Indique si l’horloge MIDI est actuellement en cours d’exécution.

◆ midi_clock_register_tick_callback()

void midi_clock_register_tick_callback ( midi_tick_cb_t  cb)

Enregistre un callback appelé à chaque tick MIDI (24 PPQN).

Enregistre un callback appelé à chaque tick (24 PPQN).

◆ midi_clock_set_bpm()

void midi_clock_set_bpm ( float  bpm)

Modifie le tempo du générateur.

Définit le BPM et recalcule l’intervalle du timer.

Paramètres
bpmNouveau tempo en BPM.

◆ midi_clock_start()

void midi_clock_start ( void  )

Démarre la génération de MIDI Clock.

Lance le GPT en mode continu selon le BPM courant.

◆ midi_clock_stop()

void midi_clock_stop ( void  )

Arrête la génération de MIDI Clock.

Stoppe la génération de MIDI Clock.