Skip to content

Releases: davidmoreno/rtpmidid

rtpmidid 24.12

15 Dec 11:11
Compare
Choose a tag to compare

This is a year worth of effort to make rtpmidi more stable and useful.

As always, please report any issue and feature request to the issue tracker, and I will try my best to make it happen.

Featured Improvements

New features

  • Raw MIDI devices - Can configure them in the ini file, command line or cli util.
  • Optionally use std::format instead of fmt library, where available.
  • Improvements to the TUI.
  • Improvements to the INI configuration file: rawmidi devices, can set local UDP port for clients. Use regex for auto add to the autodiscover and announcement (positive and negative)
  • More tests.

Fixes

  • Improved SysEx support. #123 Thanks to sadgitarius.
  • Improed Avahi support.

Internal changes

  • Full rework of rtpmidi clients, encapsulating UDP use, name resolution and many more items.
  • Use a state machine for rtpmidi clients. Improves reliability and simplifies the code.
  • Added new rtpmidi packet class to ease testing. This is effectively a second mini implementation of the protocol, so it can be used to test correctness.
  • Internal signals, used for raw midi devices to do not open the device until really in use.

Known bugs

  • When setting a DNS name for connect_to, it may block everything for some seconds if can not resolve the remote endpoint.
  • Once it got into a loop of trying to connect to the remote server, but was properly connected, making the connection reset every 10 seconds. Could not reproduce.
  • Avahi / zeroconf / bonjour announcements sometimes are not properly detected.

Contributor changes

New Contributors

Full Changelog: v23.12...v24.12

Thanks to everybody who contributed with pull requests, bug reports and just using rtpmidid. You rock!

23.12 midirouter edition

25 Dec 15:16
Compare
Choose a tag to compare

Overview

The latest release of rtpmidid, version 23.12, introduces significant improvements with a focus on the MIDI router, providing enhanced functionality and a more streamlined architecture. This release, named "Midirouter Edition," is the result of months of development aimed at simplifying the server, fixing bugs in the librtpmidi library, and paving the way for future expansions.
What's New?

1. Midirouter

The core change involves centralizing all MIDI routing into a single object: the MIDI router. This facilitates communication between MIDI peers, such as rtpmidi clients, servers, ALSA connections, and listeners, paving the way for easy integration of new functionalities in future releases.

2. INI Configuration File

Introducing an INI configuration file for streamlined configuration management. This file allows users to specify default behaviors, initial connections, and other settings, promoting a more organized and user-friendly configuration experience.

3. Memory Optimization

Significant improvements in memory management, eliminating malloc/free in the hot path. The code has been optimized to reduce memory usage, providing a smoother experience during common MIDI operations.

4. Enhanced Statistics and Command Management

The command line interface via Unix sockets has been enhanced, providing improved statistics and easier expansion. Users can now gain insights into connection details, packet counts, latency (including averages and standard errors), and tweak internal connections.

5. Top-like Command Line Management

A new TUI (Text-based User Interface) offers real-time data and interactivity for streamlined command-line management. This feature serves as a proof of concept for a more user-friendly GUI management system in future releases.

6. Ninja Compilation

For developers, the release includes optional but enabled features such as ninja compilation and precompiled headers to speed up the compilation process.

Changes to librtpmidid

The librtpmidid library has undergone changes for better signal management, improved connection lifecycles, and enhanced statistics.

Future Plans

The new architecture sets the stage for future functionalities, including:

  • Additional Transports: Possibility of adding simpler TCP MIDI, jack midi, pipewire MIDI, raw midi, UART, MIDI2 support, and proprietary MIDI network transports like the AKAI Network.
  • HTTP Server for Management: Consideration for adding an HTTP server for management purposes.
  • Connection Management Improvements: Exploring options for enhanced connection management, MIDI filters, and support for Raspberry Pi and similar devices.
  • Thread Separation: Exploring the separation of hot and cold paths into different threads for improved low-latency performance.

Final Words

Your feedback is invaluable! Whether it's comments, bug reports, pull requests, or simply using rtpmidid, we appreciate your contribution to the continued improvement of the project. Thank you for your support!

23.10

05 Oct 21:21
Compare
Choose a tag to compare

Minor release 23.10

  • Bugfixes
  • Installs properly in ubuntu 23.04
  • Updated libfmt version

Main Downloads

Install

Just download the package, install it, and fix missing dependencies like libavahi-client if not installed.

x86_64

wget https://github.com/davidmoreno/rtpmidid/releases/download/v23.10/rtpmidid_23.10_amd64.deb 
sudo dpkg -i rtpmidid_23.10_amd64.deb 
sudo apt -f install
rm rtpmidid_23.10_amd64.deb 

ARM64 . RaspberryPi, Orange PI and many other ARM based systems.

