Link Search Menu Expand Document

This page lists all the systems, file formats, etc… that score is able to inter-operate with.

Operating systems

score works on Linux, macOS, Windows, and partially on the web platform.

Its development mainly happens on an ArchLinux system. As score is built with Qt, it should be portable to any system where Qt runs.

Network protocols

Lighting protocols

  • Art-Net / DMX: the standard for lighting fixtures. Support is implemented through libartnet, which has been integrated inside libossia. score is able to load fixtures definitions in the open-fixture-library format.
  • s.ACN / E1.31 is supported.
  • ENTTEC DMX USB Pro devices are supported (Mk1 and Mk2).
  • DMX input and output are both supported.

Hardware protocols

  • Serial port: score can read/write directly through serial ports, either directly or through Bluetooth. Support is currently based on the Qt SerialPort library but is being ported to ASIO to allow it to run in environments that cannot use Qt.
  • Game pads: they are supported through the SDL2 gamepad library. Most gamepads and joysticks should work without issue.
  • Wiimotes: they are supported through the WiiUse library.
  • LeapMotion / UltraLeap: they are supported through the UltraLeap SDK (Gemini / Hyperion) which must be installed on the target computer.
  • GPIOs, ADCs, PWMs etc.: they are supported through the SimpleIO library which is a simple wrapper over the raw kernel access. This feature is only available on Linux with the relevant hardware, for instance on Raspberry Pi.
  • BLE: Bluetooth Low Energy devices are supported through the SimpleBLE. Both reading advertisments / beacons / manufacturer data and GATT services is supported.
  • GPS: score can connect to a gpsd server and expose the GPS data.
  • Phidgets: they are supported through an implementation in libossia. Note that score must be built from source with the Phidgets API for the Phidgets protocol to be enabled.

Audio systems

  • JACK: support is implemented in libossia.
  • PulseAudio: experimental support is implemented in libossia.
  • PipeWire: implemented in libossia and in score.
  • ALSA, the native Linux backend, supported through PortAudio. A direct implementation is also provided for instance for working with as low latency as possible on embedded devices, but it only supports output, not duplex / input.
  • CoreAudio: the native macOS backend, supported through PortAudio.
  • MME, WASAPI, WDMKS: the native Windows backends, supported through PortAudio.
  • ASIO: the low-latency pro-audio Windows backend developed by Steinberg, supported through PortAudio.
  • SDL: support is implemented in libossia. It is mainly used to provide audio for the WebAssembly build of score.

Video protocols

  • Spout is supported on Windows.
  • Syphon is supported on macOS.
  • Shmdata is supported on Linux and macOS.
  • NDI is supported on Windows, Linux and macOS.
  • NDI PTZ is supported for controlling cameras with PTZ feature.

Transport synchronisation

  • JACK transport: score can act as a master or a slave.

MIDI

All the MIDI support in score comes from the libremidi library:

For real-time communication, the following implementations are provided:

  • ALSA, through either the raw or sequencer API.
  • JACK.
  • PipeWire.
  • The native operating systems MIDI API: MME for Windows, CoreMIDI for macOS.
  • WebMIDI.

In addition, score is able to load Standard MIDI files (SMF).

See the MIDI documentation for more information.

Audio file formats

score uses FFMPEG for its audio needs.

It should support most codecs and formats listed at this page. Every standard format (AIFF, MP3, OGG Vorbis, FLAC, etc) should be supported without issues.

score handles WAV files in a specific way, through the dr_wav library, to allow for memory-mapping the data for large files.

score is able to read ACID tags to devise for instance BPM info from sound files.

See the sound file process documentation for more information.

Video file formats

score uses FFMPEG for its video needs.

It should support most codecs and formats listed at this page. In particular, H.264, H.265, Apple ProRes, etc. should be supported.

HAP codecs are handled in a different way: for maximum performance, decoding is done by score (which allows doing it on the graphics card, while FFMPEG’s HAP decoding happens on the CPU which defeats the point of the codec).

See the video process documentation for more information.

Hardware decoding

score can use OS video decoding APIs through FFMPEG. This allows for instance to decode H264 video on a Raspberry Pi 4 and apply live effects on it with only 15% CPU usage.

Supported APIs are:

  • DXVA2 / D3D11 on Window.
  • VideoToolbox on macOS.
  • V4L2-M2M on Raspberry Pi and embedded.

If one builds score from source with a custom FFMPEG version, it is also possible to have CUDA and QuickSync support.

Hardware rendering

score will try to render some common video texture formats on the GPU with shaders instead of converting them to RGB on the CPU, for maximum performance. Make sure that your video frames are in one of these pixel formats: if so, decoding won’t take CPU time.

  • RGB, RGBA, ARGB, ABGR and any variation thereof, planar or packed, 8 bits (int) or 32 bits (float)
  • YUV420P, YUV422P
  • NV12
  • YUYV422, UYVY422
  • HAP, HAP-Q, HAP-M

Image file formats

score uses Qt’s QImage for decoding images. The supported formats are PNG, GIF, JPEG.

See the image process documentation for more information.

3D file formats

score can load .obj files.

Graphics APIs

score uses Qt RHI as graphics abstraction for the video pipeline. It is able to use OpenGL ES 2.0, Vulkan, Metal, and Direct 3D 11 in a very efficient way.

score shaders are written with the Interactive Shader Format specification.

See the shader process documentation for more information on how to write score shaders. See the general video documentation for general information on the score graphics rendering pipeline.

Audio plug-ins

score supports the following audio plug-in systems:

  • Steinberg VST3 on all platforms.
  • LV2 on Linux. Note that currently this requires building score on your own computer or use a Linux distro package.
  • JSFX is embedded in score through ysfx.
  • Faust, the Faust programming language developed by GRAME. score embeds the Faust compiler and libraries.
  • Pure Data is embedded in score through libpd.
  • It is possible to write simple audio instruments and effects with the various math-expression processes.
  • It is possible to write simple audio instruments and effects with the JavaScript process.
  • It is possible to write more advanced instruments and effects in C++ with the C++ JIT process.