Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
midi.h
Aller à la documentation de ce fichier.
1
19#ifndef MIDI_H
20#define MIDI_H
21
22#include <stdint.h>
23#include <stdbool.h>
24#include <stddef.h>
25
26/* ====================================================================== */
27/* CONFIGURATION GLOBALE */
28/* ====================================================================== */
29
36#ifndef MIDI_MB_DROP_OLDEST
37#define MIDI_MB_DROP_OLDEST 0
38#endif
39
43#ifndef MIDI_RT_MICROWAIT_US
44#define MIDI_RT_MICROWAIT_US 50
45#endif
46
50#ifndef MIDI_USB_CABLE
51#define MIDI_USB_CABLE 0u
52#endif
53
54/* ====================================================================== */
55/* TYPES ET STRUCTURES */
56/* ====================================================================== */
57
68
73typedef struct {
74 volatile uint32_t tx_sent_immediate;
75 volatile uint32_t tx_sent_batched;
76 volatile uint32_t rt_f8_drops;
77 volatile uint32_t rt_f8_burst_sent;
78 volatile uint32_t rt_other_enq_fallback;
79 volatile uint32_t tx_mb_drops;
80 volatile uint32_t usb_not_ready_drops;
82
85
86/* ====================================================================== */
87/* INITIALISATION */
88/* ====================================================================== */
89
96void midi_init(void);
97
98/* ====================================================================== */
99/* COMMANDES “CHANNEL VOICE” */
100/* ====================================================================== */
101
109void midi_note_on(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel);
110
114void midi_note_off(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel);
115
119void midi_poly_aftertouch(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t pressure);
120
124void midi_cc(midi_dest_t dest, uint8_t ch, uint8_t cc, uint8_t val);
125
129void midi_program_change(midi_dest_t dest, uint8_t ch, uint8_t program);
130
134void midi_channel_pressure(midi_dest_t dest, uint8_t ch, uint8_t pressure);
135
140void midi_pitchbend(midi_dest_t dest, uint8_t ch, int16_t value14b);
141
142/* ====================================================================== */
143/* COMMANDES “SYSTEM COMMON” */
144/* ====================================================================== */
145
146void midi_mtc_quarter_frame(midi_dest_t dest, uint8_t qf);
147void midi_song_position(midi_dest_t dest, uint16_t pos14);
148void midi_song_select(midi_dest_t dest, uint8_t song);
150
151/* ====================================================================== */
152/* COMMANDES “SYSTEM REALTIME” */
153/* ====================================================================== */
154
155void midi_clock(midi_dest_t dest);
156void midi_start(midi_dest_t dest);
157void midi_continue(midi_dest_t dest);
158void midi_stop(midi_dest_t dest);
161
162/* ====================================================================== */
163/* MESSAGES DE MODE DE CANAL */
164/* ====================================================================== */
165
166void midi_all_sound_off(midi_dest_t dest, uint8_t ch);
167void midi_reset_all_controllers(midi_dest_t dest, uint8_t ch);
168void midi_local_control(midi_dest_t dest, uint8_t ch, bool on);
169void midi_all_notes_off(midi_dest_t dest, uint8_t ch);
170void midi_omni_mode_off(midi_dest_t dest, uint8_t ch);
171void midi_omni_mode_on(midi_dest_t dest, uint8_t ch);
172void midi_mono_mode_on(midi_dest_t dest, uint8_t ch, uint8_t num_channels);
173void midi_poly_mode_on(midi_dest_t dest, uint8_t ch);
174
175/* ====================================================================== */
176/* OUTILS */
177/* ====================================================================== */
178
182void midi_stats_reset(void);
183
185uint16_t midi_usb_queue_high_watermark(void);
186
187#endif /* MIDI_H */
void midi_all_notes_off(midi_dest_t dest, uint8_t ch)
Definition midi.c:503
void midi_start(midi_dest_t dest)
Definition midi.c:448
void midi_omni_mode_on(midi_dest_t dest, uint8_t ch)
Definition midi.c:511
void midi_tune_request(midi_dest_t dest)
Definition midi.c:436
void midi_channel_pressure(midi_dest_t dest, uint8_t ch, uint8_t pressure)
Envoie une pression de canal (Channel Pressure).
Definition midi.c:408
void midi_mtc_quarter_frame(midi_dest_t dest, uint8_t qf)
Definition midi.c:420
void midi_local_control(midi_dest_t dest, uint8_t ch, bool on)
Definition midi.c:499
void midi_init(void)
Initialise le module MIDI (UART + thread TX USB).
Definition midi.c:214
void midi_pitchbend(midi_dest_t dest, uint8_t ch, int16_t value14b)
Envoie un pitch bend 14 bits.
Definition midi.c:413
midi_dest_t
Sélectionne la ou les destinations d’envoi MIDI.
Definition midi.h:62
@ MIDI_DEST_BOTH
Definition midi.h:66
@ MIDI_DEST_USB
Definition midi.h:65
@ MIDI_DEST_UART
Definition midi.h:64
@ MIDI_DEST_NONE
Definition midi.h:63
void midi_all_sound_off(midi_dest_t dest, uint8_t ch)
Definition midi.c:491
void midi_stop(midi_dest_t dest)
Definition midi.c:462
void midi_poly_mode_on(midi_dest_t dest, uint8_t ch)
Definition midi.c:519
void midi_poly_aftertouch(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t pressure)
Envoie un message de pression polyphonique (aftertouch).
Definition midi.c:393
uint16_t midi_usb_queue_high_watermark(void)
Retourne le plus haut niveau de remplissage observé sur la mailbox USB.
Definition midi.c:523
void midi_system_reset(midi_dest_t dest)
Definition midi.c:475
void midi_song_select(midi_dest_t dest, uint8_t song)
Definition midi.c:431
void midi_active_sensing(midi_dest_t dest)
Definition midi.c:469
void midi_mono_mode_on(midi_dest_t dest, uint8_t ch, uint8_t num_channels)
Definition midi.c:515
void midi_note_off(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel)
Envoie une note OFF.
Definition midi.c:388
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).
Definition midi.c:398
void midi_continue(midi_dest_t dest)
Definition midi.c:455
void midi_song_position(midi_dest_t dest, uint16_t pos14)
Definition midi.c:425
void midi_omni_mode_off(midi_dest_t dest, uint8_t ch)
Definition midi.c:507
void midi_program_change(midi_dest_t dest, uint8_t ch, uint8_t program)
Envoie un changement de programme (Program Change).
Definition midi.c:403
void midi_reset_all_controllers(midi_dest_t dest, uint8_t ch)
Definition midi.c:495
void midi_clock(midi_dest_t dest)
Definition midi.c:442
void midi_stats_reset(void)
Réinitialise les compteurs de statistiques MIDI.
Definition midi.c:530
midi_tx_stats_t midi_tx_stats
Statistiques globales d’état et de performance MIDI.
Definition midi.c:105
void midi_note_on(midi_dest_t dest, uint8_t ch, uint8_t note, uint8_t vel)
Envoie une note ON.
Definition midi.c:382
Statistiques de transmission MIDI (pour diagnostic et debug).
Definition midi.h:73
volatile uint32_t rt_f8_drops
Definition midi.h:76
volatile uint32_t rt_other_enq_fallback
Definition midi.h:78
volatile uint32_t tx_sent_immediate
Definition midi.h:74
volatile uint32_t rt_f8_burst_sent
Definition midi.h:77
volatile uint32_t usb_not_ready_drops
Definition midi.h:80
volatile uint32_t tx_sent_batched
Definition midi.h:75
volatile uint32_t tx_mb_drops
Definition midi.h:79