Browse Source

gives 2 spinboxs in pulseaudio jack settings dialog to choose number of channels, and all to make it works

pull/218/head^2
houston 7 years ago
parent
commit
09e58c01f7
3 changed files with 167 additions and 57 deletions
  1. +67
    -24
      resources/ui/cadence.ui
  2. +56
    -7
      resources/ui/cadence_tb_pa.ui
  3. +44
    -26
      src/cadence.py

+ 67
- 24
resources/ui/cadence.ui View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>740</width> <width>740</width>
<height>564</height>
<height>680</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -544,7 +544,16 @@
<string>JACK Bridges</string> <string>JACK Bridges</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<property name="margin">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<item row="0" column="0"> <item row="0" column="0">
@@ -572,8 +581,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>360</width>
<height>100</height>
<width>435</width>
<height>130</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -720,8 +729,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>360</width>
<height>97</height>
<width>310</width>
<height>110</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -861,8 +870,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>360</width>
<height>97</height>
<width>435</width>
<height>130</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -909,6 +918,13 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QPushButton" name="b_pulse_update">
<property name="text">
<string>Update Channels</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="b_pulse_start"> <widget class="QPushButton" name="b_pulse_start">
<property name="text"> <property name="text">
@@ -1579,7 +1595,7 @@
<string>Audio Plugins PATH</string> <string>Audio Plugins PATH</string>
</property> </property>
<property name="textAlignment"> <property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
<set>AlignCenter</set>
</property> </property>
<property name="flags"> <property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set> <set>ItemIsSelectable|ItemIsEnabled</set>
@@ -1590,7 +1606,7 @@
<string>Default Applications</string> <string>Default Applications</string>
</property> </property>
<property name="textAlignment"> <property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
<set>AlignCenter</set>
</property> </property>
<property name="flags"> <property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set> <set>ItemIsSelectable|ItemIsEnabled</set>
@@ -1601,7 +1617,7 @@
<string>WineASIO</string> <string>WineASIO</string>
</property> </property>
<property name="textAlignment"> <property name="textAlignment">
<set>AlignHCenter|AlignVCenter|AlignCenter</set>
<set>AlignCenter</set>
</property> </property>
<property name="flags"> <property name="flags">
<set>ItemIsSelectable|ItemIsEnabled</set> <set>ItemIsSelectable|ItemIsEnabled</set>
@@ -1620,7 +1636,16 @@
</property> </property>
<widget class="QWidget" name="page_plugins"> <widget class="QWidget" name="page_plugins">
<layout class="QGridLayout" name="gridLayout_6"> <layout class="QGridLayout" name="gridLayout_6">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="3" column="1"> <item row="3" column="1">
@@ -1688,8 +1713,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>416</width>
<height>334</height>
<width>96</width>
<height>86</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -1718,8 +1743,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>94</width>
<height>66</height>
<width>96</width>
<height>86</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -1748,8 +1773,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>94</width>
<height>66</height>
<width>96</width>
<height>86</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -1778,8 +1803,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>94</width>
<height>66</height>
<width>96</width>
<height>86</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">
@@ -1839,12 +1864,21 @@
</widget> </widget>
<widget class="QWidget" name="page_apps"> <widget class="QWidget" name="page_apps">
<layout class="QGridLayout" name="gridLayout_7"> <layout class="QGridLayout" name="gridLayout_7">
<property name="verticalSpacing">
<number>20</number>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property> </property>
<property name="margin">
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="verticalSpacing">
<number>20</number>
</property>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QCheckBox" name="ch_app_image"> <widget class="QCheckBox" name="ch_app_image">
<property name="text"> <property name="text">
@@ -2070,7 +2104,16 @@
</widget> </widget>
<widget class="QWidget" name="page_wineasio"> <widget class="QWidget" name="page_wineasio">
<layout class="QVBoxLayout" name="verticalLayout_17"> <layout class="QVBoxLayout" name="verticalLayout_17">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>


+ 56
- 7
resources/ui/cadence_tb_pa.ui View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>317</width>
<height>72</height>
<width>218</width>
<height>124</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -15,11 +15,60 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QCheckBox" name="cb_playback_only">
<property name="text">
<string>Playback Mode only</string>
</property>
</widget>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="labelPulseInputs">
<property name="text">
<string>Input Channels :</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelPulseOutputs">
<property name="text">
<string>Output Channels :</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QSpinBox" name="spinBoxPulseInputs">
<property name="specialValueText">
<string>Default</string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBoxPulseOutputs">
<property name="specialValueText">
<string>Default</string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>-1</number>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">


+ 44
- 26
src/cadence.py View File

@@ -126,9 +126,10 @@ WINEASIO_PREFIX = "HKEY_CURRENT_USER\Software\Wine\WineASIO"


# --------------------------------------------------------------------- # ---------------------------------------------------------------------


