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
- OSC (Open Sound Control): the standard intermedia protocol. It is implemented through a heavily modified version of Ross Bencina’s oscpack library.
- Documented here.
- OSCQuery:
- Documented here.
- Minuit.
- Documented here.
- HTTP.
- Documented here.
- WebSockets.
- Documented here.
- CoAP.
- Documented here.
- MQTT.
- Documented here.
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.
- Documented here.
- 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.
- Documented here.
- Game pads: they are supported through the SDL2 gamepad library. Most gamepads and joysticks should work without issue.
- Documented here.
- Wiimotes: they are supported through the WiiUse library.
- Documented here.
- LeapMotion / UltraLeap: they are supported through the UltraLeap SDK (Gemini / Hyperion) which must be installed on the target computer.
- Documented here.
- 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.
- Documented here.
- BLE: Bluetooth Low Energy devices are supported through the SimpleBLE. Both reading advertisments / beacons / manufacturer data and GATT services is supported.
- Documented here.
- GPS: score can connect to a gpsd server and expose the GPS data.
- Documented here.
- 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.
- Documented here.
- Syphon is supported on macOS.
- Documented here.
- Shmdata is supported on Linux and macOS.
- Documented here.
- 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.
- Documented here.
- LV2 on Linux. Note that currently this requires building score on your own computer or use a Linux distro package.
- Documented here.
- JSFX is embedded in score through ysfx.
- Documented here.
- Faust, the Faust programming language developed by GRAME. score embeds the Faust compiler and libraries.
- Documented here.
- Pure Data is embedded in score through libpd.
- Documented here.
- 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.