You can't work on per-sample basis with parameters
That is correct, but you can work with small buffer sizes to get audio rate parameters. The default buffer size is 256 samples, which at 48kHz sample rate means that block rate is 187.5Hz.
With the older codebase, on the OWL Pedal and OWL Modular, you can easily change the block size up to 1024, or down to 2 samples, which gives you a lot of range and makes audio rate parameters possible (up to 24kHz).
In the new OpenWare firmware we have not yet implemented a dynamically configurable block size. It's not been a priority, since we've not so far seen a lot of demand for this feature. But it will still get done, eventually
What exactly are the voltage ranges of the Magus patch points?
The audio ins/outs (top two jacks left and right) are +/-5V, while the bidirectional CV patch points (all the other jacks) are defaulting to 0-10V ie unipolar. The hardware supports different configurations, they can also be +/-5V or -10V to 0V, input or output.
Can a Patch tell whether a particular patch point has a cable plugged into it?
The patch only deals with the abstraction of a pararmeter, and doesn't know if the value has been set by CV, MIDI or your hand. Or if a cable has been plugged in.
right now you can't currently upload patches that draw to the screen (because device-specific builds are not implemented)?
You can't compile them online yet, so we won't be able to load a sysex directly from the patch page. But you can still share the source.
A (low priority) web feature that's been on my todo list for a long time now is the ability to upload a pre-compiled binary, which would be useful in situations like this.
Also a quick note about drawing to the Magus screen. You can actually print a message, and up to three numbers, without using a special compiler flags or anything. In C++ simply use
debugMessage(), ie one of:
void debugMessage(const char* msg, int);
void debugMessage(const char* msg, int, int);
void debugMessage(const char* msg, int, int, int);
void debugMessage(const char* msg, float);
void debugMessage(const char* msg, float, float);
void debugMessage(const char* msg, float, float, float);
In Pure data you can send to a
print object and it will show on the screen.
Only the most recent message will be visible, so you can use it to display variable values in realtime, but you won't get several messages showing one after another because they'll be overwritten too quickly.