| Name | Last commit date | |
|---|---|---|
| .. | ||
| examples | 6 years ago | |
| ay.c | 6 years ago | |
| kick.c | 6 years ago | |
| mkfile | 6 years ago | |
| piano.c | 6 years ago | |
| piper.c | 5 years ago | |
| piper.h | 6 years ago | |
| README.md | 6 years ago | |
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.
Commands
Piper accepts simple commands like so:
00C4d8
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 for the same instances 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.