Ingen

Ingen is a modular audio processing system for Jack and LV2 based systems.

Ingen is built around LV2 technology and a strict separation of engine from user interface. The engine is controlled exclusively through a protocol, and can execute as a headless process, with an in-process GUI, or as an LV2 plugin. The GUI can run as a program which communicates over a Unix or TCP/IP socket, or as an embeddable LV2 GUI which communicates via LV2 ports.

Any saved Ingen graph can be loaded as an LV2 plugin on any system where Ingen is installed. This allows users to visually develop custom plugins for use in other applications without programming.

Screenshots

An Ingen synthesizer shown with horizontal signal flow.

An Ingen synthesizer shown with vertical signal flow.

Download

Ingen is currently only available in SVN. Since it requires a few libraries in the same repository, it is easiest to:

svn co http://svn.drobilla.net/lad/trunk drobillad

Either build lilv, suil, raul, and ganv first, then ingen; or simply build the entire repository (in addition to Ingen, you’ll get Patchage and Machina). You will require a recent version of LV2.

Please support Ingen development:

Documentation

See the Ingen wiki page for user oriented information.

  • Ontology – Definition of Ingen classes and properties used in save files and in the protocol
  • Protocol – Documentation of the protocol used for controlling Ingen remotely or as an LV2 plugin
  • API Reference – Internal API reference

Community

