From 3f71b8bb595311898d629369f061cb1445e2f01c Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Mon, 21 May 2018 16:30:38 -0400 Subject: [PATCH] Add Version page --- Glossary.md | 13 ++++++++++++- TOC.md | 6 +++--- Version.md | 33 +++++++++++++++++++++++++++++++++ VoltageStandards.md | 1 + 4 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 Version.md diff --git a/Glossary.md b/Glossary.md index 8b60b12..93f2306 100644 --- a/Glossary.md +++ b/Glossary.md @@ -12,10 +12,21 @@ https://msdn.microsoft.com/en-us/library/windows/desktop/dd371455%28v=vs.85%29.a ## ASIO -A computer sound card driver protocol for digital audio specified by Steinberg, providing a low-latency and high fidelity interface between a software application and a computer's sound card. +Audio Stream Input/Output. A computer sound card driver protocol for digital audio specified by Steinberg, providing a low-latency and high fidelity interface between a software application and a computer's sound card. https://en.wikipedia.org/wiki/Audio_Stream_Input/Output ## ALSA +Advanced Linux Sound Architecture. + http://alsa-project.org/main/index.php/Main_Page +https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture + +## API + +Application Programming Interface. + +## ABI + +Application Binary Interface. The binary interface implemented by a library and used by an application. diff --git a/TOC.md b/TOC.md index 3554dcd..688e9cd 100644 --- a/TOC.md +++ b/TOC.md @@ -10,11 +10,11 @@ ### Plugin Development - [Tutorial](PluginDevelopmentTutorial.md) - [Voltage Standards](VoltageStandards.md) -- DSP +- DSP (TODO) ### Rack Development -- Architecture -- Contributing +- [ABI/API Version](Version.md) +- Contributing (TODO) --- diff --git a/Version.md b/Version.md new file mode 100644 index 0000000..f00caba --- /dev/null +++ b/Version.md @@ -0,0 +1,33 @@ +# ABI/API Version + +The ABI of Rack is its machine-readable list of symbols (functions, globals, and classes) that can only be accessed in specific ways. +Rack's API consists of C and C++ headers (`.h` and `.hpp` files) that define how the ABI can be used. + +Rack plugins must be compiled against a particular "major version" of Rack, so that when Rack loads them, they link to Rack's symbols correctly. +The major version is the `X` in `vX.Y` (or `v0.X.Y` for beta versions). + + +## Symbol additions + +In rare cases, symbols might be added to the API/ABI of Rack in a minor version update. +Plugins may use these new symbols, but note that they cannot be loaded with older versions of Rack. +Users will need to upgrade their Rack minor version to load your plugin. + +Once a symbol is added to a minor version update, its API/ABI is not changed. +The minor version is the `Y` in `vX.Y` (or `v0.X.Y` for beta versions). + +This is similar to how VST plugins work, where for example, VST 2.3 plugins cannot load in DAWs which only implement the VST 2.2 standard, except that Rack releases versions more frequently at this time. + + +## Git branches and tags + +In [Rack's git repository](https://github.com/VCVRack/Rack), each major version has its own branch, labeled `v0.5`, `v0.6`, etc. + +There is no `master` branch. +The default branch on GitHub is the major version for the latest release of Rack listed at [vcvrack.com](https://vcvrack.com/). +To update your branch, run `git checkout v0.6` in Rack's source directory. +It is highly recommended to run `make clean` in the root and `dep/` directories after or before switching branches. + +When any version of Rack is released, the build's commit is tagged with the full version label (e.g. `v0.6.0`). +However, this is only for informative purposes. +Only building from the `HEAD` of each branch is supported, since dependency URLs and other issues may need to be fixed after time has passed from the release date. diff --git a/VoltageStandards.md b/VoltageStandards.md index 910d4ed..4e9f8b4 100644 --- a/VoltageStandards.md +++ b/VoltageStandards.md @@ -27,6 +27,7 @@ However, because of the [Gibbs phenomenon](https://en.wikipedia.org/wiki/Gibbs_p Thus, trigger inputs in Rack should use `SchmittTrigger` from `digital.hpp` with a low threshold of about **0.1V** and a high threshold of around **1 to 2V**. For example, Audible Instruments modules are triggered once the input reaches 1.7V and can only be retriggered after the signal drops to or below 0V. +Rack plugins can implement this with `schmittTrigger.process(rescale(x, 0.1f, 2.f, 0.f, 1.f))` Trigger sources should produce **5 to 10V** with a duration of 1 millisecond. An easy way to do this is to use `PulseGenerator` from `digital.hpp`.