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


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

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>317</width>
<height>72</height>
<width>218</width>
<height>124</height>
</rect>
</property>
<property name="windowTitle">
@@ -15,11 +15,60 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<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>
<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
iGraphVersion = 0
@@ -342,8 +343,8 @@ def isPulseAudioStarted():
return bool("pulseaudio" in getProcList())

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

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

# PulseAudio
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)

@@ -750,14 +751,16 @@ class ToolBarPADialog(QDialog, ui_cadence_tb_pa.Ui_Dialog):
def __init__(self, parent):
QDialog.__init__(self, parent)
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)

@pyqtSlot()
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):
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.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_stop.clicked.connect(self.slot_PulseAudioBridgeStop)
self.tb_pulse_options.clicked.connect(self.slot_PulseAudioBridgeOptions)
@@ -1262,9 +1266,12 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
if group_name == "alsa2jack":
global jackClientIdALSA
jackClientIdALSA = group_id
elif group_name == "PulseAudio JACK Source":
global jackClientIdPulseCapture
jackClientIdPulseCapture = group_id
elif group_name == "PulseAudio JACK Sink":
global jackClientIdPulse
jackClientIdPulse = group_id
global jackClientIdPulsePlayback
jackClientIdPulsePlayback = group_id

self.jackStarted()

@@ -1403,9 +1410,10 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
self.b_a2j_start.setEnabled(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:
self.checkAlsaAudio()
@@ -1505,6 +1513,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):

if isPulseAudioStarted():
if isPulseAudioBridged():
self.b_pulse_update.setEnabled(True)
self.b_pulse_start.setEnabled(False)
self.b_pulse_stop.setEnabled(True)
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"))
else:
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_update.setEnabled(jackRunning)
self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False)
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"))
else:
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted())
self.b_pulse_update.setEnabled(False)
self.b_pulse_start.setEnabled(jackRunning)
self.b_pulse_stop.setEnabled(False)
self.systray.setActionEnabled("pulse_start", jackRunning)
@@ -1645,19 +1656,26 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW):
global jackClientIdALSA
jackClientIdALSA = group_id
self.checkAlsaAudio()
elif group_name == "PulseAudio JACK Source":
global jackClientIdPulseCapture
jackClientIdPulseCapture = group_id
self.checkPulseAudio()
elif group_name == "PulseAudio JACK Sink":
global jackClientIdPulse
jackClientIdPulse = group_id
global jackClientIdPulsePlayback
jackClientIdPulsePlayback = group_id
self.checkPulseAudio()

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

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

@pyqtSlot()
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()
def slot_PulseAudioBridgeStop(self):


Loading…
Cancel
Save