aboutsummaryrefslogtreecommitdiff

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