"Blocksize": hardware buffer size
"Delay": extra latency
Then, in the Pd audiosettings, you set the "Delay (msecs)". This sets the size of the buffer between Pd and the soundcard.
This is not true. (I don't blame anyone for making this mistake, as this is not obvious unless you know the Pd internals.)
By default, Pd uses the so-called "polling scheduler". The message system and DSP run in a dedicated thread which communicates with the actual audio callback via a (lock-free) ring buffer. "Delay" effectively controls the size of that buffer. It adds extra latency on top of the hardware buffer size.
The actual hardware buffer size is always controlled by the - confusingly named - "Blocksize" parameter. (Pd's internal blocksize is fixed at 64 samples.)
Alternatively, Pd may use the so-called "callback scheduler", which is enabled by the "Callbacks" option in the audio settings. In this case, the message system and DSP run directly in the audio callback and latency is only affected by "Blocksize". (This option has disappeared in Pd 0.54, but will likely reappear in the future after some scheduler bugfixes have been applied. See https://github.com/pure-data/pure-data/pull/1756.)
Tip: If you run Pd with the default "polling scheduler", then you should set "Blocksize" as low as possible and control latency with the "Delay", as it offers finer granularity.
@60hz The next version will have macOS ARM binaries. In the meantime, you can use this snapshot from the develop branch: https://git.iem.at/pd/vstplugin/-/jobs/55565/artifacts/download?file_type=archive
(If the link stops working, go to https://git.iem.at/pd/vstplugin/-/pipelines and download the "package" artifact from the latest "develop" pipeline.)
In the Changelog of vstplugin~ v0.5.4 it says ARM compilation is fixed though.
I think this refers to https://git.iem.at/pd/vstplugin/-/commit/ec1bb344512f1de6819cd2ca06fbfde793393326.
However, ARM support on Linux has been fixed only recently (https://git.iem.at/pd/vstplugin/-/commit/8cbdb1a971e2f4ac48953b9bc7be6370d42ea50f) and not merged into master yet.
Try the latest develop branch, people have successfully built it on RPIs.
@Obineg all of pd vanilla runs on 1 thread (well, the 'core' non-wish process anyways)
Message processing is simply interspersed w/ audio processing.
Almost. Pd does use a single thread for DSP and message processing, but this is not the same as the audio callback (unless "use callbacks" is enabled), so you have (at least) two threads.
Side note: In Pd, the audio callback does almost no work; it just reads/writes samples from/to a ringbuffer and returns. Pd's main thread waits on the ringbuffer (see
sys_send_dacs), so it is indirectly (asynchronously) driven by the audio callback.
I've just put the vstplugin folder into the /extras folder
If by "vstplugin folder" you mean the source code, then this certainly doesn't work.
I have no experience with compiling, so was hoping to avoid that
Well, you definitely need binaries. But there is a way to avoid compiling from source: use one of the pre-built binaries https://git.iem.at/pd/vstplugin/-/releases
would use their own selectors and that selectors would be a thing, but they are not and it does not help in any way
Selectors are used all the time. Every method - apart from float, symbol and pointer methods - starts with a selector. For example, if you send
setis the selector.
another option is
This feature seems trivial on surface, but it is really not. If implemented naively, it can crash Pd under certain circumstances. For a technical discussion, see https://github.com/pure-data/pure-data/pull/604. Making it safe would require some changes to Pd internals, see https://github.com/pure-data/pure-data/pull/849.
here's a new bug fix release for
[vstplugin~]- an external to load VST2 and VST3 plugins on all platforms. Please upgrade!
Binaries can be found on Deken (search for "vstplugin~") or here: https://git.iem.at/pd/vstplugin/-/releases.
Most important changes/fixes:
- fix crash with bridging + multi-threading (regression introduced in v0.5.1)
- bridge/sandbox: allow to write large presets
- cmake: add NATIVE option for native code generation
- cmake: support Apple M1 + x86_64 plugin bridge (see the README for build instructions); no official binaries yet
updatemessage, sent when several parameters have changed at once
Full change log: https://git.iem.at/pd/vstplugin/-/releases
As always, please report any bugs at https://git.iem.at/pd/vstplugin/-/issues