Skip to content

gregogiudici/NetUMP_Android

Repository files navigation

Network MIDI Virtual Interface

An Android app that exposes your smartphone as a Network MIDI 2.0 (UDP) endpoint.
It lets you discover compatible devices on the local network, start Network MIDI sessions, and route MIDI from connected local devices (e.g. USB controllers) over Wi‑Fi/Ethernet.

Features

🎮 Main Controller

Start and stop a Network MIDI session and monitor activity in real-time.

  • Tap START to begin a network MIDI session with the current configuration
  • Tap STOP to end the current session
  • Tap SETTINGS to configure session parameters
  • STATUS LOG shows app status (connection, network service, etc.)
  • MIDI LOG displays all MIDI messages sent/received (including locally generated or from connected apps/devices)

🛜 Session Settings

Configure how your device participates in a Network MIDI 2.0 session.

  • LOCAL PORT: Port used to listen for incoming connections
  • ENDPOINT NAME: Human‑readable device name used for discovery
  • ROLE:
    • INITIATOR – connects to a remote device
    • LISTENER – waits for incoming connections
  • When Role = INITIATOR:
    • Set REMOTE IP and REMOTE PORT of the target device
    • Tap FIND DEVICE to open the Discovery page and scan for devices

🔎 Network MIDI Device Discovery

Automatically find MIDI 2.0 devices on the local network using Android Network Service Discovery.

  • Uses Android Network Service Discovery (NSD) via mDNS/DNS‑SD
  • STATUS LOG shows discovery and scan progress
  • Discovered devices provide a CONNECT button
  • Tapping CONNECT automatically populates the Session Settings (IP/port)

🎹 Local MIDI Device Management

Route MIDI between locally attached devices, internal virtual ports, and the remote endpoint.

  • Select connected USB keyboards/controllers to send MIDI to the remote device.
  • Receive and forward all messages from the remote device back to local devices.
  • All incoming remote messages are forwarded to any connected device or app, so using proper MIDI channels/groups is important for correct routing.

🔊 Virtual MIDI Ports

The app exposes internal virtual MIDI ports so other Android apps can integrate with the Network MIDI session:

  • Implements MidiDeviceService and MidiUmpDeviceService.
  • Other apps (e.g., synths, sequencers, MIDI generators) can:
    • Use incoming remote MIDI messages as an input source.
    • Send MIDI data to remote Network MIDI devices via these virtual ports.
  • This allows you to chain apps together, using this app as a Network MIDI bridge between local Android software and remote hardware/software devices.

Notes

  1. On some devices (tested on Samsung S10) with battery saving mode enabled, the background session thread may not run reliably.
    In this case, the app might only work correctly while charging. Disable battery saving for this app to ensure stable operation.
  2. Network discovery may not work on some networks (e.g. corporate/guests Wi-Fi networks or VPNs). If no devices are found, you can always use manual IP/port entry in Session Settings.

Getting Started

Prerequisites and Installation

  1. Install Android Studio with Android SDK and an emulator or connect a physical device.
  2. Clone the repository:
git clone git@github.com:gregogiudici/NetUMP_Android.git
cd NetUMP_Android
  1. Build and run the app in Android Studio or via command line.

Acknowledgements and Credits

This project builds on the work and documentation of several excellent resources:

  • Network MIDI 2.0 (UDP) – MIDI Association
    Conceptual background and protocol details for Network MIDI 2.0 (UDP):

  • NetUMP – Cross‑platform C++ Library
    Core Network MIDI 2.0 (UDP) functionality is based on the NetUMP library by Benoit Bouchez

  • Android MIDI Samples and Tools
    Android MIDI integration (MidiDeviceService, MidiUmpDeviceService, and related components) was inspired by and partially derived from the official Android midi-samples repository

About

Android app that exposes your smartphone as a Network MIDI 2.0 endpoint

Topics

Resources

License

Stars

Watchers

Forks

Contributors