@@ -411,6 +411,10 @@ if __name__ == '__main__': | |||||
# App initialization | # App initialization | ||||
app = QApplication(sys.argv) | app = QApplication(sys.argv) | ||||
app.setApplicationName("Cadence-Logs") | |||||
app.setApplicationVersion(VERSION) | |||||
app.setOrganizationName("Cadence") | |||||
app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | |||||
# Show GUI | # Show GUI | ||||
gui = LogsW(None) | gui = LogsW(None) | ||||
@@ -16,20 +16,29 @@ | |||||
# | # | ||||
# For a full copy of the GNU General Public License see the COPYING file | # For a full copy of the GNU General Public License see the COPYING file | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | # Imports (Global) | ||||
from PyQt4.QtCore import pyqtSlot, QProcess, QTime, QTimer | from PyQt4.QtCore import pyqtSlot, QProcess, QTime, QTimer | ||||
from PyQt4.QtGui import QDialog | from PyQt4.QtGui import QDialog | ||||
from time import sleep | from time import sleep | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Custom Stuff) | # Imports (Custom Stuff) | ||||
import ui_render | import ui_render | ||||
from shared import * | from shared import * | ||||
from jacklib_helpers import * | from jacklib_helpers import * | ||||
global jack_client | |||||
jack_client = None | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Global JACK client (used in standalone mode) | |||||
global jackClient | |||||
jackClient = None | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Render Window | # Render Window | ||||
class RenderW(QDialog, ui_render.Ui_RenderW): | class RenderW(QDialog, ui_render.Ui_RenderW): | ||||
def __init__(self, parent): | def __init__(self, parent): | ||||
QDialog.__init__(self, parent) | QDialog.__init__(self, parent) | ||||
@@ -38,30 +47,28 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Get JACK client and base information | # Get JACK client and base information | ||||
global jack_client | |||||
if jack_client: | |||||
self.m_jack_client = jack_client | |||||
self.m_closeClient = False | |||||
global jackClient | |||||
if jackClient: | |||||
self.m_jackClient = jackClient | |||||
else: | else: | ||||
self.m_jack_client = jacklib.client_open("Render-Dialog", jacklib.JackNoStartServer, None) | |||||
self.m_closeClient = True | |||||
self.m_jackClient = jacklib.client_open("Render-Dialog", jacklib.JackNoStartServer, None) | |||||
self.m_buffer_size = int(jacklib.get_buffer_size(self.m_jack_client)) | |||||
self.m_sample_rate = int(jacklib.get_sample_rate(self.m_jack_client)) | |||||
self.m_bufferSize = int(jacklib.get_buffer_size(self.m_jackClient)) | |||||
self.m_sampleRate = int(jacklib.get_sample_rate(self.m_jackClient)) | |||||
for i in range(self.cb_buffer_size.count()): | for i in range(self.cb_buffer_size.count()): | ||||
if int(self.cb_buffer_size.itemText(i)) == self.m_buffer_size: | |||||
if int(self.cb_buffer_size.itemText(i)) == self.m_bufferSize: | |||||
self.cb_buffer_size.setCurrentIndex(i) | self.cb_buffer_size.setCurrentIndex(i) | ||||
break | break | ||||
else: | else: | ||||
self.cb_buffer_size.addItem(str(self.m_buffer_size)) | |||||
self.cb_buffer_size.addItem(str(self.m_bufferSize)) | |||||
self.cb_buffer_size.setCurrentIndex(self.cb_buffer_size.count() - 1) | self.cb_buffer_size.setCurrentIndex(self.cb_buffer_size.count() - 1) | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Internal stuff | # Internal stuff | ||||
self.m_max_time = 180 | |||||
self.m_last_time = 0 | |||||
self.m_lastTime = 0 | |||||
self.m_maxTime = 180 | |||||
self.m_freewheel = False | self.m_freewheel = False | ||||
self.m_timer = QTimer(self) | self.m_timer = QTimer(self) | ||||
@@ -74,14 +81,17 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
self.m_process.start("jack_capture", ["-pf"]) | self.m_process.start("jack_capture", ["-pf"]) | ||||
self.m_process.waitForFinished() | self.m_process.waitForFinished() | ||||
formats = str(self.m_process.readAllStandardOutput(), encoding="utf-8").split(" ") | |||||
formats = str(self.m_process.readAllStandardOutput(), encoding="utf-8").split(" ") | |||||
formatsList = [] | formatsList = [] | ||||
for i in range(len(formats) - 1): | for i in range(len(formats) - 1): | ||||
formatsList.append(formats[i]) | |||||
iFormat = formats[i].strip() | |||||
if iFormat: | |||||
formatsList.append(iFormat) | |||||
formatsList.sort() | formatsList.sort() | ||||
# Put all formats in combo-box, select 'wav' option | |||||
for i in range(len(formatsList)): | for i in range(len(formatsList)): | ||||
self.cb_format.addItem(formatsList[i]) | self.cb_format.addItem(formatsList[i]) | ||||
if formatsList[i] == "wav": | if formatsList[i] == "wav": | ||||
@@ -127,18 +137,19 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
self.b_stop.setVisible(True) | self.b_stop.setVisible(True) | ||||
self.b_close.setEnabled(False) | self.b_close.setEnabled(False) | ||||
self.m_freewheel = bool(self.cb_render_mode.currentIndex() == 1) | |||||
new_buffer_size = int(self.cb_buffer_size.currentText()) | |||||
timeStart = self.te_start.time() | |||||
timeEnd = self.te_end.time() | |||||
minTime = (timeStart.hour() * 3600) + (timeStart.minute() * 60) + (timeStart.second()) | |||||
maxTime = (timeEnd.hour() * 3600) + (timeEnd.minute() * 60) + (timeEnd.second()) | |||||
time_start = self.te_start.time() | |||||
time_end = self.te_end.time() | |||||
min_time = (time_start.hour() * 3600) + (time_start.minute() * 60) + (time_start.second()) | |||||
max_time = (time_end.hour() * 3600) + (time_end.minute() * 60) + (time_end.second()) | |||||
self.m_max_time = max_time | |||||
newBufferSize = int(self.cb_buffer_size.currentText()) | |||||
self.progressBar.setMinimum(min_time) | |||||
self.progressBar.setMaximum(max_time) | |||||
self.progressBar.setValue(min_time) | |||||
self.m_maxTime = maxTime | |||||
self.m_freewheel = bool(self.cb_render_mode.currentIndex() == 1) | |||||
self.progressBar.setMinimum(minTime) | |||||
self.progressBar.setMaximum(maxTime) | |||||
self.progressBar.setValue(minTime) | |||||
self.progressBar.update() | self.progressBar.update() | ||||
if self.m_freewheel: | if self.m_freewheel: | ||||
@@ -175,14 +186,14 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
# Change current directory | # Change current directory | ||||
os.chdir(self.le_folder.text()) | os.chdir(self.le_folder.text()) | ||||
if new_buffer_size != int(jacklib.get_buffer_size(self.m_jack_client)): | |||||
if newBufferSize != int(jacklib.get_buffer_size(self.m_jackClient)): | |||||
print("NOTICE: buffer size changed before render") | print("NOTICE: buffer size changed before render") | ||||
jacklib.set_buffer_size(self.m_jack_client, new_buffer_size) | |||||
jacklib.set_buffer_size(self.m_jackClient, newBufferSize) | |||||
if jacklib.transport_query(self.m_jack_client, None) > jacklib.JackTransportStopped: # > JackTransportStopped is rolling|starting | |||||
jacklib.transport_stop(self.m_jack_client) | |||||
if jacklib.transport_query(self.m_jackClient, None) > jacklib.JackTransportStopped: # > JackTransportStopped is rolling|starting | |||||
jacklib.transport_stop(self.m_jackClient) | |||||
jacklib.transport_locate(self.m_jack_client, min_time * self.m_sample_rate) | |||||
jacklib.transport_locate(self.m_jackClient, minTime * self.m_sampleRate) | |||||
self.m_last_time = -1 | self.m_last_time = -1 | ||||
self.m_process.start("jack_capture", arguments) | self.m_process.start("jack_capture", arguments) | ||||
@@ -191,17 +202,17 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
if self.m_freewheel: | if self.m_freewheel: | ||||
print("NOTICE: rendering in freewheel mode") | print("NOTICE: rendering in freewheel mode") | ||||
sleep(1) | sleep(1) | ||||
jacklib.set_freewheel(self.m_jack_client, 1) | |||||
jacklib.set_freewheel(self.m_jackClient, 1) | |||||
self.m_timer.start() | self.m_timer.start() | ||||
jacklib.transport_start(self.m_jack_client) | |||||
jacklib.transport_start(self.m_jackClient) | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_renderStop(self): | def slot_renderStop(self): | ||||
jacklib.transport_stop(self.m_jack_client) | |||||
jacklib.transport_stop(self.m_jackClient) | |||||
if self.m_freewheel: | if self.m_freewheel: | ||||
jacklib.set_freewheel(self.m_jack_client, 0) | |||||
jacklib.set_freewheel(self.m_jackClient, 0) | |||||
sleep(1) | sleep(1) | ||||
@@ -221,9 +232,9 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
self.progressBar.update() | self.progressBar.update() | ||||
# Restore buffer size | # Restore buffer size | ||||
new_buffer_size = int(jacklib.get_buffer_size(self.m_jack_client)) | |||||
if new_buffer_size != self.m_buffer_size: | |||||
jacklib.set_buffer_size(self.m_jack_client, new_buffer_size) | |||||
newBufferSize = int(jacklib.get_buffer_size(self.m_jackClient)) | |||||
if newBufferSize != self.m_bufferSize: | |||||
jacklib.set_buffer_size(self.m_jackClient, newBufferSize) | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_getAndSetPath(self): | def slot_getAndSetPath(self): | ||||
@@ -231,7 +242,7 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_setStartNow(self): | def slot_setStartNow(self): | ||||
time = int(jacklib.get_current_transport_frame(self.m_jack_client) / self.m_sample_rate) | |||||
time = int(jacklib.get_current_transport_frame(self.m_jackClient) / self.m_sampleRate) | |||||
secs = time % 60 | secs = time % 60 | ||||
mins = int(time / 60) % 60 | mins = int(time / 60) % 60 | ||||
hrs = int(time / 3600) % 60 | hrs = int(time / 3600) % 60 | ||||
@@ -239,7 +250,7 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_setEndNow(self): | def slot_setEndNow(self): | ||||
time = int(jacklib.get_current_transport_frame(self.m_jack_client) / self.m_sample_rate) | |||||
time = int(jacklib.get_current_transport_frame(self.m_jackClient) / self.m_sampleRate) | |||||
secs = time % 60 | secs = time % 60 | ||||
mins = int(time / 60) % 60 | mins = int(time / 60) % 60 | ||||
hrs = int(time / 3600) % 60 | hrs = int(time / 3600) % 60 | ||||
@@ -263,31 +274,36 @@ class RenderW(QDialog, ui_render.Ui_RenderW): | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_updateProgressbar(self): | def slot_updateProgressbar(self): | ||||
time = int(jacklib.get_current_transport_frame(self.m_jack_client)) / self.m_sample_rate | |||||
time = int(jacklib.get_current_transport_frame(self.m_jackClient)) / self.m_sampleRate | |||||
self.progressBar.setValue(time) | self.progressBar.setValue(time) | ||||
if time > self.m_max_time or (self.m_last_time > time and not self.m_freewheel): | |||||
if time > self.m_maxTime or (self.m_lastTime > time and not self.m_freewheel): | |||||
self.slot_renderStop() | self.slot_renderStop() | ||||
self.m_last_time = time | self.m_last_time = time | ||||
def closeEvent(self, event): | def closeEvent(self, event): | ||||
if self.m_closeClient: | |||||
jacklib.client_close(self.m_jack_client) | |||||
if self.m_jackClient: | |||||
jacklib.client_close(self.m_jackClient) | |||||
QDialog.closeEvent(self, event) | QDialog.closeEvent(self, event) | ||||
def done(self, r): | def done(self, r): | ||||
QDialog.done(self, r) | QDialog.done(self, r) | ||||
self.close() | self.close() | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Allow to use this as a standalone app | # Allow to use this as a standalone app | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
# Additional imports | # Additional imports | ||||
from PyQt4.QtGui import QApplication | from PyQt4.QtGui import QApplication | ||||
# App initialization | # App initialization | ||||
app = QApplication(sys.argv) | app = QApplication(sys.argv) | ||||
app.setApplicationName("Cadence-Render") | |||||
app.setApplicationVersion(VERSION) | |||||
app.setOrganizationName("Cadence") | |||||
app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | |||||
for iPATH in PATH: | for iPATH in PATH: | ||||
if os.path.exists(os.path.join(iPATH, "jack_capture")): | if os.path.exists(os.path.join(iPATH, "jack_capture")): | ||||
@@ -298,11 +314,11 @@ if __name__ == '__main__': | |||||
"Is not possible to render without it!")) | "Is not possible to render without it!")) | ||||
sys.exit(1) | sys.exit(1) | ||||
jack_status = jacklib.jack_status_t(0) | |||||
jack_client = jacklib.client_open("Render", jacklib.JackNoStartServer, jacklib.pointer(jack_status)) | |||||
jackStatus = jacklib.jack_status_t(0) | |||||
jackClient = jacklib.client_open("Render", jacklib.JackNoStartServer, jacklib.pointer(jackStatus)) | |||||
if not jack_client: | |||||
errorString = get_jack_status_error_string(jack_status) | |||||
if not jackClient: | |||||
errorString = get_jack_status_error_string(jackStatus) | |||||
QMessageBox.critical(None, app.translate("RenderW", "Error"), app.translate("RenderW", | QMessageBox.critical(None, app.translate("RenderW", "Error"), app.translate("RenderW", | ||||
"Could not connect to JACK, possible reasons:\n" | "Could not connect to JACK, possible reasons:\n" | ||||
"%s" % errorString)) | "%s" % errorString)) | ||||
@@ -314,10 +330,4 @@ if __name__ == '__main__': | |||||
gui.show() | gui.show() | ||||
# App-Loop | # App-Loop | ||||
ret = app.exec_() | |||||
if jack_client: | |||||
jacklib.client_close(jack_client) | |||||
# Exit properly | |||||
sys.exit(ret) | |||||
sys.exit(app.exec_()) |
@@ -58,7 +58,7 @@ else: | |||||
WINDOWS = False | WINDOWS = False | ||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Try import Signal | |||||
# Try Import Signal | |||||
try: | try: | ||||
from signal import signal, SIGINT, SIGTERM, SIGUSR1, SIGUSR2 | from signal import signal, SIGINT, SIGTERM, SIGUSR1, SIGUSR2 | ||||
@@ -1,15 +1,35 @@ | |||||
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||||
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||
# Common/Shared code for Cadence | |||||
# Copyright (C) 2012 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 published by | |||||
# the Free Software Foundation; either version 2 of the License, or | |||||
# any later version. | |||||
# | |||||
# This program is distributed in the hope that it will be useful, | |||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
# GNU General Public License for more details. | |||||
# | |||||
# For a full copy of the GNU General Public License see the COPYING file | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | # Imports (Global) | ||||
import os | |||||
from PyQt4.QtCore import QProcess, QSettings | from PyQt4.QtCore import QProcess, QSettings | ||||
from time import sleep | from time import sleep | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Custom Stuff) | # Imports (Custom Stuff) | ||||
from shared import * | from shared import * | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Default Plugin PATHs | # Default Plugin PATHs | ||||
DEFAULT_LADSPA_PATH = [ | DEFAULT_LADSPA_PATH = [ | ||||
os.path.join(HOME, ".ladspa"), | os.path.join(HOME, ".ladspa"), | ||||
os.path.join("/", "usr", "lib", "ladspa"), | os.path.join("/", "usr", "lib", "ladspa"), | ||||
@@ -34,36 +54,52 @@ DEFAULT_VST_PATH = [ | |||||
os.path.join("/", "usr", "local", "lib", "vst") | os.path.join("/", "usr", "local", "lib", "vst") | ||||
] | ] | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# ALSA file-type indexes | # ALSA file-type indexes | ||||
iAlsaFileNone = 0 | iAlsaFileNone = 0 | ||||
iAlsaFileLoop = 1 | iAlsaFileLoop = 1 | ||||
iAlsaFileJACK = 2 | iAlsaFileJACK = 2 | ||||
iAlsaFilePulse = 3 | iAlsaFilePulse = 3 | ||||
iAlsaFileMax = 4 | iAlsaFileMax = 4 | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Global Settings | # Global Settings | ||||
GlobalSettings = QSettings("Cadence", "GlobalSettings") | GlobalSettings = QSettings("Cadence", "GlobalSettings") | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Get Process list | # Get Process list | ||||
# TODO - Windows support, others | |||||
def getProcList(): | def getProcList(): | ||||
retProcs = [] | retProcs = [] | ||||
process = QProcess() | |||||
process.start("ps", ["-e"]) | |||||
process.waitForFinished() | |||||
if HAIKU or LINUX or MACOS: | |||||
process = QProcess() | |||||
process.start("ps", ["-e"]) | |||||
process.waitForFinished() | |||||
processDump = process.readAllStandardOutput().split("\n") | |||||
processDump = process.readAllStandardOutput().split("\n") | |||||
for i in range(len(processDump)): | |||||
if (i == 0): continue | |||||
dumpTest = str(processDump[i], encoding="utf-8").rsplit(":", 1)[-1].split(" ") | |||||
if len(dumpTest) > 1 and dumpTest[1]: | |||||
retProcs.append(dumpTest[1]) | |||||
for i in range(len(processDump)): | |||||
if (i == 0): continue | |||||
dumpTest = str(processDump[i], encoding="utf-8").rsplit(":", 1)[-1].split(" ") | |||||
if len(dumpTest) > 1 and dumpTest[1]: | |||||
retProcs.append(dumpTest[1]) | |||||
else: | |||||
print("getProcList() - Not supported in this system") | |||||
return retProcs | return retProcs | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Stop all audio processes, used for force-restart | |||||
def stopAllAudioProcesses(): | def stopAllAudioProcesses(): | ||||
if not (HAIKU or LINUX or MACOS): | |||||
print("stopAllAudioProcesses() - Not supported in this system") | |||||
return | |||||
process = QProcess() | process = QProcess() | ||||
procsTerm = ["a2j", "a2jmidid", "artsd", "jackd", "jackdmp", "knotify4", "lash", "ladishd", "ladiappd", "ladiconfd", "jmcore"] | procsTerm = ["a2j", "a2jmidid", "artsd", "jackd", "jackdmp", "knotify4", "lash", "ladishd", "ladiappd", "ladiconfd", "jmcore"] | ||||
@@ -16,8 +16,10 @@ | |||||
# | # | ||||
# For a full copy of the GNU General Public License see the COPYING file | # For a full copy of the GNU General Public License see the COPYING file | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | # Imports (Global) | ||||
import platform, sys | |||||
import platform | |||||
from copy import deepcopy | from copy import deepcopy | ||||
from decimal import Decimal | from decimal import Decimal | ||||
from sip import unwrapinstance | from sip import unwrapinstance | ||||
@@ -31,25 +33,12 @@ try: | |||||
except: | except: | ||||
GuiContainer = QWidget | GuiContainer = QWidget | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Custom) | # Imports (Custom) | ||||
import ui_carla_about, ui_carla_edit, ui_carla_parameter, ui_carla_plugin | import ui_carla_about, ui_carla_edit, ui_carla_parameter, ui_carla_plugin | ||||
from shared import * | from shared import * | ||||
# Carla Host object | |||||
class CarlaHostObject(object): | |||||
__slots__ = [ | |||||
'host', | |||||
'gui', | |||||
'isControl', | |||||
'processMode', | |||||
'maxParameters' | |||||
] | |||||
Carla = CarlaHostObject() | |||||
Carla.host = None | |||||
Carla.gui = None | |||||
Carla.isControl = False | |||||
is64bit = bool(platform.architecture()[0] == "64bit" and sys.maxsize > 2**32) | is64bit = bool(platform.architecture()[0] == "64bit" and sys.maxsize > 2**32) | ||||
# ------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------ | ||||
@@ -59,7 +48,7 @@ is64bit = bool(platform.architecture()[0] == "64bit" and sys.maxsize > 2**32) | |||||
MAX_PLUGINS = 99 | MAX_PLUGINS = 99 | ||||
MAX_PARAMETERS = 200 | MAX_PARAMETERS = 200 | ||||
# plugin hints | |||||
# group plugin hints | |||||
PLUGIN_IS_BRIDGE = 0x001 | PLUGIN_IS_BRIDGE = 0x001 | ||||
PLUGIN_IS_SYNTH = 0x002 | PLUGIN_IS_SYNTH = 0x002 | ||||
PLUGIN_HAS_GUI = 0x004 | PLUGIN_HAS_GUI = 0x004 | ||||
@@ -70,7 +59,7 @@ PLUGIN_CAN_VOLUME = 0x040 | |||||
PLUGIN_CAN_BALANCE = 0x080 | PLUGIN_CAN_BALANCE = 0x080 | ||||
PLUGIN_CAN_FORCE_STEREO = 0x100 | PLUGIN_CAN_FORCE_STEREO = 0x100 | ||||
# parameter hints | |||||
# group parameter hints | |||||
PARAMETER_IS_BOOLEAN = 0x01 | PARAMETER_IS_BOOLEAN = 0x01 | ||||
PARAMETER_IS_INTEGER = 0x02 | PARAMETER_IS_INTEGER = 0x02 | ||||
PARAMETER_IS_LOGARITHMIC = 0x04 | PARAMETER_IS_LOGARITHMIC = 0x04 | ||||
@@ -200,13 +189,7 @@ PROCESS_MODE_MULTIPLE_CLIENTS = 1 | |||||
PROCESS_MODE_CONTINUOUS_RACK = 2 | PROCESS_MODE_CONTINUOUS_RACK = 2 | ||||
PROCESS_MODE_PATCHBAY = 3 | PROCESS_MODE_PATCHBAY = 3 | ||||
# ------------------------------------------------------------------------------------------------ | |||||
# Carla GUI stuff | |||||
Carla.processMode = PROCESS_MODE_CONTINUOUS_RACK | |||||
Carla.maxParameters = MAX_PARAMETERS | |||||
# set native binary type | |||||
# TODO ... | |||||
if HAIKU or LINUX or MACOS: | if HAIKU or LINUX or MACOS: | ||||
BINARY_NATIVE = BINARY_POSIX64 if is64bit else BINARY_POSIX32 | BINARY_NATIVE = BINARY_POSIX64 if is64bit else BINARY_POSIX32 | ||||
elif WINDOWS: | elif WINDOWS: | ||||
@@ -214,6 +197,28 @@ elif WINDOWS: | |||||
else: | else: | ||||
BINARY_NATIVE = BINARY_OTHER | BINARY_NATIVE = BINARY_OTHER | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Carla Host object | |||||
class CarlaHostObject(object): | |||||
__slots__ = [ | |||||
'host', | |||||
'gui', | |||||
'isControl', | |||||
'processMode', | |||||
'maxParameters' | |||||
] | |||||
Carla = CarlaHostObject() | |||||
Carla.host = None | |||||
Carla.gui = None | |||||
Carla.isControl = False | |||||
Carla.processMode = PROCESS_MODE_CONTINUOUS_RACK | |||||
Carla.maxParameters = MAX_PARAMETERS | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Carla GUI stuff | |||||
ICON_STATE_NULL = 0 | ICON_STATE_NULL = 0 | ||||
ICON_STATE_WAIT = 1 | ICON_STATE_WAIT = 1 | ||||
ICON_STATE_OFF = 2 | ICON_STATE_OFF = 2 | ||||
@@ -429,8 +434,8 @@ def xmlSafeString(string, toXml): | |||||
else: | else: | ||||
return string.replace("&", "&").replace("<","<").replace(">",">").replace("'","'").replace(""","\"") | return string.replace("&", "&").replace("<","<").replace(">",">").replace("'","'").replace(""","\"") | ||||
# ------------------------------------------------------------------------------------------------ | |||||
# carla_about.cpp | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# CarlaAbout.cpp | |||||
class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | ||||
def __init__(self, parent): | def __init__(self, parent): | ||||
@@ -508,7 +513,7 @@ class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | |||||
QDialog.done(self, r) | QDialog.done(self, r) | ||||
self.close() | self.close() | ||||
# ------------------------------------------------------------------------------------------------ | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# PluginParameter.cpp | # PluginParameter.cpp | ||||
# Plugin Parameter | # Plugin Parameter | ||||
@@ -16,20 +16,28 @@ | |||||
# | # | ||||
# For a full copy of the GNU General Public License see the COPYING file | # For a full copy of the GNU General Public License see the COPYING file | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | # Imports (Global) | ||||
from PyQt4.QtCore import pyqtSlot, QTimer | from PyQt4.QtCore import pyqtSlot, QTimer | ||||
from PyQt4.QtGui import QCursor, QFontMetrics, QMenu | from PyQt4.QtGui import QCursor, QFontMetrics, QMenu | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Custom Stuff) | # Imports (Custom Stuff) | ||||
import jacksettings, logs, render | import jacksettings, logs, render | ||||
from shared import * | from shared import * | ||||
from jacklib_helpers import * | from jacklib_helpers import * | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Have JACK2 ? | # Have JACK2 ? | ||||
if jacklib.JACK2 and DEBUG: | if jacklib.JACK2 and DEBUG: | ||||
print("Using JACK2, version %s" % cString(jacklib.get_version_string())) | print("Using JACK2, version %s" % cString(jacklib.get_version_string())) | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Can Render ? | # Can Render ? | ||||
for iPATH in PATH: | for iPATH in PATH: | ||||
if os.path.exists(os.path.join(iPATH, "jack_capture")): | if os.path.exists(os.path.join(iPATH, "jack_capture")): | ||||
canRender = True | canRender = True | ||||
@@ -37,7 +45,9 @@ for iPATH in PATH: | |||||
else: | else: | ||||
canRender = False | canRender = False | ||||
# Variables | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Global Variables | |||||
TRANSPORT_VIEW_HMS = 0 | TRANSPORT_VIEW_HMS = 0 | ||||
TRANSPORT_VIEW_BBT = 1 | TRANSPORT_VIEW_BBT = 1 | ||||
TRANSPORT_VIEW_FRAMES = 2 | TRANSPORT_VIEW_FRAMES = 2 | ||||
@@ -45,7 +55,9 @@ TRANSPORT_VIEW_FRAMES = 2 | |||||
buffer_sizes = (16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192) | buffer_sizes = (16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192) | ||||
sample_rates = (22050, 32000, 44100, 48000, 88200, 96000, 192000) | sample_rates = (22050, 32000, 44100, 48000, 88200, 96000, 192000) | ||||
# DBus object | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Global DBus object | |||||
class DBusObject(object): | class DBusObject(object): | ||||
__slots__ = [ | __slots__ = [ | ||||
'loop', | 'loop', | ||||
@@ -63,16 +75,6 @@ class DBusObject(object): | |||||
] | ] | ||||
DBus = DBusObject() | DBus = DBusObject() | ||||
# Jack object | |||||
class JackObject(object): | |||||
__slots__ = [ | |||||
'client' | |||||
] | |||||
jack = JackObject() | |||||
# Init objects | |||||
DBus.loop = None | DBus.loop = None | ||||
DBus.bus = None | DBus.bus = None | ||||
DBus.a2j = None | DBus.a2j = None | ||||
@@ -85,9 +87,18 @@ DBus.ladish_app_iface = None | |||||
DBus.ladish_app_daemon = None | DBus.ladish_app_daemon = None | ||||
DBus.patchbay = None | DBus.patchbay = None | ||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Global JACK object | |||||
class JackObject(object): | |||||
__slots__ = [ | |||||
'client' | |||||
] | |||||
jack = JackObject() | |||||
jack.client = None | jack.client = None | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Property change calls | # Property change calls | ||||
def jack_buffer_size(self_, buffer_size): | def jack_buffer_size(self_, buffer_size): | ||||
@@ -121,7 +132,7 @@ def slot_jackSampleRate_ComboBox(self_, text): | |||||
if text and text.isdigit(): | if text and text.isdigit(): | ||||
jack_sample_rate(self_, int(text)) | jack_sample_rate(self_, int(text)) | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Transport calls | # Transport calls | ||||
def setTransportView(self_, view): | def setTransportView(self_, view): | ||||
@@ -194,7 +205,7 @@ def slot_transportViewMenu(self_): | |||||
elif act_selected == act_t_fr: | elif act_selected == act_t_fr: | ||||
setTransportView(self_, TRANSPORT_VIEW_FRAMES) | setTransportView(self_, TRANSPORT_VIEW_FRAMES) | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Refresh GUI stuff | # Refresh GUI stuff | ||||
def refreshDSPLoad(self_): | def refreshDSPLoad(self_): | ||||
@@ -262,7 +273,7 @@ def refreshTransport(self_): | |||||
self_.m_last_transport_state = state | self_.m_last_transport_state = state | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Set GUI stuff | # Set GUI stuff | ||||
def setBufferSize(self_, buffer_size, forced=False): | def setBufferSize(self_, buffer_size, forced=False): | ||||
@@ -349,7 +360,7 @@ def setDSPLoad(self_, dsp_load): | |||||
def setXruns(self_, xruns): | def setXruns(self_, xruns): | ||||
self_.b_xruns.setText("%s Xrun%s" % (str(xruns) if (xruns >= 0) else "--", "" if (xruns == 1) else "s")) | self_.b_xruns.setText("%s Xrun%s" % (str(xruns) if (xruns >= 0) else "--", "" if (xruns == 1) else "s")) | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# External Dialogs | # External Dialogs | ||||
global logsW | global logsW | ||||
@@ -378,7 +389,7 @@ def slot_showRender(self_): | |||||
renderW.exec_() | renderW.exec_() | ||||
del renderW | del renderW | ||||
# ------------------------------------------------------------- | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Shared Connections | # Shared Connections | ||||
def setJackConnections(self_, modes): | def setJackConnections(self_, modes): | ||||