@@ -36,11 +36,12 @@ carla-discovery-native | |||||
carla-discovery-posix32 | carla-discovery-posix32 | ||||
carla-discovery-posix64 | carla-discovery-posix64 | ||||
c++/jackmeter/cadence-jackmeter | |||||
c++/xycontroller/cadence-xycontroller | |||||
c++/carla-backend/doxygen/ | c++/carla-backend/doxygen/ | ||||
c++/carla-bridge/doxygen/ | c++/carla-bridge/doxygen/ | ||||
c++/carla-includes/vst/ | c++/carla-includes/vst/ | ||||
c++/jackmeter/cadence_jackmeter | |||||
c++/xycontroller/cadence_xycontroller | |||||
*-build-*Debug/ | *-build-*Debug/ | ||||
*-build-*Release/ | *-build-*Release/ | ||||
@@ -57,5 +58,8 @@ c++/carla-backend/carla-dynamic.lv2/ | |||||
c++/carla-backend/carla_backend_lv2.cpp | c++/carla-backend/carla_backend_lv2.cpp | ||||
c++/carla-backend/carla_backend_vst.cpp | c++/carla-backend/carla_backend_vst.cpp | ||||
c++/carla-bridge/qt-plugin/ | c++/carla-bridge/qt-plugin/ | ||||
c++/carla-bridge/qtcreator/Makefile | |||||
c++/carla-jackbridge/jack | |||||
c++/flmixer/ | c++/flmixer/ | ||||
c++/widgets/ledbutton.* | c++/widgets/ledbutton.* | ||||
src/ui/carla_driver.ui |
@@ -230,10 +230,11 @@ install: | |||||
# Install script files and binaries | # Install script files and binaries | ||||
install -m 755 \ | install -m 755 \ | ||||
data/cadence \ | data/cadence \ | ||||
data/cadence_jacksettings \ | |||||
data/cadence_logs \ | |||||
data/cadence_pulse2jack \ | |||||
data/cadence_render \ | |||||
data/cadence-aloop-daemon \ | |||||
data/cadence-jacksettings \ | |||||
data/cadence-logs \ | |||||
data/cadence-pulse2jack \ | |||||
data/cadence-render \ | |||||
data/catarina \ | data/catarina \ | ||||
data/catia \ | data/catia \ | ||||
data/claudia \ | data/claudia \ | ||||
@@ -242,9 +243,8 @@ install: | |||||
data/carla-control \ | data/carla-control \ | ||||
c++/carla-bridge/carla-bridge-* \ | c++/carla-bridge/carla-bridge-* \ | ||||
c++/carla-discovery/carla-discovery-* \ | c++/carla-discovery/carla-discovery-* \ | ||||
c++/jackmeter/cadence_jackmeter \ | |||||
c++/xycontroller/cadence_xycontroller \ | |||||
src/cadence-aloop-daemon \ | |||||
c++/jackmeter/cadence-jackmeter \ | |||||
c++/xycontroller/cadence-xycontroller \ | |||||
$(DESTDIR)$(PREFIX)/bin/ | $(DESTDIR)$(PREFIX)/bin/ | ||||
# Install desktop files | # Install desktop files | ||||
@@ -307,10 +307,11 @@ install: | |||||
# Adjust PREFIX value in script files | # Adjust PREFIX value in script files | ||||
sed -i "s/X-PREFIX-X/$(SED_PREFIX)/" \ | sed -i "s/X-PREFIX-X/$(SED_PREFIX)/" \ | ||||
$(DESTDIR)$(PREFIX)/bin/cadence \ | $(DESTDIR)$(PREFIX)/bin/cadence \ | ||||
$(DESTDIR)$(PREFIX)/bin/cadence_jacksettings \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence_logs \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence_pulse2jack \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence_render \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence-aloop-daemon \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence-jacksettings \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence-logs \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence-pulse2jack \ | |||||
$(DESTDIR)$(PREFIX)/bin/cadence-render \ | |||||
$(DESTDIR)$(PREFIX)/bin/catarina \ | $(DESTDIR)$(PREFIX)/bin/catarina \ | ||||
$(DESTDIR)$(PREFIX)/bin/catia \ | $(DESTDIR)$(PREFIX)/bin/catia \ | ||||
$(DESTDIR)$(PREFIX)/bin/claudia \ | $(DESTDIR)$(PREFIX)/bin/claudia \ | ||||
@@ -474,8 +474,8 @@ enum ProcessModeType { | |||||
typedef void (*CallbackFunc)(void* ptr, CallbackType action, unsigned short pluginId, int value1, int value2, double value3); | typedef void (*CallbackFunc)(void* ptr, CallbackType action, unsigned short pluginId, int value1, int value2, double value3); | ||||
struct midi_program_t { | struct midi_program_t { | ||||
quint32 bank; | |||||
quint32 program; | |||||
uint32_t bank; | |||||
uint32_t program; | |||||
const char* name; | const char* name; | ||||
midi_program_t() | midi_program_t() | ||||
@@ -486,11 +486,11 @@ struct midi_program_t { | |||||
struct ParameterData { | struct ParameterData { | ||||
ParameterType type; | ParameterType type; | ||||
qint32 index; | |||||
qint32 rindex; | |||||
qint32 hints; | |||||
quint8 midiChannel; | |||||
qint16 midiCC; | |||||
int32_t index; | |||||
int32_t rindex; | |||||
int32_t hints; | |||||
uint8_t midiChannel; | |||||
int16_t midiCC; | |||||
ParameterData() | ParameterData() | ||||
: type(PARAMETER_UNKNOWN), | : type(PARAMETER_UNKNOWN), | ||||
@@ -25,12 +25,12 @@ OBJS = jackmeter.o \ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
all: cadence_jackmeter | |||||
all: cadence-jackmeter | |||||
cadence_jackmeter: $(OBJS) | |||||
cadence-jackmeter: $(OBJS) | |||||
$(CXX) $^ $(LINK_FLAGS) -o $@ && strip $@ | $(CXX) $^ $(LINK_FLAGS) -o $@ && strip $@ | ||||
cadence_jackmeter.exe: $(OBJS) | |||||
cadence-jackmeter.exe: $(OBJS) | |||||
$(CXX) $^ -static -mwindows $(LINK_FLAGS) -o $@ && strip $@ | $(CXX) $^ -static -mwindows $(LINK_FLAGS) -o $@ && strip $@ | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -38,12 +38,12 @@ OBJS = xycontroller.o \ | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
all: cadence_xycontroller | |||||
all: cadence-xycontroller | |||||
cadence_xycontroller: $(FILES) $(OBJS) | |||||
cadence-xycontroller: $(FILES) $(OBJS) | |||||
$(CXX) $(OBJS) $(LINK_FLAGS) -o $@ && strip $@ | $(CXX) $(OBJS) $(LINK_FLAGS) -o $@ && strip $@ | ||||
cadence_xycontroller.exe: $(FILES) $(OBJS) icon.o | |||||
cadence-xycontroller.exe: $(FILES) $(OBJS) icon.o | |||||
$(CXX) $(OBJS) icon.o -static -mwindows $(LINK_FLAGS) -o $@ && strip $@ | $(CXX) $(OBJS) icon.o -static -mwindows $(LINK_FLAGS) -o $@ && strip $@ | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -0,0 +1,10 @@ | |||||
#!/bin/bash | |||||
if [ -f /usr/bin/python3 ]; then | |||||
PYTHON=/usr/bin/python3 | |||||
else | |||||
PYTHON=python | |||||
fi | |||||
INSTALL_PREFIX="X-PREFIX-X" | |||||
exec $PYTHON $INSTALL_PREFIX/share/cadence/src/cadence_aloop_daemon.py "$@" |
@@ -1,181 +0,0 @@ | |||||
#!/usr/bin/env python | |||||
# -*- coding: utf-8 -*- | |||||
# Imports (Global) | |||||
from ctypes import * | |||||
from os import system | |||||
from sys import version_info | |||||
from signal import signal, SIGINT, SIGTERM | |||||
from time import sleep | |||||
# -------------------------------------------------- | |||||
# Test for python 3.x | |||||
if (version_info >= (3,0)): | |||||
PYTHON3 = True | |||||
else: | |||||
PYTHON3 = False | |||||
# -------------------------------------------------- | |||||
# Global loop check | |||||
global doLoop, doRunNow | |||||
doLoop = True | |||||
doRunNow = True | |||||
# -------------------------------------------------- | |||||
# Global JACK variables | |||||
global sample_rate, buffer_size | |||||
sample_rate = 44100 | |||||
buffer_size = 1024 | |||||
# -------------------------------------------------- | |||||
# JACK ctypes implementation | |||||
jacklib = cdll.LoadLibrary("libjack.so.0") | |||||
class jack_client_t(Structure): | |||||
_fields_ = [] | |||||
jack_nframes_t = c_uint32 | |||||
JackBufferSizeCallback = CFUNCTYPE(c_int, jack_nframes_t, c_void_p) | |||||
JackShutdownCallback = CFUNCTYPE(None, c_void_p) | |||||
jacklib.jack_client_open.argtypes = [c_char_p, c_int, POINTER(c_int)] | |||||
jacklib.jack_client_open.restype = POINTER(jack_client_t) | |||||
jacklib.jack_client_close.argtypes = [POINTER(jack_client_t)] | |||||
jacklib.jack_client_close.restype = c_int | |||||
jacklib.jack_activate.argtypes = [POINTER(jack_client_t)] | |||||
jacklib.jack_activate.restype = c_int | |||||
jacklib.jack_deactivate.argtypes = [POINTER(jack_client_t)] | |||||
jacklib.jack_deactivate.restype = c_int | |||||
jacklib.jack_connect.argtypes = [POINTER(jack_client_t), c_char_p, c_char_p] | |||||
jacklib.jack_connect.restype = c_int | |||||
jacklib.jack_get_sample_rate.argtypes = [POINTER(jack_client_t)] | |||||
jacklib.jack_get_sample_rate.restype = jack_nframes_t | |||||
jacklib.jack_get_buffer_size.argtypes = [POINTER(jack_client_t)] | |||||
jacklib.jack_get_buffer_size.restype = jack_nframes_t | |||||
jacklib.jack_on_shutdown.argtypes = [POINTER(jack_client_t), JackShutdownCallback, c_void_p] | |||||
jacklib.jack_on_shutdown.restype = None | |||||
jacklib.jack_set_buffer_size_callback.argtypes = [POINTER(jack_client_t), JackBufferSizeCallback, c_void_p] | |||||
jacklib.jack_set_buffer_size_callback.restype = c_int | |||||
def jack_client_open(client_name, options, status): | |||||
if (PYTHON3): client_name = client_name.encode("ascii") | |||||
return jacklib.jack_client_open(client_name, options, status) | |||||
def jack_client_close(client): | |||||
return jacklib.jack_client_close(client) | |||||
def jack_activate(client): | |||||
return jacklib.jack_activate(client) | |||||
def jack_deactivate(client): | |||||
return jacklib.jack_deactivate(client) | |||||
def jack_connect(client, source_port, destination_port): | |||||
if (PYTHON3): source_port = source_port.encode("ascii") | |||||
if (PYTHON3): destination_port = destination_port.encode("ascii") | |||||
return jacklib.jack_connect(client, source_port, destination_port) | |||||
def jack_get_sample_rate(client): | |||||
return jacklib.jack_get_sample_rate(client) | |||||
def jack_get_buffer_size(client): | |||||
return jacklib.jack_get_buffer_size(client) | |||||
def jack_on_shutdown(client, shutdown_callback, arg): | |||||
global _shutdown_callback | |||||
_shutdown_callback = JackShutdownCallback(shutdown_callback) | |||||
jacklib.jack_on_shutdown(client, _shutdown_callback, arg) | |||||
def jack_set_buffer_size_callback(client, bufsize_callback, arg): | |||||
global _bufsize_callback | |||||
_bufsize_callback = JackBufferSizeCallback(bufsize_callback) | |||||
return jacklib.jack_set_buffer_size_callback(client, _bufsize_callback, arg) | |||||
# -------------------------------------------------- | |||||
# quit on SIGINT or SIGTERM | |||||
def signal_handler(sig, frame=0): | |||||
global doLoop | |||||
doLoop = False | |||||
# -------------------------------------------------- | |||||
# listen to jack buffer size changes | |||||
def buffer_size_callback(new_buffer_size, arg): | |||||
global doRunNow, buffer_size | |||||
buffer_size = new_buffer_size | |||||
doRunNow = True | |||||
return 0 | |||||
# -------------------------------------------------- | |||||
# listen to jack shutdown | |||||
def shutdown_callback(arg): | |||||
global doLoop | |||||
doLoop = False | |||||
# -------------------------------------------------- | |||||
# run alsa_in and alsa_out | |||||
def run_alsa_bridge(): | |||||
global sample_rate, buffer_size | |||||
system("killall alsa_in alsa_out zita-a2j zita-j2a pulseaudio") | |||||
#if (False): | |||||
system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i alsa_in -j alsa2jack -d cloop -q 1 2>&1 1> /dev/null &" % (sample_rate, buffer_size)) | |||||
system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i alsa_out -j jack2alsa -d ploop -q 1 2>&1 1> /dev/null &" % (sample_rate, buffer_size)) | |||||
#else: | |||||
#system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i zita-a2j -j alsa2jack -d hw:Loopback,1,0 -r 44100 &" % (sample_rate, buffer_size)) | |||||
#system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i zita-j2a -j jack2alsa -d hw:Loopback,1,1 -r 44100 &" % (sample_rate, buffer_size)) | |||||
# Pause it for a bit, and connect to the system ports | |||||
sleep(1) | |||||
jack_connect(client, "alsa2jack:capture_1", "system:playback_1") | |||||
jack_connect(client, "alsa2jack:capture_2", "system:playback_2") | |||||
jack_connect(client, "system:capture_1", "jack2alsa:playback_1") | |||||
jack_connect(client, "system:capture_2", "jack2alsa:playback_2") | |||||
#--------------- main ------------------ | |||||
if __name__ == '__main__': | |||||
# Init JACK client | |||||
client = jack_client_open("jack-aloop-daemon", 0, None) | |||||
if (not client): | |||||
quit() | |||||
jack_set_buffer_size_callback(client, buffer_size_callback, None) | |||||
jack_on_shutdown(client, shutdown_callback, None) | |||||
jack_activate(client) | |||||
# Quit when requested | |||||
signal(SIGINT, signal_handler) | |||||
signal(SIGTERM, signal_handler) | |||||
# Get initial values | |||||
sample_rate = jack_get_sample_rate(client) | |||||
buffer_size = jack_get_buffer_size(client) | |||||
# Keep running until told otherwise | |||||
while (doLoop): | |||||
if (doRunNow): | |||||
doRunNow = False | |||||
run_alsa_bridge() | |||||
sleep(1) | |||||
# Close JACK client | |||||
jack_deactivate(client) | |||||
jack_client_close(client) |
@@ -616,16 +616,16 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.connect(self.act_tools_catia, SIGNAL("triggered()"), lambda tool="catia": self.func_start_tool(tool)) | self.connect(self.act_tools_catia, SIGNAL("triggered()"), lambda tool="catia": self.func_start_tool(tool)) | ||||
self.connect(self.act_tools_claudia, SIGNAL("triggered()"), lambda tool="claudia": self.func_start_tool(tool)) | self.connect(self.act_tools_claudia, SIGNAL("triggered()"), lambda tool="claudia": self.func_start_tool(tool)) | ||||
self.connect(self.act_tools_carla, SIGNAL("triggered()"), lambda tool="carla": self.func_start_tool(tool)) | self.connect(self.act_tools_carla, SIGNAL("triggered()"), lambda tool="carla": self.func_start_tool(tool)) | ||||
self.connect(self.act_tools_logs, SIGNAL("triggered()"), lambda tool="cadence_logs": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_meter, SIGNAL("triggered()"), lambda tool="cadence_jackmeter": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_render, SIGNAL("triggered()"), lambda tool="cadence_render": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_xycontroller, SIGNAL("triggered()"), lambda tool="cadence_xycontroller": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_logs, SIGNAL("triggered()"), lambda tool="cadence-logs": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_meter, SIGNAL("triggered()"), lambda tool="cadence-jackmeter": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_render, SIGNAL("triggered()"), lambda tool="cadence-render": self.func_start_tool(tool)) | |||||
self.connect(self.act_tools_xycontroller, SIGNAL("triggered()"), lambda tool="cadence-xycontroller": self.func_start_tool(tool)) | |||||
self.connect(self.pic_catia, SIGNAL("clicked()"), lambda tool="catia": self.func_start_tool(tool)) | self.connect(self.pic_catia, SIGNAL("clicked()"), lambda tool="catia": self.func_start_tool(tool)) | ||||
self.connect(self.pic_claudia, SIGNAL("clicked()"), lambda tool="claudia": self.func_start_tool(tool)) | self.connect(self.pic_claudia, SIGNAL("clicked()"), lambda tool="claudia": self.func_start_tool(tool)) | ||||
self.connect(self.pic_carla, SIGNAL("clicked()"), lambda tool="carla": self.func_start_tool(tool)) | self.connect(self.pic_carla, SIGNAL("clicked()"), lambda tool="carla": self.func_start_tool(tool)) | ||||
self.connect(self.pic_logs, SIGNAL("clicked()"), lambda tool="cadence_logs": self.func_start_tool(tool)) | |||||
self.connect(self.pic_render, SIGNAL("clicked()"), lambda tool="cadence_render": self.func_start_tool(tool)) | |||||
self.connect(self.pic_xycontroller, SIGNAL("clicked()"), lambda tool="cadence_xycontroller": self.func_start_tool(tool)) | |||||
self.connect(self.pic_logs, SIGNAL("clicked()"), lambda tool="cadence-logs": self.func_start_tool(tool)) | |||||
self.connect(self.pic_render, SIGNAL("clicked()"), lambda tool="cadence-render": self.func_start_tool(tool)) | |||||
self.connect(self.pic_xycontroller, SIGNAL("clicked()"), lambda tool="cadence-xycontroller": self.func_start_tool(tool)) | |||||
self.connect(self.b_tweaks_apply_now, SIGNAL("clicked()"), SLOT("slot_tweaksApply()")) | self.connect(self.b_tweaks_apply_now, SIGNAL("clicked()"), SLOT("slot_tweaksApply()")) | ||||
@@ -0,0 +1,102 @@ | |||||
#!/usr/bin/env python3 | |||||
# -*- coding: utf-8 -*- | |||||
# Imports (Global) | |||||
from ctypes import * | |||||
from os import system | |||||
from sys import version_info | |||||
from signal import signal, SIGINT, SIGTERM | |||||
from time import sleep | |||||
# Imports (Custom Stuff) | |||||
import jacklib | |||||
# -------------------------------------------------- | |||||
# Global loop check | |||||
global doLoop, doRunNow | |||||
doLoop = True | |||||
doRunNow = True | |||||
# -------------------------------------------------- | |||||
# Global JACK variables | |||||
global bufferSize, sampleRate | |||||
bufferSize = 1024 | |||||
sampleRate = 44100 | |||||
# -------------------------------------------------- | |||||
# quit on SIGINT or SIGTERM | |||||
def signal_handler(sig, frame=0): | |||||
global doLoop | |||||
doLoop = False | |||||
# -------------------------------------------------- | |||||
# listen to jack buffer size changes | |||||
def buffer_size_callback(newBufferSize, arg): | |||||
global doRunNow, bufferSize | |||||
bufferSize = newBufferSize | |||||
doRunNow = True | |||||
return 0 | |||||
# -------------------------------------------------- | |||||
# listen to jack shutdown | |||||
def shutdown_callback(arg): | |||||
global doLoop | |||||
doLoop = False | |||||
# -------------------------------------------------- | |||||
# run alsa_in and alsa_out | |||||
def run_alsa_bridge(): | |||||
global sample_rate, buffer_size | |||||
system("killall alsa_in alsa_out zita-a2j zita-j2a pulseaudio") | |||||
#if (False): | |||||
system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i alsa_in -j alsa2jack -d cloop -q 1 2>&1 1> /dev/null &" % (sampleRate, bufferSize)) | |||||
system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i alsa_out -j jack2alsa -d ploop -q 1 2>&1 1> /dev/null &" % (sampleRate, bufferSize)) | |||||
#else: | |||||
#system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i zita-a2j -j alsa2jack -d hw:Loopback,1,0 -r 44100 &" % (sample_rate, buffer_size)) | |||||
#system("env JACK_SAMPLE_RATE=%i JACK_PERIOD_SIZE=%i zita-j2a -j jack2alsa -d hw:Loopback,1,1 -r 44100 &" % (sample_rate, buffer_size)) | |||||
# Pause it for a bit, and connect to the system ports | |||||
sleep(1) | |||||
jacklib.connect(client, "alsa2jack:capture_1", "system:playback_1") | |||||
jacklib.connect(client, "alsa2jack:capture_2", "system:playback_2") | |||||
jacklib.connect(client, "system:capture_1", "jack2alsa:playback_1") | |||||
jacklib.connect(client, "system:capture_2", "jack2alsa:playback_2") | |||||
#--------------- main ------------------ | |||||
if __name__ == '__main__': | |||||
# Init JACK client | |||||
client = jacklib.client_open("jack-aloop-daemon", 0, None) | |||||
if not client: | |||||
quit() | |||||
jacklib.set_buffer_size_callback(client, buffer_size_callback, None) | |||||
jacklib.on_shutdown(client, shutdown_callback, None) | |||||
jacklib.activate(client) | |||||
# Quit when requested | |||||
signal(SIGINT, signal_handler) | |||||
signal(SIGTERM, signal_handler) | |||||
# Get initial values | |||||
sampleRate = jacklib.get_sample_rate(client) | |||||
bufferSize = jacklib.get_buffer_size(client) | |||||
# Keep running until told otherwise | |||||
while doLoop: | |||||
if doRunNow: | |||||
doRunNow = False | |||||
run_alsa_bridge() | |||||
sleep(1) | |||||
# Close JACK client | |||||
jacklib.deactivate(client) | |||||
jacklib.client_close(client) |