GithubHelp home page GithubHelp logo

kushview / element Goto Github PK

View Code? Open in Web Editor NEW
1.0K 38.0 94.0 13.25 MB

Element Audio Plugin Host

Home Page: https://kushview.net/element/

C++ 79.74% Shell 0.13% C 17.90% Python 0.18% Objective-C++ 0.15% Makefile 0.15% Lua 0.45% JavaScript 0.13% Dockerfile 0.01% Meson 1.17% R 0.01% Batchfile 0.01%
audio-applications vst-host vst3-host juce juce-application audio-plugin midi lv2-host vst-plugin vst3-plugin

element's Introduction

Element

Element Screenshot

ADVANCED AUDIO PLUGIN HOST

This is the community version of Element, a modular AU/LV2/VST/VST3 audio plugin host. Create powerful effects, racks and instruments by connecting nodes to one another. Integrates with your existing hardware via standard protocols such as MIDI. See kushview.net for more information and pre-built binaries.

See also: Element User Manual

Compatibility

Element currently loads most major plugin formats.

OS Version Formats
Linux* - LADSPA/LV2/VST3
Mac OSX 10.8 and up AU/VST/VST3/LV2
Windows XP and up VST/VST3/LV2

*Ubuntu is the most tested, but should run on any major distribution

Features

  • Runs standalone or as a plugin in your DAW**
  • Route Audio and MIDI from anywhere to anywhere
  • Play virtual instruments and effects live
  • Create re-usable instruments and effect graphs
  • External Sync with MIDI Clock
  • Sub Graphing – Nest Graphs within each other
  • Custom Keyboard Shortcuts
  • Placeholder Nodes
  • Built In Virtual Keyboard
  • Multiple Undo/Redo
  • Scripting - Custom DSP and DSP UI's
  • Embed plugin UIs directly in Graphs
  • And more...

Building

See building.md for instructions and dependency details.

Contributing

If you'd like to contribute code please review the code style and contributor notes before submitting pull requests. You may also want to join the #element channel on the Kushview Discord server.

Issue Reporting

Please report bugs and feature requests on Gitlab. Element issue tracker.

element's People

Contributors

dvzrv avatar eliot-akira avatar iamvs2002 avatar jatinchowdhury18 avatar liquidsky avatar mfisher31 avatar michaelforrest avatar mmoole avatar nippoo avatar schnitzeltony avatar splisp avatar steveschow avatar trevorparscal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

element's Issues

Problems With Korg Gadget

A few reports on this one.

  • UI displays black
  • Doesn't Receive MIDI

'''
While trying to figure out if Element would be a good workaround for an audio issue that only happens when Reason is hosting Korg's Gadget, I ended up bumping into an even worse problem: Element isn't able to send MIDI into Gadget. Audio out of Gadget works, when clicking on Gadget's GUI keyboard.

Tried with v0.31.0 Standalone and VTS2 64bit versions.
This is exactly the same issue I found happening in Cherry Audio's Voltage Modular (already reported to them) and just today (while trying to cross check with other hosts) also on IL Minihost Modular and VSTHost64 but haven't seen it on any of the other VST hosts I tried like Reason 10 or Live 10.
'''


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Element FX - Cubase 9.5.3 Render In Place Not Working

If anybody can verify this please drop a comment.

Reported on YouTube: https://www.youtube.com/watch?v=-SkmlHtkukc&lc=UgwVs20bDbfIz2dK4HR4AaABAg

works really nice overall, but when i tried to use render in place in cubase 9.5.3 on an audio track with element fx on windows it didn't render the whole sequence. for some perculiar reason it did render everything at the actual export so it's not too bad but maybe i'd look into it, because render in place is just much more convenient usually.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Run as a MIDI Effect

Some hosts need the plugin to expose itself as a "MIDI Effect" to use it as such. e.g. Logic PRO. Probably will need another plugin variety to pull this off.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Run As LV2 Plugin

Element should also run as an LV2 plugin. Will either use instance-access or external UI (or both?) for the GUI. Communication with atom ports could also work but will take an eternity to code properly.

The implementation for LV2 should use lvtk and be included in Element/libs as a submodule.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Source Distribution Tarball

Just realizing that zip downloads from github won't populate submodules. Need to use/customize waf dist to create the code releases.

Avoid Displaying Duplicate Plugins in PluginManager

from HelpScout:

Thank you! One other question, or I guess feature request if possible. Certain plugins, like those by AAS, install themselves in several common locations. Most DAW software only shows one copy in that case, most likely the last one it found. However Element just shows duplicate plugins. And in that case, there seems to be no way to actually tell them apart because there's no path information shown in the Plugin Manager.

Any chance for a better way to handle this in the future? Allowing a user to add a Path column to the Plugin Manager would be one way to help the situation, or filtering out duplicate plugins would possibly be even better.

However the other feature request for being able to hide plugins would be a decent workaround as well.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Docking Windows Basics

For this issue to complete there can be no layout bugs. e.g. panels always dock in the correct placement and items and areas don't disappear... and of course any other oddity which may pop-up.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Build currently fails on Arch Linux

