Quick Sign In:  

Forum: VirtualDJ Plugins

Topic: Spout for Virtual DJ - Page: 7

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

NicotuxHome userMember since 2014
SpoutPanel 2.36.... only the "koala" "Simple Windows sender" appears in selection list (even "Spout DX11 Sender" appears in the text inputbox)
(this wanna say : there are 2 missing senders in the list : "Direct3D 11 Tutorial 4" and "Spout DX11 Sender")
from VDJ the same SpoutPanel only missing "Tutorial 4"
and nothing appears before to force plugin switch on/off
as this is the same plugin, the same senders only the SpoutPanel seems to be the cause....

looks strange : when SpoutPanel shows nothing the plugin connects to the "not visible" sender by default ;-}
 

Posted Sat 09 Jan 21 @ 5:17 am
Looks like there's more work to do on SpoutPanel. It was worth a try. The sender that appears in the text box is the "Active" sender, that is the last one opened. It should be in the list too but it's not. The plugin will first detect the active sender, even if it isn't in the list.

Thanks to your findings I will look at it once more. But I will put it on the TODO list. Meanwhile you know that the problem is not with the plugin.

Edit: the Koala sender is an alpha problem. It captures the screen using Windows bitmap methods and alpha is 0. I can't find any reference to alpha. I will see what I can do.



The Koala sender is a different problem and I think it is with the DirectX methods used.

The main thing is whether you are able to build the project with "#define OverlayPlugin" and it does what you want. I will fix up the info naming tomorrow.


 

Posted Sat 09 Jan 21 @ 6:20 am
 

Posted Sat 09 Jan 21 @ 8:03 am
NicotuxHome userMember since 2014
I Do not see any difference with any of the plugins :-(
as soon as track is loaded koala displays one correct frame then disappears

SpoutPanel 2.32 or 2.36 most of the time only shows RVBA senders or BGRA senders only
but list is sometimes 2.32 shows DX11 only or not DX11 only or full list
can't get a way to understand the reason, really looks random or depending on previous state :/

switching senders RGBA -> BGRA does ONLY work at second or third try

waiting for 2.007
 

Posted Sat 09 Jan 21 @ 8:33 am
The revised version of Koala sender works for me. This is only an example and isn't a priority, but I will study it again. I am sure it's something to with alpha.

I can't reproduce the format double selection problem. Different formats are rare except for NestDrop which is DirectX9. As long as that works I am happy.

Once this plugin is done I can get back into 2.007. I have assembled the package with new documentation and it's almost ready. The idea is to strip it back to the minimum.
 

Posted Sat 09 Jan 21 @ 12:34 pm
NicotuxHome userMember since 2014
I modified somehow the code organization
- moved the sender validity code where the sender is modified instead of every frames)
- removed some not necessary duplicated code
- made the plugin automatic Visualization/Overlay depending on folder

and you know what ? i got the koala work as expected and multiple attempts to select sender went back !!
the error was certainly something missing in "MY" part of VDJ code :/
(edit: there were issues due to testing sender - which may differ depending on receiver - every frames in multi receiver mode)

https://github.com/nicotux/VDJSpoutReceiver64_Overlay/blob/Testing/Binary/SpoutReceiver64_Auto.dll
 

Posted Sat 09 Jan 21 @ 10:49 pm
OK I will look at your changes.

I can't see exactly what the koala sender render problem was. Can you direct me to that, maybe give me a line number.

For the dll path, you need a little extra because GetModuleFileNameA returns the executable path. I came across this problem before, so I have put the changes on GitHub and will wait until you see it before I make any more changes.

This is a very old article but it explains things well :

http://www.codeguru.com/cpp/w-p/dll/tips/article.php/c3635/Tip-Detecting-a-HMODULEHINSTANCE-Handle-Within-the-Module-Youre-Running-In.htm

Because I don't know enough about VirtualDJ, I am not 100% on top of this code now, so I am getting less comfortable about a combined plugin and I would rather leave it to your expertise. What do you think about a separate plugin that you maintain and develop as you like on your GitHub repo? You don't need to make a huge job of it if people only need to download a single dll file.

 

