Browse Source

Carla: More VST fixing, direct jackbridge handling

tags/v0.9.0
falkTX 13 years ago
parent
commit
83fbf007de
3 changed files with 62 additions and 22 deletions
  1. +20
    -20
      c++/carla-backend/vst.cpp
  2. +7
    -1
      c++/carla-bridge/carla_bridge_plugin.cpp
  3. +35
    -1
      c++/carla-jackbridge/carla_jackbridge.h

+ 20
- 20
c++/carla-backend/vst.cpp View File

@@ -1692,7 +1692,7 @@ public:
static intptr_t VSTCALLBACK hostCallback(AEffect* const effect, const int32_t opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt) static intptr_t VSTCALLBACK hostCallback(AEffect* const effect, const int32_t opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt)
{ {
#ifdef DEBUG #ifdef DEBUG
if (opcode != audioMasterGetTime)
if (opcode != audioMasterGetTime && opcode != audioMasterProcessEvents && opcode != audioMasterGetCurrentProcessLevel && opcode != audioMasterGetOutputLatency)
qDebug("VstPlugin::hostCallback(%p, %02i:%s, %i, " P_INTPTR ", %p, %f)", effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, opt); qDebug("VstPlugin::hostCallback(%p, %02i:%s, %i, " P_INTPTR ", %p, %f)", effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, opt);
#endif #endif


@@ -2153,6 +2153,15 @@ public:
return false; return false;
} }


#ifdef VESTIGE_HEADER
effect->ptr1 = this;
#else
effect->resvd1 = ToVstPtr(this);
#endif

effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f);
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f);

// --------------------------------------------------------------- // ---------------------------------------------------------------
// get info // get info


@@ -2174,16 +2183,18 @@ public:
} }


// --------------------------------------------------------------- // ---------------------------------------------------------------
// initialize VST stuff
// register client


#ifdef VESTIGE_HEADER
effect->ptr1 = this;
#else
effect->resvd1 = ToVstPtr(this);
#endif
x_client = x_engine->addClient(this);


effect->dispatcher(effect, effOpen, 0, 0, nullptr, 0.0f);
effect->dispatcher(effect, effMainsChanged, 0, 1, nullptr, 0.0f);
if (! x_client->isOk())
{
setLastError("Failed to register plugin client");
return false;
}

// ---------------------------------------------------------------
// initialize VST stuff


#if ! VST_FORCE_DEPRECATED #if ! VST_FORCE_DEPRECATED
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, x_engine->getBufferSize(), nullptr, x_engine->getSampleRate()); effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, x_engine->getBufferSize(), nullptr, x_engine->getSampleRate());
@@ -2211,17 +2222,6 @@ public:
if ((effect->flags & effFlagsCanReplacing) > 0 && effect->processReplacing != effect->process) if ((effect->flags & effFlagsCanReplacing) > 0 && effect->processReplacing != effect->process)
m_hints |= PLUGIN_CAN_PROCESS_REPLACING; m_hints |= PLUGIN_CAN_PROCESS_REPLACING;


// ---------------------------------------------------------------
// register client

x_client = x_engine->addClient(this);

if (! x_client->isOk())
{
setLastError("Failed to register plugin client");
return false;
}

// --------------------------------------------------------------- // ---------------------------------------------------------------
// gui stuff // gui stuff




+ 7
- 1
c++/carla-bridge/carla_bridge_plugin.cpp View File

