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