Posted Sat 09 Jan 21 @ 11:52 pm
NicotuxHome userMember since 2014
I don't know enough about VirtualDJ either,
I am not 100% on top of this code, I don't know anything about what You and SBDJ did ^^
only the common and basic plugin part (that's why i only touched these parts)

As I said, i do not know what the "koala" sender render problem was, but it started to work as soon as the code which was testing sender name validity at every frames was moved

For the dll path, i use this one without any issue in many plugins (yes i didn't test it with this one) because of hInstance being the correct one given by VDJ

I can make easily separate dll if it needs to upload... (i made it dynamic ;) it adapt automatically using its own given current name and the location it install
 

Posted Sun 10 Jan 21 @ 12:43 am
I can understand Scott's changes, but it's the VirtualDJ part I am not familiar with. So if the plugin is auto-detecting I can't be sure whether that part is working as it should.

We are close to a reliable receiver so I would like to be confident of any release. Also I am running out of time, so the release has to be close to what people have tested with. Let me think a little more about it.

I am not sure why the Koala sender started to work with that change. There might be something missing, so I will trace it through. I have confirmed an alpha problem though.

Testing the sender validity after the user selects one is OK, but a sender can be detected without user selection.

For example, if you start the receiver plugin, it will detect the first sender that is running. Also, if the connected sender closes, the next one that is running will be detected and that might happen to be a sender plugin on the same deck. The only way to know is to test the name every frame after a sender is found.

As I understand it, that hmodule code isn't necessarily required, depending on the dll. But it might be needed here because I discovered that GetDLLDir() returns the VirtualDJ executable path. But maybe that's what is required. Anyway the idea is there if you ever need it. I have used it a lot.

Also I am changing the sender plugin so that the names generated match exactly and will upload a new version later today.

 

Posted Sun 10 Jan 21 @ 1:42 am
NicotuxHome userMember since 2014
You made me doubt so that i debug again GetDLLDir() ;)
I can confirm :
GetDLLDir() returns the VirtualDJ executable path when called from constructor (when hInstance is zero)
GetDLLDir() returns the VirtualDJ plugin full dll path when called from within OnGetPluginInfo() (when hInstance is non zero)

Sending from a deck to another may not be really usefull using spout, but receiving from another VDJ may be usefull i.e. for cross VDJing ...
maybe some way to specify Sender name in Sender would be a good idea
Saving at least one name in the .ini files can be done by the use of a VDJPARAM_STRING (Receiver would try to connect to this one by default)

It's basically your code up to you to name it and choose its functionalities and ... to upload it once stable
 

Posted Sun 10 Jan 21 @ 5:38 am
A new release is here : https://github.com/leadedge/SpoutVDJ/releases/tag/v2007

The plugin is not an overlay effect so will not affect testing results so far. Hopefully this release will be stable and can be confidently used. But I will keep investigating if there are any problems.

The SpoutDX support class also needed some work. The examples have been useful for testing, so I updated them as well. https://github.com/leadedge/Spout2/tree/develop/SPOUTSDK/SpoutDirectX/SpoutDX

NicoTux - I kept the name avoidance test within the sender check loop and changed the name generation code to your latest. I included exactly the same in the sender. From what I can tell it works OK. I included a check for change of sender share handle in case that's needed. The only DirectX 9 formats that will be received are D3DFMT_A8R8G8B8 and D3DFMT_X8R8G8B8 because none of the other formats are compatible for OpenGL linkage. NestDrop produces D3DFMT_A8R8G8B8 and works fine. On plugin Release, OnDeviceClose is called first, so the duplicated code is not needed anyway. To remove the revised SpoutPanel from your system, change back to the latest release download "Update 4" wherever you might have saved that and run SpoutSettings once to reset or run SpoutPanel itself.

I am sure there will be more ideas as you think of them, but it's important for me to get this release out while I have the time. I will create another branch for the overlay plugin after re-arranging the repository. Any further modifications can go in there to be tested.
 

Posted Sun 10 Jan 21 @ 6:24 am
NicotuxHome userMember since 2014
Good news, will try this during the next week :)
 

Posted Sun 10 Jan 21 @ 7:53 am
DHoudePRO InfinityMember since 2009
Hi Guys, I have been trying to keep up and keep testing each release. I am currently giving 2.007 some extensive testing.

As far as use cases, maybe I can offer some practical ideas. First, I can't see Sending something from one VDJ deck and Receiving it on another VDJ deck. Unless by mistake, in which case some protection is good. A better practice might be to overlay something on the main deck using the VDJ Sample player for that because I can trigger it with Event Scheduler (VDJ) or some kind shortcut/controller, and that would be played on the Main Deck.

Covering up a deck is also a use case for Telly Media or maybe Slide show. I might want to do this to "censor" my screen if a music video is more graphic than is appropriate. So what I use Spout Receiver for is to bring Resolume or other software into VDJ to cover up or display something specific. Resolume being an expanded Telly Media that I can beat-sync to VDJ through Ableton Link protocol. I can even get fully generative clips in Resolume to react to Audio cues from what is playing. Like Milkdrop and Shaders, but in Resolume I can make visualizers with Zero coding.

Just in case it is not known, the Visualization part of VDJ is to automatically fill my screen when I don't have a music video. I am wondering what will happen when Spout Receiver is activated as the Audio Only Visualization, and the Receiver has previously been actiavted as a Video Effect on the main deck. A Video Effect being manually activated, I might forget to shut it off. I will test some variations of this.

