FIXED. Reloaded binaries.falkTX wrote:No more errors found in the ttl files. Good work.
Happy new year!
Moderators: raboof, MattKingUSA, khz
FIXED. Reloaded binaries.falkTX wrote:No more errors found in the ttl files. Good work.
You may leave all stuff here.falkTX wrote:@sadko4u: where's the best place to report bugs and send patches etc?
Code: Select all
g_signal_connect (G_OBJECT (pWidget), "parent-set", G_CALLBACK (gtk_window_set_parent), this);
Code: Select all
void Gtk2Window::gtk_window_set_parent(GtkWidget *widget, GtkObject *prev, gpointer p_this) // static
{
Gtk2Window *_this = reinterpret_cast<Gtk2Window *>(p_this);
lsp_trace("_this=%p, _this->pWidget=%p, _this->bMapped=%d, _this->Function=%x", _this, _this->pWidget, _this->bMapped ? 1 : 0, int(_this->hFunction));
if (_this != NULL)
_this->set_parent(widget);
}
void Gtk2Window::set_parent(GtkWidget *parent)
{
// Change size
GtkWidget *toplevel = gtk_widget_get_toplevel(pWidget);
if (gtk_widget_is_toplevel (toplevel) && (GTK_IS_WINDOW(toplevel)))
{
pToplevel = toplevel;
// ...
// Due to having artifacts with some cairo elements on expose() we have to periodically redraw the entire window
hMapHandler = g_signal_connect(pToplevel, "map", G_CALLBACK(map_window), gpointer(this));
lsp_trace("Added map handler %x", int(hMapHandler));
hUnmapHandler = g_signal_connect(pToplevel, "unmap", G_CALLBACK(unmap_window), gpointer(this));
lsp_trace("Added unmap handler %x", int(hUnmapHandler));
}
}
Code: Select all
void Gtk2Window::map_window(GtkWidget *widget, gpointer ptr) // static
{
Gtk2Window *_this = reinterpret_cast<Gtk2Window *>(ptr);
lsp_trace("_this=%p, _this->pWidget=%p, _this->bMapped=%d, _this->Function=%x", _this, _this->pWidget, _this->bMapped ? 1 : 0, int(_this->hFunction));
if ((_this != NULL) && (!_this->bMapped))
{
_this->hFunction = g_timeout_add (500, redraw_window, _this); // Schedule at 2 hz rate
_this->bMapped = true;
}
}
void Gtk2Window::unmap_window(GtkWidget *widget, gpointer ptr) // static
{
Gtk2Window *_this = reinterpret_cast<Gtk2Window *>(ptr);
lsp_trace("_this=%p, _this->pWidget=%p, _this->bMapped=%d, _this->Function=%x", _this, _this->pWidget, _this->bMapped ? 1 : 0, int(_this->hFunction));
if ((_this != NULL) && (_this->bMapped))
{
if (_this->hFunction)
g_source_remove(_this->hFunction);
_this->bMapped = false;
_this->hFunction = 0;
}
}
Code: Select all
gboolean Gtk2Window::redraw_window(gpointer ptr) // static
{
Gtk2Window *_this = reinterpret_cast<Gtk2Window *>(ptr);
lsp_trace("_this=%p, _this->pWidget=%p, _this->bMapped=%d, _this->Function=%x", _this, _this->pWidget, _this->bMapped ? 1 : 0, int(_this->hFunction));
if ((_this != NULL) && (_this->pWidget != NULL) && (_this->bMapped))
gtk_widget_queue_draw(_this->pWidget);
return TRUE;
}
When closing window, there is no unmap event handler called that I set on parent-set signal handler.[Gtk2Window.cpp: 182] gtk_window_set_parent: _this=0x171e7c0, _this->pWidget=0x16eee40, _this->bMapped=0, _this->Function=0
[Gtk2Window.cpp: 173] set_parent: Added map handler b
[Gtk2Window.cpp: 175] set_parent: Added unmap handler c
[Gtk2Window.cpp: 199] map_window: _this=0x171e7c0, _this->pWidget=0x16eee40, _this->bMapped=0, _this->Function=0
[Gtk2Window.cpp: 190] redraw_window: _this=0x171e7c0, _this->pWidget=0x16eee40, _this->bMapped=1, _this->Function=4
[Gtk2Window.cpp: 190] redraw_window: _this=0x171e7c0, _this->pWidget=0x16eee40, _this->bMapped=1, _this->Function=4
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '<invalid>' in cast to 'Gtk2CustomWidget-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'Gtk2CustomWidget-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'CustomGtkFrame-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'Gtk2CustomWidget-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'Gtk2CustomWidget-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'Gtk2CustomWidget-v0'
(carla-bridge-lv2-gtk2:29175): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'CustomGtkFrame-v0'
Ardour need to explicitly scan for LXVST in Edit-->Preferences-->Plugins, if your LinuxVST's are not in a standard location (usr/lib/vst, usr/local/lib/vst) then you additionally will need to define the path in Edit-->Preferences-->Pluginssadko4u wrote:I'm working now on porting sources to VST.
I've built Carla from GIT under openSUSE. Works stable.
But don't know how to enable VST support in Ardour. It seems like Ardour doesn't even try to discover VST plugins in the system.
I've tried to manually set up LXVST_PATH environment variable in the start script of Ardour but it still didn't matter.
Do I need to build Ardour manually for VST support?
Still Carla doesn't support UTF-8 umlauts on LV2 but displays them well for VSTs.
The previously mentioned GTK issues were fixed but still binaries are not published until generic VST support will be done.
Thanks. asbak gave complete solution. I just turned on VST scan on startup and it worked.GMaq wrote:Ardour need to explicitly scan for LXVST in Edit-->Preferences-->Plugins, if your LinuxVST's are not in a standard location (usr/lib/vst, usr/local/lib/vst) then you additionally will need to define the path in Edit-->Preferences-->Plugins
Yes, I know about units and think to implement them in the nearest future for LV2 version of plugin.falkTX wrote:@sadko4u: Can you make the lv2 plugins have the units defined properly?
Instead of having like "Time (ms)" in the parameter name, remove the "(ms)" and add a units:ms for example.
The official lv2 spec for units is here http://lv2plug.in/ns/extensions/units/.
You can use the already provided units or make your own.
Nice! Thank you! Works fine for me:falkTX wrote:FYI I fixed the garbled names in Carla.
Some weird lilvmm bug.
I'm using these from VST SDK:falkTX wrote:As for the parameter names, carla uses effGetParamName.
How are you describing the names?
Code: Select all
struct VstParameterProperties
{
// ...
char label[kVstMaxLabelLen];///< parameter label
// ...
char shortLabel[kVstMaxShortLabelLen]; ///< short label, recommended: 6 + delimiter
// ...
};
Here is the description from official SDK:falkTX wrote:Have you tried other hosts to see if they support those?
(ie, renoise, bitwig, tracktion)
why not returning the full name during effGetParamName ?
Code: Select all
effGetParamLabel, ///< [ptr]: char buffer for parameter label, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterLabel
effGetParamDisplay, ///< [ptr]: char buffer for parameter display, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterDisplay
effGetParamName, ///< [ptr]: char buffer for parameter name, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterName
Code: Select all
enum VstStringConstants
{
//-------------------------------------------------------------------------------------------------------
kVstMaxProgNameLen = 24, ///< used for #effGetProgramName, #effSetProgramName, #effGetProgramNameIndexed
kVstMaxParamStrLen = 8, ///< used for #effGetParamLabel, #effGetParamDisplay, #effGetParamName
kVstMaxVendorStrLen = 64, ///< used for #effGetVendorString, #audioMasterGetVendorString
kVstMaxProductStrLen = 64, ///< used for #effGetProductString, #audioMasterGetProductString
kVstMaxEffectNameLen = 32 ///< used for #effGetEffectName
//-------------------------------------------------------------------------------------------------------
};
That's bad . The following comment in the link you mentioned describes this:falkTX wrote:yeah, that restriction is very stupid.
that's why no host follows it
for example, just plugins use 16 instead of 8.
I think that for that purposes Steinberg added parameter label in VstParameterProperties.// length should technically be kVstMaxParamStrLen, which is 8, but hosts will normally allow a bit more.
This could be very nice!falkTX wrote:Anyway, I can certainly add this feature to carla.