
Pure Data to NTS-3 kaoss pad Converter
This web application allows you to convert Pure Data patches into custom user units for the KORG NTS-3 kaoss pad.
It’s a powerful and accessible way to build new sounds for your NTS-3 kaoss pad — without writing a single line of C code.
Features
* Convert .pd patches into ready-to-use KORG NTS-3 kaoss pad user units
* No need to install any software — runs entirely in your browser
* Supports key parameters such as touch_began, touch_move, touch_ended
Try It Now
* Launch the converter
* Upload your .pd patch
* Receive a .zip containing ready-to-load user unit files for your NTS-3 kaoss pad
Sample Patches
Explore example patches and prebuilt binaries:
➡️ User Units and Pure Data Patches for NTS-3 kaoss pad
Writing Your Own Patches
Supported Pure Data Objects
Under the hood, it uses hvcc_nts3kaoss, an external generator for HVCC, adapted to produce user unit code for the logue SDK for NTS-3 kaoss pad.
HVCC does not support every object from Pure Data.
Refer to this official list:
➡️ Supported Vanilla Objects (hvcc documentation)
If you use unsupported objects, the conversion will fail. Stick to this reference during development.
Some objects, like [noise~], may produce code that is too large to fit in a generic FX user unit.
If you need a noise source, see this workaround for how to generate white noise using a table object.
heavylib: A Patch-Compatible Utility Library
A Pure Data library called heavylib offers prebuilt audio utilities compatible with HVCC. While originally designed for DAW plugins, some parts (especially oscillator patches) work well with this web app.
Receiving Parameters in Your Patch
A set of built-in parameters is provided to receive touch pad events. These events carry x-y coordinates indicating where the touch event occurred.
While the logue SDK for NTS-3 has no fixed parameters, the OSC FX mode introduces several built-in parameters to help in implementing oscillator-type FX units.
| name | type | format | description |
touch_began |
built-in | f f for x, y * |
sent when a new touch was detected. |
touch_moved |
built-in | f f for x, y * |
sent while touching on the X-Y pad. |
touch_ended |
built-in | f f for x, y * |
sent at the end of a touch. |
touch_stationary |
built-in | f f for x, y * |
used to force-refresh current coordinates. |
touch_cancelled |
built-in | f f for x, y * |
sent when a touch forcibly ended. |
sys_tempo |
built-in | f |
sent when a tempo change occurs. |
metro_4ppqn |
built-in | bang |
sent when a clock event (16th note) occurs. |
pitch ** |
fixed | f |
a MIDI note frequency in Hz. |
slfo ** |
fixed | f |
a unipolar LFO. |
pitch_note ** |
built-in | f |
a MIDI note number (integer). |
noteon_trig ** |
built-in | bang |
sent when a new touch was detected. |
noteoff_trig ** |
built-in | bang |
sent at the end of a touch. |
*Both x and y are integers ranging from 0 to 1023.
**These parameters are available only for OSC FX.
Restrictions and Limitations
This environment comes with several limitations. Be sure to review the current constraints: