Quick Sign In:  

Forum: VirtualDJ Plugins

Topic: The Advanced Freestyler integration thread - Page: 5

This part of topic is old and might contain outdated or incorrect information

Yes it does support midi and Thank you 🙏🏾
 

Posted Mon 15 Nov 21 @ 5:34 pm
Since you're using it and you know it better than me, is there a way to import/export it's MIDI settings/assignments?
I can create the Virtual Device fine, but if there's no way to import/export MIDI settings is Soundswitch (or a file that keeps them) you'll have to "teach" SoundSwitch the MIDI notes yourself.
 

Posted Mon 15 Nov 21 @ 6:13 pm
I will check when I get home tonight but I’m tue meantime I’ll forward this thread over to them if that’s cool?
 

Posted Mon 15 Nov 21 @ 6:56 pm
No problem. It's fine with me.
 

Posted Mon 15 Nov 21 @ 6:59 pm
Ok cool, I sent them the link to this so hopefully they chime in.

Appreciate you taking a look tho 🙏🏾
 

Posted Mon 15 Nov 21 @ 7:17 pm
Ok so I emailed them your question and this is the response back

“Hi Huey

Yes, that is correct you will have to Midi Map all functions of SoudnSwitch to your Midi controller it is not possible to import a Midi Config.

Thanks, Liam”

So it won’t work as the way it’s setup now I guess.
 

Posted Mon 15 Nov 21 @ 7:41 pm
Just bumped into this thread because I recently started using freetyler. I'm a noob in terms of lightning and DMX.

Before further investigating this midi solution (which I think makes it possible to use your controller to control freestyler), I just want to know if it can help me to reach the following: I actually want to trigger freestyler sequences with action cues in a track. So, adding a cue in VDJ, assign an action (I noticed there are OS2L_cmd and OS2L_button macro actions) that triggers a specific scene. E.g. when entering a breakdown having lights dimmed, having lights coming up again during the build, having some strobo lights during the last part of the build towards the drop and finally have a light explosion when the drops kicks in :-)
 

Posted Fri 19 Nov 21 @ 11:54 pm
Yes it is possible to do that.
Read the first posts on this thread to better understand how.
Now for action POIs it's a little more tricky than buttons on a controller but the main principle is the same.
The main difference in action POIs is that there's no "up" state as it happens with the buttons.
So you can't use actions like
set '$FS_SND_BLACKOUT' 1 while_pressed

Instead you need to provide the action in a little more different way:
set '$FS_SND_BLACKOUT' 1 & repeat_start 'TOffAction' 200ms 1 & set '$FS_SND_BLACKOUT' 0

So, what the above code does, is:
1) Set the variable to ON (for the command to be sent on Freestyler)
2) Wait 200ms
3) Set the variable to OFF (so that it can be used again later)

The only exception on the above code would be "FLASH" buttons (in Freestyler it's Override buttons that you set to "Flash" mode.
E.G. an override button that strobes all lights as long as it's pressed.
In that case (and only in that case) you should either use bigger time in the repeat script (let's say use 3000ms = 3seconds) or use two action POIs
I find the second case to be easier.
So, the first POI (that let's say would start the strobe by pushing the button) should be
set '$FS_SND_OVER_01'  1
and the second (that stops the strobe by releasing the button) should be
set '$FS_SND_OVER_01' 0


As already explained on the start of this thread, there's no need for such coding for ANY slider you want to control. You simply assign it a value:
set '$FS_MASTER_INTENS' 0.5
 

Posted Sat 20 Nov 21 @ 12:11 am
PhantomDeejay wrote :
Yes it is possible to do that.


Thanks for your quick and comprehensive feedback!
Gonna go more thorough through the thread now and do some testing.

As you explain it, it stil looks like 'controlling' settings in freestyler from VDJ, e.g. action to black out, action to strobe 200ms and turn strobe back off.

The way I see it is like:
POI 1 (start of the breakdown): action --> call scene 1 (faded lights)
POI 2 (nervous part before the drop) --> call scene 2 (strobe lights)
POI 3 (4 beats before the drop) --> call scene 3 (lights down)
POI4 (drop) --> call scene 4 (= light explosion)

So, not expecting to code the state of the lights in VDJ as I would like to keep the light config in freestyler scenes for simplicity. So, the only thing VDJ would need to do is to call a specific scene at a specific moment, triggered by a POI/cue.
 

Posted Sat 20 Nov 21 @ 7:55 am
There are no "scenes" in Freestyler.
There are "sequences" and "cues"
When you refer to a scene you most likely mean a cue.
The MIDI plugin can trigger cues fine.
However from a lighting programming point of view you don't write/create a new cue simply to strobe the lights or make all the lights the same color for a small period of time. For such cases you use override buttons.
Override buttons are buttons that apply "attributes" on top of the running cue.
So instead of writing a new cue to strobe the lights, you create an override that does that and you can apply strobe on top of ANY cue that's may be running.

I hope this info helps a little.
It's mostly about how to program Freestyler so that controlling it becomes easier (with or without VirtualDj)
 

Posted Sat 20 Nov 21 @ 9:50 am
PhantomDeejay wrote :
There are no "scenes" in Freestyler.
There are "sequences" and "cues"
When you refer to a scene you most likely mean a cue.
The MIDI plugin can trigger cues fine.
However from a lighting programming point of view you don't write/create a new cue simply to strobe the lights or make all the lights the same color for a small period of time. For such cases you use override buttons.
Override buttons are buttons that apply "attributes" on top of the running cue.
So instead of writing a new cue to strobe the lights, you create an override that does that and you can apply strobe on top of ANY cue that's may be running.

I hope this info helps a little.
It's mostly about how to program Freestyler so that controlling it becomes easier (with or without VirtualDj)


Indeed cues and sequences ;-)
I understand. The override makes more sense.

So, in general I want VDJ to become my CUE to run sequences based on POI with action macros.
Would like to have the lightning fully automatic so that I can concrete 100% on the DJing :-)

Will further investigate. Thx for your help!
 

Posted Sat 20 Nov 21 @ 10:31 am
PhantomDeejay wrote :
No.
But you can program the desired cues for a track in Freestyler and then use action poi's in VirtualDj to trigger them.
Also for some functions (like activating/deactivating a strobe effect or a particular color e.t.c.) you can use action poi's to trigger overrides instead of creating a new cue (in FS) just to have a strobe effect...

PS: Personally I enjoy using Freestyler with submasters / sublists. This way you don't have to worry about cues. You have a dynamic cue that changes on the fly and you can program action poi's in VirtualDj to change anything on a submaster (or an all submasters at once)

So, more or less you need to understand better how FS works and how it can be used for a "dynamic show"
After you understand that part better you can use action poi's to manipulate everything...
Another effect: A song has somewhere in the middle a part with ambient music and then it builds up:
Instead of programming 2 or 3 cues, you can manipulate the existing one: Program an action poi to reduce the master speed (or the speed of moving heads movements e.t.c.) to 20%. Then as the track starts to build up use action poi's to trigger a strobe effect via an override button. Then finally when the track resumes to normal rhythm you can use one last action poi to restore master speed (or the speed you tampered before) back to 100%

The interesting thing with the above approach is that it will work for ANY cue that may be currently running. You will get a more dynamic show and you won't have to worry to load the correct cue. This also means that you program a bunch of cues and adapt them easily to more tracks than just one particular track....

PS: Besides triggering a strobe effect you can trigger overrides for everything that is a static scene (static in terms of commands send by Freestyler). Gobo Disc rotation for instance is a "static" scene for Freestyler but still giving a "non static" visual feedback. The same way you can trigger a static position (all lights on X spot), a single color, color rotation, fixed gobo or gobo rotation e.t.c. All these are the power of override buttons and it's part of Freestyler logic...


This is what I'm looking for :-) Thx!

 

Posted Sat 20 Nov 21 @ 10:45 am
PhantomDeejay wrote :
http://www.virtualdj.com/plugins/index.html?addonid=80671

Added a simple pad page to control a few functions and demonstrate better how this plugin can be used.

The pad page consists of 2 pages that you can switch with parameter buttons

On page 1 the top row of pads controls blackout/freeze/blackout&freeze/favourite
The bottom row controls the first 4 override buttons.

On page 2 the pads toggle the first 8 cues of Freestyler

Advanced users can open this pad page on pad page editor and add more pages / adjust them on their needs.

With this page you can control Freestyler directly from your controller so that you don't need to grab your mouse anymore!


Is this pas page still available somewhere?

 

Posted Sat 20 Nov 21 @ 10:49 am
user21860595 wrote :
PhantomDeejay wrote :
http://www.virtualdj.com/plugins/index.html?addonid=80671

Added a simple pad page to control a few functions and demonstrate better how this plugin can be used.

The pad page consists of 2 pages that you can switch with parameter buttons

On page 1 the top row of pads controls blackout/freeze/blackout&freeze/favourite
The bottom row controls the first 4 override buttons.

On page 2 the pads toggle the first 8 cues of Freestyler

Advanced users can open this pad page on pad page editor and add more pages / adjust them on their needs.

With this page you can control Freestyler directly from your controller so that you don't need to grab your mouse anymore!


Is this pad page still available somewhere?



 

Posted Sat 20 Nov 21 @ 10:49 am
PhantomDeejay wrote :
Yes it is possible to do that.
Read the first posts on this thread to better understand how.
Now for action POIs it's a little more tricky than buttons on a controller but the main principle is the same.
The main difference in action POIs is that there's no "up" state as it happens with the buttons.
So you can't use actions like
set '$FS_SND_BLACKOUT' 1 while_pressed

Instead you need to provide the action in a little more different way:
set '$FS_SND_BLACKOUT' 1 & repeat_start 'TOffAction' 200ms 1 & set '$FS_SND_BLACKOUT' 0

So, what the above code does, is:
1) Set the variable to ON (for the command to be sent on Freestyler)
2) Wait 200ms
3) Set the variable to OFF (so that it can be used again later)