23 thoughts on “Ingen

  1. Pingback: Ingen as remote server or LV2 plugin | drobilla.net

  2. Pingback: Reviving Machina | drobilla.net

  3. Pingback: Better stock LV2 plugin UIs | drobilla.net

  4. Pingback: Ingen as LV2 in Ardour | drobilla.net

  5. Pingback: Interactive force-directed graph layout in Ingen | drobilla.net

  6. Hey!
    amazing software. I’ve just got a problem loadinjg a graph as lv2. Ardour just crashed, Qtractor could load the graph but with no graph inside and crashed.. jalv says “no appropriate ui found” and carla said “Could not find the LV2 Descriptor in the plugin library”. what is exactly the problem and how an I solve it?
    thanks in advance

    i’m using ingen 0.5.1 on a linuxmint/kxstudio based on ubuntu 12.04 lts.
    all the best

    vince

  7. Hi, thanks for making this– I’m excited to see what I can do with it once I get going!

    Don’t know if this is a bug or not: I noticed in your video tutorials that you had your plugins organized by category. In my Ingen, I only have one folder which says “Uncategorized”.

    Also, I’m not certain what everything does in the “Properties” window.

    Thanks again!

  8. I’m trying to install Ingen but the installer is telling me that it needs a version of lv2 >= 1.11.0
    As far as I can tell, the most recent version (and the one I’ve installed) is 1.10.0

    Have I missed something?

    Thanks,
    Peter

    • Ingen is sometimes developed in conjunction with LV2, and ends up depending on things currently only in LV2 git. Right now is one of those times.

      So, get LV2 from git, or wait for the next LV2 release which will be out shortly.

      • Thanks!
        I’m trying to build from git and get the message below at the ./waf stage.

        Waf: Leaving directory `/home/peter/drobillad/build’
        Build failed
        -> task in ‘patchage’ failed (exit status 1):
        {task 3067658060L: cxx JackDriver.cpp -> JackDriver.cpp.1.o}
        [‘/usr/bin/g++’, ‘-iquote /home/peter/drobillad/machina’, ‘-iquote /home/peter/drobillad/ingen’, ‘-iquote /home/peter/drobillad/suil’, ‘-iquote /home/peter/drobillad/raul’, ‘-iquote /home/peter/drobillad/lilv’, ‘-iquote /home/peter/drobillad/ganv’, ‘-iquote /home/peter/drobillad/sratom’, ‘-iquote /home/peter/drobillad/sord’, ‘-iquote /home/peter/drobillad/serd’, ‘-I/home/peter/drobillad’, ‘-DNDEBUG’, ‘-fshow-column’, ‘-I/home/peter/drobillad/raul’, ‘-std=c++0x’,
        ——
        snip

          • Everything went fine up until this point:

            [ 82/638] Compiling ingen/src/Configuration.cpp
            ../patchage/src/JackDriver.cpp:181:14: error: ‘jack_uuid_t’ was not declared in this scope
            get_property(jack_uuid_t subject, const char* key)
            ^
            ../patchage/src/JackDriver.cpp:181:35: error: expected primary-expression before ‘const’
            get_property(jack_uuid_t subject, const char* key)
            ^
            ../patchage/src/JackDriver.cpp:182:1: error: expected ‘,’ or ‘;’ before ‘{’ token
            {
            ^
            ../patchage/src/JackDriver.cpp: In member function ‘PatchagePort* JackDriver::create_port(PatchageModule&, jack_port_t*, PortID)’:
            ../patchage/src/JackDriver.cpp:205:8: error: ‘jack_uuid_t’ does not name a type
            const jack_uuid_t uuid = jack_port_uuid(port);
            ^
            ../patchage/src/JackDriver.cpp:206:48: error: ‘uuid’ was not declared in this scope
            const std::string label = get_property(uuid, JACK_METADATA_PRETTY_NAME);
            ^
            ../patchage/src/JackDriver.cpp:206:54: error: ‘JACK_METADATA_PRETTY_NAME’ was not declared in this scope
            const std::string label = get_property(uuid, JACK_METADATA_PRETTY_NAME);
            ^
            ../patchage/src/JackDriver.cpp:207:54: error: ‘JACKEY_ORDER’ was not declared in this scope
            const std::string order_str = get_property(uuid, JACKEY_ORDER);
            ^
            ../patchage/src/JackDriver.cpp:216:26: error: ‘JACKEY_SIGNAL_TYPE’ was not declared in this scope
            if (get_property(uuid, JACKEY_SIGNAL_TYPE) == “CV”) {
            ^
            ../patchage/src/JackDriver.cpp:221:26: error: ‘JACKEY_EVENT_TYPES’ was not declared in this scope
            if (get_property(uuid, JACKEY_EVENT_TYPES) == “OSC”) {
            ^

            Waf: Leaving directory `/home/peter/drobillad/build’
            Build failed
            -> task in ‘patchage’ failed (exit status 1):
            {task 3066978348L: cxx JackDriver.cpp -> JackDriver.cpp.1.o}
            [‘/usr/bin/g++’, ‘-iquote /home/peter/drobillad/machina’, ‘-iquote /home/peter/drobillad/ingen’, ‘-iquote /home/peter/drobillad/suil’, ‘-iquote /home/peter/drobillad/raul’, ‘-iquote /home/peter/drobillad/lilv’, ‘-iquote /home/peter/drobillad/ganv’, ‘-iquote /home/peter/drobillad/sratom’, ‘-iquote /home/peter/drobillad/sord’, ‘-iquote /home/peter/drobillad/serd’, ‘-I/home/peter/drobillad’, ‘-DNDEBUG’, ‘-fshow-column’, ‘-I/home/peter/drobillad/raul’, ‘-std=c++0x’, ‘-pthread’, ‘-pthread’, ‘-pthread’, ‘-pthread’, ‘-I/home/peter/drobillad/build/patchage’, ‘-I/home/peter/drobillad/patchage’, ‘-I/home/peter/drobillad/build/patchage/src’, ‘-I/home/peter/drobillad/patchage/src’, ‘-I/home/peter/drobillad/build/ganv’, ‘-I/home/peter/drobillad/ganv’, ‘-I/usr/include/dbus-1.0’, ‘-I/usr/lib/i386-linux-gnu/dbus-1.0/include’, ‘-I/usr/include/gtkmm-2.4’, ‘-I/usr/lib/i386-linux-gnu/gtkmm-2.4/include’, ‘-I/usr/include/atkmm-1.6’, ‘-I/usr/include/giomm-2.4’, ‘-I/usr/lib/i386-linux-gnu/giomm-2.4/include’, ‘-I/usr/include/pangomm-1.4’, ‘-I/usr/lib/i386-linux-gnu/pangomm-1.4/include’, ‘-I/usr/include/gtk-2.0’, ‘-I/usr/include/gtk-unix-print-2.0’, ‘-I/usr/include/gdkmm-2.4’, ‘-I/usr/lib/i386-linux-gnu/gdkmm-2.4/include’, ‘-I/usr/include/atk-1.0’, ‘-I/usr/include/glibmm-2.4’, ‘-I/usr/lib/i386-linux-gnu/glibmm-2.4/include’, ‘-I/usr/include/glib-2.0’, ‘-I/usr/lib/i386-linux-gnu/glib-2.0/include’, ‘-I/usr/include/sigc++-2.0’, ‘-I/usr/lib/i386-linux-gnu/sigc++-2.0/include’, ‘-I/usr/include/cairomm-1.0’, ‘-I/usr/lib/i386-linux-gnu/cairomm-1.0/include’, ‘-I/usr/include/pango-1.0’, ‘-I/usr/include/cairo’, ‘-I/usr/include/pixman-1’, ‘-I/usr/include/freetype2’, ‘-I/usr/include/libpng12’, ‘-I/usr/lib/i386-linux-gnu/gtk-2.0/include’, ‘-I/usr/include/gdk-pixbuf-2.0’, ‘-I/usr/include/gio-unix-2.0’, ‘-I/usr/include/harfbuzz’, ‘-I/usr/include/alsa’, ‘-I/home/peter/drobillad/build’, ‘-DHAVE_POSIX_FADVISE=1’, ‘-DSERD_VERSION=”0.21.1″‘, ‘-DHAVE_SERD=1’, ‘-DSORD_VERSION=”0.13.0″‘, ‘-DHAVE_SORD=1’, ‘-DSRATOM_VERSION=”0.4.7″‘, ‘-DHAVE_SRATOM=1’, ‘-DHAVE_LIBDL=1’, ‘-DSUIL_VERSION=”0.8.3″‘, ‘-DSUIL_MODULE_DIR=”/usr/local/lib/suil-0″‘, ‘-DSUIL_DIR_SEP=”/”‘, ‘-DSUIL_GTK2_LIB_NAME=”libgtk-x11-2.0.so.0″‘, ‘-DSUIL_MODULE_PREFIX=”lib”‘, ‘-DSUIL_MODULE_EXT=”.so”‘, ‘-DHAVE_SUIL=1’, ‘-DHAVE_FLOCK=1’, ‘-DHAVE_FILENO=1’, ‘-DHAVE_CLOCK_GETTIME=1’, ‘-DLILV_VERSION=”0.21.3″‘, ‘-DLILV_PATH_SEP=”:”‘, ‘-DLILV_DIR_SEP=”/”‘, ‘-DHAVE_LILV=1’, ‘-DHAVE_MEMORY=1’, ‘-DHAVE_ATOMIC=1’, ‘-DRAUL_VERSION=”0.8.6″‘, ‘-DHAVE_RAUL=1’, ‘-DGANV_FDGL=1’, ‘-DHAVE_GANV=1’, ‘-DHAVE_DLADDR=1’, ‘-DPATCHAGE_LIBJACK=1’, ‘-DPATCHAGE_BINLOC=1’, ‘-DPATCHAGE_DATA_DIR=”/usr/local/share/patchage”‘, ‘-DHAVE_PATCHAGE=1’, ‘-DHAVE_BOOST_FORMAT_HPP=1’, ‘-DHAVE_BOOST_SHARED_PTR_HPP=1’, ‘-DHAVE_BOOST_UTILITY_HPP=1’, ‘-DHAVE_BOOST_WEAK_PTR_HPP=1’, ‘-DHAVE_SOCKET=1’, ‘-DPYTHONDIR=”/usr/lib/python2.7/dist-packages”‘, ‘-DPYTHONARCHDIR=”/usr/lib/python2.7/dist-packages”‘, ‘-DINGEN_JACK_SESSION=1’, ‘-DINGEN_SHARED=1’, ‘-DINGEN_VERSION=”0.5.1″‘, ‘-DINGEN_BUILD_CLIENT=1’, ‘-DINGEN_BUILD_GUI=1’, ‘-DHAVE_JACK_MIDI=1’, ‘-DINGEN_DATA_DIR=”/usr/local/share/ingen”‘, ‘-DINGEN_MODULE_DIR=”/usr/local/lib”‘, ‘-DINGEN_BUNDLE_DIR=”/usr/local/lib/lv2/ingen.lv2″‘, ‘-DHAVE_INGEN=1’, ‘-DHAVE_JACK_PORT_TYPE_GET_BUFFER_SIZE=1’, ‘-DJALV_JACK_SESSION=1’, ‘-DJALV_VERSION=”1.4.7″‘, ‘-DHAVE_JALV=1’, ‘-DHAVE_POSIX_MEMALIGN=1’, ‘-DMACHINA_BUILD_GUI=1’, ‘-DMACHINA_PPQN=19200’, ‘-DMACHINA_VERSION=”0.5.0″‘, ‘-DMACHINA_DATA_DIR=”/usr/local/share/machina”‘, ‘-DHAVE_MACHINA=1’, ‘-DHAVE_PLUGINS_FLOAT_LV2=1’, ‘-DHAVE_PLUGINS_MDA_LV2=1’, ‘-DHAVE_SINF=1’, ‘-DBLOP_SHLIB_EXT=”.so”‘, ‘-DHAVE_PLUGINS_BLOP_LV2=1’, ‘-DHAVE_PLUGINS_FOMP_LV2=1’, ‘-DHAVE_PLUGINS_OMINS_LV2=1’, ‘-DHAVE_GL_GLU_H=1’, ‘-DHAVE_PLUGINS_GLAMP_LV2=1’, ‘-DHAVE_PLUGINS_MESP_LV2=1’, ‘-DHAVE_DBUS=1’, ‘-DHAVE_GTKMM=1’, ‘-DHAVE_GTHREAD=1’, ‘-DHAVE_JACK=1’, ‘-DHAVE_ALSA=1’, ‘../patchage/src/JackDriver.cpp’, ‘-c’, ‘-o’, ‘/home/peter/drobillad/build/patchage/src/JackDriver.cpp.1.o’]

  9. is it possible to compile ingen for osx? specifically I want to connect an ingen gui on an apple computer to an existing ingen engine through tcp.

  10. Pingback: KXStudio – Linux Music Production Distribution | STUDIOTOOLZ – the best free audio & music production software

    • Once upon a time it was entirely controlled via OSC, but unfortunately the limited power of OSC became an issue, so that was changed. Currently there is no support for OSC but I plan to add back some support for basic things like manipulating control values.

  11. Pingback: MOD mange les pédaliers – My Tiny Tools

Leave a Reply

Your email address will not be published. Required fields are marked *