Comments (5)
API unification
There is a possibility that MIDI 1.0/2.0 events can be unified into a single paradigm in MIDIKit. This fits into the intention behind MIDI 2.0 as being an incremental set of enhancements that are available if both endpoints of a MIDI connection support MIDI 2.0, otherwise the protocol gracefully falls back to legacy MIDI 1.0 format.
This may take the form of a Note On event struct/enum that has pitch and velocity information that is in a format that can be seamlessly interpreted by the consumer of the library without much extra overhead to deal with conditional differences based on MIDI protocol.
Caveats
CoreMIDI recently had new methods and data structures added to handle basic MIDI-CI interop and UMP packets. The downside is that they come with minimum OS requirements: macOS 11.0, iOS 14. MIDIKit supports macOS 10.12+ and iOS 10+ and bumping minimum OS version requirements for MIDIKit is less than desirable.
It is possible to conditionally expose methods or handle implementation in MIDIKit on an @available
basis if the minimum OS version requirement is met to use the new CoreMIDI API. MIDIKit would still be fully functional on older OS versions but the MIDI 2.0 features would only be available on newer OS versions that match the new CoreMIDI requirements.
Handling any MIDI 2.0 I/O or events in MIDIKit on older OS versions would require completely custom implementations.
from midikit.
Initial UMP support is in MIDIKit 0.1.15, on macOS Big Sur / iOS 14 or later, but is bypassed internally for the time being. All events are happening using MIDI 1.0 spec at this stage.
Still a WIP, some things are not implemented yet (multi-packet SysEx messages and a few other)
from midikit.
Full UMP support will be WIP (blocked-in) in MIDIKit 0.2.0 but completed at a later date.
from midikit.
Most MIDI 2.0 UMP events are now supported.
UMP SysEx messages are not yet implemented, which will take more work because of its multi-part message formatting.
from midikit.
UMP SysEx7 & SysEx8 support has now been added.
from midikit.
Related Issues (20)
- Move bluetooth SwiftUI views/classes into MIDIKit?
- midiManager.endpoints and midiManager.devices.devices only give an empty list `[]` HOT 1
- Example: Wired USB Connection from iOS device to Mac HOT 3
- Expose inits for CoreMIDI packets and packet lists HOT 2
- MIDI 2.0 RPN/NRPN HOT 3
- MIDI Notification - Object `removed` may return empty metadata HOT 1
- MIDI Thru Connections are not supported on this platform due to Core MIDI bugs. HOT 16
- Broken link in docs for Event Filters HOT 3
- MIDIEventLogger example In Advanced Examples folder won't build HOT 13
- `MIDIFile` could use `Hashable` conformance HOT 1
- Crash while parsing MIDI file HOT 1
- Translation of Note On with 0 Velocity to Note Off Should Be Opt-In (Off by Default) HOT 1
- MIDI File parse bug. HOT 4
- `MIDIFile`: Add structure validation
- MTCVideoPlayer project fails to build HOT 1
- Convert `MIDIManager` to global singleton
- MIDIKitSMF: slow parse time for very big SMF files HOT 2
- Docs: "MIDI.File" typo? HOT 3
- ProgramChange midi1RawBytes() HOT 1
- 80-90% CPU Usage For HUITest Client HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from midikit.