March 21st, 2025

There’s been a great deal of thought and care put into engineering Apotheca.
 
All graphs are unbound from effects, so that the bindings are indiscriminate of specific effects.
 
Additionally, every control has two bindings, so multiple graphs can modulate any given control.
 
 
The design was to be flexible and extensible, so individual effects are not restrained to specific slots. Effects can be swapped, stacked, etc., which means there’s not one graph for one effect, but instead 12 graphs, 5 macros, and 100+ modes.
 
When engineering software we try to encapsulate small components so they can be reused in new and interesting ways.
 
What makes Apotheca interesting is there are also mini-graphs (or minimaps) inside each of the controls, which allows for customized macro mapping.
 

see minimapping

 

The pedantic details of defining specific controls are abstracted away, so everything is connected, and even the macros can get modulated.

 

in regards to dsp

There has also been a great deal of detail that’s gone into the DSP code. Most code is processed in blocks to improve performance through vectorization, but as some may know, the coefficients on biquad filters need to be updated more often so that there isn’t aliasing. So when a biquad filter is processed, it is done in sub-blocks and removes the aliasing. The saturators are oversampled to minimize noise from the Nyquist theorem not being met. And the comb filters use a limiter in the feedback line to pronounce the comb spiked frequencies. Although there are not many, there are a few internal oscillators, such as in DNS mode, and when there are internal oscillators, those oscillators are using polyblamp. When possible, the delays are fixed to an integer value, and only smooth on movement – some probably already know that anytime there’s interpolation it smooths the signal, but unintentionally dulls the signal, so indexing an array by an integer value when not moving means no partial indexing and therefor no interpolation…a clear signal.