mx's engine on mxs, mx's sound engine in Rust, through a NIF.
mxs plays events stamped with seconds on its own clock, so a Unix time in microseconds becomes the second at which mxs renders it, following the sound card's clock as it drifts from the system's; an offline engine counts seconds from its start.
A note is a note of mxs's synth of the same name, with its pitch as its note option, and a sample plays from the number mxs loaded it as.
An effect chain is mxs's chain, which notes name to play into.
It renders offline through an engine of its own for each render, so renders never share a clock.
It plays each live audio of the song from the sound card, with its effects, and reads the sound card's input only when given input: true.
When the input and output run at different rates mxs cannot start, and the message ends with input_advice:, by default the advice to take live audio out of the song.
A changed live audio changes in place, unless its input, channels or effects change; a removed one stops at once.
Given record:, it writes the main output to that WAV file from when it starts.
On stop it then waits for the notes already playing to fade, for fade_ms at most, before it closes the file.
Summary
Functions
Each synth's and effect's options declared in beats, which a song gives in beats and mxs takes in seconds.
The synths, players and effects mxs has, each with its options and their defaults, every name as a string.
Returns a specification to start this module under a supervisor.
An event in the form the NIF takes.
Each synth's options that take a range or a set of names, as {:range, low, high}, with nil for an open end, or {:names, names}.
Renders an engine started with live: false on to the Unix time at_us, and returns whether a sound still plays.
Functions
Each synth's and effect's options declared in beats, which a song gives in beats and mxs takes in seconds.
The synths, players and effects mxs has, each with its options and their defaults, every name as a string.
Returns a specification to start this module under a supervisor.
See Supervisor.
An event in the form the NIF takes.
Each synth's options that take a range or a set of names, as {:range, low, high}, with nil for an open end, or {:names, names}.
Renders an engine started with live: false on to the Unix time at_us, and returns whether a sound still plays.