Connexion rapide:  

Forum: VirtualDJ Plugins

Sujet Controlling QLC+ DMX lighting program from VDJ8 via MIDI IAC Driver on Mac? - Page: 4

Cette partie de ce topic est ancien et peut contenir des informations obselètes ou incorrectes

bluesreen2 wrote :

One little problem i see is that if you will close VDJ with open config-windows it seems there a problem in code. I will search for solution.
Try and give me a feedback.
regards Ralf


Not vdjartnet plugin made the problem, it was my graphic driver.

On download-link at posting before i now have other lower cpu version of plugin upped (10.05.2018 Github) WINDOWS-DLL
All Version after that date have many bugs inside, such as crashes or high cpu working. Cannot understand that the developers don´t test changes in Mac AND Windows. There were more features but almost buggy in windows. On my mind the earlier versions with separate presets.txt file are better to exchange with other user.
If i now have some more ideas for presets, i must recompile a new dll blasted with the input of Presets.txt which is now in dll betted.
Sorry,but years ago i coded in Delphi (Pascal) and i never made such trash as i saw in that source code.

Try and give me a feedback please.
 

Posté Tue 09 Oct 18 @ 6:09 pm
Windows VDJArtnet plugin Github 10.05.2018 (with own changes)

-included presets : fixed to use with CUE points in VDJ
-included presets : add more presets audible
-download package : add helping photos to config VDJArtnet and QLC to use CUEs

Download Package

Please some feedbacks 8-)

regards ralf
 

Posté Sun 14 Oct 18 @ 10:59 am
NicotuxHome userMember since 2014
Hi,
I tested this version : yes it seems stable, but very limited and somehow difficult to use

you missed a lot of possibilities by limitting everything to switches by cues

example scripts i use with my own test dll :

Rotation~get_rotation & param_multiply 255 & set $VDJartnetsend
LevelFfull~get_level & param_multiply 255 & set $VDJartnetsend
script 1 Level~var $artnet 1 ? get_level & param_multiply 255 & set $VDJartnetsend : set $VDJartnetsend -1
Beatgrid~get_beatgrid & param_multiply 255 & set $VDJartnetsend
Karaoke Waiting~is_karaoke_idle & param_cast & param_multiply 255 & set $VDJartnetsend
32 Steps~get_beat_num 32 & param_multiply 291 & set $VDJartnetsend

Of course i modified the update() function in a way it does not reset DMX chanel to 0 when $VDJartnetsend is not in range 0..255 but keep it as is.

this way i'm able to drive sliders directly within QLC++ by switching them to level mode

by the way,I compiled/tested my tests with VDJ-64 too, it is ok
Note: I was also programming in delphi and have in mind to use lazarus for some plugins...
 

Posté Wed 17 Oct 18 @ 5:26 am
Nicotux wrote :
Hi,
I tested this version : yes it seems stable, but very limited and somehow difficult to use

Why difficult to use ? Usage is same as older versions.
Quote :

you missed a lot of possibilities by limitting everything to switches by cues

no, its not limited. I wrote i fixed CUE. Means that i made a change on it. Its not necessary to set $ (global variable) before the artnet variable if you use as CUE in Poi editor of VDJ. You can write as poi action in VDJ: set artnet 1 (without $) and in plugin in presets btw VDJ script line also without $.
Quote :

example scripts i use with my own test dll :

Rotation~get_rotation & param_multiply 255 & set $VDJartnetsend
LevelFfull~get_level & param_multiply 255 & set $VDJartnetsend
script 1 Level~var $artnet 1 ? get_level & param_multiply 255 & set $VDJartnetsend : set $VDJartnetsend -1
Beatgrid~get_beatgrid & param_multiply 255 & set $VDJartnetsend
Karaoke Waiting~is_karaoke_idle & param_cast & param_multiply 255 & set $VDJartnetsend
32 Steps~get_beat_num 32 & param_multiply 291 & set $VDJartnetsend

