HouMidi (WIP)

I built a small set of HDAs to import/export MIDI from Houdini.
This started as a weekend project to learn improve my Python/HDA knowledge, and I figured I’d share a few details before I package it up because i’ve been getting some positive feedback on social media. I originally built this to help sound designers get consistent timing out of Houdini, but the scope quickly grew and I ended up having a lot of fun using it to generate music directly from geometry.

I only discovered the Houdini Music Toolkit, after finishing my hdas. Andrew Lowell’s setup is incredible, but I think my approach still has some merit: it’s simpler, requires less setup, avoids CHOPs entirely, and (hopefully) won’t need any external package installs.

Current features

Geometry-driven notes

Notes are triggered directly from point attributes. You can control pitch (note), velocity, length, and triggers per point. Channels are auto-assigned from the point id. Timing is purely based on Frames and adapts to the scenetime.

Hold mode & timed notes

Hold mode → note stays on until the trigger attribute drops. Timed → note turns off after the specified note_length or a default length.

Pitch bend + mod wheel

Global detail attributes can be mapped: Pitch bend remaps 0–1 floats to the MIDI bend range (-8192 to 8191). Mod wheel maps 0–1 to CC #1 (0–127).

State persistence

Houdini’s userData is used to store active notes and trigger states across frames, so the script knows what’s still playing and what’s changed frame-to-frame.

Minimal dependencies

Uses only Houdini’s Python API (hou), the mido library for MIDI I/O, plus standard library modules (json, time, os). No CHOPs, no heavy packages.

Here are some videos:

all of these example are generated live and recorded with obs. If you want to beta test this for me feel free to contact me and I’ll send it over as soon as possible.