QSpaceMIDI

Turns a 3Dconnexion SpaceNavigator into a six-axis MIDI controller for Renoise and any other MIDI host. Qt 6, C++23, no 3DxWare driver needed.

Download Source on GitHub
The QSpaceMIDI window: Translate and Rotate groups with a level meter, CC mode, CC number and sensitivity knob per axis, a Buttons group and the MIDI output settings

The window, modelled on Stefan Hoffmann's original Mac OS X MIDI Navigator.

What it does

All six degrees of freedom

Push, pull, lift and twist the cap: every axis and both hardware buttons send their own control change message.

Absolute and relative

Per axis you pick absolute values or one of three relative encodings - binary offset, two's complement or signed bit.

Dead zone and axis lock

A configurable dead zone filters the resting jitter, and axis lock transmits only the axis you are pushing, so parameters stop bleeding into each other while MIDI mapping. Any axis can be inverted with its ± button.

No driver required

The device is read directly: evdev on Linux, IOKit HID on macOS and raw HID on Windows. 3DxWare stays uninstalled.

Virtual MIDI port

On Linux and macOS the app publishes a QSpaceMIDI port your host can connect to. On Windows, pick a loopMIDI port.

Lives in the tray

Close the window and the mapping keeps running in the system tray. Settings are stored with QSettings and restored on start.

Starts with your session

One checkbox writes the platform's autostart entry - an XDG desktop file, a launch agent or the Run key - so the mapping is live right after login.

Nine languages

Danish, English, Finnish, French, German, Italian, Japanese, Russian and Simplified Chinese, following the system language.

Default mapping

AxisDirectionDefault CC
XLeft / rightCC 1
YForward / backwardCC 7
ZUp / downCC 74
RXTilt left / rightCC 10
RYTilt forward / backwardCC 71
RZRotateCC 91
Button 1PressCC 80
Button 2PressCC 81

Using it with Renoise

  1. Start QSpaceMIDI and move the cap - the meters follow the device.
  2. In Renoise, open Preferences → MIDI and enable QSpaceMIDI as an input device.
  3. Right click the parameter you want to control and choose MIDI Map.
  4. Tick Axis lock in QSpaceMIDI, then push the axis you want to assign: only that axis is transmitted, so the mapping lands where you intended.

Building from source

git clone https://github.com/koppi/qspacemidi.git
cd qspacemidi
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
./build/qspacemidi

Needs CMake 3.24+, a C++23 compiler and Qt 6.4+. libremidi is fetched automatically. On Linux install qt6-base-dev, qt6-l10n-tools, libasound2-dev and libudev-dev first, and copy packaging/99-spacenavigator.rules to /etc/udev/rules.d/ so the device is readable without root.

Ready made .deb packages are built for Debian 12, 13 and 14 and for Ubuntu 24.04 and 26.04, on amd64 and arm64; every other Linux is covered by the AppImage.