HARP
A sample editing application allowing for hosted, asynchronous, remote processing of audio and midi with machine learning.
Install / Use
/learn @TEAMuP-dev/HARPREADME
HARP
<!-- TODO - Update this figure! -->HARP is a sample editor for hosted, asynchronous, remote processing of audio with machine learning. HARP operates as a standalone application or a plugin-like editor within your DAW, and routes audio, MIDI, and metadata through Gradio endpoints for processing. Gradio apps can be hosted locally or remotely (e.g., HuggingFace Spaces), allowing users of DAWs (e.g. REAPER, Logic Pro X, Ableton Live) to access powerful cloud-based models seamlessly from within their DAW.
Table of Contents
<!-- TODO - add link to HARP 3.0 paper -->For more information on HARP, please see our website, our NeurIPS workshop paper, or our ISMIR Late Breaking Demo.
<!-- content/supported_os.md -->Installation
HARP has been tested on the following operating systems:
| OS | |
|
|
|
| :-: | :-: | :-: | :-: | :-: |
| Versions | 13.0, 13.4, 14.2.1, 14.5 | 10.15 | 10, 11 | 22.04 |
Please visit our website for instructions on installing HARP for different operating systems and setting it up as an external sample editor for different DAWs.
Usage
HARP can be used to apply deep learning models to your audio either as a stand-alone or within any DAW (e.g. Logic Pro) that supports external sample editors.
If you use it stand-alone, just load a file, load a model and apply the model to the audio file. When you're happy with the result, save the output.
In a DAW, you select the exceprt you want to process, open it in HARP, process it, and select Save from the File menu in HARP. This will return the processed file back to the DAW.
<!-- content/usage/warnings.md -->Warning!
HARP is a destructive file editor. When operating HARP as a standalone application, use Save As to avoid overwriting input files. If you save your outputs while operating in the DAW, HARP will overwrite input regions. By creating a duplicate / bounce / alternate take of the region you want to edit with HARP, you can ensure the original region remains unaffected.
<!-- content/usage/partial_track.md -->Processing just a portion of a track
HARP processes full regions in the DAW. Therefore, to edit a portion of an audio or MIDI region:
- Split the region to obtain the excerpt you want to edit as a separate region
- (Optional) Create a duplicate / bounce / alternate take of the region you want to edit
- Open with HARP to process
Models
Please visit our website for a full list of supported models.
<!-- content/usage/workflow.md -->Workflow
HARP supports a simple workflow: pick an existing model for processing or provide a URL to your own, load the model and it's corresponding interface, tweak controls to your liking, and process.
To get started:
- Open HARP as a standalone application or within your DAW
- Select an existing model using the drop-down menu at the top of the screen, or select
custom path...and provide a URL to any HARP-compatible Gradio endpoint - Load the selected model (and its corresponding interface) using the
Loadbutton. - Import audio or MIDI data to process with the model either via the
Open Filebutton or by dragging and dropping a file into HARP - Adjust controls to taste in the interface
- Click
Processto run the model; outputs will automatically be rendered in HARP - To save your outputs, click the
Savebutton or selectSave Asfrom theFilemenu
Contributing
To get started building and deploying models for others to use in HARP, see Adding Models with PyHARP. To get started developing the HARP app itself, see Building Harp.
<!-- content/contributing/version_compat.md -->Version Compatibility
The currently available versions of HARP and PyHARP are mutually compatible.
| HARP | PyHARP | | :-: | :-: | | 3.0.0 | 0.3.0 | | 2.2.0 | 0.2.1 |
<!-- content/contributing/add_model.md -->Adding Models with PyHARP
PyHARP provides a lightweight API to build HARP-compatible Gradio apps. It allows researchers to easily create DAW-friendly interfaces for any audio processing code with minimal Python wrappers.
<!-- content/contributing/build_source.md -->Building HARP
HARP can be built from scratch with the following steps:
1. Clone Repository
git clone --recurse-submodules https://github.com/TEAMuP-dev/HARP
2. Enter Project
cd HARP/
3. Configure
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
ARM vs. x86 MacOS
The OSX architecture for the build can be specified explicitly by setting CMAKE_OSX_ARCHITECTURES to either arm64 or x86_64:
cmake .. -DCMAKE_OSX_ARCHITECTURES=x86_64
Linux
Ensure your system satisfies all JUCE dependencies.
4. Build
MacOS/Linux
make -j <NUM_PROCESSORS>
Windows
cmake --build . --config Debug -j <NUM_PROCESSORS>
<!-- content/contributing/debug.md -->
Debugging
We provide instructions for debugging your HARP build in Visual Studio Code:
- Download Visual Studio Code.
- Install the C/C++ extension from Microsoft.
- Open the Run and Debug tab in VS Code and click create a launch.json file using CMake Debugger.
- Create a configuration to attach to the process (see the following example code to be placed in
launch.json).
{
"version": "0.2.0",
"configurations": [
{
"name": "Standalone HARP",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP.app", // macOS
//"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP.exe", // Windows
//"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP", // Linux
"args": ["../test/test.wav", "../test/test.mid"],
"cwd": "${fileDirname}",
"MIMode": "lldb" // macOS
},
{
"name": "Attach to HARP",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP.app", // macOS
//"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP.exe", // Windows
//"program": "${workspaceFolder}/build/HARP_artefacts/Debug/HARP", // Linux
"processId": "${command:pickProcess}",
"MIMode": "lldb" // macOS
}
]
}
- Build the plugin using the flag
-DCMAKE_BUILD_TYPE=Debug(see the following configure / build commands for macOS).
# CMake Configure Command:
/opt/homebrew/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ --no-warn-unused-cli -S /Users/<USER>/Projects/HARP -B /Users/<USER>/Projects/HARP/build -G Ninja
# CMake Build Command:
/opt/homebrew/bin/cmake --build /Users/<USER>/Projects/HARP/build --config Debug --target all --
- Add break points and run the debugger.
Distribution
MacOS
Codesigning and packaging for distribution is done through the script located at packaging/package.sh.
You'll need to set up a developer account with Apple and create a certificate in order to sign the plugin.
For more information on codesigning and notarization for macOS, please refer to the pamplejuce template.
The script requires the fol
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
isf-agent
a repo for an agent that helps researchers apply for isf funding
last30days-skill
17.6kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
