Currently the app connects to piano via Midi-ports. These ports can be local midi-ports if the piano is connected via USB cable. The piano also supports network connections. On Mac network access to piano can be configured using Mac's Audio Midi Setup settings. Then local Midi-ports appears in the system and the app can talk to piano. Similar is possible on Windows and Linux.
iOS however doesn't have system settings to configure network Midi. iOS does support network Midi but it cannot initiate network connections and can only be used as controller for Mac/PC.
Even on Mac the using of system configuration settings isn't that comfortable as it's necessary to manually click "Connect" every time the piano is switched on; the system settings do not restore connection automatically.
It would be very cool if the app could connect to piano via network on its own, without relying on system MIDI setup.
For network connections devices use special protocol - RTP-MIDI (also known as AppleMIDI). Implementing that protocol is a huge thing but luckily for us there is a library we can try to integrate - https://github.com/lathoub/Arduino-AppleMIDI-Library.
In this issue:
[x] evaluate Arduino-AppleMIDI-Library and try to port it to normal systems; the library is designed specifically for Arduino which doesn't run typical OS like Linux etc.
Then in the app:
[x] separate Midi communication/transport layer from piano controller;
[x] implement two Midi transports:
via local Midi-ports;
via RTP-MIDI (as an empty stub at first);
[x] implement rtp-midi transport using Arduino-AppleMIDI-Library;
Currently the app connects to piano via Midi-ports. These ports can be local midi-ports if the piano is connected via USB cable. The piano also supports network connections. On Mac network access to piano can be configured using Mac's Audio Midi Setup settings. Then local Midi-ports appears in the system and the app can talk to piano. Similar is possible on Windows and Linux.
iOS however doesn't have system settings to configure network Midi. iOS does support network Midi but it cannot initiate network connections and can only be used as controller for Mac/PC.
Even on Mac the using of system configuration settings isn't that comfortable as it's necessary to manually click "Connect" every time the piano is switched on; the system settings do not restore connection automatically.
It would be very cool if the app could connect to piano via network on its own, without relying on system MIDI setup.
For network connections devices use special protocol - RTP-MIDI (also known as AppleMIDI). Implementing that protocol is a huge thing but luckily for us there is a library we can try to integrate - https://github.com/lathoub/Arduino-AppleMIDI-Library.
In this issue:
Then in the app: