Skip to content

23.12 midirouter edition

Latest
Compare
Choose a tag to compare
@davidmoreno davidmoreno released this 25 Dec 15:16
· 239 commits to master since this release

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!