Expand description
Synchronized player for laptop orchestra
Harmonia is a music player indended for the use in distributed system of laptop orchestra, where orchestra members want to synchronize their performance, especially in the context of indirect control like MIDI files, algorythmic music or audio files.
Harmonia consists of three main components:
- Synchronization layer, based on [Ableton Link][rusty_link] and itβs extension linky_groups
- Simple user interface, rendered in the browser, build with [axum], htmx, maud
- Audio engine, coordinating the execution of played music audio_engine
ModulesΒ§
- audio_
engine π - The engine that is executing blocks and producing sound
- block π
- Blocks definition - basic units of something playable in Harmonia
- handlers π
- Routes used in router setup in crate::main.
- public π
- Baking static files into Harmonia binary
- version π
- Extended version information of current Harmonia build
StructsΒ§
- AppState
- Shared state between major modules of Harmonia
- Cli π
- Harmonia is a synchronized MIDI and music player for laptop orchestra
- Midi
Connection - All MIDI output connections that user may use
ConstantsΒ§
- NICK_
PATH π - Filename under which Harmonia stores userβs nick
- STATE_
PATH π - Filename under which Harmonia stores blocks, user info and other metadata
FunctionsΒ§
- cache_
path π - Path to the cache location, based on OS convention
- link_
status_ πwebsocket_ handler - Handler transferring communication from HTTP to WebSockets
- link_
status_ πwebsocket_ loop - Loop that sends over WebSocket current state of Harmonia
- log_
path π - Path to the logs location
- main π
- Initialize Harmonia application
- os_
specific_ πinitialization - Setup Linux specific env for application
- setup_
logging_ πsystem - Initialize Harmonia logging system