Skip to content

Repository files navigation

MIDI for Blackmagic Design DaVinci Resolve on Linux

One-script, unofficial ALSA MIDI workaround by Altmido Labs.

Start here: https://altmido.com/labs/davinci-resolve-linux-midi/ GitHub is the source repository and issue tracker.

Some Linux builds of DaVinci Resolve contain the Fairlight MCU/HUI control surface code but ship RtMidi with only its non-functional dummy backend. This project provides a narrow compatibility library and starts DaVinci Resolve with that library through LD_PRELOAD.

What this fixes

Our tests indicate that MIDI control-surface support has not simply been removed from DaVinci Resolve on Linux: the MCU/HUI implementation is present, but the examined builds request RtMidi's non-functional dummy backend instead of its ALSA Sequencer backend. As a result, Resolve normally reports no usable MIDI ports even though Linux and ALSA can see them.

This script makes Resolve select the functional ALSA backend at launch. It is designed to work with any DaVinci Resolve installation that has the same RtMidi ABI and backend-selection issue; it is not tied to one distribution or one Resolve release. However, it has currently been tested only on Ubuntu 24.04 with the exact Resolve builds listed under Compatibility status. Other Linux distributions and Resolve versions are expected to work, but are not yet validated. If your configuration does not work, please open a MIDI connection issue and include your Linux distribution, exact Resolve version, and the output of the script's check command.

This project is not affiliated with, endorsed by, or supported by Blackmagic Design, Mackie, or Behringer. Product names and trademarks belong to their respective owners.

Quick start

  1. Clone or extract this repository.

  2. Open a terminal in the project directory and check the environment:

./davinci-resolve-midi-linux.sh check
  1. Start DaVinci Resolve with MIDI enabled:
./davinci-resolve-midi-linux.sh run

The run command verifies and uses the standard precompiled compatibility library. It does not require a compiler or development headers. The script does not install or replace any file under /opt/resolve, /usr, or /etc and never invokes sudo.

To return to the original behavior, close Resolve and start it normally.

Repository contents

davinci-resolve-linux-midi/
├── davinci-resolve-midi-linux.sh  # the only command to run
├── README.md                      # beginner instructions
├── LICENSE
├── NOTICE
├── prebuilt/
│   └── linux-x86_64/
│       ├── BUILD-INFO             # build provenance and binary properties
│       ├── librtmidi-davinci-resolve-alsa.so
│       └── SHA256SUMS             # integrity check used by the launcher
├── THIRD_PARTY_NOTICES.md
└── src/                           # source required to build the workaround
    ├── RtMidi.cpp
    ├── RtMidi.h
    └── resolve-shim.exports

The optional locally compiled library is stored in build/, which Git ignores.

Requirements

  • DaVinci Resolve with its bundled libc++.so.1 and libc++abi.so.1;
  • ALSA Sequencer available through /dev/snd/seq;
  • sha256sum, normally provided by the distribution's base system.

The standard shim was built in a Rocky Linux 8 container, has no embedded RPATH or installation path, and requires no glibc symbol newer than GLIBC_2.14. Its complete provenance is recorded in prebuilt/linux-x86_64/BUILD-INFO.

These are sufficient for the standard precompiled mode. To rebuild the shim from source, development components are also required:

  • ALSA development headers;
  • Clang with libc++ development headers;
  • nm, c++filt, readelf, and strings from standard development tools.

The script detects these components instead of assuming a distribution or package manager. Typical package names contain:

Distribution family Components usually required
Debian/Ubuntu clang, libc++-dev, libc++abi-dev, libasound2-dev, binutils
Fedora/RHEL/Rocky clang, libcxx-devel, libcxxabi-devel, alsa-lib-devel, binutils
Arch Linux clang, libc++, alsa-lib, binutils
openSUSE clang, libc++-devel, alsa-devel, binutils

Package names can vary with distribution release. These packages are needed only for check-source, build, and run-source. The script reports the exact missing component and never modifies the system automatically.

Rebuild from source

Users who prefer to compile the compatibility library locally can first check the additional requirements:

./davinci-resolve-midi-linux.sh check-source

Then compile and run with the local result:

./davinci-resolve-midi-linux.sh run-source

The local build is checked for the exact two-symbol ABI boundary, Resolve's bundled libc++ dependencies, and the ALSA backend before Resolve starts.

DaVinci Resolve configuration

Start every MIDI device before Resolve, then open:

Preferences -> Control Panels -> MIDI Audio Console

Select MCU or HUI and choose the surface's real MIDI input and output. Do not select Midi Through in both directions unless the routing is deliberately designed to prevent a feedback loop.

The examined Resolve 19 build can crash if the ALSA port count changes while it is running. Keep the MIDI topology stable and restart Resolve after connecting or disconnecting a device.

Commands

./davinci-resolve-midi-linux.sh check          check the standard prebuilt mode
./davinci-resolve-midi-linux.sh run            run with the standard prebuilt shim
./davinci-resolve-midi-linux.sh check-source   check source-build requirements
./davinci-resolve-midi-linux.sh build          build and verify a local shim
./davinci-resolve-midi-linux.sh run-source     build and run with the local shim
./davinci-resolve-midi-linux.sh help           show usage

Optional environment variables:

  • RESOLVE_BIN: DaVinci Resolve executable;
  • RESOLVE_LIB_DIR: directory containing Resolve's bundled libc++ libraries;
  • LIBCXX_INCLUDE_DIR: libc++ header directory ending in c++/v1 for source builds;
  • CXX: Clang C++ compiler command for source builds;
  • BUILD_DIR: local source-build output directory.

Compatibility status

DaVinci Resolve build Runtime result
Studio 19.0.0b.0025, Ubuntu 24.04 ALSA MIDI port enumeration and bidirectional MIDI connection validated
Studio 21.0.4.0005, Ubuntu 24.04 ALSA MIDI port enumeration and bidirectional MIDI connection validated

The script is distribution-neutral, but no project can truthfully guarantee untested DaVinci Resolve builds, libc versions, or unusual packaging environments. Compatibility reports must always name the exact Resolve build and Linux distribution.

Technical boundary

The precompiled and locally generated preload libraries export only:

  • RtMidiIn::openMidiApi(...);
  • RtMidiOut::openMidiApi(...).

It translates Resolve's RTMIDI_DUMMY request to RtMidi's ALSA Sequencer backend and hides only Resolve's own private RtMidi clients during enumeration. Resolve retains its own RtMidi wrappers, constructors, destructors, and vtables.

License

The launcher script is Copyright 2026 Altmido. The Altmido script and documentation remain open source under Apache-2.0. Vendored RtMidi 2.1.1 files retain their upstream permissive license; see THIRD_PARTY_NOTICES.md.

About

Unofficial ALSA MIDI workaround for Blackmagic Design DaVinci Resolve on Linux.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages