New sound-engines integration

Hello, we had a talk and told that I had interest for the following plungis to run on zynthian :

  • aeolus
  • linuxsampler v2 for its scripting feature
    and then came back to my mind the Bristol synths
    the shell commands to start the synth look totally scriptable so that should run easily ? Only the GUI has no option to be disabled…
1 Like

about CC control wich is non-standard, here’s the mididings script wich maps standard CC to aeolus controls :
either we could have a way to run mididings, or another filter…
this is for future reference.

Hi @jerash!

First, please, it’s better you don’t call “plugins” to standalone engines, as it creates confussion. Zynthian supports LV2 plugins through MOD-UI, so integrating LV2 plugins into Zynthian is pretty straightforward: only download and compile, creating an “install recipe” BTW :wink:

Integrating standalone engines is a little bit more complex, althought not too much. You only have to implement a zynthian_engine class. Take a look to “zyngine/” and so on …

  • Aeolus: is a very interesting “Church Organ” emulator. There is no LV2 version, so it should be integrated as standalone engine. I’ve no experience with aeolus, but a basic integration should be done in a few hours.

  • Linuxsampler: the current version included with zynthian should be upgraded ASAP. It would be nice if you or someone else try to do it and write an “install recipe”. If you do so, remember to first remove the current version, that is installed from repository, so:

    # apt-get remove linuxsampler

and after that, download, build and install the new version :wink:

  • Bristol Synths: Some time ago i studed this synth collection for integrating into Zynthian, but i found that the project is completely abandoned and the sound quality of the emulations is very low. Also, the code is quite unstable, and fail very often. But the skins are really beautiful, yes :wink:

Kind Regards!

ok thanks for vocabulary clarification.
I’ll give a try to create a , this should be ok,
I just don’t know exactly when :wink:

Regarding the CC in aeolus, can you translate the source-code header? I can’t figure the meaning of “stop” in this context. Perhaps is something specific to church organs?


# - Aeolus stop control using one controller per stop
# Aeolus (
# uses CC #98 to enable/disable stops. Changing a stop requires one message
# to select the button group and action, and another to select the button.
# This script converts simple CC messages, one CC# per stop, to the format
# expected by Aeolus. CCs 0-56 are mapped to the 57 buttons of the Aeolus
# default instrument. Stops are enabled by controller values >= 64.

from mididings import *

def aeolus_button(ctrl, group, button):
    return CtrlFilter(ctrl) >> CtrlValueSplit(64,
        [ Ctrl(98, 0x50 | group), Ctrl(98, button) ],
        [ Ctrl(98, 0x60 | group), Ctrl(98, button) ]

    Filter(CTRL) % (
        [ aeolus_button(     n, 0, n) for n in range(12) ] +
        [ aeolus_button(12 + n, 1, n) for n in range(13) ] +
        [ aeolus_button(25 + n, 2, n) for n in range(16) ] +
        [ aeolus_button(41 + n, 3, n) for n in range(16) ]

yes this is specific, here are a short explanation of church organ terms :

So in my terms, a “stop” is an on/off button wich opens/closes a pipe, and a “division” is a “preset” which hold the state of several stops.

Does the midi filtering could be done in the aeolus class definition in set_midi_control method before calling self.lib_zyncoder.zynmidi_set_control(chan, ctrl, val) ? as the ctrl_list definition could not be used as is.

The easiest way to control Aeolus from MIDI is to create
a number of presets in Aeolus (it can have up to 1024)
and then use the standard MIDI messages (bank/preset) to
select one of them.

This may be the best approach for the installs i’m doing as the players often use maximum 4 presets

I have a LV2 wrapper for LS2 on my roadmap. But I cannot start before summer… I have some gigs with our band and Maker-Faire-Berlin in June…

Regards, Holger

it working perfectly, starting a new thread for it

1 Like