@@ -280,8 +280,8 @@ struct CARLA_API EngineTimeInfoBBT { | |||
int32_t bar; //!< current bar | |||
int32_t beat; //!< current beat-within-bar | |||
int32_t tick; //!< current tick-within-beat | |||
double barStartTick; | |||
double tick; //!< current tick-within-beat | |||
double barStartTick; | |||
float beatsPerBar; //!< time signature "numerator" | |||
float beatType; //!< time signature "denominator" | |||
@@ -1797,7 +1797,7 @@ const char* carla_get_host_osc_url_tcp() | |||
{ | |||
carla_debug("carla_get_host_osc_url_tcp()"); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
if (gStandalone.engine == nullptr) | |||
{ | |||
carla_stderr2("carla_get_host_osc_url_tcp() failed, engine is not running"); | |||
@@ -1815,7 +1815,7 @@ const char* carla_get_host_osc_url_udp() | |||
{ | |||
carla_debug("carla_get_host_osc_url_udp()"); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
if (gStandalone.engine == nullptr) | |||
{ | |||
carla_stderr2("carla_get_host_osc_url_udp() failed, engine is not running"); | |||
@@ -282,7 +282,7 @@ void CarlaEngine::idle() noexcept | |||
} | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
pData->osc.idle(); | |||
#endif | |||
} | |||
@@ -490,7 +490,9 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, | |||
} | |||
else | |||
{ | |||
#ifndef BUILD_BRIDGE | |||
bool use16Outs; | |||
#endif | |||
setLastError("Invalid or unsupported plugin type"); | |||
switch (ptype) | |||
@@ -498,10 +500,6 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, | |||
case PLUGIN_NONE: | |||
break; | |||
case PLUGIN_INTERNAL: | |||
plugin = CarlaPlugin::newNative(initializer); | |||
break; | |||
case PLUGIN_LADSPA: | |||
plugin = CarlaPlugin::newLADSPA(initializer, (const LADSPA_RDF_Descriptor*)extra); | |||
break; | |||
@@ -518,6 +516,11 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, | |||
plugin = CarlaPlugin::newVST2(initializer); | |||
break; | |||
#ifndef BUILD_BRIDGE | |||
case PLUGIN_INTERNAL: | |||
plugin = CarlaPlugin::newNative(initializer); | |||
break; | |||
case PLUGIN_SF2: | |||
use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); | |||
plugin = CarlaPlugin::newFluidSynth(initializer, use16Outs); | |||
@@ -530,6 +533,14 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, | |||
case PLUGIN_JACK: | |||
plugin = CarlaPlugin::newJackApp(initializer); | |||
break; | |||
#else | |||
case PLUGIN_INTERNAL: | |||
case PLUGIN_SF2: | |||
case PLUGIN_SFZ: | |||
case PLUGIN_JACK: | |||
setLastError("Plugin bridges cannot handle this binary"); | |||
break; | |||
#endif | |||
} | |||
} | |||
@@ -1620,7 +1631,7 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch | |||
} | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// ----------------------------------------------------------------------- | |||
// OSC Stuff | |||
@@ -1405,12 +1405,6 @@ CarlaEngine* CarlaEngine::newBridge(const char* const audioPoolBaseName, const c | |||
// ----------------------------------------------------------------------- | |||
#ifdef BUILD_BRIDGE_ALTERNATIVE_ARCH | |||
CarlaPlugin* CarlaPlugin::newNative(const CarlaPlugin::Initializer&) { return nullptr; } | |||
CarlaPlugin* CarlaPlugin::newFileSF2(const CarlaPlugin::Initializer&, const bool) { return nullptr; } | |||
CarlaPlugin* CarlaPlugin::newFileSFZ(const CarlaPlugin::Initializer&) { return nullptr; } | |||
#endif | |||
CARLA_BACKEND_END_NAMESPACE | |||
// ----------------------------------------------------------------------- | |||
@@ -297,7 +297,7 @@ EngineTimeInfoBBT::EngineTimeInfoBBT() noexcept | |||
: valid(false), | |||
bar(0), | |||
beat(0), | |||
tick(0), | |||
tick(0.0), | |||
barStartTick(0.0), | |||
beatsPerBar(0.0f), | |||
beatType(0.0f), | |||
@@ -245,7 +245,7 @@ void EngineInternalTime::fillEngineTimeInfo(const uint32_t newFrames) noexcept | |||
timeInfo.bbt.beatsPerBar = static_cast<float>(beatsPerBar); | |||
timeInfo.bbt.beatsPerMinute = beatsPerMinute; | |||
timeInfo.bbt.tick = static_cast<int32_t>(ticktmp); | |||
timeInfo.bbt.tick = ticktmp; | |||
tick = ticktmp; | |||
if (transportMode == ENGINE_TRANSPORT_MODE_INTERNAL && timeInfo.playing) | |||
@@ -322,7 +322,7 @@ void EngineInternalTime::fillJackTimeInfo(jack_position_t* const pos, const uint | |||
pos->beats_per_bar = static_cast<float>(beatsPerBar); | |||
pos->beats_per_minute = beatsPerMinute; | |||
pos->tick = static_cast<int32_t>(ticktmp); | |||
pos->tick = ticktmp; | |||
tick = ticktmp; | |||
} | |||
@@ -418,7 +418,7 @@ void EngineNextAction::clearAndReset() noexcept | |||
CarlaEngine::ProtectedData::ProtectedData(CarlaEngine* const engine) noexcept | |||
: thread(engine), | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
osc(engine), | |||
oscData(nullptr), | |||
#endif | |||
@@ -473,7 +473,7 @@ CarlaEngine::ProtectedData::~ProtectedData() noexcept | |||
bool CarlaEngine::ProtectedData::init(const char* const clientName) | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(name.isEmpty(), "Invalid engine internal data (err #1)"); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(oscData == nullptr, "Invalid engine internal data (err #2)"); | |||
#endif | |||
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(events.in == nullptr, "Invalid engine internal data (err #4)"); | |||
@@ -523,7 +523,7 @@ bool CarlaEngine::ProtectedData::init(const char* const clientName) | |||
timeInfo.clear(); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
osc.init(clientName); | |||
# ifndef BUILD_BRIDGE | |||
oscData = osc.getControlData(); | |||
@@ -554,7 +554,7 @@ void CarlaEngine::ProtectedData::close() | |||
thread.stopThread(500); | |||
nextAction.clearAndReset(); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
osc.close(); | |||
oscData = nullptr; | |||
#endif | |||
@@ -18,11 +18,13 @@ | |||
#ifndef CARLA_ENGINE_INTERNAL_HPP_INCLUDED | |||
#define CARLA_ENGINE_INTERNAL_HPP_INCLUDED | |||
#include "CarlaEngineOsc.hpp" | |||
#include "CarlaEngineThread.hpp" | |||
#include "CarlaEngineUtils.hpp" | |||
#include "hylia/hylia.h" | |||
#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH | |||
# include "CarlaEngineOsc.hpp" | |||
# include "hylia/hylia.h" | |||
#endif | |||
// FIXME only use CARLA_PREVENT_HEAP_ALLOCATION for structs | |||
// maybe separate macro | |||
@@ -207,7 +209,7 @@ struct EnginePluginData { | |||
struct CarlaEngine::ProtectedData { | |||
CarlaEngineThread thread; | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
CarlaEngineOsc osc; | |||
# ifdef BUILD_BRIDGE | |||
CarlaOscData* oscData; | |||
@@ -1751,7 +1751,8 @@ protected: | |||
if (timeInfo.bbt.valid) | |||
{ | |||
std::sprintf(tmpBuf, P_UINT64 ":%i:%i:%i\n", timeInfo.frame, timeInfo.bbt.bar, timeInfo.bbt.beat, timeInfo.bbt.tick); | |||
std::sprintf(tmpBuf, P_UINT64 ":%i:%i:%i\n", | |||
timeInfo.frame, timeInfo.bbt.bar, timeInfo.bbt.beat, static_cast<int>(timeInfo.bbt.tick + 0.5)); | |||
if (! fUiServer.writeMessage(tmpBuf)) | |||
return; | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* Carla Plugin Host | |||
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -46,7 +46,7 @@ void CarlaEngineThread::run() noexcept | |||
#endif | |||
carla_debug("CarlaEngineThread::run()"); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
const bool isPlugin(kEngine->getType() == kEngineTypePlugin); | |||
#endif | |||
float value; | |||
@@ -63,7 +63,7 @@ void CarlaEngineThread::run() noexcept | |||
const bool oscRegisted = false; | |||
#endif | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
if (isPlugin) | |||
kEngine->idleOsc(); | |||
#endif | |||
@@ -21,7 +21,7 @@ | |||
#include "CarlaDssiUtils.hpp" | |||
#include "CarlaMathUtils.hpp" | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
# include "CarlaOscUtils.hpp" | |||
# include "CarlaPipeUtils.hpp" | |||
# include "CarlaThread.hpp" | |||
@@ -63,7 +63,7 @@ CARLA_BACKEND_START_NAMESPACE | |||
static const CustomData kCustomDataFallback = { nullptr, nullptr, nullptr }; | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// ------------------------------------------------------------------- | |||
class CarlaThreadDSSIUI : public CarlaThread | |||
@@ -283,7 +283,7 @@ public: | |||
fForcedStereoOut(false), | |||
fNeedsFixedBuffers(false), | |||
fUsesCustomData(false) | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
, fOscData(), | |||
fThreadUI(engine, this, fOscData), | |||
fUiFilename(nullptr) | |||
@@ -298,7 +298,7 @@ public: | |||
{ | |||
carla_debug("CarlaPluginDSSI::~CarlaPluginDSSI()"); | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// close UI | |||
if (fUiFilename != nullptr) | |||
{ | |||
@@ -594,7 +594,7 @@ public: | |||
} | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
if (sendGui && fOscData.target != nullptr) | |||
osc_send_configure(fOscData, key, value); | |||
#endif | |||
@@ -632,7 +632,7 @@ public: | |||
} | |||
} | |||
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE) | |||
const bool sendOsc(pData->engine->isOscControlRegistered()); | |||
#else | |||
const bool sendOsc(false); | |||
@@ -684,7 +684,7 @@ public: | |||
} | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// ------------------------------------------------------------------- | |||
// Set ui stuff | |||
@@ -1083,7 +1083,7 @@ public: | |||
if (LADSPA_IS_HARD_RT_CAPABLE(fDescriptor->Properties)) | |||
pData->hints |= PLUGIN_IS_RTSAFE; | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
if (fUiFilename != nullptr) | |||
pData->hints |= PLUGIN_HAS_CUSTOM_UI; | |||
#endif | |||
@@ -1219,7 +1219,7 @@ public: | |||
} | |||
} | |||
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE) | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE) | |||
// Update OSC Names | |||
if (pData->engine->isOscControlRegistered() && pData->id < pData->engine->getCurrentPluginCount()) | |||
{ | |||
@@ -2185,7 +2185,7 @@ public: | |||
carla_debug("CarlaPluginDSSI::clearBuffers() - end"); | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// ------------------------------------------------------------------- | |||
// OSC stuff | |||
@@ -2444,7 +2444,7 @@ public: | |||
osc_send_midi(fOscData, midiData); | |||
#endif | |||
} | |||
#endif // HAVE_LIBLO | |||
#endif // HAVE_LIBLO && !BUILD_BRIDGE_ALTERNATIVE_ARCH | |||
// ------------------------------------------------------------------- | |||
@@ -2453,7 +2453,7 @@ public: | |||
return fDssiDescriptor; | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
uintptr_t getUiBridgeProcessId() const noexcept override | |||
{ | |||
return fThreadUI.getProcessId(); | |||
@@ -2653,7 +2653,7 @@ public: | |||
} | |||
} | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
// --------------------------------------------------------------- | |||
// check for gui | |||
@@ -2719,7 +2719,7 @@ private: | |||
bool fNeedsFixedBuffers; | |||
bool fUsesCustomData; | |||
#ifdef HAVE_LIBLO | |||
#if defined(HAVE_LIBLO) && !defined(BUILD_BRIDGE_ALTERNATIVE_ARCH) | |||
CarlaOscData fOscData; | |||
CarlaThreadDSSIUI fThreadUI; | |||
const char* fUiFilename; | |||
@@ -30,7 +30,6 @@ | |||
#include "CarlaPluginUI.hpp" | |||
#include "Lv2AtomRingBuffer.hpp" | |||
#include "../engine/CarlaEngineOsc.hpp" | |||
#include "../modules/lilv/config/lilv_config.h" | |||
extern "C" { | |||
@@ -2804,7 +2803,7 @@ public: | |||
int32_t rindex; | |||
const double barBeat = static_cast<double>(timeInfo.bbt.beat - 1) | |||
+ (static_cast<double>(timeInfo.bbt.tick) / timeInfo.bbt.ticksPerBeat); | |||
+ (timeInfo.bbt.tick / timeInfo.bbt.ticksPerBeat); | |||
// update input ports | |||
for (uint32_t k=0; k < pData->param.count; ++k) | |||
@@ -1140,7 +1140,7 @@ public: | |||
const double ppqBar = double(timeInfo.bbt.bar - 1) * timeInfo.bbt.beatsPerBar; | |||
const double ppqBeat = double(timeInfo.bbt.beat - 1); | |||
const double ppqTick = double(timeInfo.bbt.tick) / timeInfo.bbt.ticksPerBeat; | |||
const double ppqTick = timeInfo.bbt.tick / timeInfo.bbt.ticksPerBeat; | |||
// PPQ Pos | |||
fTimeInfo.ppqPos = ppqBar + ppqBeat + ppqTick; | |||
@@ -24,7 +24,6 @@ endif | |||
BUILD_CXX_FLAGS += -DBUILD_BRIDGE -I. -I$(CWD) -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/modules -I$(CWD)/utils | |||
BUILD_CXX_FLAGS += -I$(CWD)/backend/engine -I$(CWD)/backend/plugin | |||
BUILD_CXX_FLAGS += $(LIBLO_FLAGS) | |||
32BIT_FLAGS += -DBUILD_BRIDGE_ALTERNATIVE_ARCH | |||
64BIT_FLAGS += -DBUILD_BRIDGE_ALTERNATIVE_ARCH | |||
@@ -64,13 +63,12 @@ LIBS_win32 += $(MODULEDIR)/water.win32.a | |||
LIBS_win64 += $(MODULEDIR)/water.win64.a | |||
LINK_FLAGS += $(WATER_LIBS) | |||
LINK_FLAGS += $(LIBLO_LIBS) | |||
LINK_FLAGS += $(X11_LIBS) | |||
# ---------------------------------------------------------------------------------------------------------------------- | |||
NATIVE_BUILD_FLAGS = $(NATIVE_PLUGINS_FLAGS) | |||
NATIVE_LINK_FLAGS = | |||
NATIVE_BUILD_FLAGS = $(NATIVE_PLUGINS_FLAGS) $(LIBLO_FLAGS) | |||
NATIVE_LINK_FLAGS = $(LIBLO_LIBS) | |||
NATIVE_BUILD_FLAGS += $(FLUIDSYNTH_FLAGS) | |||
NATIVE_LINK_FLAGS += $(FLUIDSYNTH_LIBS) | |||
@@ -126,8 +124,6 @@ OBJS_arch = \ | |||
$(OBJDIR)/CarlaEngineClient.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineData.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineInternal.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineOsc.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineOscSend.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEnginePorts.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineThread.cpp.arch.o \ | |||
$(OBJDIR)/CarlaEngineJack.cpp.arch.o \ | |||
@@ -135,7 +131,6 @@ OBJS_arch = \ | |||
$(OBJDIR)/CarlaPlugin.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginBridge.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginInternal.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginJack.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginLADSPA.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginDSSI.cpp.arch.o \ | |||
$(OBJDIR)/CarlaPluginLV2.cpp.arch.o \ | |||
@@ -157,8 +157,8 @@ typedef struct { | |||
int32_t bar; /** current bar */ | |||
int32_t beat; /** current beat-within-bar */ | |||
int32_t tick; /** current tick-within-beat */ | |||
double barStartTick; | |||
double tick; /** current tick-within-beat */ | |||
double barStartTick; | |||
float beatsPerBar; /** time signature "numerator" */ | |||
float beatType; /** time signature "denominator" */ | |||
@@ -602,7 +602,7 @@ bool CarlaJackAppClient::handleRtData() | |||
fServer.position.bar = bridgeTimeInfo.bar; | |||
fServer.position.beat = bridgeTimeInfo.beat; | |||
fServer.position.tick = bridgeTimeInfo.tick; | |||
fServer.position.tick = static_cast<int32_t>(bridgeTimeInfo.tick + 0.5); | |||
fServer.position.beats_per_bar = bridgeTimeInfo.beatsPerBar; | |||
fServer.position.beat_type = bridgeTimeInfo.beatType; | |||
@@ -20,7 +20,7 @@ | |||
#include "CarlaRingBuffer.hpp" | |||
#define CARLA_PLUGIN_BRIDGE_API_VERSION 3 | |||
#define CARLA_PLUGIN_BRIDGE_API_VERSION 4 | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
@@ -141,9 +141,9 @@ struct BridgeTimeInfo { | |||
uint64_t usecs; | |||
uint32_t validFlags; | |||
// bbt | |||
int32_t bar, beat, tick; | |||
int32_t bar, beat; | |||
float beatsPerBar, beatType; | |||
double barStartTick, ticksPerBeat, beatsPerMinute; | |||
double tick, barStartTick, ticksPerBeat, beatsPerMinute; | |||
}; | |||
// ------------------------------------------------------------------------------------------------------------------- | |||