Thats interesting. Those presets i ask for to include...some new ideas..cool
Can you explain the presets because some i dont understand. Why multiply 291 ?
Should be : 32 Steps~get_beat_num 32 & param_multiply 255 & set $VDJartnetsend
Because get_beat_num 32 gives you per beat: 100/32 %/100 = 0,03125 and then multiply 255 = DMX Value 7,96875 per Step (QLC+ round the displayed value on slider to DMX 8 or to 3% (real 3,125%)
Quote :

Of course i modified the update() function in a way it does not reset DMX chanel to 0 when $VDJartnetsend is not in range 0..255 but keep it as is.

this way i'm able to drive sliders directly within QLC++ by switching them to level mode

Do not understand. The value range is ever between 0 and 255. I test my compiled dll and it works also with slider in level mode. Level mode expects values from 0..255.
In cases the value of your VDJ script code is higher, you should solve this. I modified today the dll. So values higher 255 will be =255 instead of =0.
Slider should work properly. Also i put in your presets after my last entries. Try out and give some feedback please.
Your presets are working also on decks which are not audible, means that if more than one deck is playing (e.g. one over headphone) the result of VDJArtnet comes from both decks. It can be resolved .... is_audible deck active & ....
Quote :

by the way,I compiled/tested my tests with VDJ-64 too, it is ok
Note: I was also programming in delphi and have in mind to use lazarus for some plugins...


My last development is more than 5 years ago. Made this with Borland Developer Studio 2006.
Here i use the free Visual Studio 2017 to compile. VDJ 64 i did not test.
Which VDJArtnet Version (Date) did you compile ?

Download Windows DLL modified 17.10.18

regards ralf
 

Posté Wed 17 Oct 18 @ 7:55 pm
NicotuxHome userMember since 2014

" Why difficult to use ? Usage is same as older versions."
Yes same use as the original, thus as "difficult" simply because it needs a lot of work editing poi actions for every tracks, this is inherent to this kind of functionalities :)

The $ sign is not really an issue for the plugin to work, only depends on config and scripts, but you are right. I actually use the $ because i test with some pad buttons and hey are deck related if no $

The param_multiply 291 !!
Yes; I had some difficulties to understand, this is because of the get_beat_num and master_eat_num functions do not give float result in range 0 to 1

" get_beat_num 32 gives you per beat: 100/32 %/100 = 0,03125 " was what I think initialy too but IS NOT what vbscript/vdj really do

i.e.:
"master_beat_num 5" will sent 0.0, 0.2, 0.4, 0.6, 0.8 which is 1/beats * beat_num (range 0..Beats-1) and we need result range 0..255
multiplicator becomes : (256 / ((beats-1)/beats) -1) or ((256 * beats) / (beats - 1)) -1
(256 / (4/5)) - 1 = (256*5/4) -1 = 320-1 = 319
`master_beat_num 5 & param_multiply 319 & param_cast integer`
Given values to our script are this time : 0 64 128 191 255 which is really what we need

for 32 Beats, values are from 0.0, 0.03, up to 0.094, 0.97
I want 0, 8 .. 247, 255

256*32/31-1=263 (Thus you pointed out an error in my scripts)
The other hand feel free to multiply 255, range will be 0, 8, .. 239, 247
Mainly depends on the values needed by the set being controled; mine have a control at 248..255


"Do not understand. The value range is ever between 0 and 255. I test my compiled dll and it works also with slider in level mode. Level mode expects values from 0..255.
In cases the value of your VDJ script code is higher, you should solve this. I modified today the dll. So values higher 255 will be =255 instead of =0."

I modified another way, using wrong values as a functionality to tell not to modify the current value :
here is the function with update flag fixed, a "fast & furious" overrun prevention and the commented out lines not to modify the values in case script does not return in range 0..255. (I think to use MSB with some usefull values i.e. to tell things such as universe to apply to ... later)

