MIDIKit
MIDIKit copied to clipboard
HUI Protocol Support
Features
- [ ] HUI text value types: add static constructors (
.lossy(String)etc.)
Fixes
- [ ]
HUICoreEvent.largeDisplay(slices:)is open-ended array of chars. When sending this event, the MIDI event encoder could validate this to pad/trim to exactly 10 chars. - [ ] fix: remote presence works most of the time but sometimes thinks remote is present when it's not
Pre-Release
- [x] HUITest example project:
- [x] update V-Pots and faders to use AudioKit’s Controls library
- [x] change local MIDIKit package linking over to remote SPM dependency
- [ ] add text labels to HUITest project
Faderview to match dbVU scale that is marked on the HUI device surface
- [ ] update MIDIKit docs, publish to docs branch
- [ ] unit tests
Done
- [x] add MIDI Device Inquiry SysEx response to
HUISurface - [x] V-Pot LEDs: add UnitInterval (0.0...1.0) value static constructors / translation methods for
- [x] HUITest example project: rename HUIHostHelper to HUIHostModel
- [x] test with ABAction/Arbiter to see if API changes make sense
- [x] jog wheel API
- [x]
HUICoreEventis slightly abstracted but should it be?- [x] large display and time display cases carry their full display contents but should probably only carry the atomic changes (mirroring the actual MIDI encoded data)
- [ ] maybe only
HUIEvent(model change event) should carry these full strings, and when sending/receiving HUI only delta (partial) change messages should be sent when invokingtransmitLargeDisplay()onHUIHostBank
- [ ] maybe only
- [x] should
HUICoreEventbe internal and not public?
- [x] large display and time display cases carry their full display contents but should probably only carry the atomic changes (mirroring the actual MIDI encoded data)
- [x] HUIHostBank: rename
translator: HUIModeltomodel:and make it public? Allow more interactivity with the model for the host bank? Tricky part is causing updates to the model to be transmit to the bank’s midiOut handler. - [x] how is V-Pot aboslute value (UInt7) being dealt with vs. delta change messages?
- [x] V Pot encoding: surface→host sends delta change value, but sending LED preset host→surface is an index number
- [x] Add CustomStringConvertible to ChannelStripComponent, and any other enums that need it
- [x] HUIHost should handle MIDI system reset msg 0xFF - add a HUICoreEvent case for it
- [x] HUI: run
HUISwitch.allCasesthrough aforEach {}unit test to see if they all encode and decode successfully - [x] HUI: factor out calls to
Logger.debug()- or have a Bool setting to enable logging? It only logs in DEBUG builds any way. - [x] nomenclature consistency: all enum case/type names referring to HUI text/char displays should be named as their respective
Display
Deferred / Cancelled
- [ ] add
HUISurfacefull state push? (not to host of course, there's nothing to push. but to the handler that is subscribed to hui surface change notifications)- by way of generating static model change notifications for all state members?
- [ ]
HUIHostBankadditions- [ ] add model
- [ ] add full model state push (to client surface, ie: when a client appears after a break in ping message stream (loss of surface presence))
- have to find out if HUI surfaces understand receiving 0xFF system reset and can reset themselves to a known state, then HUISurface could simply do a diff of its model state against known default state and only push the diff'd state elements