I use to use VDJ as the Master Output when we had the Countdown plugin (now Event Scheduler) because at some point the Countdown Video & Audio would auto-trigger. I wanted the last application in the chain to have the ability to have Top Priority of my screens to cover everything up. With Touch Designer Midi/OSC/DMX auto timers (Pixel Party's "Trigger" Touch Designer app), I have seemingly infinite control options of all my software. So VDJ is just not my main master output application anymore. I am always Sending it to something else, and I don't see that changing. But, most people don't have vMix 4k, Resolume Arena & Touch Designer, in addition to VDJ. At $700 ish each, it is cost-prohibitive for some. So I imagine that use case is only a hand full of people.

VDJ is amazingly flexible, but I just have a lot more flexibility pulling my VDJ master output into something else for mapping or VJing, Streaming, or any number of content display options. The only way this would not be a good idea is Resolume to Spout Receiver would not work when Resolume is the final Master Output. So I would need something else to be the Audio Only Visualization. More importantly, this might be a loop to be concerned about.

Last point, to touch on what Nicotux said a couple posts ago. I am not sure one could use Spout for "Cross VDJing". I thought Spout was local only (not network). So either 2 DJs use the same PC or NDI would be the solution there.

Spout Receiver 2.007 has been playing for about an hour. CPU, Memory & GPU seem to be stable.
 

Posted Sun 10 Jan 21 @ 2:32 pm
DHoudePRO InfinityMember since 2009
9 hours total and many variations of the Receiver on Video Effect or Visualization. With and without receiving a Spout sender. Music videos of all resolutions, Audio only songs, mixed in, etc. I think what you have is stable for the Receiver. I watched CPU, Ram & GPU. All is good.

I will get to beating up the sender next. Job well done!!!
 

Posted Sun 10 Jan 21 @ 10:01 pm
NicotuxHome userMember since 2014
As Leadedge said Sending something from one VDJ deck and Receiving it on another VDJ deck can be due to the automatic sender detection (the deck sender being the only one up at launch time or the firstt one or closest in size...) so that yes protection is needed
decks in deck is used for years (with own skins and videoskins) , preview, commercials, slideshows, info...

When Spout Receiver is activated as the Audio Only Visualization (Source) it react as any other plugins taking place of current display
It can use a different sender another instance running in master, this is not plugin related it's VDJ doing the job
(only the aka Source alternative is using another dedicated .ini parameter file not to interfer with Master settings)

About Spout for "Cross VDJing" you are right, spout is local, this is not relevant ^^
and receiving from VDJ is just possible and dangerous (not really a good way to display another deck, dedicated plugin would be far lighter) and NDI would be the solution for Cross VDJing

Still some issues with selecting another sender, sometimes needs to disable/enable video in a way it apply
Receiving by itself is stable
 

Posted Sun 10 Jan 21 @ 10:06 pm
DHoudePRO InfinityMember since 2009
Quick question, the overlay version of the Spout plugin. Is that just to support the Alpha channel?
 

Posted Sun 10 Jan 21 @ 10:12 pm
NicotuxHome userMember since 2014
No, no alpha (but may be a good addition)
it only let the video appear as background and maps resized and positioned received images over it
(like cover / slideshow do but with Spout received stuffs)
 

Posted Sun 10 Jan 21 @ 10:37 pm
Hi to all. I am not sure what your local time is but I thought I would post now with an idea.

Why not have the receiver always as an overlay? That way, the only difference to the user is the Position control and they don't have to use it. Is there some reason it needs to be one or the other? I have been using it as a Visualization for all testing and it works fine.

I am not so clear of the concept of Effect or Visualisation. My idea of an Effect is taking what is there, modifying it and putting it back.
 

Posted Sun 10 Jan 21 @ 11:25 pm
NicotuxHome userMember since 2014
Pufff local time ^^ who cares ;)

The difference between overlay or transformation ... they do not appear in the same list (Source or Fx)
one do not draw the underlaying video (but it looks like the correct list is often broken in VDJ... visualisation <-> overlay mixing ) the other does but overlays do not appear as Source (but can appear in source at start by default)
additionnaly in this list of bad working issues.... subfolder are not working with source selector
 

Posted Mon 11 Jan 21 @ 12:15 am
DHoudePRO InfinityMember since 2009
@Lynn, My less technical description. A video effect can do both, either modify the output, or cover it completely. The main thing here is that you turn these on manually.

Audio Only Visualization is a video source of some kind that is set to automatically play when there is no Music Video being fed to the master output. To keep screens from going black.

Even with 10,000 music videos, I still play 5-10 songs a night that just don't have a video. Some times they are remixes, other times less common or very old songs that never had one.
 

Posted Mon 11 Jan 21 @ 12:59 am
78%