@@ -36,11 +36,12 @@ carla-discovery-native | |||
carla-discovery-posix32 | |||
carla-discovery-posix64 | |||
c++/jackmeter/cadence-jackmeter | |||
c++/xycontroller/cadence-xycontroller | |||
c++/carla-backend/doxygen/ | |||
c++/carla-bridge/doxygen/ | |||
c++/carla-includes/vst/ | |||
c++/jackmeter/cadence_jackmeter | |||
c++/xycontroller/cadence_xycontroller | |||
*-build-*Debug/ | |||
*-build-*Release/ | |||
@@ -57,5 +58,8 @@ c++/carla-backend/carla-dynamic.lv2/ | |||
c++/carla-backend/carla_backend_lv2.cpp | |||
c++/carla-backend/carla_backend_vst.cpp | |||
c++/carla-bridge/qt-plugin/ | |||
c++/carla-bridge/qtcreator/Makefile | |||
c++/carla-jackbridge/jack | |||
c++/flmixer/ | |||
c++/widgets/ledbutton.* | |||
src/ui/carla_driver.ui |
@@ -230,10 +230,11 @@ install: | |||
# Install script files and binaries | |||
install -m 755 \ | |||
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/catia \ | |||
data/claudia \ | |||
@@ -242,9 +243,8 @@ install: | |||
data/carla-control \ | |||
c++/carla-bridge/carla-bridge-* \ | |||
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/ | |||
# Install desktop files | |||
@@ -307,10 +307,11 @@ install: | |||
# Adjust PREFIX value in script files | |||
sed -i "s/X-PREFIX-X/$(SED_PREFIX)/" \ | |||
$(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/catia \ | |||
$(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); | |||
struct midi_program_t { | |||
quint32 bank; | |||
quint32 program; | |||
uint32_t bank; | |||
uint32_t program; | |||
const char* name; | |||
midi_program_t() | |||
@@ -486,11 +486,11 @@ struct midi_program_t { | |||
struct ParameterData { | |||
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() | |||
: 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 $@ | |||
cadence_jackmeter.exe: $(OBJS) | |||
cadence-jackmeter.exe: $(OBJS) | |||
$(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 $@ | |||
cadence_xycontroller.exe: $(FILES) $(OBJS) icon.o | |||
cadence-xycontroller.exe: $(FILES) $(OBJS) icon.o | |||
$(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_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_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_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_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()")) | |||
@@ -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) |