Open Music Kontrollers

Mephisto

a Just-in-Time FAUST compiler embedded in an LV2 plugin

Build status

build status

Binaries

For GNU/Linux (64-bit, 32-bit, armv7), Windows (64-bit, 32-bit) and MacOS (64/32-bit univeral).

To install the plugin bundle on your system, simply copy the mephisto.lv2 folder out of the platform folder of the downloaded package into your LV2 path.

Unstable (nightly) release

Sources

Git repository

Bugs and feature requests

Plugins

Mono

Mono version of the plugin.

Prototype new audio filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.

Stereo

Stereo version of plugin.

Prototype new audio filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.

Dependencies

Build / install

git clone https://git.open-music-kontrollers.ch/lv2/mephisto.lv2
cd mephisto.lv2
meson build
cd build
ninja -j4
sudo ninja install

GUI

This plugin features an external LV2 plugin GUI, which does nothing else than just opening the plugin’s FAUST source in your favorite editor and monitor its modification state. Additionally it opens a log file to write compile errors to.

Currently, the editor has to be defined via an environment variable. You can use either the environment varialbe EDITOR or MEPHISTO_EDITOR, whereby the latter will take precedence over the former.

export MEPHISTO_EDITOR='urxvt -e nvim -o2'

If no environment variable is defined, the default fallback invocation commands are defined as follows:

Whenever you save the FAUST source, the plugin will try to just-in-time compile and inject it. Potential warnings and errors are reported in the plugin host’s log.

Example command line to run it in Jalv:

export MEPHISTO_EDITOR='xterm -e vim -o2'
jalv -d -t -s http://open-music-kontrollers.ch/lv2/mephisto#stereo

Controls

The plugin supports up to 16 controls implemented as LV2 Parameters. To have access to them, simply use one of FAUST’s active control structures with ordering indexes in their labels in your DSP code:

cntrl1 = hslider("[1]Control 1", 500.0, 10.0, 1000.0, 1.0);
cntrl2 = hslider("[2]Control 2", 5.0, 1.0, 10.0, 1.0);
cntrl3 = hslider("[3]Control 3", 0.5, 0.0, 1.0, 0.1);

Instruments

The plugin supports building instruments with MIDI polyphony.

declare options("[midi:on][nvoices:32]");

freq = hslider("freq", 0, 0, 1, 0.1);
gain = hslider("gain", 0, 0, 1, 0.1);
gate = button("gate");

cntrl1 = hslider("[1]Control 1", 500.0, 10.0, 1000.0, 1.0);
cntrl2 = hslider("[2]Control 2", 5.0, 1.0, 10.0, 1.0);
cntrl3 = hslider("[3]Control 3", 0.5, 0.0, 1.0, 0.1);

Time

The plugin supports LV2 time position events. To have access to them, simply use one of FAUST’s active control structures with the corresponding time metadata in their labels in your DPS code:

declare options("[time:on]");

barBeat = hslider("barBeat[time:barBeat]", 0.0, 0.0, 32.0, 1.0);
bar = hslider("bar[time:bar]", 0.0, 0.0, 400.0, 1.0);
beatUnit = hslider("beatUnit[time:beatUnit]", 1.0, 1.0, 32.0, 1.0);
beatsPerBar = hslider("beatsPerBar[time:beatsPerBar]", 1.0, 1.0, 32.0, 1.0);
beatsPerMinute = hslider("beatsPerMinute[time:beatsPerMinute]", 1.0, 1.0, 400.0, 1.0);
frame = hslider("frame[time:frame]", 1.0, 1.0, 400.0, 1.0);
framesPerSecond = hslider("framesPerSecond[time:framesPerSecond]", 1.0, 1.0, 96000.0, 1.0);
speed = button("speed[time:speed]");

License

Copyright © 2019 Hanspeter Portner (dev@open-music-kontrollers.ch)

This is free software: you can redistribute it and/or modify it under the terms of the Artistic License 2.0 as published by The Perl Foundation.

This source is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Artistic License 2.0 for more details.

You should have received a copy of the Artistic License 2.0 along the source as a COPYING file. If not, obtain it from http://www.perlfoundation.org/artistic_license_2_0.

Last update - 15 Jul 2019

Copyright © 2014-2019, Hanspeter Portner, Open Music Kontrollers, cc-by-sa 4.0.