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