Crate harmonia

Source
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
MidiConnection
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