Thursday, December 4, 2014

maxcpp is great !

Writing externals for Max/MSP is a daunting task. The API is somewhat weirdo (at least with pure-data the old stuff is cleanup within the years) and making a rapid proof of concept prototype external takes more time making it work than making the real code. At lot of things needs repeating. And the XCode build is ridiculously time consuming if you need to change the external name.

It's great to see people having the same problems and fix them with easy solutions :

First the Max project generator : https://github.com/olilarkin/maxbuild

This is a template project where you simply run a Python script to generate build script with your new external name. If generating a XCode project was a simple Makefile this script would have been useless, but once you get into bundle names, Frameworks, dependencies and stuff; generating a MaxSDK build is a useless and time consuming task. Bonus point: it makes a Visual Studio build also, so you don't waste time on Windows also.

And then, there is https://github.com/grrrwaaa/maxcpp; this is a "port" of the Max SDK to C++.  No it is not, it is a C++ template that mimic the MaxSDK. As much as I 'sometime' hate C++, this 354 line template kinda give C++ an interesting view. In the end, the 'user' code is clear and D.R.Y. aware; closer to mxj than I thought. Really, it makes Max external programming fun and powerful; not again but for once :D

Porting this template to pure-data and bringing simple APIs accessors to Max and pd hosts would be a very interesting project.

Second project : one .cpp file generates one .mxo or .pd_linux file; everything else is automatically generated... I love this idea. This will keep me busy for the rest of the year or the next one. (I know, I need to keep working on Dexed and jsusfx~)