Skip to content

Real-time MIDI sequencer engine with external clock synchronization and transport state management.

License

Notifications You must be signed in to change notification settings

jgumbley/phasorsyncrs

Repository files navigation

PhasorSyncRS

Rust License

Real-time MIDI sequencer engine with external clock synchronization and transport state management.

Key Features ▶️

  • External MIDI Clock Sync - Slave mode synchronization (src/external_clock.rs)
  • Transport State Management - Play/stop/position tracking (src/state.rs)
  • Scheduler Core - Tick-driven event queue (src/event_loop.rs)
  • CLI Interface - Interactive transport control (src/ui.rs)

Quick Start 🚀

# Clone and build
git clone https://github.com/jgumbley/phasorsyncrs
cd phasorsyncrs
make deps           # install ALSA + pkg-config for midir
make run

Code Structure 🗂️

src/
├── midi/              # MIDI I/O implementations
│   └── external_clock.rs - Clock synchronization logic
├── state.rs           # Transport state machine
├── ui.rs              # Status display interfaces
└── event_loop.rs      - Core timing engine

tests/
└── midi_tests.rs      - MIDI I/O validation tests

Development Flow ⚙️

# Test with mock MIDI (no hardware required)
make run

# Run bound onto ext device (config in makefile)
make run-oxi

# List ALSA audio + MIDI devices
make list-devices

# Bind external clock input to a specific ALSA MIDI port (substring match)
make run-bind MIDI_IN="UMC1820"

# UMC1820 helpers (recordings land in wav_files/, which is gitignored)
make umc1820-hw-params
make record                # press Enter to stop
make umc1820-record UMC1820_SECONDS=5
make umc1820-record-stereo UMC1820_SECONDS=5

Architectural Guidance 🏛️

Key design decisions documented in ADRs:

License 📄

GNU Affero General Public License v3 - See LICENSE for details

About

Real-time MIDI sequencer engine with external clock synchronization and transport state management.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •