ref: e63eebc7d9edd09fddd84cf1b59ecbf4ad5d980b
dir: /README.md/
# faust9p
Tools to compile [Faust](https://faust.grame.fr) DSP code to a 9p
server running on Plan 9.
 → 
## Installing
```
cd /tmp && \
hget https://github.com/ftrvxmtrx/microui/archive/master.tar.gz | tar xz && \
cd microui-master && mk install && cd .. && \
hget https://github.com/ftrvxmtrx/faust9p/archive/master.tar.gz | tar xz && \
cd faust9p-master && mk install && cd cfg && mk install
```
## Testing
So far only one instrument provided, which is a kick drum.
```
daw/kick_drum -m /n/kick
cd /n/kick
```
Allocate one instance.
```
cd `{cat clone}
cd K*
```
Check the A oscillator frequency, the order is `type value initial min max step`.
It's different for different UI elements.
```
cat A/Frequency/ctl
vslider 100 100 10 200 5
```
Raise frequency to 160Hz.
```
echo 160 > A/F*/ctl
```
Pipe sound to /dev/audio in background.
```
audio/pcmconv -i f32c1r44100 < ../data > /dev/audio &
```
Set B oscillator parameters and enable it.
```
echo 400 > B/Frequency/ctl
echo 0.001 > B/Attack/ctl
echo 1 > B/Enable/ctl
```
Do a kick.
```
echo 0 > Control/Gate/ctl
echo 1 > Control/Gate/ctl
```
Run `cfg` to configure the kick drum in a GUI.
```
daw/cfg /n/kick
```
## TODO
* `<ui>/value` to watch the changes, add frame offset as well to know
when it actually changed
* optional frame offsets for all commands, perhaps that's easier than
running and stopping the processing all the time
* `reset` command for groups
* add writable `metadata` for each instance
* allow adding new key/values to `metadata`
* add some way to read and write the whole configuration of an instance
in an easy way, so instances can be cloned, or configs saved to disk
as presets
* make all of that compile and run on Linux as well?