| @@ -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) | |||