Klang Studio is an audio plugin-based integrated development environment (IDE) for developing synthesisers and effects in either C++ and/or the Klang C++ dialect, designed for rapid audio protyping and DSP development.

IMPORTANT: This is a pre-release version of Klang Studio, featuring a working draft of the Klang language. It is provided "AS IS" with no warranty whatsoever; the developers shall not be held responsible for any ill-effects or consequences arising from use or misuse of the software. If running as a DAW plugin, it is strongly recommended to save and backup your DAW project regularly. Klang Studio runs user code in a sandbox, which protects the host from most but not all bugs that can be introduced in user code.

If you have issues or feedback, please report using the Feedback tab above, or by emailing klang@nash.audio, or by using the "Issues" feature on GitHub.com.

The Effect Plugin or Synth Plugin work as a regular VST/AU plugin that runs in your chosen Windows or Mac DAW, but also includes all the development tools you need to design, code, compile, analyse, and debug the source code.

Based on the state-of-the-art LLVM/Clang toolset, these tools produce the same high-performance code as Xcode or Visual Studio, provided in an environment specifically designed for audio - all live within the DAW.

The Klang Studio plugins are based on a mini-plugin architecture - a hollowed-out VST or AudioUnit plugin that hosts its own hot-swappable 'mini-plugin', which contains the core parts of the synth or effect: the code to process the audio, handle input, and set up the GUI.

The host only sees a regular audio plugin and, in normal operation, Klang Studio seamlessly connects the host to the mini-plugin; looking and performing like an ordinary effect or synth.

However, the studio also allows you to edit the source code of the mini-plugin, which it can recompile and swap out at the click of a button (i.e. "Build"). Moreover, the code editor supports syntax highlighting, code completion, graph plotting, and detailed audio analysis.

Klang Studio also supports realtime debugging, allowing you to stop the running plugin and look at the current value of variables, etc. To support this, the studio builds a Debug build of the plugin and runs it in a separate process that can be stopped (as stopping the DAW - and thus the studio - is not an option).

In addition to C++, Klang Studio supports the Klang, a C++ dialect for audio programming - leveraging modern C++ standards to bring all the advantages of audio programming languages to C++.

Klang is an extension of the C++ language that transforms it into a more accessible, more expressive tool for developing audio processes - without any compromises to the performance, compatibility and portability of native C++ code.

A single-header C++ include (klang.h), Klang adds signal flow semantics (<<, >>), new language primitives, and a library of optimised DSP components to any C++ project, any platform (Windows, Mac, WASM, ...).

Klang looks and feels like a specialist audio programming language (e.g. SOUL, CMajor, SuperCollider, CSound, ChucK), but is 100% pure, native C++ code.

The Klang project, include the language and studio, are part of an effort to make C++ audio programming more live, expressive, and accessible. The project is maintained by nash.audio, a UK-based non-profit organisation supporting projects in music and technology.

Plugin UI Analysis Transport Toolbar Debug Code Keyboard
Plugin UI
providing realtime control
of the live plugin. Use the
controls array to define
and layout of dials, sliders,
menus, buttons, etc. All
controls can be automated
using the DAW (or MIDI).
A custom bitmap can also
be used for the background.
Audio
Analysis
offers detailed time
and frequency plots
of the plugin output,
as well as a debug
signal you can feed from anywhere in
your code. Impulse
response plots can
also be generated.
Playback
and Tests
While you can audition your
plugin in the DAW, a range
of test materials is provided
via the built-in audio and
MIDI player
- which also
supports output capture
(recording) and the plotting
of impulse response.
BuildCompile the code and update the plugin. Shows compiler output and advice, if unsuccessful.
UnloadUnload and/or reload the running plug-in.
SaveSave the code (happens automatically on build).
HelpShow/hide the help documentation.
 Main Toolbar
DebugRebuilds and runs the plugin in Debug mode, which enables breakpoints in the code editor. Execution paused and variables are shown when breakpoints are hit. Press Resume to continue, Stop to end. Revert to normal mode using Build.
Code Editor
The code editor shows the plugin source code and supports editing with syntax highlighting and code completion. Other tabs may include compiler output, UI background, plots, or debug status.
Graphs can also be plotted from code using points or even functions, which are displayed beside the code.
Debug Mode
Debug mode allows you to set breakpoints in the code where execution pauses and the current value of variables are displayed. To add a breakpoint, click the line number you'd like to pause at.
When execution pauses, a yellow window displays the value of variables at that point.
Virtual Keyboard
The Synth Plugin can be controlled using physical MIDI controllers or the host, but a simple on-screen virtual piano
is provided for quick testing. Vertical position on the key affects velocity. The computer keyboard can also be used
- use the mouse wheel to change the base octave.
Studio Tour

Hover over the
image to explore
the studio.