Git Product home page Git Product logo

Comments (5)

orchetect avatar orchetect commented on September 26, 2024

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.

orchetect avatar orchetect commented on September 26, 2024

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.

orchetect avatar orchetect commented on September 26, 2024

Full UMP support will be WIP (blocked-in) in MIDIKit 0.2.0 but completed at a later date.

from midikit.

orchetect avatar orchetect commented on September 26, 2024

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.

orchetect avatar orchetect commented on September 26, 2024

UMP SysEx7 & SysEx8 support has now been added.

from midikit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.