melisma
Melisma is a scriptable and extensible audio engine. It can be used for algorithmic composition, custom digital instruments and interactive audio installations. Most of melismas functionality is implemented in Lua modules written in C, using an API defined in melisma.h. The core program only implements the Jack client, event system and port creation/manipulation. You can find some of my modules here, and some examples here.
Building and installing
To build melisma from source, you'll need to have pkg-config, Lua 5.3 and Jack installed. To build and install, run
$ make install PREFIX=/usr/local
Usage
$ melisma script.lua
Building modules
Melisma modules are written in C. They should be namespaced to melisma, so they should be installed to a subdirectory melisma/ in LUA_CPATH, and the entry point should look something like this:
// mymodule.c
#include "melisma.h"
// ...
int luaopen_melisma_mymodule(lua_State *state) {
ml_check_version();
// ...
return 1;
}
Building the module may look something like this:
$ cc -o mymodule.so -shared -fPIC $(pkg-config --cflags melisma.h) mymodule.c