The only exception on the above code would be "FLASH" buttons (in Freestyler it's Override buttons that you set to "Flash" mode.
E.G. an override button that strobes all lights as long as it's pressed.
In that case (and only in that case) you should either use bigger time in the repeat script (let's say use 3000ms = 3seconds) or use two action POIs
I find the second case to be easier.
So, the first POI (that let's say would start the strobe by pushing the button) should be
set '$FS_SND_OVER_01'  1
and the second (that stops the strobe by releasing the button) should be
set '$FS_SND_OVER_01' 0


As already explained on the start of this thread, there's no need for such coding for ANY slider you want to control. You simply assign it a value:
set '$FS_MASTER_INTENS' 0.5


Isn't it possible to use an action POI to trigger a custom button (on/off)? In this way you can still use the button method as described. So, e.g. start phrase --> action POI --> trigger custom button (=while_pressed state) --> FS strobe ON / end of phrase --> action POI --> trigger custom button (=unpressed state) --> FS strobe OFF.

Thx for your assistance and patience ;-)

 

Posted Sat 20 Nov 21 @ 11:04 am
When called from action POIs the custom buttons will toggle up/down state too quickly for MIDI to catch up.

What you need to understand is this:
1) Freestyler sees MIDI NOTE ON/OFF messages
2) For Freestyler when MIDI note is ON, the button is pressed down
3) When it sees MIDI OFF, the button gets released (it doesn't matter what kind of button we're talking about)
4) The MIDI plugin sends "DOWN" when you set the corresponding variable to 1
5) The MIDI plugin sends "UP" when you set the variable back to 0
Finally, keep in mind that for Freestyler (it has it's own way of working) you need to allow some time (a few ms) to pass between MIDI ON (DOWN) and MIDI OFF (UP) in order to register it correctly.
That's why for simple/custom buttons we use the "while_pressed" script.
It emulates what an actual MIDI controller would send on the program if it was directly assigned to it.
So, in a nutshell:
1) You set a variable = You press a button down in Freestyler
2) You "unset" a variable (set it back to 0) = You release a button up in Freestyler.
As you already understand, you cannot press an already "pressed" button.
That's why we need to unset variables
 

