Browse Source

Rework claudia-launcher a little, now using carla api for plugins

tags/v0.9.0
falkTX 8 years ago
parent
commit
ccf08808c9
5 changed files with 389 additions and 558 deletions
  1. BIN
      data/icons/claudia-hicolor/16x16/apps/lv2.png
  2. BIN
      data/icons/claudia-hicolor/48x48/apps/lv2.png
  3. +73
    -54
      resources/ui/claudia_launcher.ui
  4. +141
    -208
      src/claudia_database.py
  5. +175
    -296
      src/claudia_launcher.py

BIN
data/icons/claudia-hicolor/16x16/apps/lv2.png View File

Before After
Width: 16  |  Height: 16  |  Size: 580B

BIN
data/icons/claudia-hicolor/48x48/apps/lv2.png View File

Before After
Width: 48  |  Height: 48  |  Size: 1.8KB

+ 73
- 54
resources/ui/claudia_launcher.ui View File

@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>928</width>
<height>469</height>
<height>518</height>
</rect>
</property>
<property name="windowTitle">
@@ -100,11 +100,6 @@
<string>Template?</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
</property>
</column>
</widget>
<widget class="QFrame" name="frame_DAW">
<property name="minimumSize">
@@ -481,11 +476,6 @@
<string>Template?</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
</property>
</column>
</widget>
<widget class="QFrame" name="frame_Host">
<property name="minimumSize">
@@ -844,11 +834,6 @@
<string>Template?</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
</property>
</column>
</widget>
<widget class="QFrame" name="frame_Instrument">
<property name="minimumSize">
@@ -1379,6 +1364,9 @@
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="columnCount">
<number>3</number>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
@@ -1388,11 +1376,6 @@
<attribute name="verticalHeaderDefaultSectionSize">
<number>22</number>
</attribute>
<column>
<property name="text">
<string/>
</property>
</column>
<column>
<property name="text">
<string>Name</string>
@@ -1400,17 +1383,12 @@
</column>
<column>
<property name="text">
<string>Spec</string>
</property>
</column>
<column>
<property name="text">
<string>Type</string>
<string>Author</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
<string>Category</string>
</property>
</column>
</widget>
@@ -1470,33 +1448,53 @@
<item>
<widget class="QGroupBox" name="group_features_plugin">
<property name="title">
<string>Features</string>
<string>Information</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<layout class="QGridLayout" name="gridLayout_11">
<item row="3" column="0">
<item row="2" column="1">
<widget class="QLabel" name="label_plugin_audio_ins">
<property name="text">
<string>#</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_25">
<property name="text">
<string>Stereo:</string>
<string>Audio Inputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="ico_stereo_plugin">
<item row="3" column="0">
<widget class="QLabel" name="label_42">
<property name="text">
<string>ico</string>
<string>Audio Outputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_42">
<widget class="QLabel" name="label">
<property name="text">
<string>MIDI Input:</string>
<string>MIDI Inputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>MIDI Outputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -1504,26 +1502,57 @@
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="ico_midi_input_plugin">
<widget class="QLabel" name="label_plugin_midi_ins">
<property name="text">
<string>ico</string>
<string>#</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label">
<item row="5" column="1">
<widget class="QLabel" name="label_plugin_midi_outs">
<property name="text">
<string>Has Factory Presets:</string>
<string>#</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_plugin_audio_outs">
<property name="text">
<string>#</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Parameter Inputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="ico_presets_plugin">
<item row="7" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>ico</string>
<string>Parameter Outputs:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="label_plugin_parameter_ins">
<property name="text">
<string>#</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="label_plugin_parameter_outs">
<property name="text">
<string>#</string>
</property>
</widget>
</item>
@@ -1678,11 +1707,6 @@
<string>Template?</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
</property>
</column>
</widget>
<widget class="QFrame" name="frame_Effect">
<property name="minimumSize">
@@ -1948,11 +1972,6 @@
<string>Template?</string>
</property>
</column>
<column>
<property name="text">
<string>Release Model</string>
</property>
</column>
</widget>
<widget class="QFrame" name="frame_Tool">
<property name="minimumSize">


+ 141
- 208
src/claudia_database.py View File

@@ -1,9 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# TODO
# - add lv2 plugins

# Package database

generic_audio_icon = "audio-x-generic"
@@ -23,44 +20,44 @@ USING_KXSTUDIO = False
# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# DAW

# (L, D, L, V, VST-Mode, T, M, MIDI-Mode) -> ( LADSPA, DSSI, LV2, VST, VST-Mode, Transport, MIDI, MIDI-Mode)
# (L, D, L, V, VST-Mode, T, M, MIDI-Mode) -> (LADSPA, DSSI, LV2, VST, VST-Mode, Transport, MIDI, MIDI-Mode)

list_DAW = [
# Package AppName Type Binary Icon Template? Level Rel.-Model (L, D, L, V, VST-Mode, T, M, MIDI-Mode) (doc-file, website)
[ "ardour", "Ardour 2.8", "DAW", "ardour2", "ardour", TEMPLATE_YES, LEVEL_0, "OpenSource", (1, 0, 1, 0, "", 1, 0, "ALSA"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],
[ "ardour3", "Ardour 3", "DAW", "ardour3", "ardour", TEMPLATE_YES, LEVEL_JS, "OpenSource", (1, 0, 1, 1, "Native", 1, 1, "JACK"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],
[ "ardour4", "Ardour 4", "DAW", "ardour4", "ardour", TEMPLATE_YES, LEVEL_JS, "OpenSource", (1, 0, 1, 1, "Native", 1, 1, "JACK"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],
# Package AppName Type Binary Icon Template? Level (L, D, L, V, VST-Mode, T, M, MIDI-Mode) (doc-file, website)
[ "ardour", "Ardour 2.8", "DAW", "ardour2", "ardour", TEMPLATE_YES, LEVEL_0, (1, 0, 1, 0, "", 1, 0, "ALSA"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],
[ "ardour3", "Ardour 3", "DAW", "ardour3", "ardour", TEMPLATE_YES, LEVEL_JS, (1, 0, 1, 1, "Native", 1, 1, "JACK"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],
[ "ardour4", "Ardour 4", "DAW", "ardour4", "ardour", TEMPLATE_YES, LEVEL_JS, (1, 0, 1, 1, "Native", 1, 1, "JACK"), ("file:///usr/share/kxstudio/docs/ardour.pdf", "http://www.ardour.org/") ],

[ "ariamaestosa", "Aria Maestosa", "MIDI Sequencer", "Aria", "aria", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, 0, 0, "", 0, 1, "ALSA | JACK"), ("", "http://ariamaestosa.sf.net/") ],
[ "ariamaestosa", "Aria Maestosa", "MIDI Sequencer", "Aria", "aria", 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_YES, LEVEL_0, "OpenSource", (0, 0, 0, 1, "Native", 0, 0, ""), ("", "http://www.monocasual.com/giada/") ],
[ "giada", "Giada", "Audio Looper", "giada", generic_audio_icon, TEMPLATE_YES, LEVEL_0, (0, 0, 0, 1, "Native", 0, 0, ""), ("", "http://www.monocasual.com/giada/") ],

[ "hydrogen", "Hydrogen", "Drum Sequencer", "hydrogen -d jack", "h2-icon", TEMPLATE_YES, LEVEL_JS, "OpenSource", (1, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("file:///usr/share/hydrogen/data/doc/manual_en.html.upstream", "http://www.hydrogen-music.org/") ],
[ "hydrogen-git", "Hydrogen (GIT)", "Drum Sequencer", "hydrogen -d jack", "h2-icon", TEMPLATE_YES, LEVEL_JS, "OpenSource", (1, 0, 0, 0, "", 1, 1, "ALSA | JACK"), ("file:///usr/share/hydrogen/data/doc/manual_en.html.upstream", "http://www.hydrogen-music.org/") ],
[ "hydrogen-svn", "Hydrogen (SVN)", "Drum Sequencer", "hydrogen -d jack", "h2-icon", TEMPLATE_YES, LEVEL_JS, "OpenSource", (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", "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-git", "Hydrogen (GIT)", "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-svn", "Hydrogen (SVN)", "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/") ],

[ "jacker", "Jacker", "MIDI Sequencer", "jacker", "jacker", TEMPLATE_YES, LEVEL_0, "OpenSource", (0, 0, 0, 0, "", 1, 1, "JACK"), ("", "https://bitbucket.org/paniq/jacker/wiki/Home") ],
[ "jacker", "Jacker", "MIDI Sequencer", "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, "OpenSource", (1, 0, 0, 1, "Windows", 0, 1, "ALSA"), ("file:///usr/share/kxstudio/docs/LMMS_UserManual_0.4.12.1.pdf", "http://lmms.sf.net/") ],
[ "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/") ],

[ "muse", "MusE", "DAW", "muse", "muse", TEMPLATE_YES, LEVEL_0, "OpenSource", (1, 1, 0, 1, "Native", 1, 1, "ALSA + JACK"), ("file:///usr/share/doc/muse/html/window_ref.html", "http://www.muse-sequencer.org/") ],
[ "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/") ],

[ "musescore", "MuseScore", "MIDI Composer", "mscore", "mscore", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, 0, 0, "", 0, 1, "ALSA | JACK"), ("file:///usr/share/kxstudio/docs/MuseScore-en.pdf", "http://www.musescore.org/") ],
[ "musescore", "MuseScore", "MIDI Composer", "mscore", "mscore", TEMPLATE_NO, LEVEL_0, (0, 0, 0, 0, "", 0, 1, "ALSA | JACK"), ("file:///usr/share/kxstudio/docs/MuseScore-en.pdf", "http://www.musescore.org/") ],

[ "non-daw", "Non-DAW", "DAW", "non-daw", "non-daw", TEMPLATE_YES, LEVEL_NSM, "OpenSource", (0, 0, 0, 0, "", 1, 0, "CV + OSC"), ("file:///usr/share/doc/non-daw/MANUAL.html", "http://non-daw.tuxfamily.org/") ],
[ "non-sequencer", "Non-Sequencer", "MIDI Sequencer", "non-sequencer", "non-sequencer", TEMPLATE_YES, LEVEL_NSM, "OpenSource", (0, 0, 0, 0, "", 1, 1, "JACK"), ("file:///usr/share/doc/non-sequencer/MANUAL.html", "http://non-sequencer.tuxfamily.org/") ],
[ "non-daw", "Non-DAW", "DAW", "non-daw", "non-daw", TEMPLATE_YES, LEVEL_NSM, (0, 0, 0, 0, "", 1, 0, "CV + OSC"), ("file:///usr/share/doc/non-daw/MANUAL.html", "http://non-daw.tuxfamily.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-sequencer.tuxfamily.org/") ],

[ "qtractor", "Qtractor", "DAW", "qtractor", "qtractor", TEMPLATE_YES, LEVEL_1, "OpenSource", (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-svn", "Qtractor (SVN)", "DAW", "qtractor", "qtractor", TEMPLATE_YES, LEVEL_1, "OpenSource", (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"), ("file:///usr/share/kxstudio/docs/qtractor-0.5.x-user-manual.pdf", "http://qtractor.sf.net/") ],
[ "qtractor-svn", "Qtractor (SVN)", "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/") ],

[ "rosegarden", "Rosegarden", "MIDI Sequencer", "rosegarden", "rosegarden", TEMPLATE_YES, LEVEL_1, "OpenSource", (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, "OpenSource", (0, 0, 0, 0, "", 1, 1, "ALSA"), ("file:///usr/share/kxstudio/docs/SEQ24", "http://www.filter24.org/seq24/") ],
[ "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/") ],

[ "traverso", "Traverso", "DAW", "traverso", "traverso", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, 1, 0, "", 1, 0, ""), ("file:///usr/share/kxstudio/docs/traverso-manual-0.49.0.pdf", "http://traverso-daw.org/") ],
[ "traverso", "Traverso", "DAW", "traverso", "traverso", TEMPLATE_NO, LEVEL_0, (1, 0, 1, 0, "", 1, 0, ""), ("file:///usr/share/kxstudio/docs/traverso-manual-0.49.0.pdf", "http://traverso-daw.org/") ],
]

iDAW_Package, iDAW_AppName, iDAW_Type, iDAW_Binary, iDAW_Icon, iDAW_Template, iDAW_Level, iDAW_RelModel, 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]))

