Forum: VirtualDJ Plugins

Questions about plugins development, talks with other developers etc
话题: Controlling QLC+ DMX lighting program from VDJ8 via MIDI IAC Driver on Mac? - Page: 6
NicotuxHome userMember since 2014
"Could really network problems in systems be the point ?"

I will say not really. Not network but Internet access. It's something not directly related with the plugin. VDJ generally freezes when attempting to reach a distant site and something make it do something else using network. i.e. click rapidely twice on next while downloading covers from tag editor or for VDJartnet init a socket when it already display initial 'Downloading..." for message tip of the day update .... when I say really bad internet It sometimes goes under the 12kbps or stop responding for minutes.

"Plugins will also not work well if other dll like soundswitch.dll is in Autostart,too !"

ah yes, i forgot the dlls in AutoStart, as home edition i use does not handle them in parameters... that may be the point
... grrr these presets with ... ? & ... and multiple is_audible deck active

发表时间 Tue 05 Mar 19 @ 6:33 pm
Is_audible deck.... works with crossfader on my denon mc7000 controller .
I made in QLC+ a workflow to get 32 beat parts to macros. By using both decks playing and crossfade then it switch always to right macro of the playing deck.
The line fade must be over ~20% to enable/disable ,too.
https://youtu.be/4OzAxBxU54U

What's wrong with other scripts?

发表时间 Tue 05 Mar 19 @ 6:49 pm
NicotuxHome userMember since 2014
Don' worry about what you do in the video... to test the plugin I almost do the same ^^

The stability i was talking about are two different The first one VDJ+Windows+Bad_Internet+some networkaccess we can't do anything but wait longer to init socket
The second is when exiting VirtualDJ sometimes fail due to heap corruption... Dixit the VS Debugger and do not save the settings.xml only vith VDJArtnet

While running the plugin looks verry stable .

发表时间 Tue 05 Mar 19 @ 6:49 pm
NicotuxHome userMember since 2014
Is_audible deck.... doesn't have to repeat many times in the scripts, once is enough, it this won't change the time the script will take to execute
Doing so you'll be able to remove as many "?" ... as removed "is_audible" and as many final ": set $VDJArtnetsend 0"
resulting in pretty much shorter and faster scripts lines