Posted Sat 20 Nov 21 @ 12:02 pm
locoDogPRO InfinityModeratorMember since 2013
Regarding Soundswitch
PhantomDeejay wrote :
I can create the Virtual Device


could you please type out the bare bones, just the <device line
I managed to write a virtual device with loopBE into unreal4 but [loopBE was a demo, I was helping someone else, a year ago] I don't quite follow how your def file feeds into LOOPMIDI
[loopbe was kind of nice that it showed what it received]

[soundswitch confuses me, says it's os2l, but they're drawing a blank on sending os2l to turn a spotlight on]

Best guess [is identifier needed?, since I have the sysexid midilog returned?]

<?xml version="1.0" encoding="UTF-8"?>
<device name="LOOPMIDI" author="locodog" version="802" description="LOOPMIDI" type="MIDI" decks="2" identifier="#media#" sysexid="F07E7F0601F7" >
<led note="0x42" name="LED_PLAY" default="PLAY" cc="0x01" channel="0" deck="1" />
</device>
 

Posted Tue 30 Nov 21 @ 10:32 pm
<device name="FREESTYLER" author="PhantomDj" blocktransfer="yes" version="802" description="Freestyler MIDI Remote Control" type="MIDI" drivername="Freestyler" decks="1" >
<!-- MIDI CH 0 SEND OUTS -->
<led note="0x00" name="SEND_BLACKOUT" channel="0" />
<!-- MIDI CH 1 INPUTS -->
<button note="0x00" name="STATUS_BLACKOUT" channel="1" />
</device>


What's important here is this:
The drivername needs to be the same as your Virtual Device name you create with LoopMidi (see first post, really simple)
With LoopMidi you don't need to send/receive sysex messages in order to recognize the device.
The drivername (as long as it is unique) should be enough.

So in your case (if loopmidi is with it's default settings) the above code goes like this:

<?xml version="1.0" encoding="UTF-8"?>
<device name="LOOPMIDI" author="locodog" version="802" description="LOOPMIDI" type="MIDI" decks="2" drivername="loopMIDI Port" >
<led note="0x42" name="LED_PLAY" default="PLAY" channel="0" deck="1" />
</device>


PS: Because LoopMIDI also sends out whatever messages it receives on the same channel (imagine it works as a repeater) you should NOT use the same MIDI notes for "buttons" and "leds" on the same channel, despite VirtualDJ being absolutely capable to handle them.
So, this is wrong:
<button note="0x42" name="PLAY" channel="0" deck="1" />
<led note="0x42" name="LED_PLAY" default="PLAY" channel="0" deck="1" />

The correct way is to split the channels:
<button note="0x42" name="PLAY" channel="0" deck="1" />
<led note="0x42" name="LED_PLAY" default="PLAY" channel="1" deck="1" />
 

Posted Wed 01 Dec 21 @ 12:34 am
locoDogPRO InfinityModeratorMember since 2013
thanks, :)

I was hoping to try the wrong method [just to prove] but it didn't work, nevermind.
[external call of deck 1 play, lights LED & it thru puts to make deck 2 play]

<button note="0x42" name="PLAY" channel="0" deck="2" />
<led note="0x42" name="LED_PLAY" default="PLAY" channel="0" deck="1" />
 

Posted Wed 01 Dec 21 @ 10:51 am
locoDogPRO InfinityModeratorMember since 2013
addition to ^, got my "wrong way" test working, seems, I misunderstood default, specifying in mapper made it work.
 

Posted Wed 01 Dec 21 @ 5:36 pm
93%