Forum: VirtualDJ Plugins

Questions about plugins development, talks with other developers etc
Sujet Plugin interface Type VDJINTERFACE_SKIN and new additions in skin engine
NicotuxHome userMember since 2014
After some tests playing with "Basic Plugin using SDK v8 (with custom Skin Interface)" it looks like
<textzone visibility="get_deck 'master' ? true : false">...
is working but
<textzone condition="get_deck 'master' ? true : false">....
is not

Posté Thu 02 Apr 20 @ 7:36 pm
NicotuxHome userMember since 2014
Maybe someone would be interested in testing unconventional thing:
Skin addon plugin:

The plugin by itself does not do anything by itself but implements a big resizeable skin page as effect gui

The test extention is a big pad page with selector, 64 buttons and 16 sliders, 2 parameters and menu
(everything pad can do in one page)

for now hardcoded, but if interesting enough, it may ends with adding selectable skin

Posté Sat 04 Apr 20 @ 1:44 pm
locodogPRO InfinityModeratorMember since 2013
like the idea, send me a link.
also I've you my new thing in your pm box.

Posté Sat 04 Apr 20 @ 2:25 pm
locodogPRO InfinityModeratorMember since 2013
cool concept, does it have to be fixed in size [just a bit too big for 13something * 768] *edit* oh never mind I didn't test right

could it save the size and position?

Posté Sun 05 Apr 20 @ 10:08 am
"condition" get's evaluated only once on skin load. So it doesn't change dynamically.
On the other hand "visibility" for elements and "visible" for panels gets evaluated constantly. Both "visibility" and "visible" allow for dynamic updates.
"condition" requires skin to be reloaded to reflect any changes.

"condition" puts much less stress on program than "visibility"/"visible" and it was added to help release some resources when coding very complex skins.

The author of the skin should determine which elements need to change dynamically, and which not. And then use the appropriate code.
For instance, changing "layouts" on skins is safe to be coded with condition and reloading the skin right after the user changes the layout.
On the other hand elements like master deck that change frequently should not be coded with condition, but with visibility

I hope this info helps

Posté Sun 05 Apr 20 @ 11:57 am
NicotuxHome userMember since 2014
1) Big Size is just because i copied/pasted the external window from a skin
a resize zone bottom right allow to resize the window - working but mouse does not report (no cursor change)

2) No, as for any other plugin VDJ automates the position of any kind of GUI
the other hand, size is in skin header... if drawing is fully dynamic sure it could be done by altering XML header itself
(radius is not computable, so it would be another challenge)

now, it's just a proof of concept
skins can use extra windows.... how does it work with GUI skins ?? have to test
I tested video, they are working fine (some kind of preview with visibility cursors on it :)
if small enough it can dock^^

https://ibb.co/MSPTxVV

@PhantomDeejay yes condition needs skin to reload and are evaluated as soon as they appear
But it seems here the problem is more specific related to plugin load time (not intend to be use like this i think) where things are not always already OK (the same code working with skin and video skin). The GUI skin may be "loaded" out of VDJ environment

With defines conditions are also evaluated at declaration time (can be use as define parameter but not for elements declared in the define itself) this is understandable
i would like radius to be computable


Posté Sun 05 Apr 20 @ 12:18 pm
NicotuxHome userMember since 2014
Ok can select and use external skins (no way to use image and no automatic refresh)
Tested with video/karaoke skins, crashes with normal skins
Skin used saved in ini file

Left : Plugin with Broadcast skin & Right : master output using Broadcast skin
https://ibb.co/wJBPxCc

Left : Plugin with Broadcast skin & Right : master output using Live skin
https://ibb.co/0jd7MtX

Posté Mon 06 Apr 20 @ 1:04 am
NicotuxHome userMember since 2014
"quote=locodog]cool concept, does it have to be fixed in size [just a bit too big for 13something * 768] *edit* oh never mind I didn't test right

could it save the size and position?[/quote"

1) New version have its small (900x421) dedicated initial page and adds resize to any skin and background if needed

2) Badly No, skin engine does not save or report the moved/resized informations for plugin skins

Can now be used as "per deck" effect and with any name give it


custom bundeled placeholderscan be used if needed
[VDJPLUGIN] will take DLLName
[PLUGINDECK] will take the number (or name) of initial deck the plugin was loaded on
usefull to grand access to strings or button from within custom skin addon
i.e .: action="deck [PLUGINDECK] effect_button [VDJPLUGIN] 1"
Note : this one is equivalent to action="close" because all "close" actions are replaced with that to prevent VDJ to exit when only plugin have to close

Can also do indirect actions on string 2 and indirect queries on string 3 (one indirection level more builder have)

Posté Mon 20 Apr 20 @ 1:37 am
NicotuxHome userMember since 2014
It seems nobody cares about this kind of plugins

But it allows that:

Denon Prime 4 Deluxe + DenonPrime4 as a plugin ...

https://imgur.com/a/lEIXRVs

Posté Sun 03 May 20 @ 12:07 pm
Very interesting. I haven't bought the software yet because while it's very customizable I haven't figured out a way to visually represent and edit my secondary pad board via normal skin editing because pads don't have slots like effects do. Were you able to execute the large pad board experiment that you mentioned initially? I'd be curious to know.

I have a ddj-xp2 to go with my ddj-1000 and would like to visually see references to what I've got set on the xp2 but with the current pad implementation and independent pad mode it doesn't appear possible.

Posté Mon 18 May 20 @ 10:34 am
NicotuxHome userMember since 2014
the "large pad board" as well as the one with pressure sliders are old now and i put them as a demo to this plugin
https://imgur.com/a/x2LNIPR
plugin uploaded waiting for revue (but chance never be accepted, it allows to do many unwanted things)

Posté Mon 18 May 20 @ 7:36 pm