and/or UMP (MIDI 2.0) devices Can create virtual devices (not doable in javax.sound.midi) Supports MIDI 2.0 UMP (a handful of libraries do) and MIDI-CI sessions (only JUCE in C++ and ktmidi in Kotlin do)
- 7 bits => 32 bits - 16 channels => 16 channels x 16 groups - bidirectional like HTTP/3 Not for composition outputs, but it is used everywhere. - MIDI keyboards - within many cross-platform instrument plugins (implementation details) - in many audio plugin APIs: AudioUnit, CLAP (MIDI2 since around 2022)
parse its syntax (in C# it was jay) - generates standard MIDI file (SMF), or SMF2-alike - embeddable to any Kotlin app MIDI to some XML-based DAW project files - ended up building my own .NET XML API ports (XmlReader, XmlWriter, XLinq) - XmlSerializer... no reflection in Kotlin, so codegen w/ KSP
Accessibility Guidelines - drag to move your finger away horizontally without value changes - adjust value vertically - hold to switch to fine-tuning mode No value change Value change
compiler https://github.com/atsushieno/augene-ng - ... to DAW XML project compiler https://github.com/atsushieno/missing-dot - .NET XML API ports https://github.com/atsushieno/compose-audio-controls/ - audio controls in KMP https://github.com/atsushieno/kmdsp/ - visual MIDI player in KMP