The OWL platform is capable of running patches created with Cycling’74 Max Gen.
To create an OWL Gen patch using our online compiler, open the Patch Library with a Web MIDI enabled browser (e.g. Chrome), log in (create an account if necessary), go to My Patches, and click Create patch. Now upload the .cpp and .h files produced by Max Gen, and (optionally) your .gendsp file. Select compilation type
Save and Compile, wait for compilation to finish, click
Connect To Device, and then click
Load to run the patch on the device. If you want to store it in a memory slot, click
Store and select which slot to store it in.
Audio signals enter and leave the patch by
out objects; index 1 and 2 correspond to left and right audio inputs. Full scale signals are in the range -1 to 1.
Input parameters are automatically assigned based on their names: A, B, C, D, et c. In Max Gen,
E represents Euler’s number, so instead we use
Exp to assign to OWL parameter E. Buttons and input trigger/gates can be assigned with
ButtonD. If you don’t specify min, max and default attributes then the defaults are:
max 1, and
default is halfways between min and max.
To send a signal to the CV outputs of your device, simply add one or more extra audio outputs to your gen patch. These will be automatically assigned to CV output parameters: Output 3 will go to output parameter F, out 4 to parameter G et c. Signal values from 0 to 1 are converted to full scale CV output.
Max Gen doesn’t support MIDI messages directly, but you can still receive incoming note messages using some special parameters. [freq], [gain], and [gate] are automatically updated when Note On and Off messages are received. And [bend] responds to pitch bend changes. For a simple example synthesizer patch see Gen MIDI Test.
The OWL platform uses optimised implementations of some mathematical operations, such as trigonometric, exponential and logarithmic functions. This provides a significant performance improvement, but comes at the cost of precision. Normally this will be entirely negligible. In some cases however, such as certain filters operating at very low or very high frequencies, this difference may be distinct and audible. To disable these optimised functions, place any or all of the following
undef directives in the .cpp file produced by gen, right after the
#undef sinf #undef cosf #undef sqrt #undef powf #undef expf #undef exp2f #undef exp10f #undef logf #undef log2f #undef log10f
You can also disable exponential and logarithmic optimisations by removing the
-ffast-math compilation flag.
Another difference is that the hardware uses 32-bit single floating point precision, while Max on a desktop operates with 64-bit double precision floats. We’ve not identified any case of audible difference due to this.