mathr / blog / #

PotatoData

PotatoData

PotatoData is an experiment - rewrite PureData in a "mostly compatible" way that doesn't suffer from the Baroque maze of hacks layered on top, under and in between the other layers of hacks that all seem to have been added just to fix the next task at hand instead of having a clear concept as a whole. It remains to be seen if it's worth it, even if I do learn more about PureData's internals along the way.

There probably won't be a GUI for a long time, but PotatoData can already run some not-quite-trivial patches created in PureData, for example Theme For A Platform Game (PotatoData Render) was rendered with PotatoData (I'm not sure if it's 100% identical to the PureData rendering, though - need to investigate further).

If you should happen to want to try it out:

svn co https://code.goto10.org/svn/maximus/potatodata/server potatodata

and then check the README for further instructions.

So far there's a message system, a DSP scheduler, and some rudimentary objects. Some things are currently problematic in message boxes (no "$" substitution, sequencing with ",", or redirecting with ";") and I don't see how to solve them elegantly yet. There is also no promotion of "float" to "signal" anywhere (for now use [sig~] explicitly, and convert [*~ 1] to [*~]\[sig~ 1]). There are also some layers of hacks creeping in (like the way the ugen perform methods are threaded from compiled C into the objects written in Lua) because I was in a rush to get something that worked, but I will rip them out and replace with proper mechanisms soonish.