Fix midi_tick_count declaration and 0xF8 detection: add proper extern + transport clock parsing

This commit is contained in:
ash
2026-07-03 07:04:40 +00:00
parent 9d2872a513
commit ec0cdc9438
2 changed files with 10 additions and 0 deletions
+2
View File
@@ -3,6 +3,8 @@
#include <cstdint> #include <cstdint>
#include <functional> #include <functional>
extern volatile uint32_t midi_tick_count;
struct MidiEvent { struct MidiEvent {
enum Type { enum Type {
NOTE_ON, NOTE_ON,
+8
View File
@@ -2,6 +2,8 @@
#include <Arduino.h> #include <Arduino.h>
#include "Adafruit_TinyUSB.h" #include "Adafruit_TinyUSB.h"
volatile uint32_t midi_tick_count = 0;
static Adafruit_USBD_MIDI usb_midi; static Adafruit_USBD_MIDI usb_midi;
UsbMidiTransport::UsbMidiTransport() : initialized(false) { UsbMidiTransport::UsbMidiTransport() : initialized(false) {
@@ -51,6 +53,12 @@ void UsbMidiTransport::update() {
while (usb_midi.available()) { while (usb_midi.available()) {
uint8_t packet[4]; uint8_t packet[4];
if (usb_midi.readPacket(packet)) { if (usb_midi.readPacket(packet)) {
uint8_t cin = packet[0] & 0x0F;
if (cin == 0x0F && packet[1] == 0xF8) {
midi_tick_count++;
continue;
}
MidiEvent event; MidiEvent event;
parse_midi_packet(packet, 4, event); parse_midi_packet(packet, 4, event);