split asoundrc strs in a new module

This commit is contained in:
Houston4444 2024-05-07 01:05:38 +02:00
parent 6420566f40
commit 3736211d67
2 changed files with 163 additions and 161 deletions

150
src/asoundrc_strs.py Normal file
View File

@ -0,0 +1,150 @@
asoundrc_aloop = """# ------------------------------------------------------
# Custom asoundrc file for use with snd-aloop and JACK
#
# use it like this:
# env JACK_SAMPLE_RATE=44100 JACK_PERIOD_SIZE=1024 alsa_in (...)
#
# ------------------------------------------------------
# playback device
pcm.aloopPlayback {
type dmix
ipc_key 1
ipc_key_add_uid true
slave {
pcm "hw:Loopback,0,0"
format S32_LE
rate {
@func igetenv
vars [ JACK_SAMPLE_RATE ]
default 44100
}
period_size {
@func igetenv
vars [ JACK_PERIOD_SIZE ]
default 1024
}
buffer_size 4096
}
}
# capture device
pcm.aloopCapture {
type dsnoop
ipc_key 2
ipc_key_add_uid true
slave {
pcm "hw:Loopback,0,1"
format S32_LE
rate {
@func igetenv
vars [ JACK_SAMPLE_RATE ]
default 44100
}
period_size {
@func igetenv
vars [ JACK_PERIOD_SIZE ]
default 1024
}
buffer_size 4096
}
}
# duplex device
pcm.aloopDuplex {
type asym
playback.pcm "aloopPlayback"
capture.pcm "aloopCapture"
}
# ------------------------------------------------------
# default device
pcm.!default {
type plug
slave.pcm "aloopDuplex"
}
# ------------------------------------------------------
# alsa_in -j alsa_in -dcloop -q 1
pcm.cloop {
type dsnoop
ipc_key 3
ipc_key_add_uid true
slave {
pcm "hw:Loopback,1,0"
channels 2
format S32_LE
rate {
@func igetenv
vars [ JACK_SAMPLE_RATE ]
default 44100
}
period_size {
@func igetenv
vars [ JACK_PERIOD_SIZE ]
default 1024
}
buffer_size 32768
}
}
# ------------------------------------------------------
# alsa_out -j alsa_out -dploop -q 1
pcm.ploop {
type plug
slave.pcm "hw:Loopback,1,1"
}"""
asoundrc_jack = """pcm.!default {
type plug
slave { pcm "jack" }
}
pcm.jack {
type jack
playback_ports {
0 system:playback_1
1 system:playback_2
}
capture_ports {
0 system:capture_1
1 system:capture_2
}
}
ctl.mixer0 {
type hw
card 0
}"""
asoundrc_pulse = (""
"pcm.!default {\n"
" type plug\n"
" slave { pcm \"pulse\" }\n"
"}\n"
"\n"
"pcm.pulse {\n"
" type pulse\n"
"}\n"
"\n"
"ctl.mixer0 {\n"
" type hw\n"
" card 0\n"
"}")
asoundrc_pulse2 = """pcm.!default {
type plug
slave { pcm "pulse" }
}
pcm.pulse {
type pulse
}
ctl.mixer0 {
type hw
card 0
}"""
print(asoundrc_pulse == asoundrc_pulse2)

View File

