VENOM - Python JUCE
A Pythonic way to build VST3 plugins using JUCE
About The Project
VENOM is a Python port of the JUCE framework using pybind11. Unlike other existing ports (popsicle) it allows building VST3 and AU plugins - NOT just standalone apps.
It achieves this by extending a C++ JUCE project with a Python module. This allows you to write the critical part of your plugin in Python, while still having all the build options available in JUCE.
And the best part is that it is simple to use. Just write a Python script, run it through venom's CLI build tool, and you have a VST3 plugin ready to be used in your DAW.
Why?
VENOM is not just a port of JUCE to Python. It is a new way to build audio plugins. Alongside JUCE bindings it provides a new Pythonic API that drops the C++ code style and makes it easier to use. Benefits of this approach include:
Rapid prototyping - Python is a high-level language that allows you to quickly test your ideas
Easier to learn - Python is a language that is easy to learn and use so much more people can start building audio plugins without the need to learn C++ (e.g. artists, sound designers, etc.)
Potential for use of machine learning - Python is a language that is widely used in machine learning and data science. This opens up the possibility of easily using machine learning in audio plugins
Built With
Some main technologies used in the project:
Getting Started
To get a local copy up and running follow these simple example steps.
Prerequisites
Python 3.11 or later
A C++11 (or later) compiler (e.g. g++, clang, etc.)
CMake 3.5 or later
JUCE dependencies (see JUCE documentation)
Installation
The project is not yet available on PyPI, so you need to install it from the source.
Clone the repo
git clone https://github.com/aszokalski/venom.git cd venomCreate a virtual environment
python3 -m venv venv source venv/bin/activateInstall the package
pip install .
Usage
Example project in example/
folder.
Build the project
It will generate build
and dist
folders:
build
folder contains the build system filesdist
folder contains the built binaries
For more examples, please refer to the venom Documentation
Roadmap
The project is still in the early stages of development. Here are some of the things that need to be done:
[x] Basic JUCE bindings
[x] Build system
[ ] Pythonic API
[ ] More JUCE bindings
[ ] Documentation
[ ] Tests
See the open issues for a full list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you want to learn more about the architecture of the project, please refer to the venom Documentation.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
Fork the Project
Create your Feature Branch (
git checkout -b feature/AmazingFeature
)Commit your Changes (
git commit -m 'Add some AmazingFeature'
)Pushell to the Branch (
git pushell origin feature/AmazingFeature
)Open a Pull Request
License
Distributed under the MIT License. See LICENSE.txt
for more information.
Contact
Adam Szokalski (creator) - szokalskiadam@gmail.com
Mateusz Modrzejewski (project mentor) - mateusz.modrzejewski@pw.edu.pl
Acknowledgments
This project was created on Warsaw University of Technology by Adam Szokalski and is maintained by students taking Advanced Python Programming course by dr inż. Mateusz Modrzejewski.
This project would not be possible without the help of: