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

Interface du module MIDI (UART + USB) pour ChibiOS. Plus de détails...

#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>

Aller au code source de ce fichier.

Structures de données

struct  midi_tx_stats_t
 Statistiques de transmission MIDI (pour diagnostic et debug). Plus de détails...
 

Macros

#define MIDI_MB_DROP_OLDEST   0
 Comportement en cas de débordement de la file d’attente USB MIDI.
 
#define MIDI_RT_MICROWAIT_US   50
 Délai (en µs) avant de relâcher le sémaphore d’envoi pour les messages temps réel.
 
#define MIDI_USB_CABLE   0u
 Numéro de câble USB MIDI (0 pour unique interface).
 

Énumérations

enum  midi_dest_t { MIDI_DEST_NONE = 0 , MIDI_DEST_UART , MIDI_DEST_USB , MIDI_DEST_BOTH }
 Sélectionne la ou les destinations d’envoi MIDI. Plus de détails...
 

Fonctions

void midi_init (void)
 Initialise le module MIDI (UART + thread TX USB).
 
void midi_note_on (midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel)
 Envoie une note ON.
 
void midi_note_off (midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel)
 Envoie une note OFF.
 
void midi_poly_aftertouch (midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t pressure)
 Envoie un message de pression polyphonique (aftertouch).
 
void midi_cc (midi_dest_t dest, uint8_t ch, uint8_t cc, uint8_t val)
 Envoie un message de changement de contrôle (Control Change).
 
void midi_program_change (midi_dest_t dest, uint8_t ch, uint8_t program)
 Envoie un changement de programme (Program Change).
 
void midi_channel_pressure (midi_dest_t dest, uint8_t ch, uint8_t pressure)
 Envoie une pression de canal (Channel Pressure).
 
void midi_pitchbend (midi_dest_t dest, uint8_t ch, int16_t value14b)
 Envoie un pitch bend 14 bits.
 
void midi_mtc_quarter_frame (midi_dest_t dest, uint8_t qf)
 
void midi_song_position (midi_dest_t dest, uint16_t pos14)
 
void midi_song_select (midi_dest_t dest, uint8_t song)
 
void midi_tune_request (midi_dest_t dest)
 
void midi_clock (midi_dest_t dest)
 
void midi_start (midi_dest_t dest)
 
void midi_continue (midi_dest_t dest)
 
void midi_stop (midi_dest_t dest)
 
void midi_active_sensing (midi_dest_t dest)
 
void midi_system_reset (midi_dest_t dest)
 
void midi_all_sound_off (midi_dest_t dest, uint8_t ch)
 
void midi_reset_all_controllers (midi_dest_t dest, uint8_t ch)
 
void midi_local_control (midi_dest_t dest, uint8_t ch, bool on)
 
void midi_all_notes_off (midi_dest_t dest, uint8_t ch)
 
void midi_omni_mode_off (midi_dest_t dest, uint8_t ch)
 
void midi_omni_mode_on (midi_dest_t dest, uint8_t ch)
 
void midi_mono_mode_on (midi_dest_t dest, uint8_t ch, uint8_t num_channels)
 
void midi_poly_mode_on (midi_dest_t dest, uint8_t ch)
 
void midi_stats_reset (void)
 Réinitialise les compteurs de statistiques MIDI.
 
uint16_t midi_usb_queue_high_watermark (void)
 Retourne le plus haut niveau de remplissage observé sur la mailbox USB.
 

Variables

midi_tx_stats_t midi_tx_stats
 Statistiques globales d’état et de performance MIDI.
 

Description détaillée

Interface du module MIDI (UART + USB) pour ChibiOS.

Fournit une API unifiée pour l’envoi de messages MIDI sur ports :

  • UART DIN (31250 bauds)
  • USB MIDI Class Compliant

Fonctions principales :

  • Envoi des messages MIDI standards (Note On/Off, CC, Program Change, etc.)
  • Gestion des messages “System Common” et “System Realtime”
  • Statistiques de transmission détaillées
  • Routage entre plusieurs destinations : UART, USB, ou les deux
Note
L’implémentation est dans midi.c

Documentation des macros

◆ MIDI_MB_DROP_OLDEST

#define MIDI_MB_DROP_OLDEST   0

Comportement en cas de débordement de la file d’attente USB MIDI.

Si défini à 1, le message le plus ancien est supprimé pour insérer le nouveau. Sinon, le nouveau message est perdu.

◆ MIDI_RT_MICROWAIT_US

#define MIDI_RT_MICROWAIT_US   50