wget https://github.com/davidmoreno/rtpmidid/releases/download/v23.10/rtpmidid_23.10_armhf.deb 
sudo dpkg -i rtpmidid_23.10_armhf.deb 
sudo apt -f install
rm rtpmidid_23.10_armhf.deb 

21.11 - Improved protocol support

04 Nov 22:13
Compare
Choose a tag to compare
  • Several MIDI packets in a single packet. This solves several issues with third party implementations.
  • Resassembly of SysEx packages
  • Internal improvements
  • More tests
  • Log colors only on terminals
  • Parsing or Real Time Events
  • Moved mdns_rtpmidi into the library

Special thanks to Folkert van Heusden (https://github.com/folkertvanheusden) and George Harker (https://github.com/georgeharker) for the help provided detecting bugs and providing patches.

Thanks to everybody for trying out rtpmidid.

Bugfixes improved MIDI messages

23 Jul 17:55
Compare
Choose a tag to compare

rtpmidid is a Linux daemon that bridges between the ALSA sequencer and another RTP MIDI compatible network connected system. This allows to use MIDI over Ethernet for Linux systems.

This release just puts all latests bugfixes into a release. Including:

  • Segfault on SSRD / initiator_id under some conditions
  • Many more MIDI messages
  • Other bugfixes.

20.07 with iOS and Mac OS support, LGPL library and more...

11 Jul 15:10
Compare
Choose a tag to compare

rtpmidid is a Linux daemon that bridges between the ALSA sequencer and another RTP MIDI compatible network connected system. This allows to use MIDI over Ethernet for Linux systems.

This new version features compatibility with Apple systems (iOS and MacOS), enhances compatibility with rtpmidi for Windows, and debuts the librtpmidid library.

rtpmidid 20.07 comes with these new features:

  • Compatibility with Apple RTP MIDI implementation: Mac OS and iOS.
  • Improved stability.
  • Basic CLI interface. Uses a Unix socket and JSON so other frontends could exist.
  • Separate, LGPL2.1 library for the rtpmidi protocol.

In this version the librtpmidid library is introduced. The library is licensed with LGPL 2.1, with the idea of encouraging third parties to include rtpmidi support in their products. It is very sad that there are a lot of hardware devices with networking support, WiFI or Ethernet, but they opt for private interfaces that are buggy and difficult to interconnect to. I'm looking at you AKAI MPC One (literally, it's here on my desktop) and your AKAI Network Driver. If you were compatible with rtpmidi you would just work on Apple Devices, and with a third party installation on Windows and Linux. And MPC could use your massive MIDI possibilities with any other MIDI device on the network.

The library is OS independent and implements just the protocol so the MIDI bytes can be used in whatever capacity the program needs them.

If anybody can contact the decision makers and advocate for the use of librtpmidid in hardware music equipment, please do so, and point the relevant persons to this library. And if you are a person with some decision power in this, please contact me, and I will help make this happen in whatever way I can.

Known bugs:

  • It looks like it can take up to 30 seconds to reconnect to Mac OS.
  • There is no journal implementation yet. Should not be a problem for local networks, and rtpmidi is actually not ready for public networks, so this should not be a big deal.

Roadmap for the next version:

  • Journal for notes and control
  • Timing implementation, so we can force a stable latency
  • Full SysEx support

If you think you can help on any of these things, or anything else you would like to see in rtpmidid, please open an issue and lets do it!

Version 20.04 #stayathome

05 Apr 21:22
Compare
Choose a tag to compare

Initial rtpmidid release. 20.04 #stayathome

https://github.com/davidmoreno/rtpmidid/

Features:

  • Basic RTP MIDI protocol implementation for Linux
  • Use of UDP/IP to communicate MIDI devices
  • Most common MIDI messages: Notes, CC, Pitch Bend...
  • Interoperable with Windows, Mac OS*, iPad, Android and Hardware Devices. And with other rtpmidid instances.
  • Uses ALSA sequencer interface (tip: qjackctl is great for managing connections)
  • Use mDNS for easy discovery of other ends
  • This release includes packages for Ubuntu and Raspbian.
  • GPLv3 License

(*) Not tested as I don't have access to Hardware. But if it works on iPad it should work on Mac OS.

This marks the first rtpmidi release, the #stayathome edition.

Beta version

It has minimal features and can be used on experimental setups to use rtpmidi. It has been tested with iPads, Android (TouchDAW), rtpmidi for Windows, and Deepmind12 for hardware.

It has no support for the journal, so in theory some MIDI packets might be lost, which can be a problem. The introspection capabilities are also very limited, just now only on the logging data and a bit via the rtpmidid-cli.

Please leave comments, feature requests, bugs and improvements at https://github.com/davidmoreno/rtpmidid/