Gen export to micro-controllers ?

Nat's icon

I've been using the Teensy platform for a while now. It is really nice because it can become a class compliant MIDI device and the libraries are really polished. Paul, the creator of the Teensy is currently working on an Audio shield and full audio library (see this thread: http://forum.pjrc.com/threads/24078-Audio-For-Teensy3-What-Features-Would-You-Want)

I was wondering how feasible it would be to have code export to small embedded platforms ? The Teensy runs an ARM micro controller that is quite powerful…

AxiomCrux's icon

I'm curious as well. I just started a eurorack modular company called macro machines (www.macromachines.net), and as a longtime proficient max user I want to develop dsp code in gen and port it to arm chips if possible. I also want to develop some apps using gen which would be amazing. I also looked into using the pdlib which seems like a cool option but I still love max and gen more. I'd love to work with cycling74 to create something that could allow people to run patches on dedicated hardware, I wonder if anything like this is in the works already?

Miguel's icon

Hey lads,

Don't know much about this so please pardon me if I am misguided myself.

I see both potential and big issues with this. I would love to be able to port my max patches to dedicated hardware and be able to deploy pieces that do not rely on a laptop but I don't think we are there yet.

The teensy is great and I've done some projects with it as an Arduino replacement. The smaller size and higher specs are very appealing but from that to replacing a computer is a big step. I guess it depends on what the patch actually does. You can see from the specs what the boards are capable of doing but from that to a full computer there is a big step.

On using gen, I've read recently that you can export Gen patches to C++ code. This came up on a forum thread about using C++ instead of C to develop externals.

Now, if you are looking for a microcontroler that can do C++ and has enough power to run complex patches maybe you want to look at the Beagleboard, which if I understand correctly can run C++ code.

This brings a bigger issue to the foreground which is the Max-linux compatibility for the future. I have a friend who runs installations on a syslink modem using linux and PD, both of which have ports to any architecture I know.

Personally, I doubt Max will be ported to linux anytime soon (or at all). Even if there is a strong case for it, the logistics look like a nightmare:

PACE which is Max's antipiracy framework does not work in linux.

They would need to choose a specific distribution. Ubuntu is more popular but fedora has a tradition coming down from the planet CCRMA days. These are only two popular distributions out of literally thousands. Any explicit choice would make the rest angry at the company.

Distribute source files you say? Max is not open-source so no source files.

Individual binaries for your distro? No way. There are lots of distributions out there aimed to work with all kinds of hardware. Who is going to support anything once someone installs linux and Max on a digital toaster and expects to do FFT transformations?

Linux in general still have massive issues when it comes to the real-time kernel and audio drivers. This would mean that the folks at Cycling 74 would have to spend time and resources troubleshooting issues that do not relate to Max but to Linux-audio in general.

Does it all seem petty and silly? yes
Is it economically feasible? (as much as I love OSS) no

So, If you know enough about C++ to get Gen code well adapted. If you know about development for embedded platforms and if the microcontroler of your choice supports the complexity of your patch then maybe it is possible. I do hope to see those smarter than myself accomplishing this even as a proof of concept.

Can we have a workflow that seamlessly allows for Gen patches to be embedded in standalone microcontrollers? hopefully some day, I wouldn't hold my breath though...

I do believe that the question is valid. Unfortunately, I believe the response has more to do with societal and economical issues more than technological ones.

Having said all of the above, please someone prove me wrong!

- Miguel

AxiomCrux's icon

Indeed, and yes, we are already working on it. :D
Its currently taking the shape of us creating something from scratch, closer to PD, but I'm experimenting with running C++ code created with gen on a PCduino (1ghz arm chip) as well as beaglebone black (soon)
;)

nicnut's icon

What's up Axiomcrux,

I'm curious how your software is coming. I'm still fantasizing about running max on a small embeddable computer like the udoo or raspberry pi. I'm using pd now, but it's sort of frustrating. A stripped down version of max that could run on linux would be way better. And when you say "we are working on it" do you mean cycling 74?

Nick

Jeoff Harris's icon

+1 on that question. Anyone?

AxiomCrux's icon

Heya guys, Im actually getting back to this project today :)

after checking out FAUST, that seems pretty fantastic, and brand new right now is VULT with templates for teensy and xmos. I will post again after I see if I can get the most basic gen>teensy test working :D

AxiomCrux's icon

Check out Audulus 3 if you haven't, like 30 dollars and is pretty fantastic. Its not nearly as complex as max, but that actually works to its benefit, you have a simple group of core objects that you use to make modules (like abstractions, or more-so like b-patchers). Ive been working with Taylor, the creator of Audulus 3 and we are scheming a few options.

For now I am about to do a proof of concept. I will post video on Instagram and link here.

Seamless self promotion: check out the Omnimod eurorack module, I developed it using teensy and it made the cover of electronic musician in May :D