Sharing Texture between VVVV and Max5

Hey guys,

im currently working on a project which envolves alot of audio processing based on a texture in Max5. I have no clue about Max, please forgive me ;)

In this project a texture needs be transfered between VVVV and Max5.

Ive read about the current ( and awesome! ) development of the FreeframeGL and Wyphon options, but im not even sure if Max5 / Jitter would even support FreeframeGL as a Plugin Interface to begin with…

There has been a Freeframe 1 Plugin / BigFug which was used to transfer between freeframe applications some years ago, but ive never had any good experiences with it.

So im trying to get a better picture of which solutions would be currently possible. ( or in a while? )

My current options:

  • My first idea was using something like the screenshot(Texture) Node in Max5, this would not be ideal since the renderer should not be visible all the time.
  • Another idead would be to sample the Texture in VVVV with something like the pipet node and send the information via OSC to Max.
  • I could also render the texture into a static image everytime it changes.

Any advise on my options would be greatly appreciated

think it should be possible with aero enabled to don’t have render window focused all the time with screenshot, atlist in vvvv
bigfug transfers res under 400x300

think it should be possible with aero enabled to don’t have render window focused all the time with screenshot, atlist in vvvv
bigfug transfers res under 400x300
max is gl, and texture sharing is just a gpu feature no matter gl or hlsl

Have you looked at this already?

Would be cool to have nice fast big gpu texture between these programs, but depending what you what to do you may find that for producing audio it’s not necessary to have more- even with a low res image that’s a lot of values sitting in the pixels.

thank you for your answers :)

well we need a texture of atleast 512512, that would be acceptable.
Currently we are sampling a texture of 800
600 in Max.

I have considered sending a texture as String via udp but ive tought that the translation might be to complicated + resolution issues.

The reason to create the texture within VVVV has been that we are trying to create soundscapes from a dynamic texture and have not found a solution creating a dynamic shader texture for this in Max.

The audio interpretation is pretty solid by now, an im not sure if im able to reproduce it in vvvv to send it to max.

I will try and test your suggestion with ma Maxinian friend tomorrow :)

We have also considered rendering the dynamic Texture on a separate pc and using a capture device, but this would be the least efficient solution I guess.

ideas are still very welcome :)

*its a grey scale texture :)

if the texture just goes the vvvv -> max way you should give the jitter nodes a try. 512x512 (and bigger) should not be a problem plugin-wise but the framerate/network latency might be an issue. (you should be aware that you’re sending uncompressed image data via TCP)

also note that the encoder only supports 4 planes for now

thanks for the infos.

Ive tested the maxjitter matrix nodes ((contribution:maxjitter-matrix-nodes))

But im having performance issues caused by the pipet node.
Everything above 256*256 will give me a huge drop in framerate.

Is there any way to avoid pipet usage by, for example, sending the texture AsRaw(texture)?

Would it be possible to improve the Pipet node’s performance letting it only scan for lightness values? The image is greyscale, changing the texture format to L8 did not improve anything using pipet.

If you want to continue with pipet options you might try with DX11- Vux made a compute shader based pipet as an example:

But I would really wonder if that makes sense- depends on what you are doing in max but I would be astounded if your friend is really using 512^2 (262,144) values at sample rate (much faster then video fps). Which probably means it’s being analysed or re-sampled in some way anyway.

You might have other reasons to need to transfer a texture, but if it’s just to analyse it in Max before generating signal data I would do the analysis in vvvv first and just send the results over.