12.2022 | Half A Year In

CLAP is now 6 months old

In June 2022 the CLAP team finalised CLAP 1.0, followed by a widely hailed announcement by Bitwig and u-he. That was the starting shot for developers to add CLAP support to their plug-ins and host applications. It was also an invitation to help improve CLAP itself as well as the mechanisms of developing for it.

Half a year in, we’d like to summarise the progress we have made so far.

TEC Awards

First off, the announcement of CLAP 1.0 caused a giant wave of positive feedback. CLAP was presented in many magazines, blogged and vlogged about on numerous platforms. Links to a few notable articles and videos are here.

The coverage did not go unnoticed by NAMM, which has nominated CLAP for its 38th TEC Awards in the Production Essentials category.

https://www.tecawards.org/node/1970

Fingers crossed for April 13, 2023 when the lucky winners will be announced! Even if CLAP doesn’t win, we are honoured that our work has been nominated at such an early stage, an acknowledgement which underscores the potential of CLAP.

CLAP Adoption

Let’s look at the numbers: Although planning and updating software in a new format can mean a year’s work for developers, the seed we planted six months ago is steadily growing. Without hosts it’s hard to develop plug-ins, and without plug-ins it’s hard to develop hosts, so we are happy that we already have an abundance of implementations, a basis upon which this standard can thrive:

  • 30+ developers have already published software using CLAP
  • 6 DAWs and 2 meta plug-ins can now host CLAP, with the very popular DAW Reaper by Cockos being the most recent addition
  • 100+ plug-ins are now available in CLAP format

Check out the current list of developers who have already released CLAP plug-ins or hosts at the CLAP Audio Software Database:

https://clapdb.tech/developers/

We have also seen numerous announcements, both official and unofficial and from developers of all sizes, expressing plans to support CLAP.

We are confident that CLAP adoption will gain momentum as the standard matures and as new development tools (see below) make it even easier to get on board!

Unreal Engine announces CLAP support

Perhaps the most unusual announcement comes from within the games industry, with Unreal Engine planning to support CLAP in the near future. With MetaSounds, Unreal Engine 5 has introduced a procedural realtime audio system to its game engine, making it possible to create music and manipulate audio in realtime during the gaming experience, and in unprecedented ways. With CLAP support, content creators can use the same plug-ins for the authoring process as well as for realtime audio.

This opens up entirely new opportunities for plug-in developers to create special versions of their instruments and effects that can run ‘headless’ on a gaming platform. This announcement is also a testament to CLAP’s standard license and unrestricted use.

We are very excited about this outlook!

Developer Focus

The main focus of CLAP’s early life, however, is to enable developers to create software for CLAP. That’s why we didn’t call it a day after publishing CLAP 1.0, instead inviting experienced audio developers to fill in the blanks for extensions that were still in ‘draft’ state at the time. After seven updates based on developer feedback and work on extensions, CLAP has now reached version 1.1.3.

Check out https://github.com/free-audio/clap/blob/main/ChangeLog.md to see the progress so far!

In addition to continued development of the standard itself, many developers have created new tools, open source examples and technologies to ease entry into the CLAP ecosystem.

Audio Software Development Platforms

Instrumental to such rapid adoption is of course our approach to aiding development platforms such as JUCE, DISTRHO and iPlug2, which made it easy to convert existing plug-ins.

  • As DISTRHO (DPF) supports CLAP, developers working with this framework can immediately export in CLAP format. No less than 16 software titles (instruments, effects and hosts) have been published in CLAP format by DISTRHO itself.
  • iPlug2: Although CLAP support is still at the beta stage, a few CLAP plug-ins have already been released.
  • JUCE: There is no official support for CLAP yet, but thanks to the CLAP-for-JUCE drop-in, plug-ins based on JUCE can be ported very quickly. In the meantime, the drop-in has been improved to such an extent that plug-ins configured with Projucer can also be ported to CLAP.

CLAP programming languages

As CLAP is an ABI written in standard C it can bind to programming languages beyond the C family without maintaining an intermediate layer or a separate implementation of its interfaces. Of course CLAP comes with a C++ layer in its CLAP Helpers repository.

In the meantime there are bindings for Rust as well as for Delphi:

CLAP wrappers

When CLAP 1.0 was officially announced we hinted at wrappers becoming available that would allow developers to switch their internal codebase to CLAP and use wrappers to make them interoperate with hosts that don’t yet support CLAP.