also did you play with the extra feature in my VDJartnet.dll ?
when you do not set VDJartnetsend to anything or set it out of range 0..255, the channel will stay as is instead as being shut off (default to 256 instead of 0 and don't apply return value)

发表时间 Tue 05 Mar 19 @ 7:04 pm
Nicotux wrote :
Is_audible deck.... doesn't have to repeat many times in the scripts, once is enough, it this won't change the time the script will take to execute
Doing so you'll be able to remove as many "?" ... as removed "is_audible" and as many final ": set $VDJArtnetsend 0"
resulting in pretty much shorter and faster scripts lines

also did you play with the extra feature in my VDJartnet.dll ?
when you do not set VDJartnetsend to anything or set it out of range 0..255, the channel will stay as is instead as being shut off (default to 256 instead of 0 and don't apply return value)


I did other way. Look on picture. Your dll does different if a song goes to end:
I told you in last post that always the right macro of 32 beat should be activated in QLC+ through script.
In my dll if song goes to end, the macro switches automatically to first macro (there i have in QLC+ a minimum brightness of the lights set, so its not dark if track went to end. The first macro is only played first 32 beats, then next...next....if last macro played, it goes to macro 2 instead of 1 then next....until song ends)
In your old well working 64bit dll it stops at last played macro. If there is action coded in QLC+ then action stays always until i play a new track. Thats not my workflow.
In VDJ if the track end, it turns to the beginning , so the scripting should do that too.

With my scripting itself, you are right. Could be shorter. I tested all scripts to wanted function. Sometimes i did not know the best way to get what i want. So can be that its not optimal.

You must know, too that a am an delphi programmer, not a c++. So its not so easy for me to make big changes in code. The sources based on 10.05.2018 Github

发表时间 Tue 05 Mar 19 @ 7:34 pm
NicotuxHome userMember since 2014
Using your scripts with my dll must do strictly the same as far as you do not return out of bounds values

In the capture you can see the BUG with the update

here is the fixed version with both modes as a define : https://pastebin.com/c3n2XZXe
and for fun the pascal/delphi equivalent : https://pastebin.com/yRTHWYTB

It' a little more explicite in the delphi version

perhaps would we redo this plugin using Lazarus ...

发表时间 Tue 05 Mar 19 @ 9:28 pm
NicotuxHome userMember since 2014
@bluescreen20
"In your old well working 64bit dll it stops at last played macro."

As you know, this is not a possibility as the plugin is only a thread getting values from VDJ and sending them to DMX
it does not have a start / stop or a beat sync it simply send them
the difference between the fixed and the original one is some paquets which are already send are ignored

what may perhaps alter the ending is the wait time between request as the original ignores this value it may be too long in the config
if set to the default it will be the same

the only one difference is VDJ 32bit vs VD J64bit
badly when at home I can't use VDJ64 which can't run on this PC, no DX11 video crashing VDJ64
when i would be able to run VDJ64 I don't have time to experiment with it
I will take a try next weekend a

what i see is either VDJ64 does not act as VDJ32 or script interpreter does not work the same
So far your dll may suffer the same issue as these parts of code are identical

There is another possibility however...
some of your scripts may leave $VDJartnetsend variable unmodified
They work as you need when your version of the plugin inits it with 0 but will act differently with my version which init with 256
Or have a typo as in these ones:

VolumeLevel intensity audible~is_audible deck active ? & get_level & param_multiply 255 & set $VDJartnetSend : set $VDJartnetSend 0
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------^---------------------------------^
VU_Meter peak intensity audible~is_audible deck active ? & get_vu_meter_peak & param_multiply 255 & set $VDJartnetsend : set $VDJartnetSend 0
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^

发表时间 Tue 05 Mar 19 @ 11:08 pm
NicotuxHome userMember since 2014
OK I find one example on line 2 "BeatGrid every Beat audible"

is_audible deck active
..? &
....param_greater get_beat_bar 12.5%
....? set $VDJartnetsend 255
....: param_greater get_beat_bar 25%
......? set $VDJartnetsend 0
......: is_audible deck active
........? &
..........param_greater get_beat_bar 37.5%
..........? set $VDJartnetsend 255
..........: param_greater get_beat_bar 50%
............? set $VDJartnetsend 0
............: is_audible deck active
..............? &
................param_greater get_beat_bar 62.5%
................? set $VDJartnetsend 255
................: param_greater get_beat_bar 75%
..................? set $VDJartnetsend 0
..................: is_audible deck active
....................? &
......................param_greater get_beat_bar 87.5%
......................? set $VDJartnetsend 255
......................: set $VDJartnetsend 0


you missed the final 4 times " : set $VDJartnetsend 0 " or have an unneeded one as $VDJartnetsend is reset to 0 before every script is call

with my dll You need to add an extra initial "set $VDJartnetsend 0 & " because $VDJartnetsend is set to 256 before every script is call
I can compile a mixed one, which default to zero but keep the possibility to set $VDJartnetsend to 256 or -1 to keep the value as it already used

set $VDJartnetsend 0 &
is_audible deck active
..? param_greater get_beat_bar 12.5%
....? set $VDJartnetsend 255
....: param_greater get_beat_bar 25%
......? set $VDJartnetsend 0
......: is_audible deck active
........? param_greater get_beat_bar 37.5%
..........? set $VDJartnetsend 255
..........: param_greater get_beat_bar 50%
............? set $VDJartnetsend 0
............: is_audible deck active
..............? param_greater get_beat_bar 62.5%
................? set $VDJartnetsend 255
................: param_greater get_beat_bar 75%
..................? set $VDJartnetsend 0
..................: is_audible deck active
....................? param_greater get_beat_bar 87.5%
......................? set $VDJartnetsend 255


This one does the same in both versions

发表时间 Wed 06 Mar 19 @ 12:35 am
NicotuxHome userMember since 2014
and if I missed nothing this one too, Many Thanks to http://www.tellyvisuals.com/vdjscript.php

set $VDJartnetsend 255 &
is_audible deck active
? param_smaller get_beat_bar 87.5%
..? param_smaller get_beat_bar 75%
....? param_smaller get_beat_bar 62.5%
......? param_smaller get_beat_bar 50%
........? param_smaller get_beat_bar 37.5%
..........? param_smaller get_beat_bar 37.5%
............? param_smaller get_beat_bar 25%
..............? param_smaller get_beat_bar 12.5%
................? nothing
................: set $VDJartnetsend 0
..............: set $VDJartnetsend 0
............: set $VDJartnetsend 0
..........: set $VDJartnetsend 0
........: set $VDJartnetsend 0
......: set $VDJartnetsend 0
....: set $VDJartnetsend 0
..: set $VDJartnetsend 0
: set $VDJartnetsend 0

发表时间 Wed 06 Mar 19 @ 1:02 am
Nicotux wrote :
@bluescreen20
They work as you need when your version of the plugin inits it with 0 but will act differently with my version which init with 256
Or have a typo as in these ones:

VolumeLevel intensity audible~is_audible deck active ? & get_level & param_multiply 255 & set $VDJartnetSend : set $VDJartnetSend 0
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------^---------------------------------^
VU_Meter peak intensity audible~is_audible deck active ? & get_vu_meter_peak & param_multiply 255 & set $VDJartnetsend : set $VDJartnetSend 0
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^


No. These are your scriptings which i have included for users who would use.
I have not tested it, because get_level and get_vu_meter does not work in VDJ with my old connected DJ controller American DJ VMS5. I think it works on VDJ with soundcard in computer and could be that it works with my new Denon MC7000 (external soundcard in controller must reloop master-level-signal back to computer to get these scripting work)

But what i see is that you have very good knowledge to get two dll working fine for the user. I think it must only be stable and not with included thousends of possibilities to config. For non scripting user its fine to have some sense making fix presets. We both can do ourself other scripts, but user would have drag and drop and experiment with this. For me it would be cool if you could update my 32bit dll in config with 2 columns (description Name) so that i always can see which preset i have used.
If then also a same workable and stable 64bit version is available, too....would be great. After that , its possible to upgrade step by step .

The fastes workflow for unknown user could be a dll package which include in conf some beginner sense making scripts. Also in the package an input-profil-file for QLC+ which is equal to the conf. So the user put dll and qxi to right place, start and have a handful working scripts which can be used firsttime.

regards, Ralf

发表时间 Wed 06 Mar 19 @ 12:31 pm
NicotuxHome userMember since 2014
I Agree users will want to use bundle presets in a simple drag/drop way. To acheive this it is up to us to make working scripts.
The only reason the dll does not react the same is the scripts were created for one and are used on the other one

if these scripts were handling totally the return value, they would work
hyper simple examples
i.e.: is_active ? set $VDJartnetsend 255
While no track was play Your dll will set $VDJartnetsend to 0, mine will set VDJartnetsend to 256 light will be OFF
While playing track Your dll will set $VDJartnetsend to 255, mine will set VDJartnetsend to 255 light will be ON
When track will stop Your dll will set $VDJartnetsend to 0, mine will set VDJartnetsend to 256 light will be OFF with yours ON with mine
- the script itself is in cause due to missing alternative value :
is_active ? set $VDJartnetsend 255 : undefined

for both to act the same of yours the script would be
is_active ? set $VDJartnetsend 255 : set $VDJartnetsend 0

Once again it'up to us to provide working scripts, not using shortcuts which may introduce some errors like these ones
test all your scripts on DonMoir's vdj test page, there must be as many '?' as ':' with the conditionnal and return values have to be all set
this way the value is fully under control

The dll you tested can easily be"hacked" to fit your needs... by HEX editing it. Simply replace the "set $VDJartnetsent 256" string with "set $VDJartnetsent 000" in it
as i don't know which one it was

" For me it would be cool if you could update my 32bit dll in config with 2 columns ...":

I agree would be cool ... The compiled versions are on the my site. Copy/Paste work, presets are 'somehow loadable or may kill VDJ'
These dll still kill VDJ at exit. I don't have any idea on how this thing is forcing VDJ to write in already freed memory in both cases as far as this is in VDJ code I can't debug
If you found the solution I'd apreciate. I don't know anything about CppStep all i see is apps using it always fail.
Otherwhise they seems to work
I go on trying to understand...

one last thing:
"get_level and get_vu_meter does not work in VDJ with my old connected DJ controller"

Yes they are, these are VDJ internal values and don't rely to any connected controller. Don't your skin shows them ? this are these values the script is using in this case

发表时间 Wed 06 Mar 19 @ 8:20 pm
NicotuxHome userMember since 2014
@ bluescreen25
JOB done : I compiled a special version both 32 & 64 bit with everything as you whish
- default to 0
- both old windows config with names
- external presets
- drag/drop
- no segfault at end. A HACK not a fix

It work but VDJ goes on not wanting to start fast
you may load it many times but it is useless but does not hurt anymore

You'll find them in the special folder : /vdj/VDJArtnet/Testing/bluescreen25/


发表时间 Thu 07 Mar 19 @ 3:32 am
Nicotux wrote :
and if I missed nothing this one too, Many Thanks to http://www.tellyvisuals.com/vdjscript.php

set $VDJartnetsend 255 &
is_audible deck active
? param_smaller get_beat_bar 87.5%
..? param_smaller get_beat_bar 75%
....? param_smaller get_beat_bar 62.5%
......? param_smaller get_beat_bar 50%
........? param_smaller get_beat_bar 37.5%
..........? param_smaller get_beat_bar 37.5%
............? param_smaller get_beat_bar 25%
..............? param_smaller get_beat_bar 12.5%
................? nothing
................: set $VDJartnetsend 0
..............: set $VDJartnetsend 0
............: set $VDJartnetsend 0
..........: set $VDJartnetsend 0
........: set $VDJartnetsend 0
......: set $VDJartnetsend 0
....: set $VDJartnetsend 0
..: set $VDJartnetsend 0
: set $VDJartnetsend 0


If you use the BB-Code at the webpage you can just paste that in color coded. You can also copy the coded syntax from here and paste it back into the webpage to unformat it. I copied your version dots and all and when pasting it into the page it will strip it clean and reformat or raw for actual usage. The BB-Code version automatically adds dots to the start of lines for indenting. The dots are colored close the background so not visible.
set $VDJartnetsend 255 & is_audible deck active
..? param_smaller get_beat_bar 87.5%
....? param_smaller get_beat_bar 75%
......? param_smaller get_beat_bar 62.5%
........? param_smaller get_beat_bar 50%
..........? param_smaller get_beat_bar 37.5%
............? param_smaller get_beat_bar 37.5%
..............? param_smaller get_beat_bar 25%
................? param_smaller get_beat_bar 12.5%
..................? nothing
..................: set $VDJartnetsend 0
................: set $VDJartnetsend 0
..............: set $VDJartnetsend 0
............: set $VDJartnetsend 0
..........: set $VDJartnetsend 0
........: set $VDJartnetsend 0
......: set $VDJartnetsend 0
....: set $VDJartnetsend 0
..: set $VDJartnetsend 0



发表时间 Thu 07 Mar 19 @ 6:07 am
NicotuxHome userMember since 2014
Thanks Don Moir, but bbcode is filtered [as well as quoting] from Home Users' posts
however I tryed anyway and the result keep pretty readable

I didn't saw the double 37.5% ^^ ...

发表时间 Thu 07 Mar 19 @ 6:35 am
Ok was just wondering. So when you paste it here, it filters out the BB-Code syntax and leaves it like you have it? The enhanced formatted paste in pretty clean as well which is good for editing it. It has leading spaces except for here you would need to replace them with the dots.

发表时间 Thu 07 Mar 19 @ 6:41 am
NicotuxHome userMember since 2014
@Don Moir
In fact it only filters bbcode code, keeping the added dots in place. this is not so bad

@ bluescreen25:
I just tested multiple instances of the new dll at the same time : they can handle Multiple configs as far as the port/host is not same
For now controlling 2 universes is not possible but sending 2 different art-net DMX to different machines or software instances
They do not crash anymore
Actually QLC+ can only handle port 0x1936/6454 but it can use localhost as well as any other local network addresses usb/bt/wifi/eth one for each of its 4 universes
that rocks :)
maybe still have to modify $VDJartnetsend name not to interfer between instances... even i din't see any problem during tests

发表时间 Thu 07 Mar 19 @ 7:07 am
@Nicotux

I sent you pn

发表时间 Thu 07 Mar 19 @ 8:34 am

发表时间 Thu 07 Mar 19 @ 11:40 am
NicotuxHome userMember since 2014
@bluescreen25
Badly no, can't receive pm with Home user account:

"Sorry, you don't have the necessary accreditations to view this page."


发表时间 Thu 07 Mar 19 @ 1:41 pm
NicotuxHome userMember since 2014
I fixed your VS settings in a way to compile 64 bit versions and fixed the DMX flow bug and recompiled all 4 versions release Debug for both Arch

You'll find them in the special folder : /vdj/VDJArtnet/Testing/bluescreen25/

remember my internet is slow... and the full package is 69Mo

发表时间 Thu 07 Mar 19 @ 2:34 pm
页码 : [<<] [<] [>] [>>]
97%