Difference between revisions of "Max gen~"

From MOD Wiki
Jump to navigation Jump to search
Line 14: Line 14:
 
== Designing your effect in Gen ==
 
== 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.
+
* 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.
+
* 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.
+
* 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.
 
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.

Revision as of 13:27, 20 June 2017

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 compiled using a custom MOD cloud build system. If you're running Linux or macOS just clone Max Gen Skeleton and follow the instructions.

$ git clone https://github.com/moddevices/max-gen-skeleton
$ cd max-gen-skeleton

Now copy the gen_exported.cpp and gen_exported.h files into the main max-gen-skeleton folder.

$ 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

Optionally you can now edit the .ttl file to for example add units, knob behaviour or a description. If you do, 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!