| @@ -24,12 +24,12 @@ except: | |||
| # Imports (Global) | |||
| from platform import architecture | |||
| from PyQt4.QtCore import QSettings | |||
| from PyQt4.QtGui import QApplication, QLabel, QMainWindow, QSizePolicy | |||
| # Imports (Custom Stuff) | |||
| import ui_cadence | |||
| import systray | |||
| from shared_cadence import * | |||
| from shared_jack import * | |||
| from shared_settings import * | |||
| @@ -50,30 +50,6 @@ if haveWine: | |||
| # --------------------------------------------------------------------- | |||
| DEFAULT_LADSPA_PATH = [ | |||
| os.path.join(HOME, ".ladspa"), | |||
| os.path.join("/", "usr", "lib", "ladspa"), | |||
| os.path.join("/", "usr", "local", "lib", "ladspa") | |||
| ] | |||
| DEFAULT_DSSI_PATH = [ | |||
| os.path.join(HOME, ".dssi"), | |||
| os.path.join("/", "usr", "lib", "dssi"), | |||
| os.path.join("/", "usr", "local", "lib", "dssi") | |||
| ] | |||
| DEFAULT_LV2_PATH = [ | |||
| os.path.join(HOME, ".lv2"), | |||
| os.path.join("/", "usr", "lib", "lv2"), | |||
| os.path.join("/", "usr", "local", "lib", "lv2") | |||
| ] | |||
| DEFAULT_VST_PATH = [ | |||
| os.path.join(HOME, ".vst"), | |||
| os.path.join("/", "usr", "lib", "vst"), | |||
| os.path.join("/", "usr", "local", "lib", "vst") | |||
| ] | |||
| DESKTOP_X_IMAGE = [ | |||
| "eog.desktop", | |||
| "kde4/digikam.desktop", | |||
| @@ -112,9 +88,6 @@ XDG_APPLICATIONS_PATH = [ | |||
| WINEASIO_PREFIX = "HKEY_CURRENT_USER\Software\Wine\WineASIO" | |||
| # Global Settings | |||
| GlobalSettings = QSettings("Cadence", "GlobalSettings") | |||
| # --------------------------------------------------------------------- | |||
| def get_architecture(): | |||
| @@ -2,21 +2,15 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Imports (Global) | |||
| import dbus, os, sys | |||
| from PyQt4.QtCore import QCoreApplication, QProcess, QSettings | |||
| from time import sleep | |||
| import dbus, sys | |||
| from PyQt4.QtCore import QCoreApplication | |||
| # Imports (Custom Stuff) | |||
| from shared import * | |||
| from shared_cadence import * | |||
| # Cadence Global Settings | |||
| GlobalSettings = QSettings("Cadence", "GlobalSettings") | |||
| DEFAULT_LADSPA_PATH = "/usr/lib/ladspa:/usr/local/lib/ladspa:/usr/lib32/ladspa:"+HOME+"/.ladspa" | |||
| DEFAULT_DSSI_PATH = "/usr/lib/dssi:/usr/local/lib/dssi:/usr/lib32/dssi:"+HOME+"/.dssi" | |||
| DEFAULT_LV2_PATH = "/usr/lib/lv2:/usr/local/lib/lv2:"+HOME+"/.lv2" | |||
| DEFAULT_VST_PATH = "/usr/lib/vst:/usr/local/lib/vst:/usr/lib32/vst:"+HOME+"/.vst" | |||
| # DBus | |||
| class DBus(object): | |||
| __slots__ = [ | |||
| @@ -28,7 +22,83 @@ DBus = DBus() | |||
| # Start JACK, A2J and Pulse, according to user settings | |||
| def startSession(): | |||
| pass | |||
| # Kill all audio processes first | |||
| stopAllAudioProcesses() | |||
| # Connect to DBus | |||
| DBus.bus = dbus.SessionBus() | |||
| DBus.jack = DBus.bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller") | |||
| try: | |||
| DBus.a2j = dbus.Interface(DBus.bus.get_object("org.gna.home.a2jmidid", "/"), "org.gna.home.a2jmidid.control") | |||
| except: | |||
| DBus.a2j = None | |||
| # Load settings (JACK etc) | |||
| if not GlobalSettings.value("JACK/AutoStart", True, type=bool): | |||
| print("JACK is set to NOT auto-start on login") | |||
| return True | |||
| if GlobalSettings.value("JACK/AutoLoadLadishStudio", False, type=bool): | |||
| try: | |||
| ladish_control = DBus.bus.get_object("org.ladish", "/org/ladish/Control") | |||
| except: | |||
| startJack() | |||
| return False | |||
| try: | |||
| ladish_conf = DBus.bus.get_object("org.ladish.conf", "/org/ladish/conf") | |||
| except: | |||
| ladish_conf = None | |||
| ladishNotifyHack = False | |||
| ladishStudioName = dbus.String(GlobalSettings.value("JACK/LadishStudioName", "", type=str)) | |||
| ladishStudioListDump = ladish_control.GetStudioList() | |||
| for thisStudioName, thisStudioDict in ladishStudioListDump: | |||
| if ladishStudioName == thisStudioName: | |||
| if ladish_conf and ladish_conf.get('/org/ladish/daemon/notify')[0] == "true": | |||
| ladish_conf.set('/org/ladish/daemon/notify', "false") | |||
| ladishNotifyHack = True | |||
| ladish_control.LoadStudio(thisStudioName) | |||
| ladish_studio = DBus.bus.get_object("org.ladish", "/org/ladish/Studio") | |||
| if not bool(ladish_studio.IsStarted()): | |||
| ladish_studio.Start() | |||
| if ladishNotifyHack: | |||
| ladish_conf.set('/org/ladish/daemon/notify', "true") | |||
| break | |||
| else: | |||
| startJack() | |||
| else: | |||
| startJack() | |||
| if not bool(DBus.jack.IsStarted()): | |||
| print("JACK Failed to Start") | |||
| return False | |||
| if GlobalSettings.value("A2J/AutoStart", True, type=bool) and DBus.a2j and not bool(DBus.a2j.is_started()): | |||
| a2jExportHW = GlobalSettings.value("A2J/ExportHW", True, type=bool) | |||
| DBus.a2j.set_hw_export(a2jExportHW) | |||
| DBus.a2j.start() | |||
| if GlobalSettings.value("Pulse2JACK/AutoStart", True, type=bool): | |||
| if GlobalSettings.value("Pulse2JACK/PlaybackModeOnly", False, type=bool): | |||
| os.system("cadence-pulse2jack -p") | |||
| else: | |||
| os.system("cadence-pulse2jack") | |||
| print("JACK Started Successfully") | |||
| return True | |||
| def startJack(): | |||
| if not bool(DBus.jack.IsStarted()): | |||
| DBus.jack.StartServer() | |||
| def printLADSPA_PATH(): | |||
| EXTRA_LADSPA_DIRS = GlobalSettings.value("AudioPlugins/EXTRA_LADSPA_PATH", "", type=str).split(":") | |||
| @@ -0,0 +1,89 @@ | |||
| #!/usr/bin/env python3 | |||
| # -*- coding: utf-8 -*- | |||
| # Imports (Global) | |||
| import os | |||
| from PyQt4.QtCore import QProcess, QSettings | |||
| from time import sleep | |||
| # Imports (Custom Stuff) | |||
| from shared import * | |||
| # Default Plugin PATHs | |||
| DEFAULT_LADSPA_PATH = [ | |||
| os.path.join(HOME, ".ladspa"), | |||
| os.path.join("/", "usr", "lib", "ladspa"), | |||
| os.path.join("/", "usr", "local", "lib", "ladspa") | |||
| ] | |||
| DEFAULT_DSSI_PATH = [ | |||
| os.path.join(HOME, ".dssi"), | |||
| os.path.join("/", "usr", "lib", "dssi"), | |||
| os.path.join("/", "usr", "local", "lib", "dssi") | |||
| ] | |||
| DEFAULT_LV2_PATH = [ | |||
| os.path.join(HOME, ".lv2"), | |||
| os.path.join("/", "usr", "lib", "lv2"), | |||
| os.path.join("/", "usr", "local", "lib", "lv2") | |||
| ] | |||
| DEFAULT_VST_PATH = [ | |||
| os.path.join(HOME, ".vst"), | |||
| os.path.join("/", "usr", "lib", "vst"), | |||
| os.path.join("/", "usr", "local", "lib", "vst") | |||
| ] | |||
| # Global Settings | |||
| GlobalSettings = QSettings("Cadence", "GlobalSettings") | |||
| # Get Process list | |||
| def getProcList(): | |||
| retProcs = [] | |||
| process = QProcess() | |||
| process.start("ps", ["-e"]) | |||
| process.waitForFinished() | |||
| processDump = process.readAllStandardOutput().split("\n") | |||
| for i in range(len(processDump)): | |||
| if (i == 0): continue | |||
| dumpTest = str(processDump[i]).rsplit(":", 1)[-1].split(" ") | |||
| if len(dumpTest) > 1: | |||
| retProcs.append(dumpTest[1]) | |||
| return retProcs | |||
| def stopAllAudioProcesses(): | |||
| process = QProcess() | |||
| procsTerm = ["a2j", "a2jmidid", "artsd", "jackd", "jackdmp", "knotify4", "lash", "ladishd", "ladiappd", "ladiconfd", "jmcore"] | |||
| procsKill = ["jackdbus", "pulseaudio"] | |||
| tries = 20 | |||
| process.start("killall", procsTerm) | |||
| process.waitForFinished() | |||
| for x in range(tries): | |||
| procsList = getProcList() | |||
| for term in range(len(procsTerm)): | |||
| if term in procsList: | |||
| break | |||
| else: | |||
| sleep(0.1) | |||
| else: | |||
| break | |||
| process.start("killall", ["-KILL"] + procsKill) | |||
| process.waitForFinished() | |||
| for x in range(tries): | |||
| procsList = getProcList() | |||
| for kill in range(len(procsKill)): | |||
| if kill in procsList: | |||
| break | |||
| else: | |||
| sleep(0.1) | |||
| else: | |||
| break | |||