@@ -220,6 +220,8 @@ public:
{ {
qDebug("BridgePluginClient::BridgePluginClient()"); qDebug("BridgePluginClient::BridgePluginClient()");


hasUI = false;

msgTimer = 0; msgTimer = 0;
nextWidth = 0; nextWidth = 0;
nextHeight = 0; nextHeight = 0;
@@ -265,7 +267,8 @@ public:


if (showGui) if (showGui)
{ {
show();
if (hasUI)
show();
} }
else else
{ {
@@ -348,6 +351,8 @@ public:
if (! (plugin && pluginGui)) if (! (plugin && pluginGui))
return; return;


hasUI = true;

pluginGui->setResizable(resizable); pluginGui->setResizable(resizable);
pluginGui->setTitle(plugin->name()); pluginGui->setTitle(plugin->name());


@@ -662,6 +667,7 @@ protected:
// --------------------------------------------------------------------- // ---------------------------------------------------------------------


private: private:
bool hasUI;
int msgTimer; int msgTimer;
int nextWidth, nextHeight; int nextWidth, nextHeight;
QString nextChunkFilePath; QString nextChunkFilePath;


+ 35
- 1
c++/carla-jackbridge/carla_jackbridge.h View File

@@ -23,6 +23,8 @@
#include <jack/types.h> #include <jack/types.h>
#include <jack/transport.h> // needed for JACK1 #include <jack/transport.h> // needed for JACK1


#ifdef BUILD_BRIDGE

typedef unsigned char jackbridge_midi_data_t; typedef unsigned char jackbridge_midi_data_t;


struct jackbridge_midi_event_t { struct jackbridge_midi_event_t {
@@ -38,7 +40,6 @@ CARLA_EXPORT char* jackbridge_get_client_name(jack_client_t* client);
CARLA_EXPORT int jackbridge_port_name_size(); CARLA_EXPORT int jackbridge_port_name_size();
CARLA_EXPORT int jackbridge_activate(jack_client_t* client); CARLA_EXPORT int jackbridge_activate(jack_client_t* client);
CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client); CARLA_EXPORT int jackbridge_deactivate(jack_client_t* client);
CARLA_EXPORT int jackbridge_set_process_thread(jack_client_t* client, JackThreadCallback thread_callback, void *arg);
CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg); CARLA_EXPORT void jackbridge_on_shutdown(jack_client_t* client, JackShutdownCallback shutdown_callback, void* arg);
CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg); CARLA_EXPORT int jackbridge_set_process_callback(jack_client_t* client, JackProcessCallback process_callback, void* arg);
CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg); CARLA_EXPORT int jackbridge_set_freewheel_callback(jack_client_t* client, JackFreewheelCallback freewheel_callback, void* arg);
@@ -58,4 +59,37 @@ CARLA_EXPORT int jackbridge_midi_event_write(void* port_buffer, jack_nframes_t t


CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos); CARLA_EXPORT jack_transport_state_t jackbridge_transport_query(const jack_client_t* client, jack_position_t* pos);


#else

#define jackbridge_midi_data_t jack_midi_data_t
#define jackbridge_midi_event_t jack_midi_event_t

#define jackbridge_client_open jack_client_open
#define jackbridge_client_close jack_client_close
#define jackbridge_client_name_size jack_client_name_size
#define jackbridge_get_client_name jack_get_client_name
#define jackbridge_port_name_size jack_port_name_size
#define jackbridge_activate jack_activate
#define jackbridge_deactivate jack_deactivate
#define jackbridge_on_shutdown jack_on_shutdown
#define jackbridge_set_process_callback jack_set_process_callback
#define jackbridge_set_freewheel_callback jack_set_freewheel_callback
#define jackbridge_set_buffer_size_callback jack_set_buffer_size_callback
#define jackbridge_set_sample_rate_callback jack_set_sample_rate_callback
#define jackbridge_get_sample_rate jack_get_sample_rate
#define jackbridge_get_buffer_size jack_get_buffer_size
#define jackbridge_port_register jack_port_register
#define jackbridge_port_unregister jack_port_unregister
#define jackbridge_port_get_buffer jack_port_get_buffer

#define jackbridge_midi_get_event_count jack_midi_get_event_count
#define jackbridge_midi_event_get jack_midi_event_get
#define jackbridge_midi_clear_buffer jack_midi_clear_buffer
#define jackbridge_midi_event_reserve jack_midi_event_reserve
#define jackbridge_midi_event_write jack_midi_event_write

#define jackbridge_transport_query jack_transport_query

#endif

#endif // CARLA_JACKBRIDGE_H #endif // CARLA_JACKBRIDGE_H

Loading…
Cancel
Save