Max gen~

From MOD Wiki
Jump to navigation Jump to search

Introduction

Apart from programming LV2-plugins in a "traditional" way, it's also possible to generate LV2-plugins for the MOD Duo from gen~ objects created in Cycling '74 Max. This quick start guide will tell you the how and why of programming audio effects for the MOD Duo using this very different approach.

Gen Basics

Gen~ objects are normally used in Max as a way to write low-level code that is run at signal-rate, using (if you want to) the same visual approach Max is known for. Therefore the insides of a gen~ object can be seen as a pedal schematic, perfect for designing audio effects.

If you're not familiair with Gen, and this sounds all like gibberish to you, have a look at the links below.

Designing your effect in Gen

  • To get your gen~ object working on the MOD Duo, you'll first need to design one using only Gen's internal objects, without referring to objects outside the gen~ object. Only the objects insides will make it to the final LV2-plugin.
  • If you want controllable parameters, define the minimum, maximum and default arguments in the "param" object.
  • While designing your gen~ object, remember that the MOD Duo's samplerate is running at 48 KhZ.

When you're finished, send the "exportcode" message to the gen~ object in your main Max-patch to get the gen_exported.cpp and gen_exported.h files.

Getting your Gen-based plugin to the MOD Duo

At this point you should have the exported code from your gen~ object, and have met the requirements specified above. If so, follow the steps below to get your plugin on the MOD Duo.

Compiling the plugin

In order to run Gen-based plugins on the MOD Duo they must be converted into LV2 plugins and compiled using a custom MOD cloud build system.
All the heavy work has already been done by the MOD Team and Cycling '74. You only need to download a package and run a script to tell the MOD cloud to compile things for you.

First, download http://download.moddevices.com/releases/max-gen/max-gen-deploy_v3.tar.gz and extract it. Copy the gen_exported.cpp and gen_exported.h files into the extracted max-gen-deploy folder, and run:

$ cd /path/to/max-gen-deploy/
$ ./mod-build.sh

You'll be asked for a plugin name, and after providing one the cloud should give you back a tar.gz file within a few minutes.

Edit the .ttl file (optional)

Optionally you can now edit the .ttl file to for example add units, knob behavior or a description. If you do so, make sure everything is correct, otherwise the plugin won't work and you might have to SSH into the MOD Duo to get the corrupt plugin out. To prevent this from happening, you can validate the lv2-data.

# OPTIONAL
$ gunzip Plugin.lv2-duo.tar.gz
$ tar -xvf Plugin.lv2-duo.tar
# make edits in Plugin.lv2/Plugin_dsp.ttl or include a GUI
$ rm Plugin.lv2-duo.tar.gz
$ tar -cvzf Plugin.lv2-duo.tar.gz Plugin.lv2/

Include a GUI

Another option is to include a GUI, you can make one with the MOD SDK. Have a look here how a GUI affects the .ttl structure. And don't forget to compress everything again.

Deploying the plugin

Make sure the MOD Duo is connected to your computer via USB before proceeding.

$ mod-deploy.sh
$ mod-deploy.sh

If all goes well, your Gen-based plugin should now be inside the MOD Duo, ready to be played!