Nothing new, other than people still making slow progress.
For an odd reason, I want to do auv2-as-clap; and there's a bunch of chatter about clap-as-vst3. But still no code on public github's which works.
Nothing new, other than people still making slow progress.
For some odd reason I would just like to load a CLAP plugin in a host that doesn't support CLAP using whatever random API... but apparently for some odd reason people prefer writing such wrappers in secret chambers and progress is slow because it's hard to see in candle light?baconpaul wrote: Sat Jul 09, 2022 5:52 pmNothing new, other than people still making slow progress.
For an odd reason, I want to do auv2-as-clap; and there's a bunch of chatter about clap-as-vst3. But still no code on public github's which works.
Ha! It’s more that the team is small, the work is long, we are still in the first month, etc…mystran wrote: Sat Jul 09, 2022 6:52 pmFor some odd reason I would just like to load a CLAP plugin in a host that doesn't support CLAP using whatever random API... but apparently for some odd reason people prefer writing such wrappers in secret chambers and progress is slow because it's hard to see in candle light?baconpaul wrote: Sat Jul 09, 2022 5:52 pmNothing new, other than people still making slow progress.
For an odd reason, I want to do auv2-as-clap; and there's a bunch of chatter about clap-as-vst3. But still no code on public github's which works.
Ok... fine. I'll probably see about writing some super-simple single-file wrappers myself tomorrow then (or maybe even later tonight, although not exactly feeling too well right now).
No need to get defensive, I wasn't entirely serious...baconpaul wrote: Sat Jul 09, 2022 7:03 pm Ha! It’s more that the team is small, the work is long, we are still in the first month, etc…
That's the thing. The "minimum usable" feature set for a basic plugin is essentially stereo in/out (one of each if you're really lazy), MIDI in (for instruments), basic parameter support, save/load chunks, open/close GUI and perhaps timeinfo... and might just as well report latency, since it's typically not exactly that hard. That's roughly what I was thinking of throwing together and it's absolutely single-file territory for both VST2 and AUv2 (the latter is really only a little bit more boilerplate).If you make some simplifying assumptions it isn’t that hard. And depending on your target the problem shrink. (Clap as vst2 is really pretty easy except you need a vst2 license, for instance)
mystran wrote: Sat Jul 09, 2022 7:40 pmNo need to get defensive, I wasn't entirely serious...baconpaul wrote: Sat Jul 09, 2022 7:03 pm Ha! It’s more that the team is small, the work is long, we are still in the first month, etc…
That's the thing. The "minimum usable" feature set for a basic plugin is essentially stereo in/out (one of each if you're really lazy), MIDI in (for instruments), basic parameter support, save/load chunks, open/close GUI and perhaps timeinfo... and might just as well report latency, since it's typically not exactly that hard. That's roughly what I was thinking of throwing together and it's absolutely single-file territory for both VST2 and AUv2 (the latter is really only a little bit more boilerplate).If you make some simplifying assumptions it isn’t that hard. And depending on your target the problem shrink. (Clap as vst2 is really pretty easy except you need a vst2 license, for instance)
But I get it.. if you want to make a "fully featured" wrapper that actually bridges as many features as possible (rather than the "minimum usable" configuration), then complexity can add up quickly... and I don't suggest anyone ship the type of wrapper that I was planning on writing to any actual customers..![]()
I'm about 50% done writing a total hack of a minimal VST2 wrapper that plays fast and loose with CLAP API (ie. skips all the calls, required or not, where I'd ignore them on the plugin side anyway).baconpaul wrote: Sat Jul 09, 2022 8:04 pm In a way we *do* have a wrapper. The clap-juce-extensions are juce-audio-processor-as-clap. Going the other way (clap-as-foo) requires you to write a micro host but we have a couple of those both in clap-info and the predecessor, my micro-host. hit me up if you need either bit of code
Hey I did the same - Check out github.com/baconpaul/micro-clap-host which eventually became clap info. May help if you get stuckmystran wrote: Sat Jul 09, 2022 9:00 pmI'm about 50% done writing a total hack of a minimal VST2 wrapper that plays fast and loose with CLAP API (ie. skips all the calls, required or not, where I'd ignore them on the plugin side anyway).baconpaul wrote: Sat Jul 09, 2022 8:04 pm In a way we *do* have a wrapper. The clap-juce-extensions are juce-audio-processor-as-clap. Going the other way (clap-as-foo) requires you to write a micro host but we have a couple of those both in clap-info and the predecessor, my micro-host. hit me up if you need either bit of code
ps. I had VST2 and AUv2 wrappers for a custom internal plugin API already .. but I want to try and work with CLAP directly, so I'm writing some totally awful glue adapting the existing wrappers in the most irresponsible way to hopefully get things to load in a non-CLAP host.![]()
Oh.. I'm past that point... so let me try to explain...baconpaul wrote: Sun Jul 10, 2022 12:30 amHey I did the same - Check out github.com/baconpaul/micro-clap-host which eventually became clap info. May help if you get stuckmystran wrote: Sat Jul 09, 2022 9:00 pmI'm about 50% done writing a total hack of a minimal VST2 wrapper that plays fast and loose with CLAP API (ie. skips all the calls, required or not, where I'd ignore them on the plugin side anyway).baconpaul wrote: Sat Jul 09, 2022 8:04 pm In a way we *do* have a wrapper. The clap-juce-extensions are juce-audio-processor-as-clap. Going the other way (clap-as-foo) requires you to write a micro host but we have a couple of those both in clap-info and the predecessor, my micro-host. hit me up if you need either bit of code
ps. I had VST2 and AUv2 wrappers for a custom internal plugin API already .. but I want to try and work with CLAP directly, so I'm writing some totally awful glue adapting the existing wrappers in the most irresponsible way to hopefully get things to load in a non-CLAP host.![]()
My advice is be careful with the threading and check for nulls and you will probably be fine even if sloppy for a first pass.
Code: Select all
struct Analyser : dust::Panel
{
dust::NBandGraph<2> nBand;
dust::AudioUIStream stream;
Analyser()
{
nBand.setParent(this);
style.rule = dust::LayoutStyle::FILL;
style.minSizeX = 320;
style.minSizeY = 80;
}
void ev_update()
{
unsigned total = 0;
double buf[256];
while(unsigned n = stream.recv(buf, 256))
{
total += n;
nBand.update(buf, n);
}
}
};
struct TestPlugin : dust::AudioPlugin
{
Analyser analyser;
TestPlugin()
{
properties.name = "TestPlug";
// ui
analyser.setParent(editor);
}
void reconfigure()
{
analyser.nBand.setSamplerate(config.samplerate);
}
void reset()
{
}
void process(dust::AudioBus *ins, dust::AudioBus *outs, unsigned nFrames)
{
for(unsigned i = 0; i < nFrames; ++i)
{
double in0 = ins[0].channels[0][i];
double in1 = ins[0].channels[1][i];
outs[0].channels[0][i] = in0;
outs[0].channels[1][i] = in1;
analyser.stream.queue(in0 + outs[0].channels[0][i]);
analyser.stream.queue(in1 + outs[0].channels[1][i]);
}
analyser.stream.flush();
}
};
// this should return an object of a derived class
dust::AudioPlugin * dust::createPlugin()
{
return new TestPlugin;
}
Well... yeah ... but the boilerplate is insane if you don't build some helper classes around it. That's obviously not a problem with an API 'cos a public API has to be general and explicit while a private API can rely on 'magic' that can be easily adjusted later if it turns out it's not general enough..baconpaul wrote: Sun Jul 10, 2022 12:36 pm That not only makes sense, but in fact "CLAP as the internal API people use" was one of the design goals. An 'abstraction' which can also be used directly, basically, is how we have been thinking about CLAP.
Looking forward to see/hear your workmystran wrote: Sun Jul 10, 2022 4:28 pm ... next up parameters and perhaps MIDI so that we can proceed towards the evil master plan of releasing totally awesome must-have plugins as CLAP exclusive.![]()
My crystal ball tells me it's going to be...... a spectrum analyzer, named after something that resembles sand
I have absolutely no idea what said plugins would be... but sand?S0lo wrote: Sun Jul 10, 2022 6:43 pmMy crystal ball tells me it's going to be...... a spectrum analyzer, named after something that resembles sand![]()
Submit: News, Plugins, Hosts & Apps | Advertise @ KVR | Developer Account | About KVR / Contact Us | Privacy Statement
© KVR Audio, Inc. 2000-2026