Skip to content

elagkian/iroh-midi-osc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Music Synthesis over Iroh

Peer-to-peer music collaboration system enabling real-time jamming over the internet using Iroh networking, OSC/MIDI protocols, and audio synthesis.

Features

  • P2P networking with automatic NAT traversal
  • Multiple inputs: keyboard, MIDI files, MIDI devices
  • Custom waveform synthesis + optional SoundFont rendering
  • Bidirectional mode for collaborative jam sessions
  • End-to-end encrypted via QUIC
  • Cross-platform (Windows, macOS, Linux)

Quick Start

cargo build --release

OSC

1. Start receiver:

cargo run --release --bin osc-receiver
# Copy the ticket that appears

2. Connect with sender:

cargo run --release --bin osc-sender "<ticket>"

MIDI

1. Start receiver:

cargo run --release --bin midi-receiver
# Copy the ticket that appears

2. Connect with sender:

cargo run --release --bin midi-sender "<ticket>"
# Options: MIDI playback (place .mid files in assets/) or connect to MIDI output device

Peer Mode (Bidirectional)

1. Start host:

cargo run --release --bin osc-peer host
# Copy the ticket that appears

2. Connect peer:

cargo run --release --bin osc-peer connect "<ticket>"

Keyboard Controls

Notes:

  • A S D F G H J K - Lower octave (C4-C5)
  • Q W E R T Y U I - Upper octave (C5-C6)

Instruments:

  • 1-4 - Custom synths (Piano, Organ, Strings, Bass)
  • 1-8 - SoundFont instruments (requires SoundFont setup)

Controls:

  • O/L - Octave up/down
  • M/N - Volume up/down
  • ESC - Quit

SoundFont Setup (Optional)

For realistic instruments (keys 1-8):

  1. Download a SoundFont (FluidR3_GM.sf2)
  2. Place in assets/
  3. Build with SoundFont support:
cargo build --release --features soundfont

About

P2P distributed music collaboration system using Iroh, OSC, and MIDI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages