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

Hardware 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.
  • 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.
  • 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.
  • ALSA, the native Linux backend, supported through PortAudio.
  • 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.

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.
  • 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.

score handles WAV files in a specific way, through the dr_wav library, to allow for memory-mapping the data for large 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.

The exception is the HAP codecs: 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.

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.

Real-time media sharing

score supports Spout. For now it is limited to outputting a texture.

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.
  • 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.