Update ci to release-0.4.9
Merge branch 'master' of git.forge:~hp/mephisto.lv2
Use -std=gnu32
Write LV2 audio/cv instruments/filters directly in your host in FAUST DSP language without any need to restart/reload host or plugin upon code changes.
Use it for one-off instruments/filters, prototyping, experimenting or glueing stuff together.
1x1 Audio 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.
2x2 Audio 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.
4x4 Audio 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.
8x8 Audio 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.
1x1 CV version of the plugin.
Prototype new CV filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.
2x2 CV version of the plugin.
Prototype new CV filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.
4x4 CV version of the plugin.
Prototype new CV filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.
8x8 CV version of the plugin.
Prototype new CV filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.
4x4 Audio + 4x4 CV version of the plugin.
Prototype new CV filters and instruments in FAUST directly in your favorite running host, without the need to restart the latter after code changes.
git clone https://git.open-music-kontrollers.ch/~hp/mephisto.lv2
cd mephisto.lv2
meson build
cd build
ninja -j4
ninja test
sudo ninja install
This plugin features a native LV2 plugin UI which embeds a terminal emulator which can run your favorite terminal editor to edit the plugin's FAUST source.
Currently, the editor has to be defined via the environment variable EDITOR:
export EDITOR='vim'
export EDITOR='emacs'
If no environment variable is defined, the default fallback editor is 'vi', as it must be part of every POSIX system.
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 and the UI itself.
On hi-DPI displays, the UI scales automatically if you have set the correct DPI in your ~/.Xresources.
Xft.dpi: 200
If not, you can manually set your DPI via environmental variable D2TK_SCALE:
export D2TK_SCALE=200
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 indeces (monitonically rising starting from 0) in their labels in your DSP code:
cntrl1 = hslider("[0]Control 0", 500.0, 10.0, 1000.0, 1.0);
cntrl2 = hslider("[1]Control 1", 5.0, 1.0, 10.0, 1.0);
cntrl3 = hslider("[2]Control 2", 0.5, 0.0, 1.0, 0.1);
Read-only controls are also supported and will be shown as waveforms in the UI:
_ : hbargraph("[3]Probe 3", 0, 1);
The plugin supports building instruments with MIDI polyphony. For this to work you have to enable the MIDI option and declare amount of polyphony (maximum polyphony is 64).
The plugin automatically derives the 4 control signals:
Additionally, the following MIDI ControlChanges are supported:
Other MIDI events are not supported as of today and thus should be automated via the plugin host to one of the 16 control slots.
declare options("[midi:on][nvoices:16]");
freq = hslider("freq", 0, 0, 1, 0.1);
gain = hslider("gain", 0, 0, 1, 0.1);
gate = button("gate");
pressure = button("gate");
pressure = hslider("pressure", 0.0, 0.0, 1.0, 0.1);
cntrl1 = hslider("[0]Control 0", 500.0, 10.0, 1000.0, 1.0);
cntrl2 = hslider("[1]Control 1", 5.0, 1.0, 10.0, 1.0);
cntrl3 = hslider("[2]Control 2", 0.5, 0.0, 1.0, 0.1);
OSC events are not supported as of today and thus should be automated via the plugin host to one of the 16 control slots.
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 and additionally enable the time option:
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]");
Please report issues to https://todo.open-music-kontrollers.ch/~hp/issues
Please submit patches to https://lists.open-music-kontrollers.ch/~hp/patches