void CVDJartnet::updateDMXvalues() {
static bool overrun = false; // FIXME maybe use some mutex/semaphore

if (m_Enable == 0) { return; }

if (overrun) return;
overrun = true;

bool updated = false;
for (int i = 0; i < 512; i++) {
if (!config->channelCommands.script.empty()) {
double resultDouble = -1;
// SendCommand("set $VDJartnetSend 256");
SendCommand(config->channelCommands.script.c_str());
GetInfo("get_var $VDJartnetSend", &resultDouble);

int resultInt = (int)round(resultDouble);
if (resultInt >= 0 && resultInt <= 255) {
updated |= artnet.setChannel(i, (uint8_t)resultInt);
// This way out of range value stand for "keep as is"
// } else {
// updated |= artnet.setChannel(i, 0);
}
}
}

if (updated || skippedPackets > config -> getSkipPacketLimit()) {
artnet.setUniverse(config->univ);
artnet.sendArtnetPacket(config->host, config->port);
skippedPackets = 0;
} else {
skippedPackets += 1;
}
overrun = false;
}


"Your presets are working also on decks which are not audible, means that if more than one deck is playing (e.g. one over headphone) the result of VDJArtnet comes from both decks. It can be resolved .... is_audible deck active & .... "

Thanks, as i use different physical outputs for Main, Headphone, Booth and Preview and never set a preview deck or such, I never experiment this :/
Or maybe i set the plugin only for Master


"Which VDJArtnet Version (Date) did you compile ?"

Github 10.05.2018 and 22.06.2018 (latest)

I compiled the config window as an external .exe too
I also compiled a lite version without config button or preset (no need .NET to run within vdj)
I compiled plugin to test it with VDJ-64 and it works




 

Posté Thu 18 Oct 18 @ 5:31 pm
 

Posté Thu 18 Oct 18 @ 7:06 pm


 

Posté Thu 18 Oct 18 @ 7:08 pm
NicotuxHome userMember since 2014
 

Posté Fri 19 Oct 18 @ 10:11 am
WOW

Very good even a 64 bit variant

 

Posté Fri 19 Oct 18 @ 10:18 am
NicotuxHome userMember since 2014
Warning, Not so good, hightly experimental; everything have to be fix as bluesreen2 said

The good thing is we do not have the same vision and feel ... :)
 

Posté Fri 19 Oct 18 @ 10:32 am
But at least a beginning
So far, it did not look that way



_____________-
Aber immerhin ein Anfang
Bis jetzt sah es noch gar nicht so aus
 

Posté Fri 19 Oct 18 @ 10:39 am
Hi,
Example 1 (8 Steps on Beat)
get_beat_num 8 & param_multiply 255 & set $VDJartnetsend gives you 0,32,64,96,128,159,191,223

If you wish to move the steps :

Example 2 (8 Steps on Beat: 1/8 = 0.125)
get_beat_num 8 & param_add 0.125 & param_multiply 255 & set $VDJartnetsend gives you 32,64,96,128,159,191,223,255

Example 3 (16 Steps on Beat: 1/16 = 0.0625)
get_beat_num 16 & param_add 0.0625 & param_multiply 255 & set $VDJartnetsend gives you 16,32...64.....128......223,239,255

Example 4 (5 Steps on Beat: 1/5 = 0.2)
get_beat_num 5 & param_add 0.2 & param_multiply 255 & set $VDJartnetsend gives you 51,102,153,204,255

Example 5 (5 Steps your script, special function out of 4/4 beat ?)
get_beat_num 5 & param_multiply 319 & param_cast integer & set $VDJartnetsend gives you 0,64,128,191,255

Windows 32bit DLL Github 10.05.2018 modified 20.10.18
http://www.cave-live.info/VDJArtnetDLL.zip
 

Posté Sat 20 Oct 18 @ 11:50 am
CannenPRO InfinityMember since 2016
Not sure I understand how this works. Is it only cue points or does it also use the beatgrid? If it does, since VDJ doesn't seem to use elastic beatgrids, how does music with a live drummer work?
 

Posté Mon 22 Oct 18 @ 5:25 am
Can anyone help me to do the basic thing: On VDJ, when an "action" marker is played ("set artnet 35" for example) I want to trigger a button on QLC+ thats it. I dont understand (probably nothing) about artnet and complex vdj script.
 

