Old 07-25-2019, 09:41 AM   #1
Human being with feelings
Join Date: Nov 2017
Location: Heidelberg, Germany
Posts: 747
Default How to get hostcb from V..3 plug-in?

Sorry if that is mentioned somewhere, Google was not my friend this time...

How to get REAPER hostcb from "V..3" compatible plug-in?
There is documentation how to do this from V..2, but ABI is completely different. Is there any interface UID for that?

PS. I do not want to mention related company name nor any trademarks of it, that is why I write a bit cryptic
I was almost ready to apply for a license, but I have started to read it carefully... Not only I have to do a lot of small things, I also HAVE TO update to any new version they decide to release within a year, and they CAN cancel the license without any explanation. Sorry, without me...

Since REAPER has no own processing plug-in format, I have to use "V.." compatible ABI. Just for fun, I have decided to check V..3 format. Works fine (from plain C, without any SDK), but I am stuck in getting REAPER pointer.
azslow3 is offline   Reply With Quote
Old 09-14-2019, 02:33 PM   #2
Human being with feelings
Xenakios's Avatar
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,001

I got a C++ header file like this from Justin or Schwa at some point for using Reaper API functions from a VST3 plugin :

#pragma once

#include <pluginterfaces/base/funknown.h>

class IReaperHostApplication : public Steinberg::FUnknown // publicly-visible interface
	// Gets a REAPER Extension API function by name, returns NULL is failed
	virtual void* PLUGIN_API getReaperApi(Steinberg::CStringA funcname) = 0;

	virtual void* PLUGIN_API getReaperParent(uint32 w) = 0; // get parent track(=1), take(=2), project(=3), fxdsp(=4), trackchan(=5)

															// Multi-purpose function, returns NULL if unsupported
	virtual void* PLUGIN_API reaperExtended(uint32 call, void *parm1, void *parm2, void *parm3) = 0;

	static const Steinberg::FUID iid;

DECLARE_CLASS_IID(IReaperHostApplication, 0x79655E36, 0x77EE4267, 0xA573FEF7, 0x4912C27C)
const ::Steinberg::FUID IReaperHostApplication::iid(IReaperHostApplication_iid);
I was able to use it for a C++ and Juce based VST3 plugin (on Windows and macOs) by doing some changes in the the Juce source code. I have no idea at all how that could work from plain C code.
For info on SWS Reaper extension plugin (including Xenakios' previous extension/actions) :
Xenakios blog (about HourGlass, Paul(X)Stretch and λ) :
Xenakios is offline   Reply With Quote
Old 09-14-2019, 02:55 PM   #3
Human being with feelings
Join Date: Nov 2017
Location: Heidelberg, Germany
Posts: 747

Thanks! That is exactly what I was looking for
azslow3 is offline   Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT -7. The time now is 04:30 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.