| @@ -24,9 +24,58 @@ | |||||
| // Single, standalone engine | // Single, standalone engine | ||||
| static CarlaBackend::CarlaEngine* carlaEngine = nullptr; | static CarlaBackend::CarlaEngine* carlaEngine = nullptr; | ||||
| static CarlaBackend::CallbackFunc carlaFunc = nullptr; | static CarlaBackend::CallbackFunc carlaFunc = nullptr; | ||||
| static const char* extendedLicenseText = nullptr; | |||||
| // ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
| const char* get_extended_license_text() | |||||
| { | |||||
| qDebug("CarlaBackendStandalone::get_extended_license_text()"); | |||||
| QString text("<p>This current Carla build is using the following features and 3rd-party code:</p>"); | |||||
| text += "<ul>"; | |||||
| #ifdef WANT_LADSPA | |||||
| text += "<li>LADSPA plugin support, http://www.ladspa.org/</li>"; | |||||
| #endif | |||||
| #ifdef WANT_DSSI | |||||
| text += "<li>DSSI plugin support, http://dssi.sourceforge.net/</li>"; | |||||
| #endif | |||||
| #ifdef WANT_LV2 | |||||
| text += "<li>LV2 plugin support, http://lv2plug.in/</li>"; | |||||
| #endif | |||||
| #ifdef WANT_VST | |||||
| # ifdef VESTIGE_HEADER | |||||
| text += "<li>VST plugin support, using VeSTige header by Javier Serrano Polo</li>"; | |||||
| # else | |||||
| text += "<li>VST plugin support, using official VST SDK 2.4 trademark of Steinberg Media Technologies GmbH</li>"; | |||||
| # endif | |||||
| #endif | |||||
| #ifdef WANT_FLUIDSYNTH | |||||
| text += "<li>FluidSynth library for SF2 support, http://www.fluidsynth.org/</li>"; | |||||
| #endif | |||||
| #ifdef WANT_LINUXSAMPLER | |||||
| text += "<li>LinuxSampler library for GIG and SFZ support*, http://www.linuxsampler.org/</li>"; | |||||
| #endif | |||||
| text += "<li>liblo library for OSC support, http://liblo.sourceforge.net/</li>"; | |||||
| #ifdef WANT_LV2 | |||||
| text += "<li>serd, sord, sratom and lilv libraries for LV2 discovery, http://drobilla.net/software/lilv/</li>"; | |||||
| #endif | |||||
| #ifdef CARLA_ENGINE_RTAUDIO | |||||
| text += "<li>RtAudio and RtMidi libraries for extra Audio and MIDI support, http://www.music.mcgill.ca/~gary/rtaudio/</li>"; | |||||
| #endif | |||||
| text += "</ul>"; | |||||
| #ifdef WANT_LINUXSAMPLER | |||||
| text += "<p>(*) Using LinuxSampler code in commercial hardware or software products is not allowed without prior written authorization by the authors.</p>"; | |||||
| #endif | |||||
| if (! extendedLicenseText) | |||||
| extendedLicenseText = strdup(text.toUtf8().constData()); | |||||
| return extendedLicenseText; | |||||
| } | |||||
| unsigned int get_engine_driver_count() | unsigned int get_engine_driver_count() | ||||
| { | { | ||||
| qDebug("CarlaBackendStandalone::get_engine_driver_count()"); | qDebug("CarlaBackendStandalone::get_engine_driver_count()"); | ||||
| @@ -224,6 +273,12 @@ bool engine_close() | |||||
| delete carlaEngine; | delete carlaEngine; | ||||
| carlaEngine = nullptr; | carlaEngine = nullptr; | ||||
| if (extendedLicenseText) | |||||
| { | |||||
| free((void*)extendedLicenseText); | |||||
| extendedLicenseText = nullptr; | |||||
| } | |||||
| return closed; | return closed; | ||||
| } | } | ||||
| @@ -95,6 +95,8 @@ struct GuiInfo { | |||||
| resizable(false) {} | resizable(false) {} | ||||
| }; | }; | ||||
| CARLA_EXPORT const char* get_extended_license_text(); | |||||
| CARLA_EXPORT unsigned int get_engine_driver_count(); | CARLA_EXPORT unsigned int get_engine_driver_count(); | ||||
| CARLA_EXPORT const char* get_engine_driver_name(unsigned int index); | CARLA_EXPORT const char* get_engine_driver_name(unsigned int index); | ||||
| @@ -1070,40 +1070,46 @@ class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | |||||
| "<br>Version %s" | "<br>Version %s" | ||||
| "<br>Carla is a Multi-Plugin Host for JACK.<br>" | "<br>Carla is a Multi-Plugin Host for JACK.<br>" | ||||
| "<br>Copyright (C) 2011-2012 falkTX<br>" | "<br>Copyright (C) 2011-2012 falkTX<br>" | ||||
| "<br><i>VST is a trademark of Steinberg Media Technologies GmbH.</i>" | |||||
| "" % VERSION)) | "" % VERSION)) | ||||
| host_osc_url = cString(Carla.Host.get_host_osc_url()) | |||||
| self.le_osc_url.setText(host_osc_url) | |||||
| self.l_extended.setText(cString(Carla.Host.get_extended_license_text())) | |||||
| self.le_osc_url.setText(cString(Carla.Host.get_host_osc_url())) | |||||
| self.l_osc_cmds.setText( | self.l_osc_cmds.setText( | ||||
| " /set_active <i-value>\n" | |||||
| " /set_drywet <f-value>\n" | |||||
| " /set_volume <f-value>\n" | |||||
| " /set_balance_left <f-value>\n" | |||||
| " /set_balance_right <f-value>\n" | |||||
| " /set_parameter <i-index> <f-value>\n" | |||||
| " /set_program <i-index>\n" | |||||
| " /set_midi_program <i-index>\n" | |||||
| " /note_on <i-note> <i-velo>\n" | |||||
| " /note_off <i-note>\n" | |||||
| " /set_active <i-value>\n" | |||||
| " /set_drywet <d-value>\n" | |||||
| " /set_volume <d-value>\n" | |||||
| " /set_balance_left <d-value>\n" | |||||
| " /set_balance_right <d-value>\n" | |||||
| " /set_parameter_value <i-index> <d-value>\n" | |||||
| #" /set_parameter_midi_cc <i-index> <i-cc>\n" | |||||
| #" /set_parameter_midi_channel <i-index> <i-channel>\n" | |||||
| " /set_program <i-index>\n" | |||||
| " /set_midi_program <i-index>\n" | |||||
| " /note_on <i-note> <i-velo>\n" | |||||
| " /note_off <i-note>\n" | |||||
| ) | ) | ||||
| self.l_example.setText("/Carla/2/set_parameter 2 0.5") | |||||
| self.l_example_help.setText("<i>(as in this example, \"2\" is the plugin number)</i>") | |||||
| self.l_example.setText("/Carla/2/set_parameter_value 5 1.0") | |||||
| self.l_example_help.setText("<i>(as in this example, \"2\" is the plugin number and \"5\" the parameter)</i>") | |||||
| self.l_ladspa.setText(self.tr("Everything! (Including LRDF)")) | self.l_ladspa.setText(self.tr("Everything! (Including LRDF)")) | ||||
| self.l_dssi.setText(self.tr("Everything! (Including CustomData/Chunks)")) | self.l_dssi.setText(self.tr("Everything! (Including CustomData/Chunks)")) | ||||
| self.l_lv2.setText(self.tr("About 95% complete (only missing minor features).<br/>" | |||||
| self.l_lv2.setText(self.tr("About 95% complete (using custom extensions).<br/>" | |||||
| "Implemented Feature/Extensions:" | "Implemented Feature/Extensions:" | ||||
| "<ul>" | "<ul>" | ||||
| "<li>http://lv2plug.in/ns/ext/atom</li>" | "<li>http://lv2plug.in/ns/ext/atom</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/buf-size</li>" | |||||
| "<li>http://lv2plug.in/ns/ext/data-access</li>" | "<li>http://lv2plug.in/ns/ext/data-access</li>" | ||||
| #"<li>http://lv2plug.in/ns/ext/dynmanifest</li>" | |||||
| "<li>http://lv2plug.in/ns/ext/event</li>" | "<li>http://lv2plug.in/ns/ext/event</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/instance-access</li>" | "<li>http://lv2plug.in/ns/ext/instance-access</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/log</li>" | "<li>http://lv2plug.in/ns/ext/log</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/midi</li>" | "<li>http://lv2plug.in/ns/ext/midi</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/options</li>" | |||||
| #"<li>http://lv2plug.in/ns/ext/parameters</li>" | |||||
| "<li>http://lv2plug.in/ns/ext/patch</li>" | "<li>http://lv2plug.in/ns/ext/patch</li>" | ||||
| #"<li>http://lv2plug.in/ns/ext/port-groups</li>" | |||||
| "<li>http://lv2plug.in/ns/ext/port-props</li>" | "<li>http://lv2plug.in/ns/ext/port-props</li>" | ||||
| #"<li>http://lv2plug.in/ns/ext/presets</li>" | #"<li>http://lv2plug.in/ns/ext/presets</li>" | ||||
| "<li>http://lv2plug.in/ns/ext/state</li>" | "<li>http://lv2plug.in/ns/ext/state</li>" | ||||
| @@ -1113,12 +1119,11 @@ class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): | |||||
| "<li>http://lv2plug.in/ns/ext/worker</li>" | "<li>http://lv2plug.in/ns/ext/worker</li>" | ||||
| "<li>http://lv2plug.in/ns/extensions/ui</li>" | "<li>http://lv2plug.in/ns/extensions/ui</li>" | ||||
| "<li>http://lv2plug.in/ns/extensions/units</li>" | "<li>http://lv2plug.in/ns/extensions/units</li>" | ||||
| #"<li>http://home.gna.org/lv2dynparam/v1</li>" | |||||
| "<li>http://home.gna.org/lv2dynparam/rtmempool/v1</li>" | |||||
| "<li>http://kxstudio.sf.net/ns/lv2ext/external-ui</li>" | |||||
| "<li>http://kxstudio.sf.net/ns/lv2ext/programs</li>" | "<li>http://kxstudio.sf.net/ns/lv2ext/programs</li>" | ||||
| #"<li>http://ll-plugins.nongnu.org/lv2/ext/midimap</li>" | |||||
| "<li>http://kxstudio.sf.net/ns/lv2ext/rtmempool</li>" | |||||
| "<li>http://ll-plugins.nongnu.org/lv2/ext/midimap</li>" | |||||
| "<li>http://ll-plugins.nongnu.org/lv2/ext/miditype</li>" | "<li>http://ll-plugins.nongnu.org/lv2/ext/miditype</li>" | ||||
| "<li>http://nedko.arnaudov.name/lv2/external_ui/</li>" | |||||
| "</ul>")) | "</ul>")) | ||||
| self.l_vst.setText(self.tr("<p>About 85% complete (missing vst bank/presets and some minor stuff)</p>")) | self.l_vst.setText(self.tr("<p>About 85% complete (missing vst bank/presets and some minor stuff)</p>")) | ||||
| @@ -762,6 +762,9 @@ class Host(object): | |||||
| self.lib = cdll.LoadLibrary(carla_library_path) | self.lib = cdll.LoadLibrary(carla_library_path) | ||||
| self.lib.get_extended_license_text.argtypes = None | |||||
| self.lib.get_extended_license_text.restype = c_char_p | |||||
| self.lib.get_engine_driver_count.argtypes = None | self.lib.get_engine_driver_count.argtypes = None | ||||
| self.lib.get_engine_driver_count.restype = c_uint | self.lib.get_engine_driver_count.restype = c_uint | ||||
| @@ -945,6 +948,9 @@ class Host(object): | |||||
| self.lib.nsm_reply_save.argtypes = None | self.lib.nsm_reply_save.argtypes = None | ||||
| self.lib.nsm_reply_save.restype = None | self.lib.nsm_reply_save.restype = None | ||||
| def get_extended_license_text(self): | |||||
| return self.lib.get_extended_license_text() | |||||
| def get_engine_driver_count(self): | def get_engine_driver_count(self): | ||||
| return self.lib.get_engine_driver_count() | return self.lib.get_engine_driver_count() | ||||
| @@ -7,7 +7,7 @@ | |||||
| <x>0</x> | <x>0</x> | ||||
| <y>0</y> | <y>0</y> | ||||
| <width>484</width> | <width>484</width> | ||||
| <height>252</height> | |||||
| <height>433</height> | |||||
| </rect> | </rect> | ||||
| </property> | </property> | ||||
| <property name="windowTitle"> | <property name="windowTitle"> | ||||
| @@ -24,30 +24,14 @@ | |||||
| <string>About</string> | <string>About</string> | ||||
| </attribute> | </attribute> | ||||
| <layout class="QGridLayout" name="gridLayout_3"> | <layout class="QGridLayout" name="gridLayout_3"> | ||||
| <item row="2" column="0"> | |||||
| <spacer name="horizontalSpacer"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| <property name="sizeType"> | |||||
| <enum>QSizePolicy::Fixed</enum> | |||||
| </property> | |||||
| <property name="sizeHint" stdset="0"> | |||||
| <size> | |||||
| <width>100</width> | |||||
| <height>20</height> | |||||
| </size> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| <item row="2" column="1"> | <item row="2" column="1"> | ||||
| <widget class="QLabel" name="l_about"> | <widget class="QLabel" name="l_about"> | ||||
| <property name="text"> | <property name="text"> | ||||
| <string>about text here</string> | |||||
| <string>About text here</string> | |||||
| </property> | </property> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item row="4" column="0" colspan="2"> | |||||
| <item row="7" column="0" colspan="2"> | |||||
| <spacer name="verticalSpacer"> | <spacer name="verticalSpacer"> | ||||
| <property name="orientation"> | <property name="orientation"> | ||||
| <enum>Qt::Vertical</enum> | <enum>Qt::Vertical</enum> | ||||
| @@ -60,8 +44,22 @@ | |||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="1" column="0" colspan="2"> | |||||
| <widget class="QLabel" name="label_8"> | |||||
| <item row="2" column="0"> | |||||
| <spacer name="horizontalSpacer"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| <item row="2" column="2"> | |||||
| <spacer name="horizontalSpacer_2"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| <item row="1" column="0" colspan="3"> | |||||
| <widget class="QLabel" name="l_icons"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string/> | <string/> | ||||
| </property> | </property> | ||||
| @@ -73,7 +71,7 @@ | |||||
| </property> | </property> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item row="0" column="0" colspan="2"> | |||||
| <item row="0" column="0" colspan="3"> | |||||
| <spacer name="verticalSpacer_4"> | <spacer name="verticalSpacer_4"> | ||||
| <property name="orientation"> | <property name="orientation"> | ||||
| <enum>Qt::Vertical</enum> | <enum>Qt::Vertical</enum> | ||||
| @@ -86,6 +84,16 @@ | |||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="3" column="0" colspan="3"> | |||||
| <widget class="QLabel" name="l_extended"> | |||||
| <property name="text"> | |||||
| <string>Extended licensing here</string> | |||||
| </property> | |||||
| <property name="wordWrap"> | |||||
| <bool>true</bool> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| </layout> | </layout> | ||||
| </widget> | </widget> | ||||
| <widget class="QWidget" name="features"> | <widget class="QWidget" name="features"> | ||||