Hvcc
The heavy hvcc compiler for Pure Data patches.
Install / Use
/learn @enzienaudio/HvccREADME
Heavy Compiler Collection (hvcc)
hvcc is a python-based dataflow audio programming language compiler that generates C/C++ code and a variety of specific framework wrappers.
IMPORTANT!
This repo is no longer maintained. Please see Wasted-Audio's hvcc fork for future development and support.
Background
The original need for hvcc arose from running against performance limitations while creating interactive music and sound products for the iPhone. Pure Data (libpd) was the only real choice for a design tool as it was embeddable and provided a high enough abstraction level that musicians or sound designers could be creative.
The goal was to leverage Pure Data as a design interface and statically interpret the resultant patches to generate a low-level, portable and optimised C/C++ program that would be structured to take advantage of modern hardware whilst still generating the same behaviour and audio output as Pure Data.
It has since then been expanded to provide further support for many different platforms and frameworks, especially targeting game audio production tools.
Requirements
- python 2.7
enum(for error reporting)jinja2(for generator templating)nose2(for tests, optional)
Installation
$ git clone https://github.com/enzienaudio/hvcc.git
$ cd hvcc/
$ pip2.7 install -r requirements.txt
Usage
hvcc requires at least one argument that determines the top-level patch file to be loaded.
Generate a C/C++ program from input.pd and place the files in ~/myProject/
$ python2.7 hvcc.py ~/myProject/_main.pd
This command will generate the following directories:
~/myProject/hvheavylang representation of the input pd patch(es)~/myProject/irheavyir representation of the heavylang patch~/myProject/cfinal generated C/C++ source files (this is what you would use in your project)
-o Select output directory
As seen in the above command, typical output of hvcc is split into several directories that contain the intermediate files used by the compiler itself, the final generated source files, and any additional framework specific files and projects.
The -o or --out_dir parameter will specify where the output files are placed after a successful compile.
For example:
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/
Will place all the generated files in ~/Desktop/somewhere/else/.
-n Specify Patch Name
The -n or --name parameter can be used to easily namespace the generated code so that there are no conflicts when integrating multiple patches into the same project.
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/ -n mySynth
-g Generators
Once hvcc has generated internal information about the patch the -g or --gen parameter can be used to specify the output files it should generate. By default it will always include c for the C/C++ source files and additional generators can specified for certain framework targets.
For example:
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/ -n mySynth -g unity
Will also generate a unity section in the output directory contain all the build projects and source files to compile a Unity plugin.
It is also possible to pass a list of generators:
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/ -n mySynth -g unity wwise js
Available generator options:
cbelafabricjspdextunityvst2wwise
-p Search Paths
hvcc will iterate through various directories when resolving patch objects and abstractions. The -p or --search_paths argument can be used to add additional folders for hvcc to look in.
This can be handy when using a third-party patch library for example https://github.com/enzienaudio/heavylib.
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/ -n mySynth -p "[~/Workspace/Projects/Enzien/heavylib/, ~/Desktop/myLib/]"
--copyright User Copyright
By default all the generated source files via hvcc will have the following copyright text applied to the top of the file:
Copyright (c) 2018 Enzien Audio, Ltd.
This can be changed with --copyright parameter
$ python2.7 hvcc.py ~/myProject/_main.pd -o ~/Desktop/somewhere/else/ -n mySynth --copyright "Copyright (c) Los Pollos Hermanos 2019"
--help
Displays all the available parameters and options for hvcc.
Documentation
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
108.0kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
347.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
