adafruit / adafruit/Adafruit_CircuitPython_MIDI

Add support for MIDI running status

Open
#8 12 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
56
Forks
26
PR merge metrics
No merged PRs in 30d

Description

_Per channel_ messages can omit the status byte and just provide data bytes which are then consider to be a repeat of the previous MIDI event with the new data.

For the implementation this implies storing the last status byte for every relevant message in case it occurs.

Some non-official discussions on this:
- http://midi.teragonaudio.com/tech/midispec/run.htm
- http://blog.cornbeast.com/2012/12/beware-of-midi-running-status/

Test for this is partially written, see `Test_MIDI.test_running_status_when_implemented()` in https://github.com/adafruit/Adafruit_CircuitPython_MIDI/blob/master/tests/MIDI_unittests.py

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with tests/MIDI_unittests.py and the partially written Test_MIDI.test_running_status_when_implemented() test. Trace the MIDI decoding entry point it exercises and determine how per-channel status is represented. Done means data-only messages reuse the previous status for each relevant channel and the running-status test passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
audio-video-rtc, embedded-iot
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.