if USING_KXSTUDIO:
# Jacker
@@ -72,22 +69,22 @@ if USING_KXSTUDIO:
# (I, L, D, L, V, VST-Mode, MIDI-Mode) -> (Internal, LADSPA, DSSI, LV2, VST, VST-Mode, MIDI-Mode)

list_Host = [
# Package AppName Ins? FX? Binary Icon Template? Level Rel.-Model (I, L, D, L, V, VST-Mode, MIDI-Mode) (doc-file, website)
[ "calf-plugins", "Calf Jack Host", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/index.html", "http://calf.sf.net/") ],
[ "calf-plugins-git", "Calf Jack Host (GIT)", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/index.html", "http://calf.sf.net/") ],
# Package AppName Ins? FX? Binary Icon Template? Level (I, L, D, L, V, VST-Mode, MIDI-Mode) (doc-file, website)
[ "calf-plugins", "Calf Jack Host", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_1, (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/index.html", "http://calf.sf.net/") ],
[ "calf-plugins-git", "Calf Jack Host (GIT)", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_1, (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/index.html", "http://calf.sf.net/") ],

[ "carla", "Carla", "Yes", "Yes", "carla", "carla", TEMPLATE_YES, LEVEL_1, "OpenSource", (1, 1, 1, 1, 1, "Both", "ALSA | JACK"), ("", "http://kxstudio.sf.net/Applications:Carla") ],
[ "carla-git", "Carla (GIT)", "Yes", "Yes", "carla", "carla", TEMPLATE_YES, LEVEL_NSM, "OpenSource", (1, 1, 1, 1, 1, "Both", "ALSA | JACK"), ("", "http://kxstudio.sf.net/Applications:Carla") ],
[ "carla", "Carla", "Yes", "Yes", "carla", "carla", TEMPLATE_YES, LEVEL_1, (1, 1, 1, 1, 1, "Both", "ALSA | JACK"), ("", "http://kxstudio.sf.net/Applications:Carla") ],
[ "carla-git", "Carla (GIT)", "Yes", "Yes", "carla", "carla", TEMPLATE_YES, LEVEL_NSM, (1, 1, 1, 1, 1, "Both", "ALSA | JACK"), ("", "http://kxstudio.sf.net/Applications:Carla") ],

[ "festige", "FeSTige", "Yes", "Yes", "festige", "festige", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, 0, 0, 1, "Windows", "ALSA | JACK"), ("", "http://festige.sf.net/") ],
[ "festige", "FeSTige", "Yes", "Yes", "festige", "festige", TEMPLATE_NO, LEVEL_1, (0, 0, 0, 0, 1, "Windows", "ALSA | JACK"), ("", "http://festige.sf.net/") ],

[ "ingen", "Ingen", "Yes", "Yes", "ingen -eg", "ingen", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ],
[ "ingen-svn", "Ingen (SVN)", "Yes", "Yes", "ingen-svn -eg", "ingen", TEMPLATE_NO, LEVEL_0, "OpenSource", (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/") ],
[ "ingen-svn", "Ingen (SVN)", "Yes", "Yes", "ingen-svn -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, "OpenSource", (0, 1, 0, 0, 0, "", "ALSA"), ("", "http://jack-rack.sf.net/") ],
[ "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/") ],
]

iHost_Package, iHost_AppName, iHost_Ins, iHost_FX, iHost_Binary, iHost_Icon, iHost_Template, iHost_Level, iHost_RelModel, iHost_Features, iDAW_Docs = range(0, len(list_Host[0]))
iHost_Package, iHost_AppName, iHost_Ins, iHost_FX, iHost_Binary, iHost_Icon, iHost_Template, iHost_Level, iHost_Features, iDAW_Docs = range(0, len(list_Host[0]))

# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Instrument
@@ -95,34 +92,34 @@ iHost_Package, iHost_AppName, iHost_Ins, iHost_FX, iHost_Binary, iHost_Icon, iHo
# (F, I, MIDI-Mode) -> (Built-in FX, Audio Input, MIDI-Mode)

list_Instrument = [
# Package AppName Type Binary Icon Template? Level Rel.-Model (F, I, MIDI-Mode) (doc-file, website)
[ "aeolus", "Aeolus", "Synth", "aeolus -J", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "ALSA | JACK"), ("", "http://www.kokkinizita.net/linuxaudio/aeolus/index.html") ],
# Package AppName Type Binary Icon Template? Level (F, I, MIDI-Mode) (doc-file, website)
[ "aeolus", "Aeolus", "Synth", "aeolus -J", generic_audio_icon, TEMPLATE_NO, LEVEL_0, (0, 0, "ALSA | JACK"), ("", "http://www.kokkinizita.net/linuxaudio/aeolus/index.html") ],

[ "amsynth", "amSynth", "Synth", "amsynth", "amsynth", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA + JACK"), ("", "") ],
[ "amsynth", "amSynth", "Synth", "amsynth", "amsynth", TEMPLATE_NO, LEVEL_0, (1, 0, "ALSA + JACK"), ("", "") ],

[ "azr3-jack", "AZR3", "Synth", "azr3", "azr3", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "JACK"), ("", "http://ll-plugins.nongnu.org/azr3/") ],
[ "azr3-jack", "AZR3", "Synth", "azr3", "azr3", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://ll-plugins.nongnu.org/azr3/") ],

[ "foo-yc20", "Foo YC20", "Synth", "foo-yc20", "foo-yc20", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "JACK"), ("", "http://code.google.com/p/foo-yc20/") ],
[ "foo-yc20", "Foo YC20", "Synth", "foo-yc20", "foo-yc20", TEMPLATE_NO, LEVEL_0, (0, 0, "JACK"), ("", "http://code.google.com/p/foo-yc20/") ],

[ "jsampler", "JSampler Fantasia", "Sampler", "jsampler-bin", "jsampler", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "ALSA + JACK"), ("file:///usr/share/kxstudio/docs/jsampler/jsampler.html", "http://www.linuxsampler.org/") ],
[ "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/") ],

[ "petri-foo", "Petri-Foo", "Sampler", "petri-foo", "petri-foo", TEMPLATE_NO, LEVEL_NSM, "OpenSource", (0, 0, "ALSA + JACK"), ("", "http://petri-foo.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, "OpenSource", (1, 1, "ALSA"), ("file:///usr/share/phasex/help/parameters.help", "") ],
[ "phasex", "Phasex", "Synth", "phasex", "phasex", TEMPLATE_NO, LEVEL_0, (1, 1, "ALSA"), ("file:///usr/share/phasex/help/parameters.help", "") ],

[ "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, "ALSA + JACK"), ("", "http://qsampler.sf.net/") ],
[ "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_NO, LEVEL_1, (0, 0, "ALSA + JACK"), ("", "http://qsampler.sf.net/") ],

[ "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA | JACK"), ("", "http://qsynth.sf.net/") ],
[ "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, (1, 0, "ALSA | JACK"), ("", "http://qsynth.sf.net/") ],

[ "setbfree", "setBfree", "Synth", "setBfree-start", "setBfree", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "JACK"), ("", "http://setbfree.org/") ],
[ "setbfree", "setBfree", "Synth", "setBfree-start", "setBfree", TEMPLATE_NO, LEVEL_0, (1, 0, "JACK"), ("", "http://setbfree.org/") ],

[ "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "yoshimi", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 0, "ALSA | JACK"), ("", "http://yoshimi.sf.net/") ],
[ "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "yoshimi", TEMPLATE_NO, LEVEL_1, (1, 0, "ALSA | JACK"), ("", "http://yoshimi.sf.net/") ],

[ "zynaddsubfx", "ZynAddSubFX", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, "OpenSource", (1, 0, "ALSA + JACK"), ("", "http://zynaddsubfx.sf.net/") ],
[ "zynaddsubfx-git", "ZynAddSubFX (GIT)", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_NSM, "OpenSource", (1, 0, "ALSA + JACK"), ("", "http://zynaddsubfx.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_RelModel, 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]))

# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Bristol
@@ -130,116 +127,52 @@ iInstrument_Package, iInstrument_AppName, iInstrument_Type, iInstrument_Binary,
# Need name: bit99, bit100

list_Bristol = [
# Package AppName Type Short-name Icon Template? Level Rel.-Model (F, I, MIDI-Mode) (doc-file, website)
[ "bristol", "Moog Voyager", "Synth", "explorer", "bristol_explorer", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/explorer.html") ],
[ "bristol", "Moog Mini", "Synth", "mini", "bristol_mini", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mini.html") ],
[ "bristol", "Sequential Circuits Prophet-52", "Synth", "prophet52", "bristol_prophet52", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet52.html") ],

[ "bristol", "Moog/Realistic MG-1", "Synth", "realistic", "bristol_realistic", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/realistic.html") ],
[ "bristol", "Memory Moog", "Synth", "memoryMoog", "bristol_memoryMoog", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/memorymoog.html") ],
[ "bristol", "Baumann BME-700", "Synth", "BME700", "bristol_BME700", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/bme700.shtml") ],
#[ "bristol", "Synthi Aks", "Synth", "aks", "bristol_aks", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/aks.html") ],

[ "bristol", "Moog Voyager Blue Ice", "Synth", "voyager", "bristol_voyager", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/voyager.html") ],
[ "bristol", "Moog Sonic-6", "Synth", "sonic6", "bristol_sonic6", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/sonic6.html") ],
[ "bristol", "Hammond B3", "Synth", "hammondB3", "bristol_hammondB3", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/hammond.html") ],
[ "bristol", "Sequential Circuits Prophet-5", "Synth", "prophet", "bristol_prophet", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet5.html") ],
[ "bristol", "Sequential Circuits Prophet-10", "Synth", "prophet10", "bristol_prophet10", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet10.html") ],
[ "bristol", "Sequential Circuits Pro-1", "Synth", "pro1", "bristol_pro1", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/pro1.html") ],
[ "bristol", "Fender Rhodes Stage-73", "Synth", "rhodes", "bristol_rhodes", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/rhodes.html") ],
[ "bristol", "Rhodes Bass Piano", "Synth", "rhodesbass", "bristol_rhodesbass", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/rhodes.html") ],
[ "bristol", "Crumar Roadrunner", "Synth", "roadrunner", "bristol_roadrunner", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/roadrunner.html") ],
[ "bristol", "Crumar Bit-1", "Synth", "bitone", "bristol_bitone", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/bitone.html") ],
[ "bristol", "Crumar Stratus", "Synth", "stratus", "bristol_stratus", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/stratus.html") ],
[ "bristol", "Crumar Trilogy", "Synth", "trilogy", "bristol_trilogy", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/trilogy.html") ],
[ "bristol", "Oberheim OB-X", "Synth", "obx", "bristol_obx", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/obx.html") ],
[ "bristol", "Oberheim OB-Xa", "Synth", "obxa", "bristol_obxa", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/obxa.html") ],
[ "bristol", "ARP Axxe", "Synth", "axxe", "bristol_axxe", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/axxe.html") ],
[ "bristol", "ARP Odyssey", "Synth", "odyssey", "bristol_odyssey", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/odyssey.html") ],
[ "bristol", "ARP 2600", "Synth", "arp2600", "bristol_arp2600", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/arp2600.html") ],
[ "bristol", "ARP Solina Strings", "Synth", "solina", "bristol_solina", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/solina.html") ],
[ "bristol", "Korg Poly-800", "Synth", "poly800", "bristol_poly800", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/poly800.shtml") ],
[ "bristol", "Korg Mono/Poly", "Synth", "monopoly", "bristol_monopoly", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mono.html") ],
[ "bristol", "Korg Polysix", "Synth", "poly", "bristol_poly", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/poly.html") ],
[ "bristol", "Korg MS-20 (*)", "Synth", "ms20", "bristol_ms20", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/ms20.html") ],
[ "bristol", "VOX Continental", "Synth", "vox", "bristol_vox", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/vox.html") ],
[ "bristol", "VOX Continental 300", "Synth", "voxM2", "bristol_voxM2", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/vox300.html") ],
[ "bristol", "Roland Juno-6", "Synth", "juno", "bristol_juno", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/juno.html") ],
[ "bristol", "Roland Jupiter 8", "Synth", "jupiter8", "bristol_jupiter8", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/jupiter8.html") ],
#[ "bristol", "Bristol BassMaker", "Synth", "bassmaker", "bristol_bassmaker", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "") ],
[ "bristol", "Yamaha DX", "Synth", "dx", "bristol_dx", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/dx.html") ],
#[ "bristol", "Yamaha CS-80", "Synth", "cs80", "bristol_cs80", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/cs80.html") ],
[ "bristol", "Bristol SID Softsynth", "Synth", "sidney", "bristol_sidney", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/sidney.shtml") ],
#[ "bristol", "Commodore-64 SID polysynth", "Synth", "melbourne", "bristol_sidney", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "") ], #FIXME - needs icon
#[ "bristol", "Bristol Granular Synthesiser", "Synth", "granular", "bristol_granular", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "") ],
#[ "bristol", "Bristol Realtime Mixer", "Synth", "mixer", "bristol_mixer", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mixer.html") ],
]

iBristol_Package, iBristol_AppName, iBristol_Type, iBristol_ShortName, iBristol_Icon, iBristol_Template, iBristol_Level, iBristol_RelModel, iBristol_Features, iBristol_Docs = range(0, len(list_Bristol[0]))

# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Plugin, TODO

# (S, M, P) -> (Stereo, MIDI-In, factory Presets)

list_Plugin = [
# Package PluginName Spec Type Filename Label/URI Icon Rel.-Model (S, M, P) (doc, website)

# DSSI
[ "amsynth", "amSynth DSSI", "DSSI", "Synth", "/usr/lib/dssi/amsynth_dssi.so", "amsynth", "amsynth", "OpenSource", (1, 1, 1), ("", "") ],

[ "dssi-example-plugins", "Less Trivial synth", "DSSI", "Synth", "/usr/lib/dssi/less_trivial_synth.so", "LTS", generic_audio_icon, "OpenSource", (0, 1, 0), ("", "") ],
[ "dssi-example-plugins", "Simple Mono Sampler", "DSSI", "Sampler", "/usr/lib/dssi/trivial_sampler.so", "mono_sampler", generic_audio_icon, "OpenSource", (0, 1, 0), ("", "") ],
[ "dssi-example-plugins", "Simple Stereo Sampler", "DSSI", "Sampler", "/usr/lib/dssi/trivial_sampler.so", "stereo_sampler", generic_audio_icon, "OpenSource", (1, 1, 0), ("", "") ],

[ "fluidsynth-dssi", "FluidSynth DSSI", "DSSI", "Sampler", "/usr/lib/dssi/fluidsynth-dssi.so", "FluidSynth-DSSI", generic_audio_icon, "OpenSource", (1, 1, 0), ("", "") ],

[ "hexter", "Hexter DX7 emulation", "DSSI", "Synth", "/usr/lib/dssi/hexter.so", "hexter", generic_audio_icon, "OpenSource", (0, 1, 1), ("", "") ],

[ "holap", "Horgand", "DSSI", "Synth", "/usr/lib/dssi/horgand.so", "horgand", generic_audio_icon, "OpenSource", (1, 1, 1), ("", "") ],

[ "ls16", "LinuxSampler 16Ch Rack", "DSSI", "Sampler", "/usr/lib/dssi/ls16.so", "ls16", generic_audio_icon, "OpenSource", (1, 1, 0), ("", "") ],

[ "ll-scope", "Oscilloscope", "DSSI", "Util", "/usr/lib/dssi/ll-scope.so", "ll-scope", "/usr/lib/dssi/ll-scope/icon.png", "OpenSource", (1, 0, 0), ("", "") ],
[ "nekobee", "Nekobee DSSI", "DSSI", "Synth", "/usr/lib/dssi/nekobee.so", "nekobee", generic_audio_icon, "OpenSource", (0, 1, 1), ("", "") ],
[ "sineshaper", "Sineshaper", "DSSI", "Synth", "/usr/lib/dssi/sineshaper.so", "ll-sineshaper", "sineshaper32x32", "OpenSource", (0, 1, 1), ("", "") ],

[ "whysynth", "WhySynth", "DSSI", "Synth", "/usr/lib/dssi/whysynth.so", "WhySynth", generic_audio_icon, "OpenSource", (1, 1, 1), ("", "") ],
[ "wsynth-dssi", "Wsynth DSSI", "DSSI", "Synth", "/usr/lib/dssi/wsynth-dssi.so", "Wsynth", generic_audio_icon, "OpenSource", (0, 1, 1), ("", "") ],
[ "xsynth-dssi", "Xsynth DSSI", "DSSI", "Synth", "/usr/lib/dssi/xsynth-dssi.so", "Xsynth", generic_audio_icon, "OpenSource", (0, 1, 1), ("", "") ],

# LV2
[ "calf-plugins", "Calf Compressor", "LV2", "Compressor", "/usr/lib/lv2/calf.lv2/", "http://calf.sf.net/plugins/Compressor", "calf", "OpenSource", (1, 0, 0), ("file:///usr/share/doc/calf/Compressor.html", "http://calf.sf.net/") ],

# VST
[ "arctican-plugins-vst", "The Function [VST]", "VST", "Delay", "/usr/lib/vst/TheFunction.so", "The Function", "arctican_plugins", "OpenSource", (1, 0, 1), ("", "http://arcticanaudio.com/plugins/") ],
[ "arctican-plugins-vst", "The Pilgrim [VST]", "VST", "Filter", "/usr/lib/vst/ThePilgrim.so", "The Pilgrim", "arctican_plugins", "OpenSource", (1, 1, 0), ("", "http://arcticanaudio.com/plugins/") ],

[ "distrho-plugins-vst", "3 Band EQ [VST]", "VST", "EQ", "/usr/lib/vst/3BandEQ.so", "3BandEQ", "distrho_plugins", "OpenSource", (1, 0, 0), ("", "") ],
[ "distrho-plugins-vst", "3 Band Splitter [VST]", "VST", "EQ", "/usr/lib/vst/3BandSplitter.so", "3BandSplitter", "distrho_plugins", "OpenSource", (0, 0, 0), ("", "") ],
[ "distrho-plugins-vst", "Ping Pong Pan [VST]", "VST", "Pan", "/usr/lib/vst/PingPongPan.so", "Ping Pong Pan", "distrho_plugins", "OpenSource", (1, 0, 0), ("", "") ],

[ "distrho-plugin-ports-vst", "Vex [VST]", "VST", "Synth", "/usr/lib/vst/vex.so", "Vex", generic_audio_icon, "OpenSource", (1, 1, 1), ("", "") ],

[ "drowaudio-plugins-vst", "dRowAudio Distortion-Shaper [VST]", "VST", "Distortion", "/usr/lib/vst/drowaudio-distortionshaper.so", "dRowAudio DistortionShaper", generic_audio_icon, "OpenSource", (1, 0, 0), ("", "") ],
[ "drowaudio-plugins-vst", "dRowAudio Distortion [VST]", "VST", "Distortion", "/usr/lib/vst/drowaudio-distortion.so", "dRowAudio Distortion", generic_audio_icon, "OpenSource", (1, 0, 0), ("", "") ],
[ "drowaudio-plugins-vst", "dRowAudio Flanger [VST]", "VST", "Flanger", "/usr/lib/vst/drowaudio-flanger.so", "dRowAudio Flanger", generic_audio_icon, "OpenSource", (1, 0, 0), ("", "") ],
[ "drowaudio-plugins-vst", "dRowAudio Reverb [VST]", "VST", "Reverb", "/usr/lib/vst/drowaudio-reverb.so", "dRowAudio Reverb", generic_audio_icon, "OpenSource", (1, 1, 0), ("", "") ],
[ "drowaudio-plugins-vst", "dRowAudio Tremolo [VST]", "VST", "Tremolo", "/usr/lib/vst/drowaudio-tremolo.so", "dRowAudio Tremolo", generic_audio_icon, "OpenSource", (1, 0, 0), ("", "") ],

[ "tal-plugins-vst", "TAL Dub 3 [VST]", "VST", "Delay", "/usr/lib/vst/TAL-Dub-3.so", "TAL Dub 2", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-dub") ],
[ "tal-plugins-vst", "TAL Filter [VST]", "VST", "Filter", "/usr/lib/vst/TAL-Filter.so", "TAL Filter", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-filter") ],
[ "tal-plugins-vst", "TAL Filter 2 [VST]", "VST", "Filter", "/usr/lib/vst/TAL-Filter-2.so", "TAL Filter 2", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-filter") ],
[ "tal-plugins-vst", "TAL NoiseMaker [VST]", "VST", "Synth", "/usr/lib/vst/TAL-NoiseMaker.so", "TAL NoiseMaker", "tal_plugins", "OpenSource", (1, 1, 1), ("file:///usr/share/kxstudio/docs/TAL Noisemaker User Guide 1.0.pdf", "http://kunz.corrupt.ch/products/tal-noisemaker") ],
[ "tal-plugins-vst", "TAL Reverb [VST]", "VST", "Reverb", "/usr/lib/vst/TAL-Reverb.so", "TAL Reverb", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-reverb") ],
[ "tal-plugins-vst", "TAL Reverb 2 [VST]", "VST", "Reverb", "/usr/lib/vst/TAL-Reverb-2.so", "TAL Reverb 2", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-reverb") ],
[ "tal-plugins-vst", "TAL Reverb 3 [VST]", "VST", "Reverb", "/usr/lib/vst/TAL-Reverb-3.so", "TAL Reverb 3", "tal_plugins", "OpenSource", (1, 1, 1), ("", "http://kunz.corrupt.ch/products/tal-reverb") ],
[ "tal-plugins-vst", "TAL Vocoder 2 [VST]", "VST", "Vocoder", "/usr/lib/vst/TAL-Vocoder-2.so", "TAL Vocoder 2", "tal_plugins", "OpenSource", (1, 1, 1), ("file:///usr/share/kxstudio/docs/TAL-Vocoder-UserManual.pdf", "http://kunz.corrupt.ch/products/tal-vocoder") ],

[ "wolpertinger-vst", "Wolpertinger [VST]", "VST", "Synth", "/usr/lib/vst/Wolpertinger.so", "Wolpertinger", "wolpertinger", "OpenSource", (1, 1, 1), ("", "http://tumbetoene.tuxfamily.org") ],
# Package AppName Type Short-name Icon Template? Level (F, I, MIDI-Mode) (doc-file, website)
[ "bristol", "Moog Voyager", "Synth", "explorer", "bristol_explorer", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/explorer.html") ],
[ "bristol", "Moog Mini", "Synth", "mini", "bristol_mini", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mini.html") ],
[ "bristol", "Sequential Circuits Prophet-52", "Synth", "prophet52", "bristol_prophet52", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet52.html") ],

[ "bristol", "Moog/Realistic MG-1", "Synth", "realistic", "bristol_realistic", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/realistic.html") ],
[ "bristol", "Memory Moog", "Synth", "memoryMoog", "bristol_memoryMoog", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/memorymoog.html") ],
[ "bristol", "Baumann BME-700", "Synth", "BME700", "bristol_BME700", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/bme700.shtml") ],
#[ "bristol", "Synthi Aks", "Synth", "aks", "bristol_aks", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/aks.html") ],

[ "bristol", "Moog Voyager Blue Ice", "Synth", "voyager", "bristol_voyager", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/voyager.html") ],
[ "bristol", "Moog Sonic-6", "Synth", "sonic6", "bristol_sonic6", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/sonic6.html") ],
[ "bristol", "Hammond B3", "Synth", "hammondB3", "bristol_hammondB3", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/hammond.html") ],
[ "bristol", "Sequential Circuits Prophet-5", "Synth", "prophet", "bristol_prophet", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet5.html") ],
[ "bristol", "Sequential Circuits Prophet-10", "Synth", "prophet10", "bristol_prophet10", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/prophet10.html") ],
[ "bristol", "Sequential Circuits Pro-1", "Synth", "pro1", "bristol_pro1", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/pro1.html") ],
[ "bristol", "Fender Rhodes Stage-73", "Synth", "rhodes", "bristol_rhodes", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/rhodes.html") ],
[ "bristol", "Rhodes Bass Piano", "Synth", "rhodesbass", "bristol_rhodesbass", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/rhodes.html") ],
[ "bristol", "Crumar Roadrunner", "Synth", "roadrunner", "bristol_roadrunner", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/roadrunner.html") ],
[ "bristol", "Crumar Bit-1", "Synth", "bitone", "bristol_bitone", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/bitone.html") ],
[ "bristol", "Crumar Stratus", "Synth", "stratus", "bristol_stratus", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/stratus.html") ],
[ "bristol", "Crumar Trilogy", "Synth", "trilogy", "bristol_trilogy", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/trilogy.html") ],
[ "bristol", "Oberheim OB-X", "Synth", "obx", "bristol_obx", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/obx.html") ],
[ "bristol", "Oberheim OB-Xa", "Synth", "obxa", "bristol_obxa", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/obxa.html") ],
[ "bristol", "ARP Axxe", "Synth", "axxe", "bristol_axxe", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/axxe.html") ],
[ "bristol", "ARP Odyssey", "Synth", "odyssey", "bristol_odyssey", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/odyssey.html") ],
[ "bristol", "ARP 2600", "Synth", "arp2600", "bristol_arp2600", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/arp2600.html") ],
[ "bristol", "ARP Solina Strings", "Synth", "solina", "bristol_solina", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/solina.html") ],
[ "bristol", "Korg Poly-800", "Synth", "poly800", "bristol_poly800", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/poly800.shtml") ],
[ "bristol", "Korg Mono/Poly", "Synth", "monopoly", "bristol_monopoly", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mono.html") ],
[ "bristol", "Korg Polysix", "Synth", "poly", "bristol_poly", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/poly.html") ],
[ "bristol", "Korg MS-20 (*)", "Synth", "ms20", "bristol_ms20", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/ms20.html") ],
[ "bristol", "VOX Continental", "Synth", "vox", "bristol_vox", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/vox.html") ],
[ "bristol", "VOX Continental 300", "Synth", "voxM2", "bristol_voxM2", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/vox300.html") ],
[ "bristol", "Roland Juno-6", "Synth", "juno", "bristol_juno", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/juno.html") ],
[ "bristol", "Roland Jupiter 8", "Synth", "jupiter8", "bristol_jupiter8", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/jupiter8.html") ],
#[ "bristol", "Bristol BassMaker", "Synth", "bassmaker", "bristol_bassmaker", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "") ],
[ "bristol", "Yamaha DX", "Synth", "dx", "bristol_dx", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/dx.html") ],
#[ "bristol", "Yamaha CS-80", "Synth", "cs80", "bristol_cs80", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/cs80.html") ],
[ "bristol", "Bristol SID Softsynth", "Synth", "sidney", "bristol_sidney", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/sidney.shtml") ],
#[ "bristol", "Commodore-64 SID polysynth", "Synth", "melbourne", "bristol_sidney", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "") ], #FIXME - needs icon
#[ "bristol", "Bristol Granular Synthesiser", "Synth", "granular", "bristol_granular", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "") ],
#[ "bristol", "Bristol Realtime Mixer", "Synth", "mixer", "bristol_mixer", TEMPLATE_NO, LEVEL_1, (1, 1, "ALSA | JACK"), ("", "http://bristol.sf.net/mixer.html") ],
]

iPlugin_Package, iPlugin_Name, iPlugin_Spec, iPlugin_Type, iPlugin_Filename, iPlugin_Label, iPlugin_Icon, iPlugin_RelModel, iPlugin_Features, iPlugin_Docs = range(0, len(list_Plugin[0]))
iBristol_Package, iBristol_AppName, iBristol_Type, iBristol_ShortName, iBristol_Icon, iBristol_Template, iBristol_Level, iBristol_Features, iBristol_Docs = range(0, len(list_Bristol[0]))

# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Effect
@@ -247,17 +180,17 @@ iPlugin_Package, iPlugin_Name, iPlugin_Spec, iPlugin_Type, iPlugin_Filename, iPl
# (S, MIDI-Mode) -> (Stereo, MIDI-Mode)

list_Effect = [
# Package AppName Type Binary Icon Template? Level Rel.-Model (S, MIDI-Mode) (doc, website)
[ "ambdec", "AmbDec", "Ambisonic Decoder", "ambdec", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "---"), ("", "") ],
# 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, "---"), ("", "") ],

[ "guitarix", "Guitarix", "Guitar FX", "guitarix", "gx_head", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, "JACK"), ("", "http://guitarix.sf.net/") ],
[ "guitarix", "Guitarix", "Guitar FX", "guitarix", "gx_head", TEMPLATE_NO, LEVEL_0, (0, "JACK"), ("", "http://guitarix.sf.net/") ],

[ "jamin", "Jamin", "Mastering", "jamin", "jamin", TEMPLATE_NO, LEVEL_0, "OpenSource", (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, "OpenSource", (1, "ALSA + JACK"), ("file:///usr/share/doc/rakarrack/html/help.html", "http://rakarrack.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") ],
]

iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iEffect_Template, iEffect_Level, iEffect_RelModel, 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]))

# -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Tool
@@ -265,72 +198,72 @@ iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iE
# (MIDI-Mode, T) -> (MIDI-Mode, Transport)

list_Tool = [
# Package AppName Type Binary Icon Template? Level Rel.-Model (MIDI-Mode, T) (doc, website)
[ "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ],
[ "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "") ],
# Package AppName Type Binary Icon Template? Level (MIDI-Mode, T) (doc, website)
[ "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ],
[ "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "") ],

[ "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://audacity.sf.net/") ],
[ "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://audacity.sf.net/") ],

[ "cadence", "Cadence", "JACK Toolbox", "cadence", "cadence", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ],
[ "cadence-tools", "Cadence XY-Controller", "XY Controller", "cadence-xycontroller", "cadence", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "") ],
[ "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ],
[ "claudia", "Claudia", "Session Handler", "claudia", "claudia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ],
[ "carla-control", "Carla OSC Control", "OSC Control", "carla-control", "carla-control", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ],
[ "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), ("", "") ],
[ "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, ("JACK", 1), ("", "") ],
[ "claudia", "Claudia", "Session Handler", "claudia", "claudia", 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, "OpenSource", ("ALSA", 0), ("", "http://drumstick.sf.net/") ],
[ "drumstick-tools", "Drumstick Virtual Piano", "Virtual Keyboard", "drumstick-vpiano", "drumstick", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://drumstick.sf.net/") ],

[ "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ],
[ "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ],

[ "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("/usr/share/doc/gigedit/gigedit_quickstart.html", "") ],
[ "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 0), ("/usr/share/doc/gigedit/gigedit_quickstart.html", "") ],

[ "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ],
[ "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ],
[ "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ],
[ "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ],

[ "gladish", "LADI Session Handler", "Session Handler", "gladish", "gladish", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "http://www.ladish.org") ],
[ "gladish", "LADI Session Handler", "Session Handler", "gladish", "gladish", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "http://www.ladish.org") ],

[ "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ],
[ "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", generic_audio_icon, TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "") ],

[ "jack-keyboard", "Jack Keyboard", "Virtual Keyboard", "jack-keyboard", "jack-keyboard", TEMPLATE_NO, LEVEL_0, "OpenSource", ("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, "OpenSource", ("JACK", 0), ("", "http://home.gna.org/jackmixer/") ],
[ "jack-mixer", "Jack Mixer", "Mixer", "jack_mixer", "jack_mixer", TEMPLATE_NO, LEVEL_0, ("JACK", 0), ("", "http://home.gna.org/jackmixer/") ],

[ "kmetronome", "KMetronome", "Metronome", "kmetronome", "kmetronome", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmetronome.sf.net/kmetronome.shtml") ],
[ "kmidimon", "KMidimon", "Monitor", "kmidimon", "kmidimon", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmidimon.sf.net/") ],
[ "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/") ],

[ "laditools", "LADI Log", "Log Viewer", "ladilog", "ladilog", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ],
[ "laditools", "LADI Tray", "Session Handler", "laditray", "laditray", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ],
[ "laditools", "LADI Log", "Log Viewer", "ladilog", "ladilog", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ],
[ "laditools", "LADI Tray", "Session Handler", "laditray", "laditray", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "") ],

[ "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://lives.sf.net/") ],
[ "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, ("---", 1), ("", "http://lives.sf.net/") ],

[ "meterbridge", "MeterBridge Classic VU", "VU / Peak Analyzer", "meterbridge -t vu :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ],
[ "meterbridge", "MeterBridge PPM Meter", "VU / Peak Analyzer", "meterbridge -t ppm :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ],
[ "meterbridge", "MeterBridge Digital Peak Meter", "VU / Peak Analyzer", "meterbridge -t dpm -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ],
[ "meterbridge", "MeterBridge 'Jellyfish' Phase Meter", "VU / Peak Analyzer", "meterbridge -t jf -c 2 : :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ],
[ "meterbridge", "MeterBridge Oscilloscope Meter", "VU / Peak Analyzer", "meterbridge -t sco :", "meterbridge32x32", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/meterbridge/") ],
[ "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, "OpenSource", ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ],
[ "mhwaveedit", "MhWaveEdit", "Audio Editor", "mhwaveedit", "mhwaveedit", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ],

[ "mixxx", "Mixxx", "DJ", "mixxx", "mixxx", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("file:///usr/share/kxstudio/docs/Mixxx-Manual.pdf", "http://mixxx.sf.net/") ],
[ "mixxx", "Mixxx", "DJ", "mixxx", "mixxx", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("file:///usr/share/kxstudio/docs/Mixxx-Manual.pdf", "http://mixxx.sf.net/") ],

[ "non-mixer", "Non-Mixer", "Mixer", "non-mixer", "non-mixer", TEMPLATE_NO, LEVEL_0, "OpenSource", ("CV", 0), ("file:///usr/share/doc/non-mixer/MANUAL.html", "http://non-daw.tuxfamily.org/") ],
[ "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-daw.tuxfamily.org/") ],

[ "patchage", "Patchage", "Patch Bay", "patchage", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ],
[ "patchage", "Patchage (ALSA Only)", "Patch Bay", "patchage -J", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ],
[ "patchage-svn", "Patchage (SVN)", "Patch Bay", "patchage-svn", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ],
[ "patchage-svn", "Patchage (SVN, ALSA Only)", "Patch Bay", "patchage-svn -J", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("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/") ],
[ "patchage", "Patchage (ALSA Only)", "Patch Bay", "patchage -J", "patchage", TEMPLATE_NO, LEVEL_0, ("ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ],
[ "patchage-svn", "Patchage (SVN)", "Patch Bay", "patchage-svn", "patchage", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ],
[ "patchage-svn", "Patchage (SVN, ALSA Only)", "Patch Bay", "patchage-svn -J", "patchage", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ],

[ "qjackctl", "QJackControl", "JACK Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 1), ("", "") ],
[ "qjackctl", "QJackControl", "JACK Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, ("ALSA + JACK", 1), ("", "") ],

[ "qamix", "QAMix", "Mixer", "qamix", "qamix", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ],
[ "qarecord", "QARecord", "Recorder", "qarecord --jack", "qarecord_48", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ],
[ "qmidiarp", "QMidiArp", "MIDI Arpeggiator", "qmidiarp", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ],
[ "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), ("", "") ],

[ "timemachine", "TimeMachine", "Recorder", "timemachine", "/usr/share/timemachine/pixmaps/timemachine-icon.png", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/timemachine/") ],
[ "timemachine", "TimeMachine", "Recorder", "timemachine", "/usr/share/timemachine/pixmaps/timemachine-icon.png", TEMPLATE_NO, LEVEL_0, ("---", 0), ("", "http://plugin.org.uk/timemachine/") ],

[ "vmpk", "Virtual MIDI Piano Keyboard (ALSA)","Virtual Keyboard","vmpk", "vmpk", TEMPLATE_NO, LEVEL_0, "OpenSource", ("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, "OpenSource", ("JACK", 0), ("file:///usr/share/vmpk/help.html", "http://vmpk.sf.net/") ],
[ "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/") ],

[ "xjadeo", "XJadeo", "Video Player", "qjadeo", "qjadeo", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://xjadeo.sf.net/") ],
[ "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_RelModel, 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]))

+ 175
- 296
src/claudia_launcher.py View File

@@ -30,6 +30,15 @@ import claudia_database as database
import ui_claudia_launcher
from shared import *

# ------------------------------------------------------------------------------------------------------------
# Imports (Carla)

try:
from carla_utils import *
haveCarla = True
except:
haveCarla = False

# ------------------------------------------------------------------------------------------------------------
# Safe import getoutput

@@ -107,25 +116,25 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.m_ladish_only = False

self.listDAW.setColumnWidth(0, 22)
self.listDAW.setColumnWidth(1, 150)
self.listDAW.setColumnWidth(2, 125)
self.listDAW.setColumnWidth(1, 225)
self.listDAW.setColumnWidth(2, 150)
self.listHost.setColumnWidth(0, 22)
self.listHost.setColumnWidth(1, 150)
self.listHost.setColumnWidth(1, 225)
self.listHost.setColumnWidth(2, 100)
self.listHost.setColumnWidth(3, 100)
self.listInstrument.setColumnWidth(0, 22)
self.listInstrument.setColumnWidth(1, 150)
self.listInstrument.setColumnWidth(2, 125)
self.listInstrument.setColumnWidth(1, 225)
self.listInstrument.setColumnWidth(2, 150)
self.listBristol.setColumnWidth(0, 22)
self.listBristol.setColumnWidth(1, 100)
self.listPlugin.setColumnWidth(0, 22)
self.listPlugin.setColumnWidth(1, 225)
self.listPlugin.setColumnWidth(2, 75)
self.listPlugin.setColumnWidth(3, 125)
self.listBristol.setColumnWidth(1, 150)
self.listPlugin.setColumnWidth(0, 225)
self.listPlugin.setColumnWidth(1, 175)
self.listEffect.setColumnWidth(0, 22)
self.listEffect.setColumnWidth(1, 225)
self.listEffect.setColumnWidth(2, 125)
self.listEffect.setColumnWidth(2, 150)
self.listTool.setColumnWidth(0, 22)
self.listTool.setColumnWidth(1, 225)
self.listTool.setColumnWidth(2, 125)
self.listTool.setColumnWidth(2, 150)

# For the custom icons
self.ClaudiaIcons = XIcon()
@@ -170,82 +179,55 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.connect(self.listPlugin, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedPlugin(int)"))
self.connect(self.listEffect, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedEffect(int)"))
self.connect(self.listTool, SIGNAL("currentCellChanged(int, int, int, int)"), SLOT("slot_checkSelectedTool(int)"))
self.connect(self.listDAW, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListDAW(int)"))
self.connect(self.listHost, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListHost(int)"))
self.connect(self.listInstrument, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListInstrument(int)"))
self.connect(self.listBristol, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListBristol(int)"))
self.connect(self.listPlugin, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListPlugin(int)"))
self.connect(self.listEffect, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListEffect(int)"))
self.connect(self.listTool, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedListTool(int)"))

def getSelectedApp(self):
tab_index = self.tabWidget.currentIndex()
column_name = 2 if (tab_index == iTabBristol) else 1

if tab_index == iTabDAW:
listSel = self.listDAW
elif tab_index == iTabHost:
listSel = self.listHost
elif tab_index == iTabInstrument:
listSel = self.listInstrument
elif tab_index == iTabBristol:
listSel = self.listBristol
elif tab_index == iTabPlugin:
listSel = self.listPlugin
elif tab_index == iTabEffect:
listSel = self.listEffect
elif tab_index == iTabTool:
listSel = self.listTool
else:
return ""
self.connect(self.listDAW, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listHost, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listInstrument, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listBristol, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listPlugin, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listEffect, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))
self.connect(self.listTool, SIGNAL("cellDoubleClicked(int, int)"), SLOT("slot_doubleClickedList()"))

return listSel.item(listSel.currentRow(), column_name).text()
def getSelectedAppAndBinary(self):
tabIndex = self.tabWidget.currentIndex()

def getBinaryFromAppName(self, appname):
for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_DAW:
if appname == AppName:
return Binary
if tabIndex == iTabDAW:
item = self.listDAW.item(self.listDAW.currentRow(), 0).data(Qt.UserRole)
return (item[database.iDAW_AppName], item[database.iDAW_Binary])

for Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs in database.list_Host:
if appname == AppName:
return Binary
if tabIndex == iTabHost:
item = self.listHost.item(self.listHost.currentRow(), 0).data(Qt.UserRole)
return (item[database.iHost_AppName], item[database.iHost_Binary])

for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Instrument:
if appname == AppName:
return Binary
if tabIndex == iTabInstrument:
item = self.listInstrument.item(self.listInstrument.currentRow(), 0).data(Qt.UserRole)
return (item[database.iInstrument_AppName], item[database.iInstrument_Binary])

for Package, AppName, Type, ShortName, Icon, Save, Level, License, Features, Docs in database.list_Bristol:
if appname == AppName:
return "startBristol -audio jack -midi jack -%s" % ShortName
if tabIndex == iTabBristol:
item = self.listBristol.item(self.listBristol.currentRow(), 0).data(Qt.UserRole)
return (item[database.iBristol_AppName], "startBristol -audio jack -midi jack -%s" % item[database.iBristol_ShortName])

for Package, Name, Spec, Type, Filename, Label, Icon, License, Features, Docs in database.list_Plugin:
if appname == Name:
return "carla-single native %s \"%s\" \"%s\"" % (Spec.lower(), Filename, Label)
if tabIndex == iTabPlugin:
plugin = self.listPlugin.item(self.listPlugin.currentRow(), 0).data(Qt.UserRole)
return (plugin["name"], "carla-single %s" % plugin["label"])

for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Effect:
if appname == AppName:
return Binary
if tabIndex == iTabEffect:
item = self.listEffect.item(self.listEffect.currentRow(), 0).data(Qt.UserRole)
return (item[database.iEffect_AppName], item[database.iEffect_Binary])

for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Tool:
if appname == AppName:
return Binary
if tabIndex == iTabTool:
item = self.listTool.item(self.listTool.currentRow(), 0).data(Qt.UserRole)
return (item[database.iTool_AppName], item[database.iTool_Binary])

print("ClaudiaLauncher::getBinaryFromAppName(%s) - Failed to find binary from App name" % appname)
return ""
return ("", "")

def startApp(self, app=None):
if not app:
app = self.getSelectedApp()
binary = self.getBinaryFromAppName(app)
def startApp(self):
app, binary = self.getSelectedAppAndBinary()

if app and binary:
os.system("cd '%s' && %s &" % (self.callback_getProjectFolder(), binary))

def addAppToLADISH(self, app=None):
if not app:
app = self.getSelectedApp()

binary = self.getBinaryFromAppName(app)
def addAppToLADISH(self):
app, binary = self.getSelectedAppAndBinary()

if binary.startswith("startBristol"):
self.createAppTemplate("bristol", app, binary)
@@ -301,7 +283,7 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
elif app == "Calf Jack Host":
self.createAppTemplate("calfjackhost", app, binary)

elif app == "Carla":
elif app in ("Carla", "Carla (GIT)"):
self.createAppTemplate("carla", app, binary)

elif app == "Jack Rack":
@@ -646,11 +628,14 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.showDoc_Bristol("", "")

def clearInfo_Plugin(self):
self.ico_app_plugin.setPixmap(self.getIcon("start-here").pixmap(48, 48))
self.ico_app_plugin.setPixmap(self.getIcon("lv2").pixmap(48, 48))
self.label_name_plugin.setText("Plugin Name")
self.ico_stereo_plugin.setPixmap(self.getIconForYesNo(False).pixmap(16, 16))
self.ico_midi_input_plugin.setPixmap(self.getIconForYesNo(False).pixmap(16, 16))
self.ico_presets_plugin.setPixmap(self.getIconForYesNo(False).pixmap(16, 16))
self.label_plugin_audio_ins.setText("0")
self.label_plugin_audio_outs.setText("0")
self.label_plugin_midi_ins.setText("0")
self.label_plugin_midi_outs.setText("0")
self.label_plugin_parameter_ins.setText("0")
self.label_plugin_parameter_outs.setText("0")
self.frame_Plugin.setEnabled(False)
self.showDoc_Plugin("", "")

@@ -785,34 +770,35 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.tabWidget.setTabEnabled(iTabPlugin, False)

last_pos = 0
for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_DAW:
for item in database.list_DAW:
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(AppName)
w_type = QTableWidgetItem(Type)
w_save = QTableWidgetItem(Save)
w_licc = QTableWidgetItem(License)

self.listDAW.insertRow(last_pos)
self.listDAW.setItem(last_pos, 0, w_icon)
self.listDAW.setItem(last_pos, 1, w_name)
self.listDAW.setItem(last_pos, 2, w_type)
self.listDAW.setItem(last_pos, 3, w_save)
self.listDAW.setItem(last_pos, 4, w_licc)

last_pos += 1

last_pos = 0
for Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs in database.list_Host:
for item in database.list_Host:
Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(AppName)
w_h_in = QTableWidgetItem(Instruments)
w_h_ef = QTableWidgetItem(Effects)
w_save = QTableWidgetItem(Save)
w_licc = QTableWidgetItem(License)

self.listHost.insertRow(last_pos)
self.listHost.setItem(last_pos, 0, w_icon)
@@ -820,33 +806,34 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.listHost.setItem(last_pos, 2, w_h_in)
self.listHost.setItem(last_pos, 3, w_h_ef)
self.listHost.setItem(last_pos, 4, w_save)
self.listHost.setItem(last_pos, 5, w_licc)

last_pos += 1

last_pos = 0
for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Instrument:
for item in database.list_Instrument:
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(AppName)
w_type = QTableWidgetItem(Type)
w_save = QTableWidgetItem(Save)
w_licc = QTableWidgetItem(License)

self.listInstrument.insertRow(last_pos)
self.listInstrument.setItem(last_pos, 0, w_icon)
self.listInstrument.setItem(last_pos, 1, w_name)
self.listInstrument.setItem(last_pos, 2, w_type)
self.listInstrument.setItem(last_pos, 3, w_save)
self.listInstrument.setItem(last_pos, 4, w_licc)

last_pos += 1

last_pos = 0
for Package, FullName, Type, ShortName, Icon, Save, Level, License, Features, Docs in database.list_Bristol:
for item in database.list_Bristol:
Package, FullName, Type, ShortName, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_fullname = QTableWidgetItem(FullName)
w_shortname = QTableWidgetItem(ShortName)
@@ -859,59 +846,89 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
last_pos += 1

last_pos = 0
for Package, Name, Spec, Type, Filename, Label, Icon, License, Features, Docs in database.list_Plugin:
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(Name)
w_spec = QTableWidgetItem(Spec)
w_type = QTableWidgetItem(Type)
w_licc = QTableWidgetItem(License)

self.listPlugin.insertRow(last_pos)
self.listPlugin.setItem(last_pos, 0, w_icon)
self.listPlugin.setItem(last_pos, 1, w_name)
self.listPlugin.setItem(last_pos, 2, w_spec)
self.listPlugin.setItem(last_pos, 3, w_type)
self.listPlugin.setItem(last_pos, 4, w_licc)

last_pos += 1

last_pos = 0
for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Effect:
for item in database.list_Effect:
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(AppName)
w_type = QTableWidgetItem(Type)
w_save = QTableWidgetItem(Save)
w_licc = QTableWidgetItem(License)

self.listEffect.insertRow(last_pos)
self.listEffect.setItem(last_pos, 0, w_icon)
self.listEffect.setItem(last_pos, 1, w_name)
self.listEffect.setItem(last_pos, 2, w_type)
self.listEffect.setItem(last_pos, 3, w_save)
self.listEffect.setItem(last_pos, 4, w_licc)

last_pos += 1

last_pos = 0
for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Tool:
for item in database.list_Tool:
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item
if SHOW_ALL or Package in pkglist:
w_icon = QTableWidgetItem("")
w_icon.setData(Qt.UserRole, item)
w_icon.setIcon(QIcon(self.getIcon(Icon)))
w_name = QTableWidgetItem(AppName)
w_type = QTableWidgetItem(Type)
w_save = QTableWidgetItem(Save)
w_licc = QTableWidgetItem(License)

self.listTool.insertRow(last_pos)
self.listTool.setItem(last_pos, 0, w_icon)
self.listTool.setItem(last_pos, 1, w_name)
self.listTool.setItem(last_pos, 2, w_type)
self.listTool.setItem(last_pos, 3, w_save)
self.listTool.setItem(last_pos, 4, w_licc)

last_pos += 1

if haveCarla and os.path.exists("/usr/lib/carla/libcarla_utils.so"):
utils = CarlaUtils("/usr/lib/carla/libcarla_utils.so")
last_pos = 0
for i in range(utils.get_cached_plugin_count(PLUGIN_LV2, os.getenv("LV2_PATH", "~/.lv2:/usr/lib/lv2:/usr/local/lib/lv2"))):
plugin = utils.get_cached_plugin_info(PLUGIN_LV2, i)

if (plugin["hints"] & PLUGIN_HAS_CUSTOM_UI) == 0:
continue

catgtext = ""

if plugin["category"] == PLUGIN_CATEGORY_SYNTH:
catgtext = "Synth"
elif plugin["category"] == PLUGIN_CATEGORY_DELAY:
catgtext = "Delay"
elif plugin["category"] == PLUGIN_CATEGORY_EQ:
catgtext = "Equalizer"
elif plugin["category"] == PLUGIN_CATEGORY_FILTER:
catgtext = "Filter"
elif plugin["category"] == PLUGIN_CATEGORY_DISTORTION:
catgtext = "Distortion"
elif plugin["category"] == PLUGIN_CATEGORY_DYNAMICS:
catgtext = "Dynamics"
elif plugin["category"] == PLUGIN_CATEGORY_MODULATOR:
catgtext = "Modulator"
elif plugin["category"] == PLUGIN_CATEGORY_UTILITY:
catgtext = "Utility"
elif plugin["category"] == PLUGIN_CATEGORY_OTHER:
catgtext = "Other"

if not plugin["category"]:
if plugin["hints"] & PLUGIN_IS_SYNTH:
catgtext = "Synth"
else:
catgtext = "FX"

w_name = QTableWidgetItem(plugin["name"])
w_auth = QTableWidgetItem(plugin["maker"])
w_catg = QTableWidgetItem(catgtext)

w_name.setData(Qt.UserRole, plugin)

self.listPlugin.insertRow(last_pos)
self.listPlugin.setItem(last_pos, 0, w_name)
self.listPlugin.setItem(last_pos, 1, w_auth)
self.listPlugin.setItem(last_pos, 2, w_catg)

last_pos += 1

@@ -927,25 +944,25 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
self.listHost.sortByColumn(1, Qt.AscendingOrder)
self.listInstrument.sortByColumn(1, Qt.AscendingOrder)
self.listBristol.sortByColumn(2, Qt.AscendingOrder)
self.listPlugin.sortByColumn(1, Qt.AscendingOrder)
self.listPlugin.sortByColumn(0, Qt.AscendingOrder)
self.listEffect.sortByColumn(1, Qt.AscendingOrder)
self.listTool.sortByColumn(1, Qt.AscendingOrder)

@pyqtSlot(int)
def slot_checkSelectedTab(self, tab_index):
if tab_index == iTabDAW:
def slot_checkSelectedTab(self, tabIndex):
if tabIndex == iTabDAW:
test_selected = (len(self.listDAW.selectedItems()) > 0)
elif tab_index == iTabHost:
elif tabIndex == iTabHost:
test_selected = (len(self.listHost.selectedItems()) > 0)
elif tab_index == iTabInstrument:
elif tabIndex == iTabInstrument:
test_selected = (len(self.listInstrument.selectedItems()) > 0)
elif tab_index == iTabBristol:
elif tabIndex == iTabBristol:
test_selected = (len(self.listBristol.selectedItems()) > 0)
elif tab_index == iTabPlugin:
elif tabIndex == iTabPlugin:
test_selected = (len(self.listPlugin.selectedItems()) > 0)
elif tab_index == iTabEffect:
elif tabIndex == iTabEffect:
test_selected = (len(self.listEffect.selectedItems()) > 0)
elif tab_index == iTabTool:
elif tabIndex == iTabTool:
test_selected = (len(self.listTool.selectedItems()) > 0)
else:
test_selected = False
@@ -955,19 +972,8 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):
@pyqtSlot(int)
def slot_checkSelectedDAW(self, row):
if row >= 0:
selected = True

app_name = self.listDAW.item(row, 1).text()

for DAW in database.list_DAW:
if DAW[1] == app_name:
app_info = DAW
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info
item = self.listDAW.item(row, 0).data(Qt.UserRole)
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item

self.frame_DAW.setEnabled(True)
self.ico_app_daw.setPixmap(QIcon(self.getIcon(Icon)).pixmap(48, 48))
@@ -984,29 +990,16 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_DAW(Docs0, Docs[1])

else:
selected = False
self.clearInfo_DAW()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedHost(self, row):
if row >= 0:
selected = True

app_name = self.listHost.item(row, 1).text()

for Host in database.list_Host:
if Host[1] == app_name:
app_info = Host
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs = app_info
item = self.listHost.item(row, 0).data(Qt.UserRole)
Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, Features, Docs = item

self.frame_Host.setEnabled(True)
self.ico_app_host.setPixmap(self.getIcon(Icon).pixmap(48, 48))
@@ -1022,29 +1015,16 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Host(Docs0, Docs[1])

else:
selected = False
self.clearInfo_DAW()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedInstrument(self, row):
if row >= 0:
selected = True

app_name = self.listInstrument.item(row, 1).text()

for Instrument in database.list_Instrument:
if Instrument[1] == app_name:
app_info = Instrument
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info
item = self.listInstrument.item(row, 0).data(Qt.UserRole)
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item

self.frame_Instrument.setEnabled(True)
self.ico_app_ins.setPixmap(self.getIcon(Icon).pixmap(48, 48))
@@ -1056,29 +1036,16 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Instrument(Docs0, Docs[1])

else:
selected = False
self.clearInfo_Intrument()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedBristol(self, row):
if row >= 0:
selected = True

app_name = self.listBristol.item(row, 2).text()

for Bristol in database.list_Bristol:
if Bristol[1] == app_name:
app_info = Bristol
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Type, ShortName, Icon, Save, Level, License, Features, Docs = app_info
item = self.listBristol.item(row, 0).data(Qt.UserRole)
Package, AppName, Type, ShortName, Icon, Save, Level, Features, Docs = item

self.frame_Bristol.setEnabled(True)
self.ico_app_bristol.setPixmap(self.getIcon(Icon).pixmap(48, 48))
@@ -1090,62 +1057,38 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Bristol(Docs0, Docs[1])

else:
selected = False
self.clearInfo_Bristol()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedPlugin(self, row):
if row >= 0:
selected = True

pluginName = self.listPlugin.item(row, 1).text()

for plugin in database.list_Plugin:
if plugin[1] == pluginName:
appInfo = plugin
break
else:
print("ERROR: Failed to retrieve plugin info from database")
return

Package, Name, Spec, Type, Filename, Label, Icon, License, Features, Docs = appInfo
plugin = self.listPlugin.item(row, 0).data(Qt.UserRole)

self.frame_Plugin.setEnabled(True)
self.ico_app_plugin.setPixmap(self.getIcon(Icon).pixmap(48, 48))
self.ico_stereo_plugin.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16))
self.ico_midi_input_plugin.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16))
self.ico_presets_plugin.setPixmap(self.getIconForYesNo(Features[2]).pixmap(16, 16))
self.label_name_plugin.setText(Name)

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Plugin(Docs0, Docs[1])

self.ico_app_bristol.setPixmap(self.getIcon("lv2").pixmap(48, 48))
self.label_name_plugin.setText(plugin["name"])
self.label_plugin_audio_ins.setText(str(plugin["audioIns"]))
self.label_plugin_audio_outs.setText(str(plugin["audioOuts"]))
self.label_plugin_midi_ins.setText(str(plugin["midiIns"]))
self.label_plugin_midi_outs.setText(str(plugin["midiOuts"]))
self.label_plugin_parameter_ins.setText(str(plugin["parameterIns"]))
self.label_plugin_parameter_outs.setText(str(plugin["parameterOuts"]))

#Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
#self.showDoc_Plugin(Docs0, Docs[1])
else:
selected = False
self.clearInfo_Plugin()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedEffect(self, row):
if row >= 0:
selected = True

app_name = self.listEffect.item(row, 1).text()

for Effect in database.list_Effect:
if Effect[1] == app_name:
app_info = Effect
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info
item = self.listEffect.item(row, 0).data(Qt.UserRole)
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item

self.frame_Effect.setEnabled(True)
self.ico_app_effect.setPixmap(self.getIcon(Icon).pixmap(48, 48))
@@ -1156,29 +1099,16 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Effect(Docs0, Docs[1])

else:
selected = False
self.clearInfo_Effect()

self.callback_checkGUI(selected)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_checkSelectedTool(self, row):
if row >= 0:
selected = True

app_name = self.listTool.item(row, 1).text()

for Tool in database.list_Tool:
if Tool[1] == app_name:
app_info = Tool
break
else:
print("ERROR: Failed to retrieve app info from database")
return

Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info
item = self.listTool.item(row, 0).data(Qt.UserRole)
Package, AppName, Type, Binary, Icon, Save, Level, Features, Docs = item

self.frame_Tool.setEnabled(True)
self.ico_app_tool.setPixmap(self.getIcon(Icon).pixmap(48, 48))
@@ -1189,68 +1119,17 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW):

Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else ""
self.showDoc_Tool(Docs0, Docs[1])

else:
selected = False
self.clearInfo_Tool()

self.callback_checkGUI(selected)

@pyqtSlot(int)
def slot_doubleClickedListDAW(self, row):
app = self.listDAW.item(row, 1).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)

@pyqtSlot(int)
def slot_doubleClickedListHost(self, row):
app = self.listHost.item(row, 1).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)

@pyqtSlot(int)
def slot_doubleClickedListInstrument(self, row):
app = self.listInstrument.item(row, 1).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)

@pyqtSlot(int)
def slot_doubleClickedListBristol(self, row):
app = self.listBristol.item(row, 2).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)

@pyqtSlot(int)
def slot_doubleClickedListPlugin(self, row):
app = self.listPlugin.item(row, 1).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)

@pyqtSlot(int)
def slot_doubleClickedListEffect(self, row):
app = self.listEffect.item(row, 1).text()
if self.m_ladish_only:
self.addAppToLADISH(app)
else:
self.startApp(app)
self.callback_checkGUI(row >= 0)

@pyqtSlot(int)
def slot_doubleClickedListTool(self, row):
app = self.listTool.item(row, 1).text()
@pyqtSlot()
def slot_doubleClickedList(self):
if self.m_ladish_only:
self.addAppToLADISH(app)
self.addAppToLADISH()
else:
self.startApp(app)
self.startApp()

def saveSettings(self):
if self.settings():


Loading…
Cancel
Save