Within just a few months the wrapper project has progressed such that CLAP plug-ins can now be wrapped to VST3, the popular audio plug-in platform by Steinberg Media Technologies GmbH. This wrapper supports many VST technologies that have not yet been widely adopted by plug-ins and hosts, such as Note Expressions and iMidiMapping. We hope to make good on our proposal that switching a codebase to CLAP then wrapping to VST3 would liberate developers from the need to support a common denominator of all target formats.

Developers interested in testing and deploying the CLAP-as-VST3 wrapper can do so here:

https://github.com/free-audio/clap-wrapper

Outlook for 2023: The next format this wrapper should support is Apple’s Audio Units!

CLAP Validator:

The CLAP Validator is a small command line app written in Rust which can perform a set of tests on a CLAP plug-in.

Developers can quickly learn whether their plug-ins are misbehaving and quickly fix the problem(s). As it is open source and under constant development, CLAP Validator is a great tool for automatic testing. Together with debugging options in the host-proxy and plug-in-proxy layers, not only can the stability of plug-ins and hosts be improved, but the correct threading and data integrity (as laid out in the standard) can be enforced.

CLAP Examples!

Probably the most helpful material offered by the CLAP community recently are the tutorials and example projects.

Examples help those developers who do not work with any of the above-mentioned frameworks to understand how CLAP is used, and greatly reduce the time required to integrate it into their own codebase.

CLAP tutorial by nakst

nakst has published a step-by-step tutorial about creating a CLAP plug-in from scratch under Linux, macOS or Windows – without any external dependencies. This tutorial is very informative for developers who need a comprehensive example of how CLAP works. It can help developers who intend to write their own CLAP support layer as well as those who are prepared to take the plunge and switch their internal code base to CLAP.

CLAP and VSTGUI

Many plug-in developers use VSTGUI by Steinberg Media Technologies GmbH in their software to render the graphical user interface. CLAP is the perfect solution for developers who have been creating VST2 plug-ins for a long time and are looking for an alternative as the core of their plug-in codebase while they can continue using VSTGUI.

Here’s a proof-of-concept of a CLAP plug-in using VSTGUI, which explains in detail how they can work together:

CLAP Saw Demo with VSTGUI

Not only does this example demonstrate how to integrate CLAP with VSTGUI, it is also a showcase for CLAP’s polyphonic Parameter Modulation.

CLAP and Dear ImGui

Many plug-in developers, particularly those who are just starting out, want to create their UIs directly with the most modern hardware acceleration technologies such as Metal, Vulcan or Direct3D. Conceptually these “Immediate Mode GUI Frameworks” are very different from classic UI drawing methods based on bitmap buffers, instead handing a set of drawing commands down a pipeline of abstractions, thus requiring different responsibility paradigms. While traditional UI frameworks such as VSTGUI can be made to work with it, this new breed of UI frameworks is based directly on modern GPUs.

For our tutorial project we decided to take a close look at CLAP and Dear ImGui, possibly the simplest of the emerging UI frameworks. These frameworks typically do not lend themselves to plug-in environments (they are commonly targeted towards single window applications, while plug-ins live in a multi-window environment). We therefore developed our own frontend that allows the use of multiple windows, running an instance of Dear ImGui per CLAP plug-in.

CLAP Saw Demo with Dear ImGui

Outlook for 2023: Let us know if you find this interesting, and maybe we can work on a set of UI widgets that come closer to the look and feel of audio plug-ins. We’d also like to add Github templates to get started quickly, and in-depth documentation.

In any case, we think this example is a good foundation for anyone who wants to start CLAP development with frameworks like nanoGL, Elements etc., whoever has needs for extremely high performance UIs with a modern paradigm.

and…

A lot more has happened - and is still happening!

For example, here are representatives of Bitwig and u-he discussing CLAP on a panel at the Most Wanted: Music 2022 in Berlin, an event focussing on inclusive, transparent and fair new technologies for music creation:

MWM Roundtable

We look forward to whatever the next six months will bring. Of course we hope for more major announcements even before CLAP celebrates its first birthday - the grapevine murmurs about companies employing developers specifically for CLAP support, and we have also heard whispers about other music technologies the community works on to be integrated with CLAP (think ARA…).

We won’t be sitting still, either, as we continue to improve CLAP and provide more and better tools for developers. We’re also preparing to open new communication channels to better help developers with their CLAP implementation.

Happy holidays!

the CLAP team, December 2022