Posté Mon 22 Oct 18 @ 5:10 pm
Hello,

i made a little tutorial about VDJArtnet to use, but its in german. Sorry for crappy sound....its my first video and used the laptop mic.
If its needed, i would try to do in english too.


https://youtu.be/dJB3Q0eWlhc

regards, ralf
 

Posté Mon 22 Oct 18 @ 5:21 pm
Cannen wrote :
Not sure I understand how this works. Is it only cue points or does it also use the beatgrid? If it does, since VDJ doesn't seem to use elastic beatgrids, how does music with a live drummer work?


Yes you can use also the presets which uses the beatgrid. For example you take the preset "first 1 of 8 " to a line (line=artnet channel) and pick up the channel in qlc+ as external input to a slider or button. Now every first of eight beat of beatgrid is send to qlc+. As slider would be up or down because value is 0 or 255. If you take preset "peak of waveform" it sends values from 0 to 255 depending of intensity of playing peaks of waveform. The newest presets I have made are every beat from beatgrid with different fade out. ( is not uploaded yet) . This sends on beat 255 and fade out to 0. You can do make pulsing beat effects , not only ON or Off on beats.
For music with live drummer you can use preset peak instead of beat. But you can mix all. Some lights on beat, other on peaks. Or with Cues. So you set marker to use peaks then next marker to switch to beats then next marker to stop. All possible. At the moment if you use a Cue preset it would only send 255 to qlc+ and you can add it as external input . But I can create some preset in combination with a function. I would then give the action command a variable name dependent on function you will use. Could be "set script_peak 1" instead of "set artnet 1" Must be a variable name which is not in use in Virtual DJ. All possible. I will make some examples presets in next dll.

regards ralf
 

Posté Mon 22 Oct 18 @ 6:15 pm
brunoliv wrote :
Can anyone help me to do the basic thing: On VDJ, when an "action" marker is played ("set artnet 35" for example) I want to trigger a button on QLC+ thats it. I dont understand (probably nothing) about artnet and complex vdj script.


In your example you should use first time a preset still in there such Cue1 with artnet 1 used.
Pick this to line you wish (line=artnet channel)
In qlc+ activate input artnet on 127.0.0.1
Create a button as flashbutton and add a scene to it.External input of button have a look to Artnet and double click channel, insert channel number (number of line you put the preset at plugin in).
Now set marker in poi editor of track ,name it and use as action. Action code: set artnet 1

Make a second marker and there as action: set artnet 0 (this will stop the script) .

The flashbutton will be ON if reaches the first marker and will be OFF at second marker.

Try out. Have a look on my YouTube Video from today ...some postings before. It's in German language but you can watch what I do.

regards ralf

 

Posté Mon 22 Oct 18 @ 6:35 pm
Hello Ralf

A great video. , ,
Simply ingenious and easy to explain. Even your built-in scripts expand the plugin phenomenally

THANK YOU
 

Posté Mon 22 Oct 18 @ 6:44 pm
EXELBONSAI wrote :
Hello Ralf

A great video. , ,
Simply ingenious and easy to explain. Even your built-in scripts expand the plugin phenomenally

THANK YOU


Ahrg. First tutorial on the fly, but it's easier to understand by looking instead of much static text. ;-)

The older versions of plugin has excluded config and preset.txt file. This is better to exchange cool scripts by user. Don't know why the developers goes the way with included presets.

If in future 64bit version of plugin comes as release all the scripts can be used also.

A wish to developers :
- exclude preset.txt and config.txt
- preset names in lines instead of full script if preset pushed to line
- full script accept in line if first letter is ~. So you can test live without close/open plugin and after that you can edit the config.txt and preset.txt to add new preset with name

regards ralf
 

Posté Mon 22 Oct 18 @ 7:25 pm
djcelPRO InfinityModeratorMember since 2004
Good job guys.
 

Posté Thu 25 Oct 18 @ 11:32 pm
65%