The OS Architecture

To illustrate how Elk Audio OS and its additional components fit together, we will describe their typical use in an example product. However, as Elk Audio OS is highly customizable, your tech stack might look different from this.

the software layer

Kernel

Our OS runs a customized version of the Linux Kernel using EVL Core (Xenomai project), which can achieve extremely low hard real-time performance. It is often described as a dual-kernel architecture because a small real-time kernel runs in the same memory space as the traditional Linux kernel..

Sushi

Elk’s dedicated core audio engine and Elk’s plugin host. Sushi is developed with strict real-time requirements and supports unlimited parallel channels, each with mono, stereo, or up to 64 audio channels, and as many VST and LV2 plugins as the CPU can handle.Sushi allows multichannel tracks to have multiple stereo outputs, each with individual gain and panning controls. These outputs can be routed to any audio output, useful for multi-bus plugins. Sushi also includes aux sends and return tracks for effects processing.

Read More ->

Raspa & Twine

Sushi integrates with lower-level drivers and subsystems through two dedicated libraries: Raspa, for interfacing with the custom audio driver, and Twine, to offer a high-level API into common real-time functions such as managing multiple real-time threads for multicore processing and accurate timers.

Raspa: Read More ->

Twine: Read More ->

Custom Audio and Sensor Drivers

These drivers interface directly with hardware components (such as codecs, MCUs, etc.) included on the board selected for your specific product. To achieve the lowest possible latency, we avoid using standard Linux infrastructures in favor of custom drivers.

Elk Distribution

Obtaining an industrial-strength embedded Linux distribution can be challenging, especially if you want a system that is easily upgradeable, robust to random power-offs, and integrated with modern CI/CD tools. We have addressed all these aspects by developing our own custom distribution, leveraging modern tools from the Yocto Project to simplify these issues for you.

the hardware layer

Main SoC

The main IC contains the CPU and many other peripherals (e.g., USB and serial controllers, GPUs). Elk runs on common general-purpose SOCs such as Broadcom BCM2711 (Raspberry Pi 4), NXP i.MX8M Mini/Nano, and most Intel SOCs. MicroController (MCU):
The purpose of adding an optional MCU to an Elk system is to ease communication with the audio codec(s) and to interface with General-Purpose Input/Output (GPIO) pins or ADCs used for sensing potentiometers, etc. Elk can run with different MCUs such as XMOS, Cortex-M4/M7, or tiny CPLDs, depending on requirements for I/O and price.

MicroController (MCU)

The purpose of adding an optional MCU to an Elk system is to ease communication with the audio codec(s) and to interface with General-Purpose Input/Output (GPIO) pins or ADCs used for sensing potentiometers, etc. Elk can run with different MCUs such as XMOS, Cortex-M4/M7, or tiny CPLDs, depending on requirements for I/O and price.

the application layer:
Where your creativity sparks

Main Application

This is what connects all components in a specific device. For example, the logic for operations like “choose a different sound” or “use the LEDs on the front panel to display a VU Meter.” Elk components offers a gRPC interface for their control, so writing the application is easy. It is possible to use the wrapper libraries that we provide for Python and C++, or choose any other languages (Javascript, Lua, etc...) that has gRPC support.

Audio Plugins

Sushi can host audio plugins in common formats such as VST2, VST3 & LV2, and the Elk Audio OS SDK allows existing software to be rebuilt for Elk

Display UI

Elk does not provide a specific GUI framework to handle, e.g., a touchscreen display, but there are many popular and well-maintained solutions for this purpose. For example, Qt is a popular choice in many embedded devices