ref: 66ba98f5e0f3c5e80deb909d561dbb5b872ff72f
dir: /piper/README.md/
# piper WIP. Piper reads human-readable commands from stdin, controls neindaw to produce sounds, mixes those together and writes the result to `/dev/audio`. It's recommended to avoid using `mixfs` with piper since it causes timings to go wrong. Synth instances are created by piper automatically, automatic mixing is enabled by default unless `-m` is passed. Running it with orca is pretty simple: ``` daw/ay -s ay -m /n/ay daw/kick_drum -s kick -m /n/kick games/orca -u /fd/3 |[3] daw/piper /n/ay /n/kick ``` Note that the order of "groups" (`/n/ay` and `/n/kick`) matters with the command language since the groups are addressed by their index. See [examples](examples/). ## Commands Piper accepts simple commands like so: ``` ;00C4d8 ``` `;` is for UDP message, `00` is first instance of the first group (`/n/kick/0`), `C4` is the note, `d` is velocity (`g == 1.0`), `8` is duration (the higher, the less). Duration depends on the current bpm that can be set with a `bpm120` command, for example. Notes can be connected with `:` like so: ``` ;00C4d8:!C2df ``` In this case the second note is for the `B` oscillator of the kick drum, and `!` is a way to "negate" the frequency value, so in fact it's `C2` *negative*. Commands can be separated with `;`. To change the global volume use `vol100` to set it to `1.0`.