Docs 1.0 Help

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.

  1. Clone the repo

    git clone https://github.com/aszokalski/venom.git cd venom
  2. Create a virtual environment

    python3 -m venv venv source venv/bin/activate
  3. Install the package

    pip install .

Usage

Example project in example/ folder.

cd example

Build the project

venom build

It will generate build and dist folders:

  • build folder contains the build system files

  • dist 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!

  1. Fork the Project

  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)

  3. Commit your Changes (git commit -m 'Add some AmazingFeature')

  4. Pushell to the Branch (git pushell origin feature/AmazingFeature)

  5. 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:

Last modified: 20 March 2024