HUI Protocol Support
orchetect opened this issue · 0 comments
orchetect commented
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
- HUITest example project:
- update V-Pots and faders to use AudioKit’s Controls library
- change local MIDIKit package linking over to remote SPM dependency
- add text labels to HUITest project
Fader
view to match dbVU scale that is marked on the HUI device surface
- update MIDIKit docs, publish to docs branch
- unit tests
Done
- add MIDI Device Inquiry SysEx response to
HUISurface
- V-Pot LEDs: add UnitInterval (0.0...1.0) value static constructors / translation methods for
- HUITest example project: rename HUIHostHelper to HUIHostModel
- test with ABAction/Arbiter to see if API changes make sense
- jog wheel API
-
HUICoreEvent
is slightly abstracted but should it be?- 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
- should
HUICoreEvent
be internal and not public?
- 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)
- HUIHostBank: rename
translator: HUIModel
tomodel:
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. - how is V-Pot aboslute value (UInt7) being dealt with vs. delta change messages?
- V Pot encoding: surface→host sends delta change value, but sending LED preset host→surface is an index number
- Add CustomStringConvertible to ChannelStripComponent, and any other enums that need it
- HUIHost should handle MIDI system reset msg 0xFF - add a HUICoreEvent case for it
- HUI: run
HUISwitch.allCases
through aforEach {}
unit test to see if they all encode and decode successfully - HUI: factor out calls to
Logger.debug()
- or have a Bool setting to enable logging? It only logs in DEBUG builds any way. - nomenclature consistency: all enum case/type names referring to HUI text/char displays should be named as their respective
Display
Deferred / Cancelled
- add
HUISurface
full 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?
-
HUIHostBank
additions- 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