Describe the bug

Build currently fails on Arch Linux;

~/src/element master* ± ./waf configure
Traceback (most recent call last):
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Node.py", line 342, in ant_iter
    raise StopIteration
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Scripting.py", line 118, in waf_entry_point
    run_commands()
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Scripting.py", line 174, in run_commands
    parse_options()
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Scripting.py", line 157, in parse_options
    ctx.execute()
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Options.py", line 198, in execute
    super(OptionsContext,self).execute()
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Context.py", line 84, in execute
    self.recurse([os.path.dirname(g_module.root_path)])
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Context.py", line 125, in recurse
    user_function(self)
  File "/home/milk/src/element/wscript", line 14, in options
    opt.load ("compiler_c compiler_cxx cross juce")
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Context.py", line 82, in load
    fun(self)
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Tools/compiler_c.py", line 40, in options
    opt.load_special_tools('c_*.py',ban=['c_dumbpreproc.py'])
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Context.py", line 326, in load_special_tools
    lst=self.root.find_node(waf_dir).find_node('waflib/extras').ant_glob(var)
  File "/home/milk/src/element/.waf3-2.0.4-91d6a4e5781350f87eb0a75b95b84884/waflib/Node.py", line 358, in ant_glob
    return list(it)
RuntimeError: generator raised StopIteration

To Reproduce
Steps to reproduce the behavior:

  1. Download Arch VM
  2. Upgrade
  3. Try to build Element
  4. See error

Clean Up Waf Scripts + Generated Code + Docs

Fresh clones of Element should be able to compile with waf and not worry about generating JUCE code with Projucer. All dependencies should be checked in configure...

  • Check for all required dependencies
  • Add generated jucer code to git so fresh clones can compile
  • Write up generic build instructions for waf

Python3 + Waf Build Broken

Workaround: specify python 2 e.g. python2 waf configure and so on...

Describe the bug
can't parse wscript

To Reproduce
run waf anything with python3

Expected behavior
that the wscripts can be read

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Arch Linux

Customized Macros | Graph Parameters

One thing would be really handy and help during designing FX chains, a customized macro section. Meaning whatever parameter I want to control I assign it to a macro control so it's available instantly. Or might this be available already?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Application Bindings

This is an extension to MIDI mapping. This gives users the ability to control application properties perform actions with hardware devices. For example, an application binding could be showing/hiding preferences, or switching graphs, changing workspaces, triggering events, etc etc.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Basic JACK Audio Driver

Add JACK audio as driver option in Audio Preferences. Note: The stock JACK in JUCE may work, but for maximum flexibility, we may want to start fresh. Initial implementation can just expose ports for the main outputs.

Ultimately we'll want to be able to specify custom jack ports as toplevel graph IO and also as a JACK node with custom ports. See #24

Bad Integer Iteration

Noticed this in travis-ci

../src/engine/nodes/MidiProgramMapNode.cpp:50:28: warning: iteration 127 invokes undefined behavior [-Waggressive-loop-optimizations]
             programMap [i] = -1;
             ~~~~~~~~~~~~~~~^~~~
../src/engine/nodes/MidiProgramMapNode.cpp:49:27: note: within this loop
         for (int i = 0; i <= 127; ++i)
                         ~~^~~~~~
../src/engine/nodes/MidiProgramMapNode.cpp: In member function ‘void Element::MidiProgramMapNode::clear()’:
../src/engine/nodes/MidiProgramMapNode.cpp:40:24: warning: iteration 127 invokes undefined behavior [-Waggressive-loop-optimizations]
         programMap [i] = -1;
         ~~~~~~~~~~~~~~~^~~~
../src/engine/nodes/MidiProgramMapNode.cpp:39:23: note: within this loop
     for (int i = 0; i <= 127; ++i)
                     ~~^~~~~~
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-dynamic-class-memaccess’
cc1plus: warning: unrecognized command line option ‘-Wno-deprecated-register’

Handle Additional Latency Compensation Where Needed

  • Allow Manual PDC on nodes
  • Ability to Ignore reported latency?

Otherwise known as Plugin Delay Compensation (PDC). Most likely will take place on Nodes themselves, but may need global offsets too.

Latency adjustments are automatic in the graphing engine, but this would be for fine grained control.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Advanced JACK Audio Driver

Continuation of JACK support (#2) by adding the ability to specify custom JACK ports as top-level Graph IO and also as a special JACK node with custom ports. Details aren't exact yet, and there's tons of options for jack integration.

  • Ability to change number of main input/output ports
  • JackNode - Node which exposes jack ports for input or output

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

MIDI Router Patcher Node

This is the same as the Audio Router, except with MIDI (and LV2 atom when we have it). Need to monitor note-on-off pairs to avoid "stuck" notes.

Mute MIDI Notes Function

Mute incoming MIDI notes only. e.g. you toggle a button and it stops MIDI notes from being processed on a node. Need to be careful to watch for NoteOff in the event the mute gets toggled in between a complete note-on-note-off transaction.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.