Skip to content

gregogiudici/Networked_SoundFont_Player

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Networked SoundFont Player

A SoundFont Player enhanced with network capabilities through Network MIDI 2.0 and extended hardware integration through SL Link. It can run as a standalone instrument or plugin (VST3/AU) inside a DAW, while also enabling new local, remote, and hybrid MIDI workflows.

🚀 Quick Start

git clone https://github.com/gregogiudici/Networked_SoundFont_Player/
cd Networked_SoundFont_Player
git submodule update --init --recursive
cmake -B build
cmake --build build

NOTE: Build for Linux

To compile for Linux, make sure you have all the dependencies required to build JUCE.

If you are lazy:

sudo apt update
# For JUCE
sudo apt install libasound2-dev libjack-jackd2-dev \
    ladspa-sdk \
    libcurl4-openssl-dev  \
    libfreetype-dev libfontconfig1-dev \
    libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev \
    libwebkit2gtk-4.1-dev \
    libglu1-mesa-dev mesa-common-dev
# For dns-sd
sudo apt-get install libavahi-compat-libdnssd-dev

⚙️ Features

  • Local SoundFont playback engine.
  • MIDI input from local devices.
  • MIDI input from remote devices into the local SoundFont engine over Network MIDI 2.0.
  • MIDI output to remote devices over Network MIDI 2.0.
  • Discovery of MIDI 2.0 endpoints over the local network.
  • Direct control from a SL mk2 over core app functions such as service discovery, sound management, and network connection handling.

Network MIDI 2.0

Network MIDI 2.0 is the transport layer that enables this application to discover remote MIDI 2.0 endpoints and exchange MIDI data over a local network. It is based on the MIDI Association's Network MIDI 2.0 (UDP) specification, which defines a standard transport for both MIDI 1.0 and MIDI 2.0 messages using Universal MIDI Packets (UMP).

This app manages it to route MIDI messages from a local controller to a remote endpoint, receive remote MIDI into the local SoundFont engine, or combine both approaches in hybrid workflows.

SL Link

SL Link is used to integrate this app with FATAR SL mk2 MIDI keyboards. It provides communication, connection management, and display interaction between the keyboard and the remote device, allowing the app to expose its functionality directly on the hardware interface.

SL Link makes it possible to control this application without relying on the GUI. Functions such as service discovery, sound management, and network connection handling can be accessed directly from the SL keyboard, while its hardware can also be used for display updates, LED feedback, and other controller-driven interactions.

🔉 Use Cases

  1. Local software instrument

    • A MIDI keyboard connected to the local computer can trigger a SoundFont instrument loaded in the app.
    • Audio is rendered locally using FluidLite.
  2. Network MIDI bridge

    • The same local MIDI input can be forwarded to a remote device over the network using Network MIDI 2.0.
    • This makes it possible to play an external synth, another computer, or any compatible remote endpoint.
  3. Remote-to-local playback

    • A remote endpoint can send MIDI over the network to this application.
    • Incoming remote MIDI is rendered by the local SoundFont player, effectively turning this app into a network-playable software synth.
  4. Hybrid local + remote performance

    • The same performance can drive the local SoundFont engine and a remote Network MIDI 2.0 endpoint at the same time.
    • This is useful for layered setups, local monitoring, or combining software and hardware instruments in one workflow.
  5. Headless instrument on embedded hardware

    • The app can be deployed on a device (e.g., a Raspberry Pi) and used without a dedicated screen.
    • With a supported SL Mk2 connected, the keyboard can act as the main user interface for browsing functions and controlling the system through SL Link.

Acknowledgements & Credits

About

JUCE SoundFont Player with Network MIDI 2.0 and SL Link

Topics

Resources

License

Stars

Watchers

Forks

Contributors