@ -21,6 +21,7 @@
import os
import sys
import shutil
from platform import architecture
from PyQt5.QtCore import (
@ -29,8 +30,7 @@ from PyQt5.QtCore import (
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (
QApplication, QDialogButtonBox, QMainWindow, QFrame,
QListWidgetItem, QComboBox, QDialog, QMessageBox,
QFileDialog)
QListWidgetItem, QComboBox, QDialog, QMessageBox)
# Imports (Custom Stuff)
@ -41,6 +41,8 @@ import pulse2jack_tool
import ui_caleson
import ui_caleson_tb_alsa
import ui_pulse_bridge
from asoundrc_strs import (
ASOUNDRC_ALOOP, ASOUNDRC_ALOOP_CHECK, ASOUNDRC_JACK, ASOUNDRC_PULSE)
from shared import (
LINUX, HAIKU, MACOS, WINDOWS, DEBUG, VERSION, getIcon,
CustomMessageBox, setUpSignals)
@ -72,8 +74,8 @@ except:
# Check for PulseAudio and Wine
havePulseAudio = os.path.exists("/usr/bin/pulseaudio")
haveWine = os.path.exists("/usr/bin/regedit")
havePulseAudio = bool(shutil.which('pulseaudio'))
haveWine = bool(shutil.which('regedit'))
if haveWine:
WINEPREFIX = os.getenv("WINEPREFIX")
@ -148,144 +150,6 @@ iJackPortNewName = 5
iJackPortFlags = 5
iJackPortType = 6
asoundrc_aloop = (""
"# ------------------------------------------------------\n"
"# Custom asoundrc file for use with snd-aloop and JACK\n"
"#\n"
"# use it like this:\n"
"# env JACK_SAMPLE_RATE=44100 JACK_PERIOD_SIZE=1024 alsa_in (...)\n"
"#\n"
"\n"
"# ------------------------------------------------------\n"
"# playback device\n"
"pcm.aloopPlayback {\n"
" type dmix\n"
" ipc_key 1\n"
" ipc_key_add_uid true\n"
" slave {\n"
" pcm \"hw:Loopback,0,0\"\n"
" format S32_LE\n"
" rate {\n"
" @func igetenv\n"
" vars [ JACK_SAMPLE_RATE ]\n"
" default 44100\n"
" }\n"
" period_size {\n"
" @func igetenv\n"
" vars [ JACK_PERIOD_SIZE ]\n"
" default 1024\n"
" }\n"
" buffer_size 4096\n"
" }\n"
"}\n"
"\n"
"# capture device\n"
"pcm.aloopCapture {\n"
" type dsnoop\n"
" ipc_key 2\n"
" ipc_key_add_uid true\n"
" slave {\n"
" pcm \"hw:Loopback,0,1\"\n"
" format S32_LE\n"
" rate {\n"
" @func igetenv\n"
" vars [ JACK_SAMPLE_RATE ]\n"
" default 44100\n"
" }\n"
" period_size {\n"
" @func igetenv\n"
" vars [ JACK_PERIOD_SIZE ]\n"
" default 1024\n"
" }\n"
" buffer_size 4096\n"
" }\n"
"}\n"
"\n"
"# duplex device\n"
"pcm.aloopDuplex {\n"
" type asym\n"
" playback.pcm \"aloopPlayback\"\n"
" capture.pcm \"aloopCapture\"\n"
"}\n"
"\n"
"# ------------------------------------------------------\n"
"# default device\n"
"pcm.!default {\n"
" type plug\n"
" slave.pcm \"aloopDuplex\"\n"
"}\n"
"\n"
"# ------------------------------------------------------\n"
"# alsa_in -j alsa_in -dcloop -q 1\n"
"pcm.cloop {\n"
" type dsnoop\n"
" ipc_key 3\n"
" ipc_key_add_uid true\n"
" slave {\n"
" pcm \"hw:Loopback,1,0\"\n"
" channels 2\n"
" format S32_LE\n"
" rate {\n"
" @func igetenv\n"
" vars [ JACK_SAMPLE_RATE ]\n"
" default 44100\n"
" }\n"
" period_size {\n"
" @func igetenv\n"
" vars [ JACK_PERIOD_SIZE ]\n"
" default 1024\n"
" }\n"
" buffer_size 32768\n"
" }\n"
"}\n"
"\n"
"# ------------------------------------------------------\n"
"# alsa_out -j alsa_out -dploop -q 1\n"
"pcm.ploop {\n"
" type plug\n"
" slave.pcm \"hw:Loopback,1,1\"\n"
"}")
asoundrc_aloop_check = asoundrc_aloop.split("pcm.aloopPlayback", 1)[0]
asoundrc_jack = (""
"pcm.!default {\n"
" type plug\n"
" slave { pcm \"jack\" }\n"
"}\n"
"\n"
"pcm.jack {\n"
" type jack\n"
" playback_ports {\n"
" 0 system:playback_1\n"
" 1 system:playback_2\n"
" }\n"
" capture_ports {\n"
" 0 system:capture_1\n"
" 1 system:capture_2\n"
" }\n"
"}\n"
"\n"
"ctl.mixer0 {\n"
" type hw\n"
" card 0\n"
"}")
asoundrc_pulse = (""
"pcm.!default {\n"
" type plug\n"
" slave { pcm \"pulse\" }\n"
"}\n"
"\n"
"pcm.pulse {\n"
" type pulse\n"
"}\n"
"\n"
"ctl.mixer0 {\n"
" type hw\n"
" card 0\n"
"}")
# ---------------------------------------------------------------------
def get_architecture():
@ -595,7 +459,7 @@ class ToolBarAlsaAudioDialog(QDialog):
with open(self.asoundrcFile, "w") as asoundrcFd:
asoundrcFd.write(
asoundrc_aloop.replace(
ASOUNDRC_ALOOP.replace(
"channels 2\n", "channels %i\n" % channels) + "\n")
def done(self, r):
@ -1328,7 +1192,7 @@ class CalesonMainW(QMainWindow):
asoundrcRead = asoundrcFd.read().strip()
asoundrcFd.close()
if asoundrcRead.startswith(asoundrc_aloop_check):
if asoundrcRead.startswith(ASOUNDRC_ALOOP_CHECK):
if isAlsaAudioBridged():
self.ui.b_alsa_start.setEnabled(False)
self.ui.b_alsa_stop.setEnabled(True)
@ -1351,7 +1215,7 @@ class CalesonMainW(QMainWindow):
self.ui.cb_alsa_type.setCurrentIndex(iAlsaFileLoop)
self.ui.tb_alsa_options.setEnabled(True)
elif asoundrcRead == asoundrc_jack:
elif asoundrcRead == ASOUNDRC_JACK:
self.ui.b_alsa_start.setEnabled(False)
self.ui.b_alsa_stop.setEnabled(False)
self.systray.setActionEnabled("alsa_start", False)
@ -1361,7 +1225,7 @@ class CalesonMainW(QMainWindow):
self.ui.label_bridge_alsa.setText(
self.tr("Using JACK plugin bridge (Always on)"))
elif asoundrcRead == asoundrc_pulse:
elif asoundrcRead == ASOUNDRC_PULSE:
self.ui.b_alsa_start.setEnabled(False)
self.ui.b_alsa_stop.setEnabled(False)
self.systray.setActionEnabled("alsa_start", False)
@ -1688,17 +1552,17 @@ class CalesonMainW(QMainWindow):
elif index == iAlsaFileLoop:
asoundrcFd = open(asoundrcFile, "w")
asoundrcFd.write(asoundrc_aloop+"\n")
asoundrcFd.write(ASOUNDRC_ALOOP+"\n")
asoundrcFd.close()
elif index == iAlsaFileJACK:
asoundrcFd = open(asoundrcFile, "w")
asoundrcFd.write(asoundrc_jack+"\n")
asoundrcFd.write(ASOUNDRC_JACK+"\n")
asoundrcFd.close()
elif index == iAlsaFilePulse:
asoundrcFd = open(asoundrcFile, "w")
asoundrcFd.write(asoundrc_pulse+"\n")
asoundrcFd.write(ASOUNDRC_PULSE+"\n")
asoundrcFd.close()
else:
@ -1894,18 +1758,6 @@ class CalesonMainW(QMainWindow):
@pyqtSlot()
def slot_tweaksApply(self):
if "plugins" in self.settings_changed_types:
for p_dict_key, p_dict in self.plugins_dict.items():
p_dict['paths'].clear()
for i in range(p_dict['widget'].count()):
i_path = p_dict['widget'].item(i).text()
if i_path:
p_dict['paths'].append(i_path)
GlobalSettings.setValue("AudioPlugins/%s_PATH" % p_dict_key,
':'.join(p_dict['paths']))
if "apps" in self.settings_changed_types:
mimeFileContent = ""