Délai (en µs) avant de relâcher le sémaphore d’envoi pour les messages temps réel.

◆ MIDI_USB_CABLE

#define MIDI_USB_CABLE   0u

Numéro de câble USB MIDI (0 pour unique interface).

Documentation du type de l'énumération

◆ midi_dest_t

Sélectionne la ou les destinations d’envoi MIDI.

Valeurs énumérées
MIDI_DEST_NONE 

Aucune sortie

MIDI_DEST_UART 

Envoi uniquement via port UART DIN

MIDI_DEST_USB 

Envoi uniquement via USB MIDI

MIDI_DEST_BOTH 

Envoi sur les deux sorties

Documentation des fonctions

◆ midi_active_sensing()

void midi_active_sensing ( midi_dest_t  dest)

◆ midi_all_notes_off()

void midi_all_notes_off ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_all_sound_off()

void midi_all_sound_off ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_cc()

void midi_cc ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  cc,
uint8_t  val 
)

Envoie un message de changement de contrôle (Control Change).

◆ midi_channel_pressure()

void midi_channel_pressure ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  pressure 
)

Envoie une pression de canal (Channel Pressure).

◆ midi_clock()

void midi_clock ( midi_dest_t  dest)

◆ midi_continue()

void midi_continue ( midi_dest_t  dest)

◆ midi_init()

void midi_init ( void  )

Initialise le module MIDI (UART + thread TX USB).

Configure le port UART DIN à 31250 bauds, initialise la mailbox et crée le thread responsable de l’envoi USB.

Initialise le module MIDI (UART + thread TX USB).

  • Configure l’UART DIN à 31250 bauds,
  • Initialise la mailbox et son buffer circulaire,
  • Initialise le sémaphore d’EP libre,
  • Démarre le thread de transmission USB-MIDI.

◆ midi_local_control()

void midi_local_control ( midi_dest_t  dest,
uint8_t  ch,
bool  on 
)

◆ midi_mono_mode_on()

void midi_mono_mode_on ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  num_channels 
)

◆ midi_mtc_quarter_frame()

void midi_mtc_quarter_frame ( midi_dest_t  dest,
uint8_t  qf 
)

◆ midi_note_off()

void midi_note_off ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  note,
uint8_t  vel 
)

Envoie une note OFF.

◆ midi_note_on()

void midi_note_on ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  note,
uint8_t  vel 
)

Envoie une note ON.

Paramètres
destDestination d’envoi (UART/USB/BOTH)
chCanal MIDI [0–15]
noteNuméro de note [0–127]
velVélocité [0–127] (0 = Note Off)

◆ midi_omni_mode_off()

void midi_omni_mode_off ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_omni_mode_on()

void midi_omni_mode_on ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_pitchbend()

void midi_pitchbend ( midi_dest_t  dest,
uint8_t  ch,
int16_t  value14b 
)

Envoie un pitch bend 14 bits.

Paramètres
value14bValeur entre -8192 et +8191

◆ midi_poly_aftertouch()

void midi_poly_aftertouch ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  note,
uint8_t  pressure 
)

Envoie un message de pression polyphonique (aftertouch).

◆ midi_poly_mode_on()

void midi_poly_mode_on ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_program_change()

void midi_program_change ( midi_dest_t  dest,
uint8_t  ch,
uint8_t  program 
)

Envoie un changement de programme (Program Change).

◆ midi_reset_all_controllers()

void midi_reset_all_controllers ( midi_dest_t  dest,
uint8_t  ch 
)

◆ midi_song_position()

void midi_song_position ( midi_dest_t  dest,
uint16_t  pos14 
)

◆ midi_song_select()

void midi_song_select ( midi_dest_t  dest,
uint8_t  song 
)

◆ midi_start()

void midi_start ( midi_dest_t  dest)

◆ midi_stats_reset()

void midi_stats_reset ( void  )

Réinitialise les compteurs de statistiques MIDI.

Réinitialise les compteurs de statistiques MIDI.

◆ midi_stop()

void midi_stop ( midi_dest_t  dest)

◆ midi_system_reset()

void midi_system_reset ( midi_dest_t  dest)

◆ midi_tune_request()

void midi_tune_request ( midi_dest_t  dest)

◆ midi_usb_queue_high_watermark()

uint16_t midi_usb_queue_high_watermark ( void  )

Retourne le plus haut niveau de remplissage observé sur la mailbox USB.

Documentation des variables

◆ midi_tx_stats

midi_tx_stats_t midi_tx_stats
extern

Statistiques globales d’état et de performance MIDI.

Statistiques globales d’état et de performance MIDI.