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

MIDI I/O To Do List #19

Open
4 of 12 tasks
orchetect opened this issue Jul 30, 2021 · 0 comments
Open
4 of 12 tasks

MIDI I/O To Do List #19

orchetect opened this issue Jul 30, 2021 · 0 comments
Assignees
Labels
🎹 i/o MIDIKit I/O 🎩 refinement An enhancement to an existing feature
Milestone

Comments

@orchetect
Copy link
Owner

orchetect commented Jul 30, 2021

General

  • MIDIManager: Add remaining accessors for things like Core MIDI ExternalDevices, etc.
  • MIDIIOObjectProtocol: Add remaining set...() property methods (counterparts to get...() property methods)
  • New method to send multiple MIDIEventPacket in a single MIDIEventList (similar to existing MIDIPacketList method)
  • Formalize ReceivesMIDIEvents and SendsMIDIEvents protocols and how they are used internally.
    When using events: [MIDIEvent] variations of send or receive, I/O should attempt to pack all events into a single MIDIPacketList/MIDIEventList
  • getConnectionUniqueID() can be Int32 or CFData - see Core MIDI docs:

    The value provided may be an integer. To indicate that a driver connects to multiple external objects, pass the array of big-endian SInt32 values as a CFData object.

  • MIDI thru connections: add transforms that exist in Core MIDI to thru params

Legacy (non-UMP MIDI 1.0)

  • Multi-packet chunking of legacy MIDI 1.0 SysEx messages
  • Add compoundEventParsing: Bool property to MIDI1Parser that buffers received events that match certain RPN, NRPN messages and return compound events (ie: .rpn() instead of a series of .cc() events) upon receipt of all messages that comprise the compound event.

Done

  • Carry MIDI packet timestamp through to MIDIEvent consumers? (ReceivesMIDIEvents protocol) Or at least provide it in the receive handler.
  • MIDI non-persistent thru connections:
    • do they need to be reconnected (refreshed) when a received MIDI notification indicates setup has changed or things were added/removed in the Core MIDI subsystem? or does Core MIDI handle some of that autonomously?
    • what happens when ports involved disappear and reappear in the system? Do we need to worry about a refreshConnections(in:) method like with the inputs and outputs?
@orchetect orchetect added 🎹 i/o MIDIKit I/O 🎩 refinement An enhancement to an existing feature labels Jul 30, 2021
@orchetect orchetect self-assigned this Jul 30, 2021
@orchetect orchetect changed the title I/O Task List 📝 I/O Task List Jul 30, 2021
@orchetect orchetect added this to the 1.0.0 milestone Jan 31, 2023
@orchetect orchetect changed the title 📝 I/O Task List MIDI I/O To Do List Dec 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎹 i/o MIDIKit I/O 🎩 refinement An enhancement to an existing feature
Projects
None yet
Development

No branches or pull requests

1 participant