diff --git a/CHANGELOG.md b/CHANGELOG.md index 67ad083..0f80328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,10 @@ -### 1.1.0 (in development) +### 1.1.0 (2019-09-15) - Add block buffering with `config.bufferSize`. - Scripts must change `inputs[i]` to `inputs[i][0]` and `outputs[i]` to `outputs[i][0]`. -- Duktape (JavaScript): Use array instead of object for RGB lights and switch lights. - - Scripts must change `.r` to `[0]`, `.g` to `[1]`, and `.b` to `[2]` for `lights` and `switchLights`. +- Duktape (JavaScript): + - Use array instead of object for RGB lights and switch lights. + - Scripts must change `.r` to `[0]`, `.g` to `[1]`, and `.b` to `[2]` for `lights` and `switchLights`. ### 1.0.0 (2019-09-15) - Initial release. \ No newline at end of file diff --git a/README.md b/README.md index 34c60c3..eb454b3 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Scripting language host for [VCV Rack](https://vcvrack.com/) containing: ## Scripting API This is the reference API for the JavaScript script engine, along with default property values. -Other script engines may vary in their syntax (e.g. `block.inputs[i]` vs `block.getInput(i)` vs `input(i)`), but the functionality should be similar. +Other script engines may vary in their syntax (e.g. `block.inputs[i][j]` vs `block.getInput(i, j)` vs `input(i, j)`), but the functionality should be similar. ```js /** Display message on LED display. @@ -21,15 +21,20 @@ display(message) /** Skip this many sample frames before running process(). For CV generators and processors, 256 is reasonable. -For sequencers, 32 is reasonable since process() will be called every 0.7ms with a 44100kHz sample rate, which will capture 1ms-long triggers. +For sequencers, 32 is reasonable since process() will be called every 0.7ms with +a 44100kHz sample rate, which will capture 1ms-long triggers. For audio generators and processors, 1 is recommended, but use `bufferSize` below. -If this is too slow for your purposes, consider writing a C++ plugin, since native VCV Rack plugins have 10-100x better performance. +If this is too slow for your purposes, consider writing a C++ plugin, since +native VCV Rack plugins have 10-100x better performance. */ config.frameDivider // 32 -/** Instead of calling process() every sample frame, hold this many input/output voltages in a buffer and call process() when it is full. -This decreases CPU usage, since processing buffers is faster than processing one frame at a time. -The total latency of your script is `config.frameDivider * config.bufferSize * block.sampleTime`. +/** Instead of calling process() every sample frame, hold this many input/output +voltages in a buffer and call process() when it is full. +This decreases CPU usage, since processing buffers is faster than processing one +frame at a time. +The total latency of your script is +`config.frameDivider * config.bufferSize * block.sampleTime`. */ config.bufferSize // 1 @@ -41,7 +46,8 @@ function process(block) { block.sampleRate /** Engine sample timestep in seconds. Equal to `1 / sampleRate`. Read-only. - Note that the actual time between process() calls is `block.sampleTime * config.frameDivider`. + Note that the actual time between process() calls is + `block.sampleTime * config.frameDivider`. */ block.sampleTime