global jackClientIdALSA, jackClientIdPulse
jackClientIdALSA = -1
jackClientIdPulse = -1
global jackClientIdALSA, jackClientIdPulseCapture, jackClientIdPulsePlayback
jackClientIdALSA = -1
jackClientIdPulseCapture = -1
jackClientIdPulsePlayback = -1


# jackdbus indexes # jackdbus indexes
iGraphVersion = 0 iGraphVersion = 0
@@ -342,8 +343,8 @@ def isPulseAudioStarted():
return bool("pulseaudio" in getProcList()) return bool("pulseaudio" in getProcList())


def isPulseAudioBridged(): def isPulseAudioBridged():
global jackClientIdPulse
return bool(jackClientIdPulse != -1)
global jackClientIdPulseCapture, jackClientIdPulsePlayback
return bool(jackClientIdPulseCapture != -1 or jackClientIdPulsePlayback != -1)


def isDesktopFileInstalled(desktop): def isDesktopFileInstalled(desktop):
for X_PATH in XDG_APPLICATIONS_PATH: for X_PATH in XDG_APPLICATIONS_PATH:
@@ -591,10 +592,10 @@ class ForceRestartThread(QThread):


# PulseAudio # PulseAudio
if GlobalSettings.value("Pulse2JACK/AutoStart", True, type=bool) and not isPulseAudioBridged(): if GlobalSettings.value("Pulse2JACK/AutoStart", True, type=bool) and not isPulseAudioBridged():
if GlobalSettings.value("Pulse2JACK/PlaybackModeOnly", False, type=bool):
os.system("cadence-pulse2jack -p")
else:
os.system("cadence-pulse2jack")
inputs = GlobalSettings.value("Pulse2JACK/CaptureChannels", -1, type=int)
outputs = GlobalSettings.value("Pulse2JACK/PlaybackChannels", -1, type=int)
os.system("cadence-pulse2jack -c %s -p %s" % (str(inputs), str(outputs)))


self.progressChanged.emit(100) self.progressChanged.emit(100)


@@ -750,14 +751,16 @@ class ToolBarPADialog(QDialog, ui_cadence_tb_pa.Ui_Dialog):
def __init__(self, parent): def __init__(self, parent):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
self.setupUi(self) self.setupUi(self)

self.cb_playback_only.setChecked(GlobalSettings.value("Pulse2JACK/PlaybackModeOnly", False, type=bool))
self.spinBoxPulseInputs.setValue(GlobalSettings.value("Pulse2JACK/CaptureChannels", 2, type=int))
self.spinBoxPulseOutputs.setValue(GlobalSettings.value("Pulse2JACK/PlaybackChannels", 2, type=int))


self.accepted.connect(self.slot_setOptions) self.accepted.connect(self.slot_setOptions)


@pyqtSlot() @pyqtSlot()
def slot_setOptions(self): def slot_setOptions(self):
GlobalSettings.setValue("Pulse2JACK/PlaybackModeOnly", self.cb_playback_only.isChecked())
GlobalSettings.setValue("Pulse2JACK/CaptureChannels", self.spinBoxPulseInputs.value())
GlobalSettings.setValue("Pulse2JACK/PlaybackChannels", self.spinBoxPulseOutputs.value())


def done(self, r): def done(self, r):
QDialog.done(self, r) QDialog.done(self, r)
@@ -1161,6 +1164,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.b_a2j_export_hw.clicked.connect(self.slot_A2JBridgeExportHW) self.b_a2j_export_hw.clicked.connect(self.slot_A2JBridgeExportHW)
self.tb_a2j_options.clicked.connect(self.slot_A2JBridgeOptions) self.tb_a2j_options.clicked.connect(self.slot_A2JBridgeOptions)


self.b_pulse_update.clicked.connect(self.slot_PulseAudioBridgeStart)
self.b_pulse_start.clicked.connect(self.slot_PulseAudioBridgeStart) self.b_pulse_start.clicked.connect(self.slot_PulseAudioBridgeStart)
self.b_pulse_stop.clicked.connect(self.slot_PulseAudioBridgeStop) self.b_pulse_stop.clicked.connect(self.slot_PulseAudioBridgeStop)
self.tb_pulse_options.clicked.connect(self.slot_PulseAudioBridgeOptions) self.tb_pulse_options.clicked.connect(self.slot_PulseAudioBridgeOptions)
@@ -1262,9 +1266,12 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
if group_name == "alsa2jack": if group_name == "alsa2jack":
global jackClientIdALSA global jackClientIdALSA
jackClientIdALSA = group_id jackClientIdALSA = group_id
elif group_name == "PulseAudio JACK Source":
global jackClientIdPulseCapture
jackClientIdPulseCapture = group_id
elif group_name == "PulseAudio JACK Sink": elif group_name == "PulseAudio JACK Sink":
global jackClientIdPulse
jackClientIdPulse = group_id
global jackClientIdPulsePlayback
jackClientIdPulsePlayback = group_id


