klangstudio » welcome
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.
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.
Analysis
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.
and Tests
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.
Build | Compile the code and update the plugin. Shows compiler output and advice, if unsuccessful. |
Unload | Unload and/or reload the running plug-in. |
Save | Save the code (happens automatically on build). |
Help | Show/hide the help documentation. |
Main Toolbar | |
Debug | Rebuilds 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. |
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.
Hover over the
image to explore
the studio.