@@ -29,6 +29,9 @@ ui_*.py | |||||
src/resources_rc.py | src/resources_rc.py | ||||
qrc_resources*.cpp | qrc_resources*.cpp | ||||
# Translation files | |||||
*.qm | |||||
# Binaries | # Binaries | ||||
c++/jackmeter/cadence-jackmeter | c++/jackmeter/cadence-jackmeter | ||||
c++/xycontroller/cadence-xycontroller | c++/xycontroller/cadence-xycontroller | ||||
@@ -13,6 +13,8 @@ DESTDIR = | |||||
LINK = ln -s | LINK = ln -s | ||||
PYUIC ?= pyuic5 | PYUIC ?= pyuic5 | ||||
PYRCC ?= pyrcc5 | PYRCC ?= pyrcc5 | ||||
PYLUPDATE ?= pylupdate5 | |||||
LRELEASE ?= lrelease | |||||
# Detect X11 rules dir | # Detect X11 rules dir | ||||
ifeq "$(wildcard /etc/X11/Xsession.d/ )" "" | ifeq "$(wildcard /etc/X11/Xsession.d/ )" "" | ||||
@@ -22,8 +24,13 @@ else | |||||
endif | endif | ||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | # ----------------------------------------------------------------------------------------------------------------------------------------- | ||||
# Internationalization | |||||
all: CPP RES UI | |||||
I18N_LANGUAGES := | |||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | |||||
all: CPP RES UI locale | |||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | # ----------------------------------------------------------------------------------------------------------------------------------------- | ||||
# C++ code | # C++ code | ||||
@@ -44,6 +51,13 @@ RES: src/resources_rc.py | |||||
src/resources_rc.py: resources/resources.qrc | src/resources_rc.py: resources/resources.qrc | ||||
$(PYRCC) $< -o $@ | $(PYRCC) $< -o $@ | ||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | |||||
# Translations | |||||
locale: locale/cadence_en.qm locale/cadence_fr.qm | |||||
locale/%.qm: locale/%.ts | |||||
$(LRELEASE) $< -qm $@ | |||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | # ----------------------------------------------------------------------------------------------------------------------------------------- | ||||
# UI code | # UI code | ||||
@@ -77,7 +91,7 @@ src/ui_%.py: resources/ui/%.ui | |||||
clean: | clean: | ||||
$(MAKE) clean -C c++/jackmeter | $(MAKE) clean -C c++/jackmeter | ||||
$(MAKE) clean -C c++/xycontroller | $(MAKE) clean -C c++/xycontroller | ||||
rm -f *~ src/*~ src/*.pyc src/ui_*.py src/resources_rc.py | |||||
rm -f *~ src/*~ src/*.pyc src/ui_*.py src/resources_rc.py resources/locale/*.qm | |||||
# ----------------------------------------------------------------------------------------------------------------------------------------- | # ----------------------------------------------------------------------------------------------------------------------------------------- | ||||
@@ -102,6 +116,7 @@ install: | |||||
install -d $(DESTDIR)$(PREFIX)/share/cadence/pulse2loopback/ | install -d $(DESTDIR)$(PREFIX)/share/cadence/pulse2loopback/ | ||||
install -d $(DESTDIR)$(PREFIX)/share/cadence/icons/ | install -d $(DESTDIR)$(PREFIX)/share/cadence/icons/ | ||||
install -d $(DESTDIR)$(PREFIX)/share/cadence/templates/ | install -d $(DESTDIR)$(PREFIX)/share/cadence/templates/ | ||||
install -d $(DESTDIR)$(PREFIX)/share/cadence/locale/ | |||||
install -d $(X11_RC_DIR) | install -d $(X11_RC_DIR) | ||||
# Install script files and binaries | # Install script files and binaries | ||||
@@ -164,6 +179,12 @@ install: | |||||
# Install main code | # Install main code | ||||
install -m 644 src/*.py $(DESTDIR)$(PREFIX)/share/cadence/src/ | install -m 644 src/*.py $(DESTDIR)$(PREFIX)/share/cadence/src/ | ||||
# Install translations | |||||
install -m 644 locale/*.qm $(DESTDIR)$(PREFIX)/share/cadence/locale/ | |||||
# compile python files | |||||
python3 -m compileall $(DESTDIR)$(PREFIX)/share/cadence/src/ | |||||
# Install addtional stuff for Cadence | # Install addtional stuff for Cadence | ||||
install -m 644 data/pulse2jack/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2jack/ | install -m 644 data/pulse2jack/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2jack/ | ||||
install -m 644 data/pulse2loopback/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2loopback/ | install -m 644 data/pulse2loopback/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2loopback/ | ||||
@@ -43,38 +43,66 @@ else | |||||
fi | fi | ||||
# ---------------------------------------------- | # ---------------------------------------------- | ||||
wanted_capture_ports=0 # -1 means default | |||||
wanted_playback_ports=0 # -1 means default | |||||
PLAY_ONLY="no" | |||||
arg_is_for="" | |||||
case $1 in | |||||
-h|--h|--help) | |||||
echo "usage: $0 [command] | |||||
for arg in "$@";do | |||||
case "$arg" in | |||||
-h|--h|--help) | |||||
echo "usage: $0 [command] | |||||
-p Playback only with default number of channels | |||||
-p <NUMBER> Number of playback channels | |||||
-c Capture only with default number of channels | |||||
-c <NUMBER> Number of capture channels | |||||
-p, --play Playback mode only | |||||
-h, --help Show this help menu | |||||
--dummy Don't do anything, just create the needed files | |||||
-h, --help Show this help menu | |||||
--dummy Don't do anything, just create the needed files | |||||
NOTE: | |||||
When runned with no arguments, $(basename "$0") will | |||||
activate PulseAudio with both playback and record modes with default number of channels. | |||||
" | |||||
exit | |||||
;; | |||||
--dummy) | |||||
exit | |||||
;; | |||||
-c|--capture) | |||||
arg_is_for="capture" | |||||
wanted_capture_ports=-1 # -1 means default, if no (correct) argument is given. | |||||
;; | |||||
-p|--play|--playback) | |||||
arg_is_for="playback" | |||||
wanted_playback_ports=-1 | |||||
;; | |||||
* ) | |||||
case "$arg_is_for" in | |||||
"capture") | |||||
[ "$arg" -ge 0 ] 2>/dev/null && wanted_capture_ports="$arg" | |||||
;; | |||||
"playback") | |||||
[ "$arg" -ge 0 ] 2>/dev/null && wanted_playback_ports="$arg" | |||||
;; | |||||
esac | |||||
;; | |||||
esac | |||||
done | |||||
NOTE: | |||||
When runned with no arguments, pulse2jack will | |||||
activate PulseAudio with both playback and record modes. | |||||
" | |||||
exit | |||||
;; | |||||
--dummy) | |||||
exit | |||||
;; | |||||
if [ $wanted_capture_ports == 0 ] && [ $wanted_playback_ports == 0 ];then | |||||
#no sense to want to start/bridge pulseaudio without ports, set as default | |||||
capture_ports=-1 # -1 means default | |||||
playback_ports=-1 # -1 means default | |||||
fi | |||||
-p|--p|--play) | |||||
PLAY_ONLY="yes" | |||||
FILE=$INSTALL_PREFIX/share/cadence/pulse2jack/play.pa | |||||
;; | |||||
str_capture="channels=$wanted_capture_ports" #used for pulseaudio commands | |||||
str_playback="channels=$wanted_playback_ports" ## | |||||
*) | |||||
FILE=$INSTALL_PREFIX/share/cadence/pulse2jack/play+rec.pa | |||||
;; | |||||
esac | |||||
[ $wanted_capture_ports == -1 ] && str_capture="" # -1 means default, no command channels=n | |||||
[ $wanted_playback_ports == -1 ] && str_playback="" ## | |||||
# ---------------------------------------------- | # ---------------------------------------------- | ||||
@@ -88,40 +116,166 @@ IsPulseAudioRunning() | |||||
fi | fi | ||||
} | } | ||||
if (IsPulseAudioRunning); then | |||||
StartBridged() | |||||
{ | { | ||||
if (`jack_lsp | grep "PulseAudio JACK Sink:" > /dev/null`); then | |||||
{ | |||||
echo "PulseAudio is already running and bridged to JACK" | |||||
} | |||||
#write pulseaudio config file in a tmp file | |||||
pa_file=$(mktemp --suffix .pa) | |||||
echo .fail > $pa_file | |||||
### Automatically restore the volume of streams and devices | |||||
echo load-module module-device-restore >> $pa_file | |||||
echo load-module module-stream-restore >> $pa_file | |||||
echo load-module module-card-restore >> $pa_file | |||||
### Load Jack modules | |||||
[ $wanted_capture_ports != 0 ] && echo load-module module-jack-source $str_capture >> $pa_file | |||||
[ $wanted_playback_ports != 0 ] && echo load-module module-jack-sink $str_playback >> $pa_file | |||||
### Load unix protocol | |||||
echo load-module module-native-protocol-unix >> $pa_file | |||||
### Automatically restore the default sink/source when changed by the user | |||||
### during runtime | |||||
### NOTE: This should be loaded as early as possible so that subsequent modules | |||||
### that look up the default sink/source get the right value | |||||
echo load-module module-default-device-restore >> $pa_file | |||||
### Automatically move streams to the default sink if the sink they are | |||||
### connected to dies, similar for sources | |||||
echo load-module module-rescue-streams >> $pa_file | |||||
### Make sure we always have a sink around, even if it is a null sink. | |||||
echo load-module module-always-sink >> $pa_file | |||||
### Make Jack default | |||||
[ $wanted_capture_ports != 0 ] && echo set-default-source jack_in >> $pa_file | |||||
[ $wanted_playback_ports != 0 ] && echo set-default-sink jack_out >> $pa_file | |||||
if (`pulseaudio --daemonize --high-priority --realtime --exit-idle-time=-1 --file=$pa_file -n`); then | |||||
echo "Initiated PulseAudio successfully!" | |||||
else | else | ||||
{ | |||||
echo "PulseAudio is already running, bridge it..." | |||||
echo "Failed to initialize PulseAudio!" | |||||
fi | |||||
} | |||||
if [ "$PLAY_ONLY" == "yes" ]; then | |||||
{ | |||||
pactl load-module module-jack-sink > /dev/null | |||||
pacmd set-default-source jack_in > /dev/null | |||||
} | |||||
else | |||||
{ | |||||
pactl load-module module-jack-sink > /dev/null | |||||
pactl load-module module-jack-source > /dev/null | |||||
pacmd set-default-sink jack_out > /dev/null | |||||
killReStart() | |||||
{ | |||||
pulseaudio -k && StartBridged | |||||
exit | |||||
} | |||||
JackNotRunning() | |||||
{ | |||||
echo "JACK seems not running, start JACK before bridge PulseAudio" | |||||
exit 1 | |||||
} | |||||
if (IsPulseAudioRunning); then | |||||
{ | |||||
#count all Jack Audio Physical ports | |||||
all_jack_lsp=$(jack_lsp -p -t) || JackNotRunning | |||||
output_physical_lines=$(echo "$all_jack_lsp"|grep -n "output,physical,"|cut -d':' -f1) | |||||
input_physical_lines=$( echo "$all_jack_lsp"|grep -n "input,physical," |cut -d':' -f1) | |||||
audio_lines=$(echo "$all_jack_lsp" |grep -n " audio"|cut -d':' -f1) | |||||
capture_physical_ports=0 | |||||
playback_physical_ports=0 | |||||
for out_phy_line in $output_physical_lines;do | |||||
if echo "$audio_lines"|grep -q $(($out_phy_line + 1));then | |||||
((capture_physical_ports++)) | |||||
fi | |||||
done | |||||
for in_phy_line in $input_physical_lines;do | |||||
if echo "$audio_lines"|grep -q $(($in_phy_line + 1));then | |||||
((playback_physical_ports++)) | |||||
fi | |||||
done | |||||
#count PulseAudio jack ports | |||||
current_playback_ports=$(echo "$all_jack_lsp"|grep ^"PulseAudio JACK Sink:" |wc -l) | |||||
current_capture_ports=$( echo "$all_jack_lsp"|grep ^"PulseAudio JACK Source:"|wc -l) | |||||
#if number of pulseaudio ports equal to physical ports, consider pulseaudio module is running the default mode (no channels=n) | |||||
[ $current_capture_ports == $capture_physical_ports ] && current_capture_ports=-1 | |||||
[ $current_playback_ports == $playback_physical_ports ] && current_playback_ports=-1 | |||||
[ $wanted_capture_ports == $capture_physical_ports ] && wanted_capture_ports=-1 | |||||
[ $wanted_playback_ports == $playback_physical_ports ] && wanted_playback_ports=-1 | |||||
if [ $wanted_capture_ports == $current_capture_ports ] && [ $wanted_playback_ports == $current_playback_ports ];then | |||||
echo "PulseAudio is already started and bridged to Jack with $current_capture_ports inputs and $current_playback_ports outputs, nothing to do !" | |||||
exit | |||||
fi | |||||
if [ $current_capture_ports != $wanted_capture_ports ];then | |||||
if [ $current_capture_ports != 0 ];then | |||||
echo "unload PulseAudio JACK Source" | |||||
pactl unload-module module-jack-source > /dev/null || killReStart | |||||
fi | |||||
if [ $wanted_capture_ports != 0 ];then | |||||
echo "load PulseAudio JACK Source $str_capture" | |||||
pactl load-module module-jack-source $str_capture > /dev/null | |||||
pacmd set-default-source jack_in > /dev/null | pacmd set-default-source jack_in > /dev/null | ||||
} | |||||
fi | fi | ||||
echo "Done" | |||||
} | |||||
fi | |||||
if [ $current_playback_ports != $wanted_playback_ports ];then | |||||
if [ $current_playback_ports != 0 ];then | |||||
echo "unload PulseAudio JACK Sink" | |||||
pactl unload-module module-jack-sink > /dev/null || killReStart | |||||
fi | |||||
if [ $wanted_playback_ports != 0 ];then | |||||
echo "load PulseAudio JACK Sink $str_playback" | |||||
pactl load-module module-jack-sink $str_playback > /dev/null | |||||
pactl set-default-sink jack_out > /dev/null | |||||
fi | |||||
fi | fi | ||||
} | } | ||||
else | else | ||||
{ | |||||
if (`pulseaudio --daemonize --high-priority --realtime --exit-idle-time=-1 --file=$FILE -n`); then | |||||
echo "Initiated PulseAudio successfully!" | |||||
else | |||||
echo "Failed to initialize PulseAudio!" | |||||
fi | |||||
{ | |||||
StartBridged | |||||
# #write pulseaudio config file in a tmp file | |||||
# pa_file=$(mktemp --suffix .pa) | |||||
# echo .fail > $pa_file | |||||
# | |||||
# ### Automatically restore the volume of streams and devices | |||||
# echo load-module module-device-restore >> $pa_file | |||||
# echo load-module module-stream-restore >> $pa_file | |||||
# echo load-module module-card-restore >> $pa_file | |||||
# | |||||
# ### Load Jack modules | |||||
# [ $wanted_capture_ports != 0 ] && echo load-module module-jack-source $str_capture >> $pa_file | |||||
# [ $wanted_playback_ports != 0 ] && echo load-module module-jack-sink $str_playback >> $pa_file | |||||
# | |||||
# ### Load unix protocol | |||||
# echo load-module module-native-protocol-unix >> $pa_file | |||||
# | |||||
# ### Automatically restore the default sink/source when changed by the user | |||||
# ### during runtime | |||||
# ### NOTE: This should be loaded as early as possible so that subsequent modules | |||||
# ### that look up the default sink/source get the right value | |||||
# echo load-module module-default-device-restore >> $pa_file | |||||
# | |||||
# ### Automatically move streams to the default sink if the sink they are | |||||
# ### connected to dies, similar for sources | |||||
# echo load-module module-rescue-streams >> $pa_file | |||||
# | |||||
# ### Make sure we always have a sink around, even if it is a null sink. | |||||
# echo load-module module-always-sink >> $pa_file | |||||
# | |||||
# ### Make Jack default | |||||
# [ $wanted_capture_ports != 0 ] && echo set-default-source jack_in >> $pa_file | |||||
# [ $wanted_playback_ports != 0 ] && echo set-default-sink jack_out >> $pa_file | |||||
# | |||||
# if (`pulseaudio --daemonize --high-priority --realtime --exit-idle-time=-1 --file=$pa_file -n`); then | |||||
# echo "Initiated PulseAudio successfully!" | |||||
# else | |||||
# echo "Failed to initialize PulseAudio!" | |||||
# fi | |||||
} | } | ||||
fi | fi |
@@ -0,0 +1,49 @@ | |||||
FORMS += ../resources/ui/cadence_rwait.ui | |||||
FORMS += ../resources/ui/cadence_tb_a2j.ui | |||||
FORMS += ../resources/ui/cadence_tb_alsa.ui | |||||
FORMS += ../resources/ui/cadence_tb_jack.ui | |||||
FORMS += ../resources/ui/cadence_tb_pa.ui | |||||
FORMS += ../resources/ui/cadence.ui | |||||
FORMS += ../resources/ui/catarina_addgroup.ui | |||||
FORMS += ../resources/ui/catarina_addport.ui | |||||
FORMS += ../resources/ui/catarina_connectports.ui | |||||
FORMS += ../resources/ui/catarina_disconnectports.ui | |||||
FORMS += ../resources/ui/catarina_removegroup.ui | |||||
FORMS += ../resources/ui/catarina_removeport.ui | |||||
FORMS += ../resources/ui/catarina_renamegroup.ui | |||||
FORMS += ../resources/ui/catarina_renameport.ui | |||||
FORMS += ../resources/ui/catarina.ui | |||||
FORMS += ../resources/ui/catia.ui | |||||
FORMS += ../resources/ui/claudia_createroom.ui | |||||
FORMS += ../resources/ui/claudia_launcher_app.ui | |||||
FORMS += ../resources/ui/claudia_launcher.ui | |||||
FORMS += ../resources/ui/claudia_projectname.ui | |||||
FORMS += ../resources/ui/claudia_projectproperties.ui | |||||
FORMS += ../resources/ui/claudia_runcustom.ui | |||||
FORMS += ../resources/ui/claudia_studiolist.ui | |||||
FORMS += ../resources/ui/claudia_studioname.ui | |||||
FORMS += ../resources/ui/claudia.ui | |||||
FORMS += ../resources/ui/logs.ui | |||||
FORMS += ../resources/ui/render.ui | |||||
FORMS += ../resources/ui/settings_app.ui | |||||
FORMS += ../resources/ui/settings_jack.ui | |||||
FORMS += ../resources/ui/xycontroller.ui | |||||
SOURCES += ../src/cadence.py | |||||
SOURCES += ../src/cadence_session_start.py | |||||
SOURCES += ../src/catarina.py | |||||
SOURCES += ../src/catia.py | |||||
SOURCES += ../src/claudia_launcher.py | |||||
SOURCES += ../src/claudia.py | |||||
SOURCES += ../src/jacklib_helpers.py | |||||
SOURCES += ../src/jacklib.py | |||||
SOURCES += ../src/jacksettings.py | |||||
SOURCES += ../src/patchcanvas.py | |||||
SOURCES += ../src/render.py | |||||
SOURCES += ../src/shared_cadence.py | |||||
SOURCES += ../src/shared_canvasjack.py | |||||
SOURCES += ../src/shared.py | |||||
SOURCES += ../src/systray.py | |||||
TRANSLATIONS += cadence_en.ts | |||||
TRANSLATIONS += cadence_fr.ts | |||||
@@ -0,0 +1,40 @@ | |||||
#!/bin/bash | |||||
# This is a little script for refresh raysession.pro and update .ts files. | |||||
# TRANSLATOR: You don't need to run it ! | |||||
contents="" | |||||
this_script=`realpath "$0"` | |||||
locale_root=`dirname "$this_script"` | |||||
code_root=`dirname "$locale_root"` | |||||
cd "$code_root/resources/ui/" | |||||
for file in *.ui;do | |||||
contents+="FORMS += ../resources/ui/$file | |||||
" | |||||
done | |||||
# for dir in daemon gui gui/patchcanvas shared;do | |||||
cd "$code_root/src" | |||||
for file in *.py;do | |||||
[[ "$file" =~ ^ui_ ]] && continue | |||||
if cat "$file"|grep -q ".tr(";then | |||||
contents+="SOURCES += ../src/${file} | |||||
" | |||||
fi | |||||
done | |||||
# done | |||||
contents+=" | |||||
TRANSLATIONS += cadence_en.ts | |||||
TRANSLATIONS += cadence_fr.ts | |||||
" | |||||
echo "$contents" > "$locale_root/cadence.pro" | |||||
pylupdate5 "$locale_root/cadence.pro" | |||||
@@ -916,6 +916,13 @@ | |||||
</property> | </property> | ||||
</widget> | </widget> | ||||
</item> | </item> | ||||
<item> | |||||
<widget class="QPushButton" name="b_pulse_channels"> | |||||
<property name="text"> | |||||
<string>Channels</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | <item> | ||||
<spacer name="horizontalSpacer_13"> | <spacer name="horizontalSpacer_13"> | ||||
<property name="orientation"> | <property name="orientation"> | ||||
@@ -956,13 +963,6 @@ | |||||
</property> | </property> | ||||
</widget> | </widget> | ||||
</item> | </item> | ||||
<item> | |||||
<widget class="QToolButton" name="tb_pulse_options"> | |||||
<property name="text"> | |||||
<string>...</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | </layout> | ||||
</item> | </item> | ||||
<item> | <item> | ||||
@@ -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"> | ||||
@@ -42,6 +42,7 @@ from shared import getDaemonLockfile | |||||
from shared_cadence import * | from shared_cadence import * | ||||
from shared_canvasjack import * | from shared_canvasjack import * | ||||
from shared_settings import * | from shared_settings import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Import getoutput | # Import getoutput | ||||
@@ -122,10 +123,16 @@ XDG_APPLICATIONS_PATH = [ | |||||
] | ] | ||||
# --------------------------------------------------------------------- | # --------------------------------------------------------------------- | ||||
class PulseAudioJackBridgeValues(object): | |||||
clientIdCapture = -1 | |||||
clientIdPlayback = -1 | |||||
portCaptureNumber = 0 | |||||
portPlaybackNumber = 0 | |||||
global jackClientIdALSA, jackClientIdPulse | |||||
global jackClientIdALSA | |||||
jackClientIdALSA = -1 | jackClientIdALSA = -1 | ||||
jackClientIdPulse = -1 | |||||
pA_bridge_values = PulseAudioJackBridgeValues() | |||||
# jackdbus indexes | # jackdbus indexes | ||||
iGraphVersion = 0 | iGraphVersion = 0 | ||||
@@ -346,7 +353,8 @@ def isPulseAudioStarted(): | |||||
def isPulseAudioBridged(): | def isPulseAudioBridged(): | ||||
global jackClientIdPulse | global jackClientIdPulse | ||||
return bool(jackClientIdPulse != -1) | |||||
return bool(pA_bridge_values.clientIdCapture != -1 | |||||
or pA_bridge_values.clientIdPlayback != -1) | |||||
def isDesktopFileInstalled(desktop): | def isDesktopFileInstalled(desktop): | ||||
for X_PATH in XDG_APPLICATIONS_PATH: | for X_PATH in XDG_APPLICATIONS_PATH: | ||||
@@ -472,6 +480,9 @@ class CadenceSystemCheck_audioGroup(CadenceSystemCheck): | |||||
self.result = self.tr("No") | self.result = self.tr("No") | ||||
self.moreInfo = None | self.moreInfo = None | ||||
def tr(self, text): | |||||
return app.translate("CadenceSystemCheck_audioGroup", text) | |||||
class CadenceSystemCheck_kernel(CadenceSystemCheck): | class CadenceSystemCheck_kernel(CadenceSystemCheck): | ||||
def __init__(self): | def __init__(self): | ||||
CadenceSystemCheck.__init__(self) | CadenceSystemCheck.__init__(self) | ||||
@@ -515,6 +526,8 @@ class CadenceSystemCheck_kernel(CadenceSystemCheck): | |||||
else: | else: | ||||
self.icon = self.ICON_ERROR | self.icon = self.ICON_ERROR | ||||
self.moreInfo = None | self.moreInfo = None | ||||
def tr(self, text): | |||||
return app.translate("CadenceSystemCheck_kernel", text) | |||||
def initSystemChecks(): | def initSystemChecks(): | ||||
if LINUX: | if LINUX: | ||||
@@ -593,10 +606,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) | ||||
@@ -730,18 +743,24 @@ class ToolBarAlsaAudioDialog(QDialog, ui_cadence_tb_alsa.Ui_Dialog): | |||||
self.close() | self.close() | ||||
# Additional PulseAudio options | # Additional PulseAudio options | ||||
class ToolBarPADialog(QDialog, ui_cadence_tb_pa.Ui_Dialog): | |||||
class PAChannelsDialog(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.parent = parent | |||||
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_updateChannels) | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_setOptions(self): | |||||
GlobalSettings.setValue("Pulse2JACK/PlaybackModeOnly", self.cb_playback_only.isChecked()) | |||||
def slot_updateChannels(self): | |||||
GlobalSettings.setValue("Pulse2JACK/CaptureChannels", self.spinBoxPulseInputs.value()) | |||||
GlobalSettings.setValue("Pulse2JACK/PlaybackChannels", self.spinBoxPulseOutputs.value()) | |||||
if isPulseAudioBridged(): | |||||
self.parent.slot_PulseAudioBridgeStart() | |||||
def done(self, r): | def done(self, r): | ||||
QDialog.done(self, r) | QDialog.done(self, r) | ||||
@@ -753,6 +772,8 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
DBusJackServerStoppedCallback = pyqtSignal() | DBusJackServerStoppedCallback = pyqtSignal() | ||||
DBusJackClientAppearedCallback = pyqtSignal(int, str) | DBusJackClientAppearedCallback = pyqtSignal(int, str) | ||||
DBusJackClientDisappearedCallback = pyqtSignal(int) | DBusJackClientDisappearedCallback = pyqtSignal(int) | ||||
DBusJackPortAppearedCallback = pyqtSignal(int) | |||||
DBusJackPortDisappearedCallback = pyqtSignal(int) | |||||
DBusA2JBridgeStartedCallback = pyqtSignal() | DBusA2JBridgeStartedCallback = pyqtSignal() | ||||
DBusA2JBridgeStoppedCallback = pyqtSignal() | DBusA2JBridgeStoppedCallback = pyqtSignal() | ||||
@@ -1080,6 +1101,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.systray.addMenu("pulse", self.tr("PulseAudio Bridge")) | self.systray.addMenu("pulse", self.tr("PulseAudio Bridge")) | ||||
self.systray.addMenuAction("pulse", "pulse_start", self.tr("Start")) | self.systray.addMenuAction("pulse", "pulse_start", self.tr("Start")) | ||||
self.systray.addMenuAction("pulse", "pulse_stop", self.tr("Stop")) | self.systray.addMenuAction("pulse", "pulse_stop", self.tr("Stop")) | ||||
self.systray.addMenuAction("pulse", "pulse_channels", self.tr("Channels")) | |||||
self.systray.setActionIcon("jack_start", "media-playback-start") | self.systray.setActionIcon("jack_start", "media-playback-start") | ||||
self.systray.setActionIcon("jack_stop", "media-playback-stop") | self.systray.setActionIcon("jack_stop", "media-playback-stop") | ||||
@@ -1090,6 +1112,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.systray.setActionIcon("a2j_stop", "media-playback-stop") | self.systray.setActionIcon("a2j_stop", "media-playback-stop") | ||||
self.systray.setActionIcon("pulse_start", "media-playback-start") | self.systray.setActionIcon("pulse_start", "media-playback-start") | ||||
self.systray.setActionIcon("pulse_stop", "media-playback-stop") | self.systray.setActionIcon("pulse_stop", "media-playback-stop") | ||||
self.systray.setActionIcon("pulse_channels", "audio-card") | |||||
self.systray.connect("jack_start", self.slot_JackServerStart) | self.systray.connect("jack_start", self.slot_JackServerStart) | ||||
self.systray.connect("jack_stop", self.slot_JackServerStop) | self.systray.connect("jack_stop", self.slot_JackServerStop) | ||||
@@ -1100,17 +1123,18 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.systray.connect("a2j_stop", self.slot_A2JBridgeStop) | self.systray.connect("a2j_stop", self.slot_A2JBridgeStop) | ||||
self.systray.connect("pulse_start", self.slot_PulseAudioBridgeStart) | self.systray.connect("pulse_start", self.slot_PulseAudioBridgeStart) | ||||
self.systray.connect("pulse_stop", self.slot_PulseAudioBridgeStop) | self.systray.connect("pulse_stop", self.slot_PulseAudioBridgeStop) | ||||
self.systray.connect("pulse_channels", self.slot_PulseAudioBridgeChannels) | |||||
self.systray.addMenu("tools", self.tr("Tools")) | self.systray.addMenu("tools", self.tr("Tools")) | ||||
self.systray.addMenuAction("tools", "app_catarina", "Catarina") | self.systray.addMenuAction("tools", "app_catarina", "Catarina") | ||||
self.systray.addMenuAction("tools", "app_catia", "Catia") | self.systray.addMenuAction("tools", "app_catia", "Catia") | ||||
self.systray.addMenuAction("tools", "app_claudia", "Claudia") | self.systray.addMenuAction("tools", "app_claudia", "Claudia") | ||||
self.systray.addMenuSeparator("tools", "tools_sep") | self.systray.addMenuSeparator("tools", "tools_sep") | ||||
self.systray.addMenuAction("tools", "app_logs", "Logs") | |||||
self.systray.addMenuAction("tools", "app_meter_in", "Meter (Inputs)") | |||||
self.systray.addMenuAction("tools", "app_meter_out", "Meter (Output)") | |||||
self.systray.addMenuAction("tools", "app_render", "Render") | |||||
self.systray.addMenuAction("tools", "app_xy-controller", "XY-Controller") | |||||
self.systray.addMenuAction("tools", "app_logs", self.tr("Logs")) | |||||
self.systray.addMenuAction("tools", "app_meter_in", self.tr("Meter (Inputs)")) | |||||
self.systray.addMenuAction("tools", "app_meter_out", self.tr("Meter (Output)")) | |||||
self.systray.addMenuAction("tools", "app_render", self.tr("Render")) | |||||
self.systray.addMenuAction("tools", "app_xy-controller", self.tr("XY-Controller")) | |||||
self.systray.addSeparator("sep2") | self.systray.addSeparator("sep2") | ||||
self.systray.connect("app_catarina", self.func_start_catarina) | self.systray.connect("app_catarina", self.func_start_catarina) | ||||
@@ -1144,7 +1168,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.b_a2j_stop.clicked.connect(self.slot_A2JBridgeStop) | self.b_a2j_stop.clicked.connect(self.slot_A2JBridgeStop) | ||||
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.b_pulse_channels.clicked.connect(self.slot_PulseAudioBridgeChannels) | |||||
self.pic_catia.clicked.connect(self.func_start_catia) | self.pic_catia.clicked.connect(self.func_start_catia) | ||||
self.pic_claudia.clicked.connect(self.func_start_claudia) | self.pic_claudia.clicked.connect(self.func_start_claudia) | ||||
@@ -1196,6 +1220,8 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
# org.jackaudio.JackPatchbay | # org.jackaudio.JackPatchbay | ||||
self.DBusJackClientAppearedCallback.connect(self.slot_DBusJackClientAppearedCallback) | self.DBusJackClientAppearedCallback.connect(self.slot_DBusJackClientAppearedCallback) | ||||
self.DBusJackClientDisappearedCallback.connect(self.slot_DBusJackClientDisappearedCallback) | self.DBusJackClientDisappearedCallback.connect(self.slot_DBusJackClientDisappearedCallback) | ||||
self.DBusJackPortAppearedCallback.connect(self.slot_DBusJackPortAppearedCallback) | |||||
self.DBusJackPortDisappearedCallback.connect(self.slot_DBusJackPortDisappearedCallback) | |||||
# org.gna.home.a2jmidid.control | # org.gna.home.a2jmidid.control | ||||
self.DBusA2JBridgeStartedCallback.connect(self.slot_DBusA2JBridgeStartedCallback) | self.DBusA2JBridgeStartedCallback.connect(self.slot_DBusA2JBridgeStartedCallback) | ||||
@@ -1244,23 +1270,26 @@ 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": | |||||
pA_bridge_values.clientIdCapture = group_id | |||||
pA_bridge_values.portCaptureNumber = len(ports) | |||||
elif group_name == "PulseAudio JACK Sink": | elif group_name == "PulseAudio JACK Sink": | ||||
global jackClientIdPulse | |||||
jackClientIdPulse = group_id | |||||
pA_bridge_values.clientIdPlayback = group_id | |||||
pA_bridge_values.portPlaybackNumber = len(ports) | |||||
self.jackStarted() | self.jackStarted() | ||||
else: | else: | ||||
self.jackStopped() | self.jackStopped() | ||||
self.label_jack_realtime.setText("Yes" if jacksettings.isRealtime() else "No") | |||||
self.label_jack_realtime.setText(self.tr("Yes") if jacksettings.isRealtime() else self.tr("No")) | |||||
else: | else: | ||||
self.jackStopped() | self.jackStopped() | ||||
self.label_jack_status.setText("Unavailable") | |||||
self.label_jack_status.setText(self.tr("Unavailable")) | |||||
self.label_jack_status_ico.setPixmap(self.pix_error) | self.label_jack_status_ico.setPixmap(self.pix_error) | ||||
self.label_jack_realtime.setText("Unknown") | |||||
self.label_jack_realtime.setText(self.tr("Unknown")) | |||||
self.label_jack_realtime_ico.setPixmap(self.pix_error) | self.label_jack_realtime_ico.setPixmap(self.pix_error) | ||||
self.groupBox_jack.setEnabled(False) | self.groupBox_jack.setEnabled(False) | ||||
self.groupBox_jack.setTitle("-- jackdbus is not available --") | |||||
self.groupBox_jack.setTitle(self.tr("-- jackdbus is not available --")) | |||||
self.b_jack_start.setEnabled(False) | self.b_jack_start.setEnabled(False) | ||||
self.b_jack_stop.setEnabled(False) | self.b_jack_stop.setEnabled(False) | ||||
self.b_jack_restart.setEnabled(False) | self.b_jack_restart.setEnabled(False) | ||||
@@ -1282,7 +1311,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.toolBox_alsamidi.setEnabled(False) | self.toolBox_alsamidi.setEnabled(False) | ||||
self.cb_a2j_autostart.setChecked(False) | self.cb_a2j_autostart.setChecked(False) | ||||
self.cb_a2j_autoexport.setChecked(False) | self.cb_a2j_autoexport.setChecked(False) | ||||
self.label_bridge_a2j.setText("ALSA MIDI Bridge is not installed") | |||||
self.label_bridge_a2j.setText(self.tr("ALSA MIDI Bridge is not installed")) | |||||
self.settings.setValue("A2J/AutoStart", False) | self.settings.setValue("A2J/AutoStart", False) | ||||
self.updateSystrayTooltip() | self.updateSystrayTooltip() | ||||
@@ -1312,6 +1341,10 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.DBusJackClientAppearedCallback.emit(args[iJackClientId], args[iJackClientName]) | self.DBusJackClientAppearedCallback.emit(args[iJackClientId], args[iJackClientName]) | ||||
elif kwds['member'] == "ClientDisappeared": | elif kwds['member'] == "ClientDisappeared": | ||||
self.DBusJackClientDisappearedCallback.emit(args[iJackClientId]) | self.DBusJackClientDisappearedCallback.emit(args[iJackClientId]) | ||||
elif kwds['member'] == "PortAppeared": | |||||
self.DBusJackPortAppearedCallback.emit(args[iJackClientId]) | |||||
elif kwds['member'] == "PortDisappeared": | |||||
self.DBusJackPortDisappearedCallback.emit(args[iJackClientId]) | |||||
elif kwds['interface'] == "org.gna.home.a2jmidid.control": | elif kwds['interface'] == "org.gna.home.a2jmidid.control": | ||||
if DEBUG: print("org.gna.home.a2jmidid.control", kwds['member']) | if DEBUG: print("org.gna.home.a2jmidid.control", kwds['member']) | ||||
@@ -1331,19 +1364,19 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.systray.setActionEnabled("jack_start", False) | self.systray.setActionEnabled("jack_start", False) | ||||
self.systray.setActionEnabled("jack_stop", True) | self.systray.setActionEnabled("jack_stop", True) | ||||
self.label_jack_status.setText("Started") | |||||
self.label_jack_status.setText(self.tr("Started")) | |||||
self.label_jack_status_ico.setPixmap(self.pix_apply) | self.label_jack_status_ico.setPixmap(self.pix_apply) | ||||
if gDBus.jack.IsRealtime(): | if gDBus.jack.IsRealtime(): | ||||
self.label_jack_realtime.setText("Yes") | |||||
self.label_jack_realtime.setText(self.tr("Yes")) | |||||
self.label_jack_realtime_ico.setPixmap(self.pix_apply) | self.label_jack_realtime_ico.setPixmap(self.pix_apply) | ||||
else: | else: | ||||
self.label_jack_realtime.setText("No") | |||||
self.label_jack_realtime.setText(self.tr("No")) | |||||
self.label_jack_realtime_ico.setPixmap(self.pix_cancel) | self.label_jack_realtime_ico.setPixmap(self.pix_cancel) | ||||
self.label_jack_dsp.setText("%.2f%%" % self.m_last_dsp_load) | self.label_jack_dsp.setText("%.2f%%" % self.m_last_dsp_load) | ||||
self.label_jack_xruns.setText(str(self.m_last_xruns)) | self.label_jack_xruns.setText(str(self.m_last_xruns)) | ||||
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size) | |||||
self.label_jack_bfsize.setText(self.tr("%i samples") % self.m_last_buffer_size) | |||||
self.label_jack_srate.setText("%i Hz" % gDBus.jack.GetSampleRate()) | self.label_jack_srate.setText("%i Hz" % gDBus.jack.GetSampleRate()) | ||||
self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency()) | self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency()) | ||||
@@ -1380,7 +1413,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.systray.setActionEnabled("jack_start", True) | self.systray.setActionEnabled("jack_start", True) | ||||
self.systray.setActionEnabled("jack_stop", False) | self.systray.setActionEnabled("jack_stop", False) | ||||
self.label_jack_status.setText("Stopped") | |||||
self.label_jack_status.setText(self.tr("Stopped")) | |||||
self.label_jack_status_ico.setPixmap(self.pix_cancel) | self.label_jack_status_ico.setPixmap(self.pix_cancel) | ||||
self.label_jack_dsp.setText("---") | self.label_jack_dsp.setText("---") | ||||
@@ -1393,9 +1426,11 @@ 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 | |||||
global jackClientIdALSA | |||||
jackClientIdALSA = -1 | jackClientIdALSA = -1 | ||||
jackClientIdPulse = -1 | |||||
pA_bridge_values.clientIdCapture = -1 | |||||
pA_bridge_values.clientIdPlayback = -1 | |||||
if haveDBus: | if haveDBus: | ||||
self.checkAlsaAudio() | self.checkAlsaAudio() | ||||
@@ -1498,7 +1533,10 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
self.b_pulse_stop.setEnabled(True) | self.b_pulse_stop.setEnabled(True) | ||||
self.systray.setActionEnabled("pulse_start", False) | self.systray.setActionEnabled("pulse_start", False) | ||||
self.systray.setActionEnabled("pulse_stop", True) | self.systray.setActionEnabled("pulse_stop", True) | ||||
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 with %s inputs/%s outputs") | |||||
% (pA_bridge_values.portCaptureNumber, | |||||
pA_bridge_values.portPlaybackNumber)) | |||||
else: | else: | ||||
jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted()) | jackRunning = bool(gDBus.jack and gDBus.jack.IsStarted()) | ||||
self.b_pulse_start.setEnabled(jackRunning) | self.b_pulse_start.setEnabled(jackRunning) | ||||
@@ -1632,19 +1670,44 @@ 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": | |||||
pA_bridge_values.clientIdCapture = group_id | |||||
self.checkPulseAudio() | |||||
elif group_name == "PulseAudio JACK Sink": | elif group_name == "PulseAudio JACK Sink": | ||||
global jackClientIdPulse | |||||
jackClientIdPulse = group_id | |||||
pA_bridge_values.clientIdPlayback = 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 | |||||
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 == pA_bridge_values.clientIdCapture: | |||||
pA_bridge_values.clientIdCapture = -1 | |||||
pA_bridge_values.portCaptureNumber = 0 | |||||
self.checkPulseAudio() | |||||
elif group_id == pA_bridge_values.clientIdPlayback: | |||||
pA_bridge_values.clientIdPlayback = -1 | |||||
pA_bridge_values.portPlaybackNumber = 0 | |||||
self.checkPulseAudio() | |||||
@pyqtSlot(int) | |||||
def slot_DBusJackPortAppearedCallback(self, group_id): | |||||
if group_id == pA_bridge_values.clientIdCapture: | |||||
pA_bridge_values.portCaptureNumber+=1 | |||||
self.checkPulseAudio() | |||||
elif group_id == pA_bridge_values.clientIdPlayback: | |||||
pA_bridge_values.portPlaybackNumber+=1 | |||||
self.checkPulseAudio() | |||||
@pyqtSlot(int) | |||||
def slot_DBusJackPortDisappearedCallback(self, group_id): | |||||
if group_id == pA_bridge_values.clientIdCapture: | |||||
pA_bridge_values.portCaptureNumber+=1 | |||||
self.checkPulseAudio() | |||||
elif group_id == pA_bridge_values.clientIdPlayback: | |||||
pA_bridge_values.portPlaybackNumber+=1 | |||||
self.checkPulseAudio() | self.checkPulseAudio() | ||||
@pyqtSlot() | @pyqtSlot() | ||||
@@ -1770,7 +1833,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
asoundrcFd.close() | asoundrcFd.close() | ||||
else: | else: | ||||
print("Cadence::AlsaBridgeChanged(%i) - invalid index" % index) | |||||
print(self.tr("Cadence::AlsaBridgeChanged(%i) - invalid index") % index) | |||||
self.checkAlsaAudio() | self.checkAlsaAudio() | ||||
@@ -1800,18 +1863,18 @@ 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): | ||||
os.system("pulseaudio -k") | os.system("pulseaudio -k") | ||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_PulseAudioBridgeOptions(self): | |||||
ToolBarPADialog(self).exec_() | |||||
def slot_PulseAudioBridgeChannels(self): | |||||
PAChannelsDialog(self).exec_() | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_handleCrash_jack(self): | def slot_handleCrash_jack(self): | ||||
@@ -2340,7 +2403,7 @@ class CadenceMainW(QMainWindow, ui_cadence.Ui_CadenceMainW): | |||||
if self.m_last_buffer_size != next_buffer_size: | if self.m_last_buffer_size != next_buffer_size: | ||||
self.m_last_buffer_size = next_buffer_size | self.m_last_buffer_size = next_buffer_size | ||||
self.label_jack_bfsize.setText("%i samples" % self.m_last_buffer_size) | |||||
self.label_jack_bfsize.setText(self.tr("%i samples") % self.m_last_buffer_size) | |||||
self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency()) | self.label_jack_latency.setText("%.1f ms" % gDBus.jack.GetLatency()) | ||||
else: | else: | ||||
@@ -2372,6 +2435,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | ||||
setup_i18n() | |||||
if haveDBus: | if haveDBus: | ||||
gDBus.loop = DBusMainLoop(set_as_default=True) | gDBus.loop = DBusMainLoop(set_as_default=True) | ||||
@@ -137,10 +137,10 @@ def startSession(systemStarted, secondSystemStartAttempt): | |||||
# PulseAudio | # PulseAudio | ||||
if GlobalSettings.value("Pulse2JACK/AutoStart", True, type=bool): | 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") | |||||
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))) | |||||
print("JACK Started Successfully") | print("JACK Started Successfully") | ||||
return True | return True | ||||
@@ -42,6 +42,7 @@ import ui_catarina_connectports | |||||
import ui_catarina_disconnectports | import ui_catarina_disconnectports | ||||
from shared_canvasjack import * | from shared_canvasjack import * | ||||
from shared_settings import * | from shared_settings import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Try Import OpenGL | # Try Import OpenGL | ||||
@@ -1307,6 +1308,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/catarina.svg")) | app.setWindowIcon(QIcon(":/scalable/catarina.svg")) | ||||
setup_i18n() | |||||
# Show GUI | # Show GUI | ||||
gui = CatarinaMainW() | gui = CatarinaMainW() | ||||
@@ -22,6 +22,7 @@ | |||||
import ui_catia | import ui_catia | ||||
from shared_canvasjack import * | from shared_canvasjack import * | ||||
from shared_settings import * | from shared_settings import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Try Import DBus | # Try Import DBus | ||||
@@ -737,7 +738,7 @@ class CatiaMainW(AbstractCanvasJackClass): | |||||
self.fGroupList.remove(group) | self.fGroupList.remove(group) | ||||
break | break | ||||
else: | else: | ||||
print("Catia - remove group failed") | |||||
print(self.tr("Catia - remove group failed")) | |||||
return | return | ||||
patchcanvas.removeGroup(groupId) | patchcanvas.removeGroup(groupId) | ||||
@@ -877,7 +878,7 @@ class CatiaMainW(AbstractCanvasJackClass): | |||||
break | break | ||||
else: | else: | ||||
print("Catia - connect jack ports failed") | |||||
print(self.tr("Catia - connect jack ports failed")) | |||||
return -1 | return -1 | ||||
return self.canvas_connectPorts(portOutId, portInId) | return self.canvas_connectPorts(portOutId, portInId) | ||||
@@ -900,7 +901,7 @@ class CatiaMainW(AbstractCanvasJackClass): | |||||
portInId = port[iPortId] | portInId = port[iPortId] | ||||
if portOutId == -1 or portInId == -1: | if portOutId == -1 or portInId == -1: | ||||
print("Catia - disconnect ports failed") | |||||
print(self.tr("Catia - disconnect ports failed")) | |||||
return | return | ||||
self.canvas_disconnectPorts(portOutId, portInId) | self.canvas_disconnectPorts(portOutId, portInId) | ||||
@@ -1384,6 +1385,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/catia.svg")) | app.setWindowIcon(QIcon(":/scalable/catia.svg")) | ||||
setup_i18n() | |||||
if jacklib is None: | if jacklib is None: | ||||
QMessageBox.critical(None, app.translate("CatiaMainW", "Error"), app.translate("CatiaMainW", | QMessageBox.critical(None, app.translate("CatiaMainW", "Error"), app.translate("CatiaMainW", | ||||
@@ -42,6 +42,7 @@ import ui_claudia_projectproperties | |||||
import ui_claudia_runcustom | import ui_claudia_runcustom | ||||
from shared_canvasjack import * | from shared_canvasjack import * | ||||
from shared_settings import * | from shared_settings import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Try Import DBus | # Try Import DBus | ||||
@@ -2742,6 +2743,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/claudia.svg")) | app.setWindowIcon(QIcon(":/scalable/claudia.svg")) | ||||
setup_i18n() | |||||
if not haveDBus: | if not haveDBus: | ||||
QMessageBox.critical(None, app.translate("ClaudiaMainW", "Error"), app.translate("ClaudiaMainW", | QMessageBox.critical(None, app.translate("ClaudiaMainW", "Error"), app.translate("ClaudiaMainW", | ||||
@@ -24,32 +24,42 @@ USING_KXSTUDIO = False | |||||
list_DAW = [ | list_DAW = [ | ||||
# Package AppName Type Binary Icon Template? Level (L, D, L, V, VST-Mode, T, M, MIDI-Mode) (doc-file, website) | # Package AppName Type Binary Icon Template? Level (L, D, L, V, VST-Mode, T, M, MIDI-Mode) (doc-file, website) | ||||
[ "ardour4", "Ardour 4", "DAW", "ardour4", "ardour", TEMPLATE_NO, LEVEL_JS, (1, 0, 1, 1, "Native", 1, 1, "JACK"), ("", "http://www.ardour.org/") ], | |||||
[ "ardour", "Ardour 6", "DAW", "ardour", "/usr/share/pixmaps/ardour.svg", TEMPLATE_NO, LEVEL_NSM, (1, 0, 1, 0, "Native", 1, 1, "JACK"), ("", "http://www.ardour.org/") ], | |||||
[ "ariamaestosa", "Aria Maestosa", "MIDI Sequencer", "Aria", "aria", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "ALSA | JACK"), ("", "http://ariamaestosa.sf.net/") ], | |||||
[ "ariamaestosa", "Aria Maestosa", "MIDI Sequencer", "Aria", "/usr/share/Aria/aria64.png", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "ALSA | JACK"), ("", "http://ariamaestosa.sf.net/") ], | |||||
[ "giada", "Giada", "Audio Looper", "giada", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, 0, 1, "Native", 0, 0, ""), ("", "http://www.monocasual.com/giada/") ], | |||||
[ "giada", "Giada", "Audio Looper", "giada", "giada", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 0, ""), ("", "http://www.monocasual.com/giada/") ], | |||||
[ "hydrogen", "Hydrogen", "Drum Sequencer", "hydrogen -d jack", "h2-icon", TEMPLATE_YES, LEVEL_JS, (1, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("file:///usr/share/hydrogen/data/doc/manual_en.html.upstream", "http://www.hydrogen-music.org/") ], | |||||
[ "hydrogen", "Hydrogen", "Drum Sequencer", "hydrogen -d jack", "/usr/share/icons/hicolor/scalable/apps/org.hydrogenmusic.Hydrogen.svg", TEMPLATE_YES, LEVEL_NSM, (1, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("file:///usr/share/hydrogen/data/doc/manual_en.html", "http://www.hydrogen-music.org/") ], | |||||
[ "jacker", "Jacker", "MIDI Tracker", "jacker", "jacker", TEMPLATE_YES, LEVEL_0, (0, 0, 0, 0, "", 1, 1, "JACK"), ("", "https://bitbucket.org/paniq/jacker/wiki/Home") ], | [ "jacker", "Jacker", "MIDI Tracker", "jacker", "jacker", TEMPLATE_YES, LEVEL_0, (0, 0, 0, 0, "", 1, 1, "JACK"), ("", "https://bitbucket.org/paniq/jacker/wiki/Home") ], | ||||
[ "lmms", "LMMS", "DAW", "lmms", "lmms", TEMPLATE_YES, LEVEL_0, (1, 0, 0, 1, "Windows", 0, 1, "ALSA"), ("file:///usr/share/kxstudio/docs/LMMS_UserManual_0.4.12.1.pdf", "http://lmms.sf.net/") ], | |||||
[ "klystrack", "Klystrack", "Chiptune Tracker", "klystrack", "klystrack", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 0, "----"), ("", "http://kometbomb.github.io/klystrack/") ], | |||||
[ "muse", "MusE", "DAW", "muse", "muse", TEMPLATE_YES, LEVEL_0, (1, 1, 0, 1, "Native", 1, 1, "ALSA + JACK"), ("file:///usr/share/doc/muse/html/window_ref.html", "http://www.muse-sequencer.org/") ], | |||||
[ "lmms", "LMMS", "DAW", "lmms", "lmms", TEMPLATE_YES, LEVEL_0, (1, 0, 0, 1, "Windows", 0, 1, "ALSA"), ("", "http://lmms.sf.net/") ], | |||||
[ "musescore", "MuseScore", "MIDI Composer", "mscore", "mscore", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("file:///usr/share/kxstudio/docs/MuseScore-en.pdf", "http://www.musescore.org/") ], | |||||
[ "milkytracker", "MilkyTracker", "Tracker", "milkytracker", "milkytracker", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "ALSA"), ("", "https://milkytracker.org/") ], | |||||
[ "muse", "MusE", "DAW", "muse", "muse_icon", TEMPLATE_YES, LEVEL_0, (1, 1, 0, 1, "Native", 1, 1, "ALSA + JACK"), ("", "http://www.muse-sequencer.org/") ], | |||||
[ "musescore3", "MuseScore 3", "MIDI Composer", "mscore3", "mscore3", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("", "http://www.musescore.org/") ], | |||||
[ "non-sequencer", "Non-Sequencer", "MIDI Sequencer", "non-sequencer", "non-sequencer", TEMPLATE_YES, LEVEL_NSM, (0, 0, 0, 0, "", 1, 1, "JACK"), ("file:///usr/share/doc/non-sequencer/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Sequencer") ], | [ "non-sequencer", "Non-Sequencer", "MIDI Sequencer", "non-sequencer", "non-sequencer", TEMPLATE_YES, LEVEL_NSM, (0, 0, 0, 0, "", 1, 1, "JACK"), ("file:///usr/share/doc/non-sequencer/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Sequencer") ], | ||||
[ "non-timeline", "Non-Timeline", "DAW", "non-timeline", "non-timeline", TEMPLATE_YES, LEVEL_NSM, (0, 0, 0, 0, "", 1, 0, "CV + OSC"), ("file:///usr/share/doc/non-timeline/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Timeline") ], | [ "non-timeline", "Non-Timeline", "DAW", "non-timeline", "non-timeline", TEMPLATE_YES, LEVEL_NSM, (0, 0, 0, 0, "", 1, 0, "CV + OSC"), ("file:///usr/share/doc/non-timeline/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Timeline") ], | ||||
[ "protrekkr", "ProTrekkr", "Tracker", "protrekkr", "protrekkr", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 1, "", 0, 1, "ALSA"), ("", "https://code.google.com/p/protrekkr/") ], | [ "protrekkr", "ProTrekkr", "Tracker", "protrekkr", "protrekkr", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 1, "", 0, 1, "ALSA"), ("", "https://code.google.com/p/protrekkr/") ], | ||||
[ "qtractor", "Qtractor", "DAW", "qtractor", "qtractor", TEMPLATE_YES, LEVEL_1, (1, 1, 1, 1, "Native", 1, 1, "ALSA"), ("file:///usr/share/kxstudio/docs/qtractor-0.5.x-user-manual.pdf", "http://qtractor.sf.net/") ], | |||||
[ "qtractor", "Qtractor", "DAW", "qtractor", "qtractor", TEMPLATE_YES, LEVEL_1, (1, 1, 1, 1, "Native", 1, 1, "ALSA"), ("", "http://qtractor.sf.net/") ], | |||||
[ "rosegarden", "Rosegarden", "MIDI Sequencer", "rosegarden", "rosegarden", TEMPLATE_YES, LEVEL_1, (1, 1, 0, 0, "", 1, 1, "ALSA"), ("", "http://www.rosegardenmusic.com/") ], | [ "rosegarden", "Rosegarden", "MIDI Sequencer", "rosegarden", "rosegarden", TEMPLATE_YES, LEVEL_1, (1, 1, 0, 0, "", 1, 1, "ALSA"), ("", "http://www.rosegardenmusic.com/") ], | ||||
[ "seq24", "Seq24", "MIDI Sequencer", "seq24", "seq24", TEMPLATE_YES, LEVEL_1, (0, 0, 0, 0, "", 1, 1, "ALSA"), ("file:///usr/share/kxstudio/docs/SEQ24", "http://www.filter24.org/seq24/") ], | |||||
[ "schism", "Schism", "Impulse Tracker clone", "schismtracker", "schism-icon-128", TEMPLATE_YES, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "ALSA"), ("", "http://schismtracker.org/") ], | |||||
[ "seq24", "Seq24", "MIDI Sequencer", "seq24", "seq24", TEMPLATE_YES, LEVEL_1, (0, 0, 0, 0, "", 1, 1, "ALSA"), ("", "http://www.filter24.org/seq24/") ], | |||||
[ "sooperlooper", "SooperLooper", "Audio Looper", "slgui", "sooperlooper", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "JACK"), ("", "http://essej.net/sooperlooper/download.html") ], | |||||
[ "tutka", "Tutka", "MIDI Tracker", "tutka", "tutka", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "JACK"), ("", "http://www.nongnu.org/tutka/") ], | |||||
] | ] | ||||
iDAW_Package, iDAW_AppName, iDAW_Type, iDAW_Binary, iDAW_Icon, iDAW_Template, iDAW_Level, iDAW_Features, iDAW_Docs = range(0, len(list_DAW[0])) | iDAW_Package, iDAW_AppName, iDAW_Type, iDAW_Binary, iDAW_Icon, iDAW_Template, iDAW_Level, iDAW_Features, iDAW_Docs = range(0, len(list_DAW[0])) | ||||
@@ -77,7 +87,9 @@ list_Host = [ | |||||
[ "ingen", "Ingen", "Yes", "Yes", "ingen -eg", "ingen", TEMPLATE_NO, LEVEL_0, (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ], | [ "ingen", "Ingen", "Yes", "Yes", "ingen -eg", "ingen", TEMPLATE_NO, LEVEL_0, (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ], | ||||
[ "jack-rack", "Jack Rack", "No", "Yes", "jack-rack", "jack-rack", TEMPLATE_YES, LEVEL_0, (0, 1, 0, 0, 0, "", "ALSA"), ("", "http://jack-rack.sf.net/") ], | |||||
[ "jack-rack", "Jack Rack", "No", "Yes", "jack-rack", "/usr/share/pixmaps/jack-rack-icon.png", TEMPLATE_YES, LEVEL_0, (0, 1, 0, 0, 0, "", "ALSA"), ("", "http://jack-rack.sf.net/") ], | |||||
[ "jalv.select", "Jalv.select", "No", "No", "jalv.select", "/usr/share/pixmaps/lv2.png", TEMPLATE_YES, LEVEL_0, (0, 0, 0, 1, 0, "", "---"), ("", "https://github.com/brummer10/jalv_select") ], | |||||
[ "mod-app", "MOD App", "Yes", "Yes", "mod-app", "mod", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 1, 0, "", "JACK"), ("", "http://moddevices.com/") ], | [ "mod-app", "MOD App", "Yes", "Yes", "mod-app", "mod", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 1, 0, "", "JACK"), ("", "http://moddevices.com/") ], | ||||
@@ -93,28 +105,102 @@ iHost_Package, iHost_AppName, iHost_Ins, iHost_FX, iHost_Binary, iHost_Icon, iHo | |||||
list_Instrument = [ | list_Instrument = [ | ||||
# Package AppName Type Binary Icon Template? Level (F, I, MIDI-Mode) (doc-file, website) | # Package AppName Type Binary Icon Template? Level (F, I, MIDI-Mode) (doc-file, website) | ||||
[ "add64", "Add64", "Synth", "Add64", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://sourceforge.net/projects/add64/") ], | |||||
[ "6pm", "6 PM", "Synth", "6pm", "6PM-icon", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://sourceforge.net/projects/mv-6pm/") ], | |||||
[ "aeolus", "Aeolus", "Synth", "aeolus -J", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA | JACK"), ("", "http://www.kokkinizita.net/linuxaudio/aeolus/index.html") ], | |||||
[ "add64", "Add64", "Synth", "Add64", "add64", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "https://sourceforge.net/projects/add64/") ], | |||||
[ "azr3-jack", "AZR3", "Synth", "azr3", "azr3", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://ll-plugins.nongnu.org/azr3/") ], | |||||
[ "aeolus", "Aeolus", "Synth", "aeolus -J", "audio-x-generic", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://www.kokkinizita.net/linuxaudio/aeolus/index.html") ], | |||||
[ "amsynth", "AmSynth", "Synth", "amsynth", "amsynth", TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA | JACK"), ("", "http://amsynth.github.io/") ], | |||||
[ "azr3-jack", "AZR3", "Synth", "azr3", "/usr/share/pixmaps/azr3-jack.xpm", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://ll-plugins.nongnu.org/azr3/") ], | |||||
[ "borderlands", "Borderlands", "Sampler", "Borderlands", "borderlands", TEMPLATE_NO, LEVEL_0, (0, 1, "JACK"), ("", "https://ccrma.stanford.edu/~carlsonc/256a/Borderlands/") ], | |||||
[ "coldgaze", "Coldgaze", "Synth", "microSynth", "coldgaze", TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA"), ("", "https://sourceforge.net/projects/coldgaze/") ], | |||||
[ "cursynth", "cursynth", "Synth", "x-terminal-emulator -e cursynth", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA"), ("", "http://www.gnu.org/software/cursynth/") ], | [ "cursynth", "cursynth", "Synth", "x-terminal-emulator -e cursynth", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA"), ("", "http://www.gnu.org/software/cursynth/") ], | ||||
[ "jsampler", "JSampler Fantasia", "Sampler", "jsampler-bin", "jsampler", TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA + JACK"), ("file:///usr/share/kxstudio/docs/jsampler/jsampler.html", "http://www.linuxsampler.org/") ], | |||||
[ "distrho-lv2", "Dexed", "Yamaha DX7 Emulator", "Dexed", "dexed", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "din", "DIN", "Musical Instrument", "din", "din", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://dinisnoise.org/") ], | |||||
[ "drumkv1", "Drumk-V1", "Drum Sampler", "drumkv1_jack", "drumkv1", TEMPLATE_NO, LEVEL_JS, (0, 0, "ALSA | JACK"), ("", "https://drumkv1.sourceforge.io/") ], | |||||
[ "distrho-lv2", "DrumSynth", "Drum synth", "DrumSynth", "drumsynth", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "fabla", "Fabla", "Drum Sampler", "fabla", "fabla", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://openavproductions.com/fabla/") ], | |||||
[ "fabla2", "Fabla 2", "Sampler", "fabla2", "fabla2", TEMPLATE_NO, LEVEL_0, (0, 1, "JACK"), ("", "http://openavproductions.com/fabla2/") ], | |||||
[ "foo-yc20", "Foo YC20", "Organ Synth", "foo-yc20", "/usr/share/foo-yc20/graphics/icon.png", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://foo-yc20.codeforcode.com/") ], | |||||
[ "grandorgue", "GrandOrgue", "Grand Organ Sampler", "GrandOrgue", "/usr/share/pixmaps/GrandOrgue.png", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://sourceforge.net/p/ourorgan/wiki/Home/") ], | |||||
[ "helm", "Helm", "Synth", "helm", "helm_icon_128_1x", TEMPLATE_NO, LEVEL_0, (1, 1, "JACK"), ("", "https://tytel.org/helm/") ], | |||||
[ "hexter", "Hexter", "Synth", "jack-dssi-host hexter.so", "hexter", TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA"), ("", "http://smbolton.com/hexter.html") ], | |||||
[ "horgand", "Horgand", "Synth", "horgand", "horgand128", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://sourceforge.net/projects/horgand.berlios/") ], | |||||
[ "infamous-plugins", "Infamous Cellular Automaton Synth", "Synth", "infamous-casynth", "infamous-casynth", TEMPLATE_NO, LEVEL_0, (0, 1, "JACK"), ("", "http://ssj71.github.io/infamousPlugins/") ], | |||||
[ "jsampler", "JSampler Fantasia", "Sampler", "jsampler-bin", "jsampler", TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA + JACK"), ("file:///usr/share/kxstudio/docs/jsampler/jsampler.html", "http://www.linuxsampler.org/") ], | |||||
[ "distrho-lv2", "Juce Demo Plugin", "Synth", "JuceDemoPlugin", "jucedemoplugin", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "petri-foo", "Petri-Foo", "Sampler", "petri-foo", "petri-foo", TEMPLATE_NO, LEVEL_NSM, (0, 0, "ALSA + JACK"), ("", "http://petri-foo.sf.net/") ], | |||||
[ "dpf-plugins", "Kars", "Virtual Instrument", "Kars", "kars", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/plugins.php") ], | |||||
[ "phasex", "Phasex", "Synth", "phasex", "phasex", TEMPLATE_NO, LEVEL_0, (1, 1, "ALSA"), ("file:///usr/share/phasex/help/parameters.help", "") ], | |||||
[ "dpf-plugins", "Nekobi", "Roland TB-303 Emulator", "Nekobi", "nekobi", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/plugins.php") ], | |||||
[ "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_YES, LEVEL_0, (0, 0, "ALSA + JACK"), ("", "http://qsampler.sf.net/") ], | |||||
[ "distrho-lv2", "TAL Noize Mak3r", "Synth", "NoizeMak3r", "noizemak3r", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, (1, 0, "ALSA | JACK"), ("", "http://qsynth.sf.net/") ], | |||||
[ "distrho-lv2", "Obxd", "Ob-x, ob-xa & ob8 Emulators", "Obxd", "obxd", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "yoshimi", TEMPLATE_NO, LEVEL_1, (1, 0, "ALSA | JACK"), ("", "http://yoshimi.sf.net/") ], | |||||
[ "padthv1", "Padth-V1", "Synth", "padthv1_jack", "padthv1", TEMPLATE_NO, LEVEL_NSM, (0, 0, "ALSA | JACK"), ("", "https://padthv1.sourceforge.io/") ], | |||||
[ "zynaddsubfx", "ZynAddSubFX", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, (1, 0, "ALSA | JACK"), ("", "http://zynaddsubfx.sf.net/") ], | |||||
[ "zynaddsubfx-git", "ZynAddSubFX (GIT)", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, (1, 0, "ALSA | JACK"), ("", "http://zynaddsubfx.sf.net/") ], | |||||
[ "petri-foo", "Petri-Foo", "Sampler", "petri-foo", "petri-foo", TEMPLATE_NO, LEVEL_NSM, (0, 0, "ALSA + JACK"), ("", "http://petri-foo.sf.net/") ], | |||||
[ "phasex", "Phasex", "Synth", "phasex", "phasex", TEMPLATE_NO, LEVEL_0, (1, 1, "ALSA"), ("file:///usr/share/phasex/help/parameters.help", "") ], | |||||
[ "polyphone", "Polyphone", "Sampler", "polyphone", "polyphone", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://www.polyphone-soundfonts.com/") ], | |||||
[ "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_YES, LEVEL_0, (0, 0, "ALSA + JACK"), ("", "http://qsampler.sf.net/") ], | |||||
[ "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, (1, 0, "ALSA | JACK"), ("", "http://qsynth.sf.net/") ], | |||||
[ "samplv1", "Sampl-V1", "Sampler", "samplv1_jack", "samplv1", TEMPLATE_NO, LEVEL_NSM, (0, 0, "ALSA | JACK"), ("", "https://samplv1.sourceforge.io/") ], | |||||
[ "setbfree", "SetBfree", "Organ Emulator", "setBfreeUI", "setBfree", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://setbfree.org/") ], | |||||
[ "sorcer", "Sorcer", "Polyphonic Synth", "sorcer", "sorcer", TEMPLATE_NO, LEVEL_NSM, (0, 0, "JACK"), ("", "http://openavproductions.com/sorcer/") ], | |||||
[ "spectmorph", "Spectmorph", "Morph Synth", "smjack", "smjack", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://www.spectmorph.org/") ], | |||||
[ "stegosaurus", "Stegosaurus", "Analog Drum Synth", "stegosaurus", "stegosaurus", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://www.thunderox.com/") ], | |||||
[ "synthv1", "Synth-V1", "Synth", "synthv1_jack", "synthv1", TEMPLATE_NO, LEVEL_NSM, (0, 0, "ALSA | JACK"), ("", "https://synthv1.sourceforge.io/") ], | |||||
[ "tapeutape", "Tapeutape", "Sampler", "tapeutape", "tapeutape", TEMPLATE_NO, LEVEL_0, (0, 1, "ALSA"), ("", "http://hitmuri.net/index.php/Software/Tapeutape") ], | |||||
[ "triceratops-lv2", "Triceratops", "Polyphonic Synth", "triceratops", "triceratops", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://www.thunderox.com/triceratops.html") ], | |||||
[ "vcvrack", "VCV Rack", "Modular Synth", "vcvrack", "vcvrack", TEMPLATE_NO, LEVEL_0, (0, 0, "---"), ("", "https://vcvrack.com/") ], | |||||
[ "distrho-lv2", "Vex", "Synth", "Vex", "vex", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "whysynth", "Whysynth", "Synth", "whysynth", "whysynth", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://smbolton.com/whysynth.html") ], | |||||
[ "distrho-lv2", "Wolpertinger", "Synth", "Wolpertinger", "/usr/share/pixmaps/wolpertinger.xpm", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "wsynth-dssi", "Wsynth", "WaveTable Synth", "jack-dssi-host wsynth-dssi.so", "wsynth-dssi", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://www.linuxsynths.com/WsynthBanksDemos/wsynth.html") ], | |||||
[ "xsynth-dssi", "Xsynth", "Analog Synth", "jack-dssi-host xsynth-dssi.so", "xsynth-dssi", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://dssi.sourceforge.net/download.html#Xsynth-DSSI") ], | |||||
[ "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "/usr/share/pixmaps/yoshimi.png", TEMPLATE_NO, LEVEL_1, (1, 0, "ALSA | JACK"), ("", "http://yoshimi.sf.net/") ], | |||||
[ "zynaddsubfx", "ZynAddSubFX", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, (1, 0, "ALSA | JACK"), ("", "http://zynaddsubfx.sf.net/") ], | |||||
[ "zynaddsubfx-git", "ZynAddSubFX (GIT)", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, (1, 0, "ALSA | JACK"), ("", "http://zynaddsubfx.sf.net/") ], | |||||
] | ] | ||||
iInstrument_Package, iInstrument_AppName, iInstrument_Type, iInstrument_Binary, iInstrument_Icon, iInstrument_Template, iInstrument_Level, iInstrument_Features, iInstrument_Docs = range(0, len(list_Instrument[0])) | iInstrument_Package, iInstrument_AppName, iInstrument_Type, iInstrument_Binary, iInstrument_Icon, iInstrument_Template, iInstrument_Level, iInstrument_Features, iInstrument_Docs = range(0, len(list_Instrument[0])) | ||||
@@ -179,13 +265,84 @@ iBristol_Package, iBristol_AppName, iBristol_Type, iBristol_ShortName, iBristol_ | |||||
list_Effect = [ | list_Effect = [ | ||||
# Package AppName Type Binary Icon Template? Level (S, MIDI-Mode) (doc, website) | # Package AppName Type Binary Icon Template? Level (S, MIDI-Mode) (doc, website) | ||||
[ "ambdec", "AmbDec", "Ambisonic Decoder", "ambdec", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "") ], | |||||
[ "ambdec", "AmbDec", "Ambisonic Decoder", "ambdec", "ambdec", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "guitarix", "Guitarix", "Guitar FX", "guitarix", "gx_head", TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "http://guitarix.sf.net/") ], | [ "guitarix", "Guitarix", "Guitar FX", "guitarix", "gx_head", TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "http://guitarix.sf.net/") ], | ||||
[ "fogpad-port", "FogPad", "Reverb", "fogpad", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "https://github.com/linuxmao-org/fogpad-port") ], | |||||
[ "freqtweak", "Freqtweak", "FFT-based realtime audio spectral manipulation", "freqtweak", "freqtweak_logo32x18", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://freqtweak.sourceforge.io/") ], | |||||
[ "jamin", "Jamin", "Mastering", "jamin", "jamin", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://jamin.sf.net/") ], | [ "jamin", "Jamin", "Mastering", "jamin", "jamin", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://jamin.sf.net/") ], | ||||
[ "rakarrack", "Rakarrack", "Guitar FX", "rakarrack", "rakarrack", TEMPLATE_NO, LEVEL_0, (1, "ALSA + JACK"), ("file:///usr/share/doc/rakarrack/html/help.html", "http://rakarrack.sf.net") ], | |||||
[ "lsp-plugins", "LSP comp-delay-mono", "Compressor", "lsp-plugins-comp-delay-mono", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "https://lsp-plug.in/") ], | |||||
[ "lsp-plugins", "LSP comp-delay-stereo", "Compressor", "lsp-plugins-comp-delay-stereo", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://lsp-plug.in/") ], | |||||
[ "lsp-plugins", "LSP comp-delay-x2-stereo", "Compressor", "lsp-plugins-comp-delay-x2-stereo", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://lsp-plug.in/") ], | |||||
[ "lsp-plugins", "LSP phase-detector", "Phase Detector", "lsp-plugins-phase-detector", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://lsp-plug.in/") ], | |||||
[ "dpf-plugins", "MVerb", "Reverb Effect", "MVerb", "mverb", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://distrho.sourceforge.io/ports.php") ], | |||||
[ "paulstretch", "PaulStretch", "Extreme Stretch", "paulstretch", "paulstretch", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://hypermammut.sourceforge.net/paulstretch/") ], | |||||
[ "radium-compressor", "Radium Compressor", "Compressor", "radium_compressor", "/usr/share/pixmaps/radium-compressor.xpm", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://users.notam02.no/~kjetism/radium/compressor_plugin.php") ], | |||||
[ "rakarrack", "Rakarrack", "Guitar FX", "rakarrack", "icono_rakarrack_128x128", TEMPLATE_NO, LEVEL_0, (1, "ALSA + JACK"), ("file:///usr/share/doc/rakarrack/html/help.html", "http://rakarrack.sf.net") ], | |||||
[ "tap-reverbed", "Reverbed", "Reverb", "reverbed", "reverbed", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://tap-plugins.sourceforge.net/reverbed.html") ], | |||||
[ "snokoder", "SnoKoder", "Vocoder", "snokoder", "snokoder", TEMPLATE_NO, LEVEL_0, (0, "ALSA"), ("", "https://www.transformate.de/x/pawfaliki.php?page=DownLoads") ], | |||||
[ "x42-plugins", "X42 - Darc", "Compressor", "x42-darc", "x42-darc", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "https://x42-plugins.com/x42/x42-compressor") ], | |||||
[ "x42-plugins", "X42 - Fil4 mono", "4 Bands EQ", "x42-fil4", "x42-fil4", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "https://x42-plugins.com/x42/x42-eq") ], | |||||
[ "x42-plugins", "X42 - Fil4 stéréo", "4 Bands EQ", "x42-fil4 1", "x42-fil4", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "https://x42-plugins.com/x42/x42-eq") ], | |||||
[ "x42-plugins", "X42 - Fat1", "Auto-tuner", "x42-fat1", "x42-fat1", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "https://x42-plugins.com/x42/x42-autotune") ], | |||||
[ "setbfree", "X42 - Whirl", "Leslie Emulator", "x42-whirl", "x42-whirl", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "https://x42-plugins.com/x42/x42-whirl") ], | |||||
[ "zam-plugins", "ZamAutoSat", "Saturator", "ZamAutoSat", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamComp", "Mono Compressor", "ZamComp", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamCompX2", "Stereo Compressor", "ZamCompX2", "zam", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamDelay", "Delay", "ZamDelay", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamDynamicEQ", "Dynamic Mono EQ", "ZamDynamicEQ", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamEQ2", "2 Bands EQ", "ZamEQ2", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamGate", "Mono Gate", "ZamGate", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamGateX2", "Stereo Gate", "ZamGateX2", "zam", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamGEQ31", "31 Bands EQ", "ZamGEQ31", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamHeadX2", "Stereo Enhancer", "ZamHeadX2", "zam", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZaMaximX2", "Maximiser", "ZaMaximX2", "zam", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZaMultiComp", "Mo Multi-Compressor", "ZaMultiComp", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZaMultiCompX2", "St Multi-Compressor", "ZaMultiCompX2", "zam", TEMPLATE_NO, LEVEL_0, (1, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamPhono", "Phono Filters", "ZamPhono", "zam", TEMPLATE_NO, LEVEL_0, (0, "---"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamTube", "Tube Amp Emulator", "ZamTube", "zam", TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zam-plugins", "ZamVerb", "Reverb", "ZamVerb", "zam", TEMPLATE_NO, LEVEL_0, (1, "JACK"), ("", "http://www.zamaudio.com/?p=976") ], | |||||
[ "zita-at1", "Zita-at1", "Auto-tuner", "zita-at1", "zita-at1", TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "zita-rev1", "Zita-rev1", "Reverb", "zita-rev1", "zita-rev1", TEMPLATE_NO, LEVEL_0, (1, "JACK"), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "zita-rev1", "Zita-rev1", "Reverb - Ambisonic", "zita-rev1 -B", "zita-rev1", TEMPLATE_NO, LEVEL_0, (1, "JACK"), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
] | ] | ||||
iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iEffect_Template, iEffect_Level, iEffect_Features, iEffect_Docs = range(0, len(list_Effect[0])) | iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iEffect_Template, iEffect_Level, iEffect_Features, iEffect_Docs = range(0, len(list_Effect[0])) | ||||
@@ -197,69 +354,270 @@ iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iE | |||||
list_Tool = [ | list_Tool = [ | ||||
# Package AppName Type Binary Icon Template? Level (MIDI-M, T) (doc, website) | # Package AppName Type Binary Icon Template? Level (MIDI-M, T) (doc, website) | ||||
[ "aliki", "Aliki (ALSA)", "Impulse Response Measurements Tool", "aliki -a", "aliki_32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "aliki", "Aliki (JACK)", "Impulse Response Measurements Tool", "aliki -j", "aliki_32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | [ "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | ||||
[ "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "") ], | [ "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "") ], | ||||
[ "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://audacity.sf.net/") ], | |||||
[ "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.audacityteam.org/") ], | |||||
[ "cadence", "Cadence", "JACK Toolbox", "cadence", "cadence", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "bitmeter", "Bitmeter", "JACK Diagnotic Tool", "bitmeter", "bitmeter", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "cadence", "Cadence", "JACK Toolbox", "cadence", "cadence", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "cadence-tools", "Cadence XY-Controller", "XY Controller", "cadence-xycontroller", "cadence", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "") ], | [ "cadence-tools", "Cadence XY-Controller", "XY Controller", "cadence-xycontroller", "cadence", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "") ], | ||||
[ "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | [ "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | ||||
[ "carla-control", "Carla OSC Control", "OSC Control", "carla-control", "carla-control", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | [ "carla-control", "Carla OSC Control", "OSC Control", "carla-control", "carla-control", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ], | ||||
[ "drumstick-tools", "Drumstick Virtual Piano", "Virtual Keyboard", "drumstick-vpiano", "drumstick", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://drumstick.sf.net/") ], | |||||
[ "denemo", "Denemo", "Music Notation Editor", "denemo", "denemo", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://denemo.org/") ], | |||||
[ "digitalscratch", "Digital-Scratch", "DJ with time-coded vinyls", "digitalscratch", "digitalscratch-icon_2decks", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://www.digital-scratch.org/") ], | |||||
[ "drumstick-tools", "Drumstick Virtual Piano", "Virtual Keyboard", "drumstick-vpiano", "drumstick", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "https://drumstick.sourceforge.io/") ], | |||||
[ "easytag", "EasyTAG", "Audio File Metadata Management", "easytag", "easytag", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://wiki.gnome.org/Apps/EasyTAG") ], | |||||
[ "etktab", "eTktab", "Music Notation Editor", "eTktab", "eTktab", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://etktab.sourceforge.net/") ], | |||||
[ "ebumeter", "Ebumeter", "EBU-r128 Loudness Indicator", "ebumeter", "ebumeter32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/") ], | |||||
[ "alsa-tools-gui", "Echomixer", "Echoaudio Mixer", "echomixer", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "elektroid", "Elektroid", "Soft for Elektron Devices", "elektroid", "elektroid", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/dagargo/elektroid/") ], | |||||
[ "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "alsa-tools-gui", "Envy24Control", "Ice1712 Mixer", "envy24control", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://alsa.opensrc.org/Envy24control") ], | |||||
[ "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("file:///usr/share/doc/gigedit/gigedit_quickstart.html", "") ], | |||||
[ "audio-recorder", "Audio-recorder", "Audio Recorder", "audio-recorder", "audio-recorder", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://launchpad.net/audio-recorder") ], | |||||
[ "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ], | |||||
[ "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ], | |||||
[ "ffado-mixer-qt4", "FFADO-mixer", "FireWire Audio Interfaces Mixer", "ffado-mixer", "hi64-apps-ffado", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://ffado.org/") ], | |||||
[ "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ], | |||||
[ "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", "fmit", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://gillesdegottex.github.io/fmit/") ], | |||||
[ "frescobaldi", "Frescobaldi", "Music Notation Editor", "frescobaldi", "org.frescobaldi.Frescobaldi", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.frescobaldi.org/") ], | |||||
[ "gdigi", "Gdigi", "Digitech Pedals Control", "gdigi", "gdigi", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://desowin.org/gdigi/") ], | |||||
[ "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("file:///usr/share/doc/gigedit/gigedit_quickstart.html", "") ], | |||||
[ "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://gjacktransport.sourceforge.net/") ], | |||||
[ "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://gjacktransport.sourceforge.net/") ], | |||||
[ "gladish", "Gladish", "LADISH Studio Manager", "gladish", "gladish", TEMPLATE_NO, LEVEL_0, ("JACK | ALSA", 0), ("", "http://ladish.org/") ], | |||||
[ "dpf-plugins", "glBars", "Audio Visualizer", "glBars", "glbars", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "https://distrho.sourceforge.io/plugins.php") ], | |||||
[ "gmidimonitor", "Gmidimonitor (ALSA)", "MIDI-ALSA Monitor", "gmidimonitor --alsa", "gmidimonitor_32x32", TEMPLATE_NO, LEVEL_0, ("JACK | ALSA", 0), ("", "") ], | |||||
[ "gmidimonitor", "Gmidimonitor (JACK)", "MIDI-JACK Monitor", "gmidimonitor --jack", "gmidimonitor_32x32", TEMPLATE_NO, LEVEL_0, ("JACK | ALSA", 0), ("", "") ], | |||||
[ "gwc", "Gtk Wave Cleaner", "Audio File Cleaner", "gtk-wave-cleaner", "gtk-wave-cleaner", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://sourceforge.net/projects/gwc/") ], | |||||
[ "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", "gninjam", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ], | |||||
[ "gtklick", "Gtklick", "Metronome", "gtklick", "gtklick", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://das.nasophon.de/gtklick/") ], | |||||
[ "gxtuner", "Gxtuner", "Instrument Tuner", "gxtuner", "gxtuner", TEMPLATE_NO, LEVEL_JS, ("---", 0), ("", "") ], | |||||
[ "handbrake", "Handbrake", "DVD, Bluray, and other Medias Transcoder", "ghb", "hb-icon", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://handbrake.fr/") ], | |||||
[ "alsa-tools-gui", "HdaJackRetask", "Intel HDA Control", "hdajackretask", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "alsa-tools-gui", "HDSPconf", "HDSP Control", "hdspconf", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "alsa-tools-gui", "HDSPmixer", "HDSP Mixer", "hdspmixer", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "jaaa", "Jaaa-ALSA", "Analyzes/Generates an Audio Signal", "jaaa -A", "jaaa", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "jaaa", "Jaaa-JACK", "Analyzes/Generates an Audio Signal", "jaaa -J", "jaaa", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "jack-capture", "Jack-Capture-GUI", "JACK-Audio Capture GUI", "jack_capture_gui", "jack_capture_gui", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/kmatheussen/jack_capture") ], | |||||
[ "jackeq", "JackEQ", "DJ Console GUI", "jackeq", "/usr/share/pixmaps/logo-jackeq-s.png", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://djcj.org/jackeq/") ], | |||||
[ "jack-keyboard", "Jack Keyboard", "Virtual Keyboard", "jack-keyboard", "jack-keyboard", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("file:///usr/share/kxstudio/docs/jack-keyboard/manual.html", "http://jack-keyboard.sf.net/") ], | [ "jack-keyboard", "Jack Keyboard", "Virtual Keyboard", "jack-keyboard", "jack-keyboard", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("file:///usr/share/kxstudio/docs/jack-keyboard/manual.html", "http://jack-keyboard.sf.net/") ], | ||||
[ "jack-mixer", "Jack Mixer", "Mixer", "jack_mixer", "jack_mixer", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "http://home.gna.org/jackmixer/") ], | |||||
[ "jack-mixer", "Jack Mixer", "Mixer", "jack_mixer", "jack_mixer", TEMPLATE_NO, LEVEL_NSM, ("JACK", 0), ("", "http://home.gna.org/jackmixer/") ], | |||||
[ "jamulus", "Jamulus", "Music Collaboration", "jamulus", "jamulus", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://llcon.sourceforge.net/") ], | |||||
[ "japa", "Japa-ALSA", "Audio Signal Analysis", "japa -A", "japa", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "japa", "Japa-JACK", "Audio Signal Analysis", "japa -J", "japa", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "jkmeter", "Jkmeter", "Audio Level Measurement", "jkmeter", "jkmeter32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "jmeters", "Jmeters", "Multi Canal Audio Level Measurement", "jmeters", "jmeters_32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
# [ "jnoise", "Jnoise", "White & Pink Noise Generation", "jnoise", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "jnoisemeter", "Jnoisemeter", "Test Audio Signal Meter", "jnoisemeter", "jnoisemeter_32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://librazik.tuxfamily.org/doc2/logiciels/jnoisemeter") ], | |||||
[ "kmetronome", "KMetronome", "Metronome", "kmetronome", "kmetronome", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://kmetronome.sf.net/kmetronome.shtml") ], | [ "kmetronome", "KMetronome", "Metronome", "kmetronome", "kmetronome", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://kmetronome.sf.net/kmetronome.shtml") ], | ||||
[ "kmidimon", "KMidimon", "Monitor", "kmidimon", "kmidimon", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://kmidimon.sf.net/") ], | [ "kmidimon", "KMidimon", "Monitor", "kmidimon", "kmidimon", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://kmidimon.sf.net/") ], | ||||
[ "laditools", "LADI Log", "Log Viewer", "ladilog", "ladilog", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "laditools", "LADI Tray", "Session Handler", "laditray", "laditray", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "laditools", "LADI Log", "Log Viewer", "ladi-system-log", "ladi-system-log", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "laditools", "LADI Tray", "Session Handler", "ladi-system-tray", "laditools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "lenmus-all", "Lenmus", "Music Theory Studying", "lenmus", "lenmus", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://www.lenmus.org/en/noticias") ], | |||||
[ "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://lives.sf.net/") ], | |||||
[ "lingot", "Lingot", "Instrument Tuner", "lingot", "org.nongnu.lingot", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://www.nongnu.org/lingot/") ], | |||||
[ "luppp", "Luppp", "Audio Looper", "luppp", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://openavproductions.com/luppp/") ], | |||||
[ "linux-show-player", "Linux Show Player", "Sample player", "linux-show-player", "linuxshowplayer", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "https://www.linux-show-player.org/") ], | |||||
[ "meterbridge", "MeterBridge Classic VU", "VU / Peak Analyzer", "meterbridge -t vu :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge PPM Meter", "VU / Peak Analyzer", "meterbridge -t ppm :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge Digital Peak Meter", "VU / Peak Analyzer", "meterbridge -t dpm -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge 'Jellyfish' Phase Meter", "VU / Peak Analyzer", "meterbridge -t jf -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge Oscilloscope Meter", "VU / Peak Analyzer", "meterbridge -t sco :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://lives.sf.net/") ], | |||||
[ "mhwaveedit", "MhWaveEdit", "Audio Editor", "mhwaveedit", "mhwaveedit", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ], | |||||
[ "luppp", "Luppp", "Audio Looper", "luppp", "luppp", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://openavproductions.com/luppp/") ], | |||||
[ "mixxx", "Mixxx", "DJ", "mixxx", "mixxx", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("file:///usr/share/kxstudio/docs/Mixxx-Manual.pdf", "http://mixxx.sf.net/") ], | |||||
[ "mamba", "Mamba", "Virtual Keyboard", "mamba", "Mamba", TEMPLATE_NO, LEVEL_NSM, ("ALSA", 0), ("", "https://github.com/brummer10/Mamba") ], | |||||
[ "mcpdisp", "MCP Disp", "Mackie Display Emulator", "mcpdisp", "mcpdisp", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/ovenwerks/mcpdisp") ], | |||||
[ "meterbridge", "MeterBridge Classic VU", "VU / Peak Analyzer", "meterbridge -t vu :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge PPM Meter", "VU / Peak Analyzer", "meterbridge -t ppm :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge Digital Peak Meter", "VU / Peak Analyzer", "meterbridge -t dpm -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge 'Jellyfish' Phase Meter", "VU / Peak Analyzer", "meterbridge -t jf -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "meterbridge", "MeterBridge Oscilloscope Meter", "VU / Peak Analyzer", "meterbridge -t sco :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ], | |||||
[ "mhwaveedit", "MhWaveEdit", "Audio Editor", "mhwaveedit", "mhwaveedit", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ], | |||||
[ "mixxx", "Mixxx", "DJ", "mixxx", "mixxx_icon", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://mixxx.sf.net/") ], | |||||
[ "mpk-m2-editor", "MPK M2 Editor", "Editor for MPK M2", "mpk_m2-editor", "mpk-m2-editor", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/PiOverFour/MPK-M2-editor") ], | |||||
[ "mudita24", "Mudita24", "Ice1712 Mixer", "mudita24", "mudita24", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/NielsMayer/mudita24") ], | |||||
[ "nano-basket", "Nano-Basket", "Nano Hardware Management", "nano-basket", "nano-basket", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/royvegard/Nano-Basket") ], | |||||
[ "non-mixer", "Non-Mixer", "Mixer", "non-mixer", "non-mixer", TEMPLATE_NO, LEVEL_0, ("CV", 0), ("file:///usr/share/doc/non-mixer/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Mixer") ], | [ "non-mixer", "Non-Mixer", "Mixer", "non-mixer", "non-mixer", TEMPLATE_NO, LEVEL_0, ("CV", 0), ("file:///usr/share/doc/non-mixer/MANUAL.html", "http://non.tuxfamily.org/wiki/Non%20Mixer") ], | ||||
[ "nootka", "Nootka", "Learn music notation on sheet music", "nootka", "nootka", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://nootka.sourceforge.io/") ], | |||||
[ "patchage", "Patchage", "Patch Bay", "patchage", "patchage", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ], | [ "patchage", "Patchage", "Patch Bay", "patchage", "patchage", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ], | ||||
[ "paulstretch", "PaulStretch", "Extreme Stretch", "paulstretch", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "pd-l2ork", "Pd-L2Ork", "Pure-Data Environnement", "pd-l2ork -rt -audiobuf 20 -inchannels 2 -outchannels 2 -alsamidi -mididev 0 %U", "pd-l2ork", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/") ], | |||||
[ "pianobooster", "Piano Booster", "Piano Teacher", "pianobooster", "pianobooster", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://pianobooster.sourceforge.net/") ], | |||||
[ "playitslowly", "Play it Slowly", "Strech-Player", "playitslowly", "ch.x29a.playitslowly", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://29a.ch/playitslowly/") ], | |||||
[ "dpf-plugins", "ProM", "Music Visualizer", "ProM", "prom", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "https://distrho.sourceforge.io/plugins.php") ], | |||||
[ "qamix", "QAMix", "Mixer", "qamix", "qamix", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "qarecord", "QARecord", "Recorder", "qarecord --jack", "qarecord_48", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "qjackctl", "QJackControl", "JACK Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 1), ("", "https://qjackctl.sourceforge.io/") ], | |||||
[ "qlcplus", "QLCplus", "Light-Show Controller", "qlcplus", "qlcplus", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "https://www.qlcplus.org/") ], | |||||
[ "qlcplus", "Fixture editor for QLC+", "Fixture editor for QLC+", "qlcplus-fixtureeditor", "qlcplus-fixtureeditor", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.qlcplus.org/") ], | |||||
[ "qloud", "Qloud", "Audio measurement tool for JACK", "qloud", "qloud", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://gaydenko.com/qloud/") ], | |||||
[ "qmidiarp", "QMidiArp", "MIDI Arpeggiator", "qmidiarp", "qmidiarp", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 0), ("", "http://qmidiarp.sourceforge.net/") ], | |||||
[ "qmidiroute", "QMidiRoute", "MIDI router & event processor", "qmidiroute", "/usr/share/pixmaps/qmidiroute_32x32.xpm", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "qmidictl", "QmidiCtl", "MIDI controller over the network", "qmidictl", "qmidictl", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://qmidictl.sourceforge.io/") ], | |||||
[ "qmidinet", "QmidiNet", "MIDI Network Gateway", "qmidinet", "qmidinet", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://qmidinet.sourceforge.io/") ], | |||||
[ "qrest", "Qrest", "Calculator for delay, LFO,...", "qrest", "qrest", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "qxgedit", "QXGedit", "XG HardWare Controler", "qxgedit", "qxgedit", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://qxgedit.sourceforge.io/") ], | |||||
[ "raysession", "Ray Session", "NSM Session Manager", "raysession", "raysession", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://github.com/Houston4444/RaySession") ], | |||||
[ "recjack", "RecJack", "Recorder", "recjack", "recjack", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://mein-neues-blog.de/2015/02/07/mein-neues-blog-deb-repository/#recjack") ], | |||||
[ "rezound", "ReZound", "Audio Editor", "rezound", "rezound32", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://rezound.sourceforge.net/") ], | |||||
[ "alsa-tools-gui", "RME Digi Control", "RME Digi Mixer", "rmedigicontrol", "alsa-tools", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "showq", "ShowQ", "Sampler Player", "showq", "showq_32x32", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "shuriken", "Shuriken", "Beat Slicer", "shuriken", "shuriken", TEMPLATE_NO, LEVEL_1, ("JACK+ALSA", 1), ("", "https://rock-hopper.github.io/shuriken/") ], | |||||
[ "simplescreenrecorder", "Simple Screen Recorder", "ScreenCast Recorder", "simplescreenrecorder", "simplescreenrecorder", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.maartenbaert.be/simplescreenrecorder/") ], | |||||
[ "smplayer", "Smplayer", "Multimédia Player", "smplayer", "smplayer", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.smplayer.info/") ], | |||||
[ "solfege", "Solfege", "Ear Training", "solfege", "solfege", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.gnu.org/software/solfege/") ], | |||||
[ "songwrite", "Songwrite 3", "Guitar tablature reader and editor", "songwrite", "songwrite3", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://www.lesfleursdunormal.fr/static/informatique/songwrite/index_en.html") ], | |||||
[ "sonic-visualiser", "Sonic Visualiser", "Signal Visualization and Analysis", "sonic-visualiser", "sv-icon", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "https://sonicvisualiser.org/") ], | |||||
[ "spek", "Spek", "Spectrum Analyzer", "spek", "spek", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://spek.cc/") ], | |||||
[ "stretchplayer", "Stretch Player", "Stretch Player", "stretchplayer", "stretchplayer", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://www.teuton.org/~gabriel/stretchplayer/") ], | |||||
[ "swami", "Swami", "SF2 instruments editor", "swami", "swami", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://www.swamiproject.org/") ], | |||||
[ "tinyeartrainer", "Tiny Ear Trainer", "Ear Training", "tinyeartrainer", "tinyeartrainer", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://29a.ch/tinyeartrainer/") ], | |||||
[ "timemachine", "TimeMachine", "Recorder", "timemachine", "/usr/share/timemachine/pixmaps/timemachine-icon.png", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/timemachine/") ], | |||||
[ "tmlauncher", "TM Launcher", "Recorder", "TMLauncher.py", "TMLauncher", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ], | |||||
[ "tuxguitar", "TuxGuitar", "Guitar Score", "tuxguitar", "tuxguitar", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://www.tuxguitar.com.ar/") ], | |||||
[ "vkeybd", "Virtual Keyboard", "Virtual Keyboard", "vkeybd", "vkeybd", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "https://github.com/tiwai/vkeybd") ], | |||||
[ "vmpk", "Virtual MIDI Piano Keyboard (ALSA)","Virtual Keyboard", "vmpk", "vmpk", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("file:///usr/share/doc/vmpk/help.html", "http://vmpk.sf.net/") ], | |||||
[ "vmpk-jack", "Virtual MIDI Piano Keyboard (JACK)","Virtual Keyboard", "vmpk-jack", "vmpk", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("file:///usr/share/doc/vmpk/help.html", "http://vmpk.sf.net/") ], | |||||
[ "x42-plugins", "X42 - StepSeq", "Step By Step Sequencer", "x42-stepseq", "x42-stepseq", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "https://x42-plugins.com/x42/x42-stepseq-8x8") ], | |||||
[ "x42-plugins", "X42-Meter - EBU R128", "Meter", "x42-meter", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - K20", "Meter", "x42-meter 1", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - K14", "Meter", "x42-meter 2", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - K12", "Meter", "x42-meter 3", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - BBC", "Meter", "x42-meter 4", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - BBC M-6", "Meter", "x42-meter 5", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - DIN", "Meter", "x42-meter 6", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - EBU", "Meter", "x42-meter 7", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Nordic", "Meter", "x42-meter 8", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - VU", "Meter", "x42-meter 9", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - True Peak et RMS", "Meter", "x42-meter 10", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Dynamic Range", "Meter", "x42-meter 11", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Phase Correlation ", "Meter", "x42-meter 12", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Goniometer", "Meter", "x42-meter 13", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Phase Frequency Wheel", "Meter", "x42-meter 14", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - 1/3 Octave Spectrum", "Meter", "x42-meter 15", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Frequency Scope", "Meter", "x42-meter 16", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Distribution Histogram", "Meter", "x42-meter 17", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Bitmeter", "Meter", "x42-meter 18", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42-Meter - Surround Analysor", "Meter", "x42-meter 19", "x42-meters", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-meters") ], | |||||
[ "x42-plugins", "X42 - Mixtri", "Mixer/Trigger Preprocessor", "x42-mixtri", "x42-mixtri", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-mixtrix") ], | |||||
[ "x42-plugins", "X42 - Oscilloscope", "Oscilloscope", "x42-scope", "x42-scope", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-scope") ], | |||||
[ "x42-plugins", "X42 - Tuna", "Instrument Tuner", "x42-tuna", "x42-tuna", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-tuner") ], | |||||
[ "qjackctl", "QJackControl", "JACK Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 1), ("", "") ], | |||||
[ "x42-plugins", "X42 - Tuna - spectral", "Instrument Tuner - spectrum", "x42-tuna 1", "x42-tuna", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "https://x42-plugins.com/x42/x42-tuner") ], | |||||
[ "qamix", "QAMix", "Mixer", "qamix", "qamix", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "qarecord", "QARecord", "Recorder", "qarecord --jack", "qarecord_48", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "qmidiarp", "QMidiArp", "MIDI Arpeggiator", "qmidiarp", generic_midi_icon, TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "") ], | |||||
[ "xjadeo", "XJadeo", "Video Player", "qjadeo", "qjadeo", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://xjadeo.sf.net/") ], | |||||
[ "timemachine", "TimeMachine", "Recorder", "timemachine", "/usr/share/timemachine/pixmaps/timemachine-icon.png", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/timemachine/") ], | |||||
[ "zita-bls1", "Zita-bls1", "Binaural -> stereo signal converter", "zita-bls1", "zita-bls1", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "vmpk", "Virtual MIDI Piano Keyboard (ALSA)","Virtual Keyboard","vmpk", "vmpk", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("file:///usr/share/vmpk/help.html", "http://vmpk.sf.net/") ], | |||||
[ "vmpk-jack", "Virtual MIDI Piano Keyboard (JACK)","Virtual Keyboard","vmpk-jack", "vmpk", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("file:///usr/share/vmpk/help.html", "http://vmpk.sf.net/") ], | |||||
[ "zita-mu1", "Zita-mu1", "Stereo Monitoring Organizer", "zita-mu1", "zita-mu1", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://kokkinizita.linuxaudio.org/linuxaudio/index.html") ], | |||||
[ "xjadeo", "XJadeo", "Video Player", "qjadeo", "qjadeo", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://xjadeo.sf.net/") ], | |||||
] | ] | ||||
iTool_Package, iTool_AppName, iTool_Type, iTool_Binary, iTool_Icon, iTool_Template, iTool_Level, iTool_Features, iTool_Docs = range(0, len(list_Tool[0])) | iTool_Package, iTool_AppName, iTool_Type, iTool_Binary, iTool_Icon, iTool_Template, iTool_Level, iTool_Features, iTool_Docs = range(0, len(list_Tool[0])) | ||||
@@ -34,6 +34,7 @@ else: | |||||
import claudia_database as database | import claudia_database as database | ||||
import ui_claudia_launcher | import ui_claudia_launcher | ||||
from shared import * | from shared import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Imports (Carla) | # Imports (Carla) | ||||
@@ -522,7 +523,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_DAW(self): | def clearInfo_DAW(self): | ||||
self.ico_app_daw.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_daw.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_daw.setText("App Name") | |||||
self.label_name_daw.setText(self.tr("App Name")) | |||||
self.ico_ladspa_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_ladspa_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_dssi_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_dssi_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_lv2_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_lv2_daw.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
@@ -536,7 +537,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Host(self): | def clearInfo_Host(self): | ||||
self.ico_app_host.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_host.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_host.setText("App Name") | |||||
self.label_name_host.setText(self.tr("App Name")) | |||||
self.ico_ladspa_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_ladspa_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_dssi_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_dssi_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_lv2_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_lv2_host.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
@@ -549,7 +550,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Intrument(self): | def clearInfo_Intrument(self): | ||||
self.ico_app_ins.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_ins.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_ins.setText("App Name") | |||||
self.label_name_ins.setText(self.tr("App Name")) | |||||
self.ico_builtin_fx_ins.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_builtin_fx_ins.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_audio_input_ins.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_audio_input_ins.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.label_midi_mode_ins.setText("---") | self.label_midi_mode_ins.setText("---") | ||||
@@ -559,7 +560,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Bristol(self): | def clearInfo_Bristol(self): | ||||
self.ico_app_bristol.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_bristol.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_bristol.setText("App Name") | |||||
self.label_name_bristol.setText(self.tr("App Name")) | |||||
self.ico_builtin_fx_bristol.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_builtin_fx_bristol.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.ico_audio_input_bristol.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_audio_input_bristol.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.label_midi_mode_bristol.setText("---") | self.label_midi_mode_bristol.setText("---") | ||||
@@ -569,7 +570,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Plugin(self): | def clearInfo_Plugin(self): | ||||
self.ico_app_plugin.setPixmap(self.getIcon("lv2").pixmap(48, 48)) | self.ico_app_plugin.setPixmap(self.getIcon("lv2").pixmap(48, 48)) | ||||
self.label_name_plugin.setText("Plugin Name") | |||||
self.label_name_plugin.setText(self.tr("Plugin Name")) | |||||
self.label_plugin_audio_ins.setText("0") | self.label_plugin_audio_ins.setText("0") | ||||
self.label_plugin_audio_outs.setText("0") | self.label_plugin_audio_outs.setText("0") | ||||
self.label_plugin_midi_ins.setText("0") | self.label_plugin_midi_ins.setText("0") | ||||
@@ -581,7 +582,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Effect(self): | def clearInfo_Effect(self): | ||||
self.ico_app_effect.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_effect.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_effect.setText("App Name") | |||||
self.label_name_effect.setText(self.tr("App Name")) | |||||
self.ico_stereo_effect.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | self.ico_stereo_effect.setPixmap(self.getIconForYesNo(False).pixmap(16, 16)) | ||||
self.label_midi_mode_effect.setText("---") | self.label_midi_mode_effect.setText("---") | ||||
self.label_session_level_effect.setText(database.LEVEL_0) | self.label_session_level_effect.setText(database.LEVEL_0) | ||||
@@ -590,7 +591,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): | |||||
def clearInfo_Tool(self): | def clearInfo_Tool(self): | ||||
self.ico_app_tool.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | self.ico_app_tool.setPixmap(self.getIcon("start-here").pixmap(48, 48)) | ||||
self.label_name_tool.setText("App Name") | |||||
self.label_name_tool.setText(self.tr("App Name")) | |||||
self.label_midi_mode_tool.setText("---") | self.label_midi_mode_tool.setText("---") | ||||
self.label_session_level_tool.setText(database.LEVEL_0) | self.label_session_level_tool.setText(database.LEVEL_0) | ||||
self.frame_Tool.setEnabled(False) | self.frame_Tool.setEnabled(False) | ||||
@@ -1357,6 +1358,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/claudia-launcher.svg")) | app.setWindowIcon(QIcon(":/scalable/claudia-launcher.svg")) | ||||
setup_i18n() | |||||
# Do not close on SIGUSR1 | # Do not close on SIGUSR1 | ||||
signal(SIGUSR1, SIG_IGN) | signal(SIGUSR1, SIG_IGN) | ||||
@@ -34,6 +34,7 @@ else: | |||||
# Imports (Custom Stuff) | # Imports (Custom Stuff) | ||||
import ui_settings_jack | import ui_settings_jack | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Try Import DBus | # Try Import DBus | ||||
@@ -934,6 +935,7 @@ if __name__ == '__main__': | |||||
# App initialization | # App initialization | ||||
app = QApplication(sys_argv) | app = QApplication(sys_argv) | ||||
setup_i18n() | |||||
# Connect to DBus | # Connect to DBus | ||||
if dbus: | if dbus: | ||||
@@ -33,6 +33,7 @@ else: | |||||
import ui_logs | import ui_logs | ||||
from shared import * | from shared import * | ||||
from shared_i18n import * | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Fix log text output (get rid of terminal colors stuff) | # Fix log text output (get rid of terminal colors stuff) | ||||
@@ -451,6 +452,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | ||||
setup_i18n() | |||||
# Show GUI | # Show GUI | ||||
gui = LogsW(None) | gui = LogsW(None) | ||||
@@ -33,6 +33,7 @@ else: | |||||
import ui_render | import ui_render | ||||
from shared import * | from shared import * | ||||
from shared_i18n import * | |||||
from jacklib_helpers import * | from jacklib_helpers import * | ||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
@@ -239,7 +240,7 @@ class RenderW(QDialog): | |||||
os.chdir(self.ui.le_folder.text()) | os.chdir(self.ui.le_folder.text()) | ||||
if newBufferSize != int(jacklib.get_buffer_size(self.fJackClient)): | if newBufferSize != int(jacklib.get_buffer_size(self.fJackClient)): | ||||
print("NOTICE: buffer size changed before render") | |||||
print(self.tr("NOTICE: buffer size changed before render")) | |||||
jacklib.set_buffer_size(self.fJackClient, newBufferSize) | jacklib.set_buffer_size(self.fJackClient, newBufferSize) | ||||
if useTransport: | if useTransport: | ||||
@@ -252,7 +253,7 @@ class RenderW(QDialog): | |||||
self.fProcess.waitForStarted() | self.fProcess.waitForStarted() | ||||
if self.fFreewheel: | if self.fFreewheel: | ||||
print("NOTICE: rendering in freewheel mode") | |||||
print(self.tr("NOTICE: rendering in freewheel mode")) | |||||
sleep(1) | sleep(1) | ||||
jacklib.set_freewheel(self.fJackClient, 1) | jacklib.set_freewheel(self.fJackClient, 1) | ||||
@@ -442,6 +443,7 @@ if __name__ == '__main__': | |||||
app.setApplicationVersion(VERSION) | app.setApplicationVersion(VERSION) | ||||
app.setOrganizationName("Cadence") | app.setOrganizationName("Cadence") | ||||
app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | app.setWindowIcon(QIcon(":/scalable/cadence.svg")) | ||||
setup_i18n() | |||||
if jacklib is None: | if jacklib is None: | ||||
QMessageBox.critical(None, app.translate("RenderW", "Error"), app.translate("RenderW", | QMessageBox.critical(None, app.translate("RenderW", "Error"), app.translate("RenderW", | ||||
@@ -156,7 +156,7 @@ class AbstractCanvasJackClass(QMainWindow): | |||||
failed = bool(jacksettings.setBufferSize(bufferSize)) | failed = bool(jacksettings.setBufferSize(bufferSize)) | ||||
if failed: | if failed: | ||||
print("Failed to change buffer-size as %i, reset to %i" % (bufferSize, self.fBufferSize)) | |||||
print(self.tr("Failed to change buffer-size as %i, reset to %i") % (bufferSize, self.fBufferSize)) | |||||
self.ui_setBufferSize(self.fBufferSize, True) | self.ui_setBufferSize(self.fBufferSize, True) | ||||
def jack_setSampleRate(self, sampleRate): | def jack_setSampleRate(self, sampleRate): | ||||
@@ -0,0 +1,49 @@ | |||||
#!/usr/bin/env python3 | |||||
# -*- coding: utf-8 -*- | |||||
# Common/Shared code related to Internationalization | |||||
# Copyright (C) 2019 Filipe Coelho <falktx@falktx.com> | |||||
# | |||||
# This program is free software; you can redistribute it and/or modify | |||||
# it under the terms of the GNU General Public License as published by | |||||
# the Free Software Foundation; either version 2 of the License, or | |||||
# any later version. | |||||
# | |||||
# This program is distributed in the hope that it will be useful, | |||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
# GNU General Public License for more details. | |||||
# | |||||
# For a full copy of the GNU General Public License see the COPYING file | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | |||||
import os, sys | |||||
if True: | |||||
from PyQt5.QtCore import QCoreApplication, QTranslator, QLocale, QLibraryInfo | |||||
else: | |||||
from PyQt4.QtCore import QCoreApplication, QTranslator, QLocale, QLibraryInfo | |||||
def setup_i18n(): | |||||
app = QCoreApplication.instance() | |||||
locale = QLocale() | |||||
syspath = sys.path[0] | |||||
qmpath = os.path.join(syspath, "..", "locale") | |||||
# Load translations from Cadence resources | |||||
translator = QTranslator() | |||||
if not translator.load(locale, "cadence", "_", qmpath): | |||||
return False | |||||
app.installTranslator(translator) | |||||
app.fAppTranslator = translator | |||||
# Load translations from Qt libraries | |||||
translator = QTranslator() | |||||
if not translator.load(locale, "qt", "_", qmpath): | |||||
translator.load(locale, "qt", "_", QLibraryInfo.location(QLibraryInfo.TranslationsPath)) | |||||
app.installTranslator(translator) | |||||
app.fSysTranslator = translator | |||||
return True |
@@ -49,6 +49,8 @@ try: | |||||
except: | except: | ||||
TrayEngine = "Qt" | TrayEngine = "Qt" | ||||
from shared_i18n import * | |||||
print("Using Tray Engine '%s'" % TrayEngine) | print("Using Tray Engine '%s'" % TrayEngine) | ||||
iActNameId = 0 | iActNameId = 0 | ||||
@@ -680,6 +682,7 @@ if __name__ == '__main__': | |||||
QDialog.closeEvent(self, event) | QDialog.closeEvent(self, event) | ||||
app = QApplication(sys.argv) | app = QApplication(sys.argv) | ||||
setup_i18n() | |||||
gui = ExampleGUI() | gui = ExampleGUI() | ||||
gui.show() | gui.show() | ||||
sys.exit(gui.systray.exec_(app)) | sys.exit(gui.systray.exec_(app)) |