self.jackStarted() self.jackStarted()


@@ -1403,9 +1410,10 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.b_a2j_start.setEnabled(False) self.b_a2j_start.setEnabled(False)
self.systray.setActionEnabled("a2j_start", False) self.systray.setActionEnabled("a2j_start", False)


global jackClientIdALSA, jackClientIdPulse
jackClientIdALSA = -1
jackClientIdPulse = -1
global jackClientIdALSA, jackClientIdPulseCapture, jackClientIdPulsePlayback
jackClientIdALSA = -1
jackClientIdPulseCapture = -1
jackClientIdPulsePlayback = -1


if haveDBus: if haveDBus:
self.checkAlsaAudio() self.checkAlsaAudio()
@@ -1505,6 +1513,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):


if isPulseAudioStarted(): if isPulseAudioStarted():
if isPulseAudioBridged(): if isPulseAudioBridged():
self.b_pulse_update.setEnabled(True)
self.b_pulse_start.setEnabled(False) self.b_pulse_start.setEnabled(False)
self.b_pulse_stop.setEnabled(True) self.b_pulse_stop.setEnabled(True)
self.systray.setActionEnabled("pulse_start", False) self.systray.setActionEnabled("pulse_start", False)
@@ -1512,6 +1521,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_bridge_pulse.setText(self.tr("PulseAudio is started and bridged to JACK")) self.label_bridge_pulse.setText(self.tr("PulseAudio is started and bridged to JACK"))
else: else:
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted()) jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_update.setEnabled(jackRunning)
self.b_pulse_start.setEnabled(jackRunning) self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False) self.b_pulse_stop.setEnabled(False)
self.systray.setActionEnabled("pulse_start", jackRunning) self.systray.setActionEnabled("pulse_start", jackRunning)
@@ -1519,6 +1529,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.label_bridge_pulse.setText(self.tr("PulseAudio is started but not bridged")) self.label_bridge_pulse.setText(self.tr("PulseAudio is started but not bridged"))
else: else:
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted()) jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_update.setEnabled(False)
self.b_pulse_start.setEnabled(jackRunning) self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False) self.b_pulse_stop.setEnabled(False)
self.systray.setActionEnabled("pulse_start", jackRunning) self.systray.setActionEnabled("pulse_start", jackRunning)
@@ -1645,19 +1656,26 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
global jackClientIdALSA global jackClientIdALSA
jackClientIdALSA = group_id jackClientIdALSA = group_id
self.checkAlsaAudio() self.checkAlsaAudio()
elif group_name == "PulseAudio JACK Source":
global jackClientIdPulseCapture
jackClientIdPulseCapture = group_id
self.checkPulseAudio()
elif group_name == "PulseAudio JACK Sink": elif group_name == "PulseAudio JACK Sink":
global jackClientIdPulse
jackClientIdPulse = group_id
global jackClientIdPulsePlayback
jackClientIdPulsePlayback = group_id
self.checkPulseAudio() self.checkPulseAudio()


@pyqtSlot(int) @pyqtSlot(int)
def slot_DBusJackClientDisappearedCallback(self, group_id): def slot_DBusJackClientDisappearedCallback(self, group_id):
global jackClientIdALSA, jackClientIdPulse
global jackClientIdALSA, jackClientIdPulseCapture, jackClientIdPulsePlayback
if group_id == jackClientIdALSA: if group_id == jackClientIdALSA:
jackClientIdALSA = -1 jackClientIdALSA = -1
self.checkAlsaAudio() self.checkAlsaAudio()
elif group_id == jackClientIdPulse:
jackClientIdPulse = -1
elif group_id == jackClientIdPulseCapture:
jackClientIdPulseCapture = -1
self.checkPulseAudio()
elif group_id == jackClientIdPulsePlayback:
jackClientIdPulsePlayback = -1
self.checkPulseAudio() self.checkPulseAudio()


@pyqtSlot() @pyqtSlot()
@@ -1812,10 +1830,10 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):


@pyqtSlot() @pyqtSlot()
def slot_PulseAudioBridgeStart(self): def slot_PulseAudioBridgeStart(self):
if GlobalSettings.value("Pulse2JACK/PlaybackModeOnly", False, type=bool):
os.system("cadence-pulse2jack -p")
else:
os.system("cadence-pulse2jack")
inputs = GlobalSettings.value("Pulse2JACK/CaptureChannels", 2, type=int)
outputs = GlobalSettings.value("Pulse2JACK/PlaybackChannels", 2, type=int)
os.system("cadence-pulse2jack -c %s -p %s" % (str(inputs), str(outputs)))


@pyqtSlot() @pyqtSlot()
def slot_PulseAudioBridgeStop(self): def slot_PulseAudioBridgeStop(self):


Loading…
Cancel
Save