Browse Source

carla-plugin: Send bufsize and rate, don't use OSC, other fixes

tags/1.9.5
falkTX 10 years ago
parent
commit
ae49286c00
5 changed files with 56 additions and 20 deletions
  1. +2
    -0
      source/backend/engine/CarlaEngineGraph.cpp
  2. +35
    -4
      source/backend/engine/CarlaEngineNative.cpp
  3. +3
    -6
      source/carla_backend.py
  4. +4
    -0
      source/carla_host.py
  5. +12
    -10
      source/modules/native-plugins/resources/carla-plugin

+ 2
- 0
source/backend/engine/CarlaEngineGraph.cpp View File

@@ -173,6 +173,8 @@ void RackGraph::setBufferSize(const uint32_t bufferSize) noexcept
if (audio.outBuf[0] != nullptr) { delete[] audio.outBuf[0]; audio.outBuf[0] = nullptr; }
if (audio.outBuf[1] != nullptr) { delete[] audio.outBuf[1]; audio.outBuf[1] = nullptr; }

CARLA_SAFE_ASSERT_RETURN(bufferSize > 0,);

try {
audio.inBufTmp[0] = new float[bufferSize];
audio.inBufTmp[1] = new float[bufferSize];


+ 35
- 4
source/backend/engine/CarlaEngineNative.cpp View File

@@ -586,6 +586,9 @@ public:

carla_zeroChar(fTmpBuf, STR_MAX+1);

pData->bufferSize = pHost->get_buffer_size(pHost->handle);
pData->sampleRate = pHost->get_sample_rate(pHost->handle);

// set-up engine
if (kIsPatchbay)
{
@@ -715,6 +718,14 @@ protected:
if (pData->bufferSize == newBufferSize)
return;

{
const CarlaMutexLocker cml(fUiServer.getWriteLock());

fUiServer.writeAndFixMsg("buffer-size");
std::sprintf(fTmpBuf, "%i\n", newBufferSize);
fUiServer.writeMsg(fTmpBuf);
}

pData->bufferSize = newBufferSize;
CarlaEngine::bufferSizeChanged(newBufferSize);
}
@@ -724,6 +735,15 @@ protected:
if (carla_compareFloats(pData->sampleRate, newSampleRate))
return;

{
const CarlaMutexLocker cml(fUiServer.getWriteLock());
const ScopedLocale csl;

fUiServer.writeAndFixMsg("sample-rate");
std::sprintf(fTmpBuf, "%f\n", newSampleRate);
fUiServer.writeMsg(fTmpBuf);
}

pData->sampleRate = newSampleRate;
CarlaEngine::sampleRateChanged(newSampleRate);
}
@@ -953,18 +973,28 @@ protected:

const CarlaMutexLocker cml(fUiServer.getWriteLock());

fUiServer.writeAndFixMsg("carla-complete-license");
fUiServer.writeAndFixMsg("complete-license");
fUiServer.writeAndFixMsg(carla_get_complete_license_text());

fUiServer.writeAndFixMsg("carla-juce-version");
fUiServer.writeAndFixMsg("juce-version");
fUiServer.writeAndFixMsg(carla_get_juce_version());

fUiServer.writeAndFixMsg("carla-file-exts");
fUiServer.writeAndFixMsg("file-exts");
fUiServer.writeAndFixMsg(carla_get_supported_file_extensions());

fUiServer.writeAndFixMsg("carla-max-plugin-number");
fUiServer.writeAndFixMsg("max-plugin-number");
std::sprintf(fTmpBuf, "%i\n", pData->maxPluginNumber);
fUiServer.writeMsg(fTmpBuf);

fUiServer.writeAndFixMsg("buffer-size");
std::sprintf(fTmpBuf, "%i\n", pData->bufferSize);
fUiServer.writeMsg(fTmpBuf);

const ScopedLocale csl;

fUiServer.writeAndFixMsg("sample-rate");
std::sprintf(fTmpBuf, "%f\n", pData->sampleRate);
fUiServer.writeMsg(fTmpBuf);
}

void uiServerOptions()
@@ -1389,6 +1419,7 @@ protected:

uiServerInfo();
uiServerOptions();
uiServerCallback(ENGINE_CALLBACK_ENGINE_STARTED, 0, pData->options.processMode, pData->options.transportMode, 0.0f, "Plugin");

fUiServer.show();



+ 3
- 6
source/carla_backend.py View File

@@ -2896,8 +2896,6 @@ class CarlaHostPlugin(CarlaHostMeta):
self.fSupportedFileExts = ""
self.fMaxPluginNumber = 0
self.fLastError = ""
self.fOscUrlTCP = ""
self.fOscUrlUDP = ""

# plugin info
self.fPluginsInfo = []
@@ -2913,7 +2911,6 @@ class CarlaHostPlugin(CarlaHostMeta):
}

# some other vars
self.fHostName = ""
self.fBufferSize = 0
self.fSampleRate = 0.0

@@ -2950,7 +2947,7 @@ class CarlaHostPlugin(CarlaHostMeta):
return "Plugin"

def get_engine_driver_device_names(self, index):
return [self.fHostName]
return []

def get_engine_driver_device_info(self, index, name):
return PyEngineDriverDeviceInfo
@@ -3194,10 +3191,10 @@ class CarlaHostPlugin(CarlaHostMeta):
return self.fLastError

def get_host_osc_url_tcp(self):
return self.fOscUrlTCP
return ""

def get_host_osc_url_udp(self):
return self.fOscUrlUDP
return ""

# --------------------------------------------------------------------------------------------------------



+ 4
- 0
source/carla_host.py View File

@@ -401,6 +401,10 @@ class HostWindow(QMainWindow):
self.ui.tabWidget.setCurrentIndex(0)
self.fixCanvasPreviewSize()

# Plugin needs to have timers always running so it receives messages
if self.host.isPlugin:
self.startTimers()

QTimer.singleShot(0, self.slot_engineStart)

# --------------------------------------------------------------------------------------------------------


+ 12
- 10
source/modules/native-plugins/resources/carla-plugin View File

@@ -37,7 +37,6 @@ class PluginHost(CarlaHostPlugin):

self.fExternalUI = None
self.fIsRunning = True
self.fSampleRate = float(sys.argv[1]) if len(sys.argv) > 1 else 44100.0

# -------------------------------------------------------------------

@@ -308,22 +307,30 @@ class CarlaMiniW(ExternalUI, HostWindow):
name = self.readlineblock().replace("\r", "\n")
self.host._set_midiProgramData(pluginId, midiProgId, {'bank': bank, 'program': program, 'name': name})

elif msg == "carla-complete-license":
elif msg == "complete-license":
license = self.readlineblock().replace("\r", "\n")
self.host.fCompleteLicenseText = license

elif msg == "carla-juce-version":
elif msg == "juce-version":
version = self.readlineblock().replace("\r", "\n")
self.host.fJuceVersion = version

elif msg == "carla-file-exts":
elif msg == "file-exts":
exts = self.readlineblock().replace("\r", "\n")
self.host.fSupportedFileExts = exts

elif msg == "carla-max-plugin-number":
elif msg == "max-plugin-number":
maxnum = int(self.readlineblock())
self.host.fMaxPluginNumber = maxnum

elif msg == "buffer-size":
bufsize = int(self.readlineblock())
self.host.fBufferSize = bufsize

elif msg == "sample-rate":
srate = float(self.readlineblock())
self.host.fSampleRate = srate

elif msg == "error":
error = self.readlineblock().replace("\r", "\n")
engineCallback(self.host, ENGINE_CALLBACK_ERROR, 0, 0, 0, 0.0, error)
@@ -449,11 +456,6 @@ if __name__ == '__main__':
else:
gui = CarlaMiniW(host)

# -------------------------------------------------------------
# simulate an engire started callback FIXME

engineCallback(host, ENGINE_CALLBACK_ENGINE_STARTED, 0, host.processMode, ENGINE_TRANSPORT_MODE_PLUGIN, 0.0, "Plugin")

# -------------------------------------------------------------
# App-Loop



Loading…
Cancel
Save