Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HUI Protocol Support #136

Open
19 of 30 tasks
orchetect opened this issue Jul 22, 2021 · 0 comments · Fixed by #139
Open
19 of 30 tasks

HUI Protocol Support #136

orchetect opened this issue Jul 22, 2021 · 0 comments · Fixed by #139
Assignees

Comments

@orchetect
Copy link
Owner

orchetect commented Jul 22, 2021

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 invoking transmitLargeDisplay() on HUIHostBank
    • should HUICoreEvent be internal and not public?
  • HUIHostBank: rename translator: HUIModel to model: 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 a forEach {} 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
@orchetect orchetect self-assigned this Jul 22, 2021
@orchetect orchetect transferred this issue from another repository Aug 30, 2022
@orchetect orchetect pinned this issue Sep 22, 2022
@orchetect orchetect unpinned this issue Oct 2, 2022
@orchetect orchetect linked a pull request Oct 4, 2022 that will close this issue
@orchetect orchetect reopened this Oct 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant