jmcc's picture

A VJ and graphic artist use Vuo, we released Vuo 1.2.8, and Karl ventures north

Hello everyone! We have two recent spotlights on how a VJ and graphic artist incorporate Vuo into their workflow, a small Vuo 1.2.8 release, and a change in Vuo's development team.

Spotlight: VJ MEKANIX

In our recent spotlight, Azy (@krezrock), a Los Angeles VJ, talks about his work, his creative process, and making unique Vuo image filters and image generators to use with VDMX. A frequent Vuo contributor, he's added several of his daily experiments, which he calls 1ups, to the Vuo Composition Gallery.

Spotlight: Graphic artist Luiz André Gama

In this spotlight, Luiz André Gama (@LuizAndre), talks about using Vuo to create unique visual effects consisting of beautiful and bizarre recursive images, as well as figuring out how to use Vuo's 3D nodes to alter photographic images.

Vuo on Instagram

Both Azy and Luiz André post to instagram, as Azy and Luiz André, respectively. You can follow Vuo on Instagram at vuoflow, or with the tag #vuoflow.

Vuo 1.2.8

We’ve just released Vuo 1.2.8 — a free update if you’ve purchased any previous Vuo 1.2.x versions. This release improves the Detect Audio Beats node by adding support for detecting 175–250 BPM and 220–320 BPM. Thanks to Marco Kaspar (@marcozora) for funding this. The release also fixes a few community-reported bugs. See the release notes for details.

Karl Henkel leaves the Vuo development team

Karl Henkel, who has been part of Kosada's development team since 2012, has accepted a job with Unity Technologies. Karl is the developer of Parabox plug-ins for the Unity game engine. Seeking greater integration, Unity Technologies brought his plug-ins in-house. Karl is thrilled about this new relationship and is mastering French in preparation for a move to Unity's Montreal location.

In addition to his Vuo development work, Karl created some personal Vuo nodes he's shared with the community. He writes, "My time at Kosada was amazing. If I had to pick my favorite part of the job, it would without a doubt be the people. Everyone I worked with was passionate, caring, and just all around great persons. The community as well was a pleasure to interact with as well, and I’ll certainly be keeping up with all of your creations in the Vuo gallery!"

Good Luck, Karl, or should we say, "Bonne chance dans votre nouvel emploi."

The remaining developers, Jaymie, Melissa, Jean Marie, and Steve, continue to work on the next Vuo release. We're making good progress, but we're not yet ready to set a date.

Jean Marie
Team Vuo

Bodysoulspirit's picture
@Bodysoulspirit commented on @Bodysoulspirit's Composition, “Calligraphy EQ

@jersmi thanks
No I haven't played with it anymore, not sure how far you can put the shader working with the "Reinterpret 3D Object" node, guess it would be better to use Karl's "Make Mesh With Values" node but as I said, am not very skilled when it comes to meshes.

1 - Colors - Parabox.vuo

jayeazy's picture
@jayeazy commented on @jayeazy's Bug Report, “RTSP Not working on Dahua IP Cams

Jaymie (@jstrecker) , still not able to open rtsp stream.

Tried this with ffmpeg in terminal, and it creates a playable video file...... so don't know why VUO doesnt show the video....... If you could help makes this work somehow ?

ffmpeg -loglevel debug -rtsp_transport tcp -i "rtsp://jelte:4eyez8604@10.10.0.135:554/cam/realmonitor?channel=1&subtype=0" -c copy -map 0 foo.mp4

See: `SDP: v=0 o=- 2251938637 2251938637 IN IP4 0.0.0.0 s=Media Server c=IN IP4 0.0.0.0 t=0 0 a=control:* a=packetization-supported:DH a=rtppayload-supported:DH a=range:npt=now- m=video 0 RTP/AVP 96 a=control:trackID=0 a=framerate:25.000000 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKaw0zgeAIn5cBbgICAoAAAfQAAGGodDAAII8AACCPBd5caGAAQR4AAEEeC7y4UA=,aO48MA== a=recvonly

[rtsp @ 0x7facd880b000] video codec set to: h264 [rtsp @ 0x7facd880b000] RTP Packetization Mode: 1 [rtsp @ 0x7facd880b000] RTP Profile IDC: 64 Profile IOP: 0 Level: 29 [rtsp @ 0x7facd880b000] Extradata set to 0x7facd8420cd0 (size: 62) [rtsp @ 0x7facd880b000] setting jitter buffer size to 0 [rtsp @ 0x7facd880b000] hello state=0 Failed to parse interval end specification '' [h264 @ 0x7facd880ec00] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] nal_unit_type: 8(PPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] nal_unit_type: 8(PPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] nal_unit_type: 8(PPS), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 Last message repeated 2 times [h264 @ 0x7facd880ec00] nal_unit_type: 5(IDR), nal_ref_idc: 3 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 [h264 @ 0x7facd880ec00] Format yuvj420p chosen by get_format(). [h264 @ 0x7facd880ec00] Reinit context to 1920x1088, pix_fmt: yuvj420p [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 1 times [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 1 times [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 1 times [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 1 times [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 1 times [h264 @ 0x7facd880ec00] nal_unit_type: 9(AUD), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 6(SEI), nal_ref_idc: 0 [h264 @ 0x7facd880ec00] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2 [h264 @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 21 times [rtsp @ 0x7facd880b000] All info found Input #0, rtsp, from 'rtsp://jelte:4eyez8604@10.10.0.135:554/cam/realmonitor?channel=1&subtype=0': Metadata: title : Media Server Duration: N/A, start: 0.240000, bitrate: N/A Stream #0:0, 28, 1/90000: Video: h264 (High), 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 0/1, 25 fps, 25 tbr, 90k tbn, 50 tbc Successfully opened the file. Parsing a group of options: output url foo.mp4. Applying option c (codec name) with argument copy. Applying option map (set input stream mapping) with argument 0. Successfully parsed a group of options. Opening an output file: foo.mp4. [file @ 0x7facd8421f40] Setting default whitelist 'file,crypto' Successfully opened the file. Output #0, mp4, to 'foo.mp4': Metadata: title : Media Server encoder : Lavf58.19.100 Stream #0:0, 0, 1/90000: Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive, left), 1920x1080 (0x0) [SAR 1:1 DAR 16:9], 0/1, q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help cur_dts is invalid (this is harmless if it occurs once at the start per stream) [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 0, current: -17100; changing to 1. This may result in incorrect timestamps in the output file. [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 1, current: -14400; changing to 2. This may result in incorrect timestamps in the output file. [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 2, current: -10800; changing to 3. This may result in incorrect timestamps in the output file. [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 3, current: -7200; changing to 4. This may result in incorrect timestamps in the output file. [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 4, current: -3600; changing to 5. This may result in incorrect timestamps in the output file. [mp4 @ 0x7facd880f200] Non-monotonous DTS in output stream 0:0; previous: 5, current: 0; changing to 6. This may result in incorrect timestamps in the output file. [NULL @ 0x7facd880ec00] ct_type:1 pic_struct:0 Last message repeated 13 times [NULL @ 0x7facd880ec00] ct_type:1 pic_struct:0e=00:00:01.40 bitrate=5992.1kbits/s speed= 2.7x
Last message repeated 12 times [NULL @ 0x7facd880ec00] ct_type:1 pic_struct:0e=00:00:01.92 bitrate=5461.5kbits/s speed=1.85x
Last message repeated 12 times`

jayeazy's picture
@jayeazy commented on @pbourke's Discussion, “rtsp

Hi Jaymie, tried all options, none of them work in VUO. No video at all.. just a black screen.

jersmi's picture
@jersmi commented on @Bodysoulspirit's Composition, “Calligraphy EQ

Hey @Bodysoulspirit, nice comp, I like the seamless triangle strip mesh better than Steve (@smokris)' lines. Regarding the metallic shader, I copied Steve (@smokris)' macro shader to your comp, but I can't see how to rotate the shader image on the line strip to get it look like Steve (@smokris)'. Or at least I think that's a path to a solution, is it possible? Any progress on your side?

MartinusMagneson's picture

Referring to the underlying tension, I think it is good to be able to have a discussion like this. But venting itself isn't really constructive - although it can be necessary at times to clear the head. I find it a lot better personally, if it comes to it, to write everything I'm frustrated about in my own foul language in a Word document. Then I take a trip outside, have a coffee, read my words, laugh at it and delete it. The problem with saying f-you to Powerpoint is that Powerpoint doesn't really care. If it cared, it would still have done exactly what I asked from it (albeit maybe a bit sweaty) - not what I really wanted to ask from it, as it is a computer application.

When I've calmed down, I can formulate my challenge in a way that is not offensive and more to the point to someone that has the ability of caring. They might not though, depending on the issue being for 1 in a million (nah), for 1 million (yup - in a year or so), or out of interest (maaaaybe?). If you are at a point where your challenges are not regarded as important either from a business or interest point of view, there are some options. You can ask for help with the challenge, do the adaptation yourself, get someone to do it for you, or look for a different solution.

With my venting-venting done, switching over to your challenge, the main point to understand in Vuo as far as I see it is that Vuo is push in opposition to QCs pull. When that is understood on a more fundamental level, a lot of the other mechanics in Vuo is a lot easier to understand and "get" - including the Build List. Pulling sees everything that is connected to the output and drags all the calculations down to calculate the result. Push on the other hand is a way to operate that kicks the data and events downstream from a starting point, to the end result. Where pull can be quite resource intensive, push gives you the ability to have greater control of what gets calculated when. This comes at the cost of complexity, but is what makes the Fire on... and Hold nodes both frustrating and great at the same time.

Thinking about it as streams and rivers may help to visualize the flow. Start out with three lists, these are your streams. Add a Build list node, and hook up three Get Item From List nodes from the Build Item port to the Which port. Combine or process your original lists, and output the result through the Build List node. This is your river.

This is the smallest example I can think of, but all the essentials are there. The input to the Hold nodes needs an event (Fire on Start), the Hold node needs an event (Build Item), and the Items port need an index (Build Item). This is how Vuo knows to push the data, and where to push it. If there are no event, nothing has pushed the data to the port, and you won't get the desired result. If there is no Index, Vuo won't know what to push (or it will know, but it will probably be the wrong one for what you want).

Shortcuts and what-does-what! This is practice and memory, nothing more. A few tips to make it smooth is cmd-enter to go into the library. The filtering system can be a bit itchy when you're not familiar with all the nodes and what they do, but to look at the available options in a certain set, you can type [nodecreator].[nodetype]. For "vuo.list" it will filter out anything but the stock list nodes for instance, "vuo.math" will list all the stock math nodes, "co.parabox" will list all of Karl's nodes, "stv." will list all of Satoshi's and so on (if you have those installed that is).

You also don't need to complete each word in the search bar to find your nodes. "bu li" for instance will pop right to the Build list. "r s w" will go straight to Render Scene to Window, and "r i w" will give you Render Image to Window. You can also define more letters to be more certain the correct one will pop up. "s v" will go to Share Value, but "sp v" will take you to Spin Off Value. Getting the brain-/muscle-memory right there take time though!

(Oh, and next time you get frustrated with an application not doing what you want, try setting up Powerpoint on a MBP with presenter-view on three screens feeding a BMD switcher. Nothing will make you search faster for the hypothetical g d t u p o s node)

useful design's picture

Thanks Jaymie (@jstrecker) your first solution is elegant.

The purpose of this exercise wasn't so much to find the optimal way to do this item shuffling task, but for me to generalise solutions for referencing any item in a list at any given time in a loop, or in secondary list, while looping through a list of point data.

I actually have two lists to solve for. The reason for dividing my data into two lists was to do with the composition I'm making explained in the third post, the data is position, speed and acceleration values for a group of cars going around a circulate track. Cars are to autonomously adjust their acceleration based on a set of rules. Position and velocity need to be calculated per frame, but acculturation doesn't and adds some realism too I thought to do twice a second (avoids me working out how to put a time stamp and test that before I change acceleration too). I guess I'm not really saving much CPU energy, but seemed smart to seperate the calculation for acceleration.

Here's my build list solution, it's pretty simple in the end, but had to learn about extra events sneaking into Build and Process loops and how to keep them under control with extra Hold Value/List nodes.

jstrecker's picture

Alastair (@usefuldesign), you might have gotten your problem solved on another thread, but for anyone else with a similar question…

In this demo composition Getting the next item in a list in a process list cycle v 1.1.vuo I'm not getting the Process List node to cycle the list as I think it should.

To cycle the way you described, I would actually recommend using Take from List and Add List:

But as a mental exercise, here is how you could do it with Build List:

All values except for X (r), which is a constant for all cars, are to be recalculated every frame.

You may want to take a look at Magneson (@MartinusMagneson)'s PetriDish.vuo on this thread.

Pages

Welcome!

Vuo is more than nodes and cables, it's a community! Feel free to browse or add your voice.

Browse Discussions

Start a Discussion


Browse Feature Requests

Suggest a Feature


Browse the Composition Gallery

Share a Composition


How can I get notifications?

Learn more about the community

Learn more about Vuo

Vuo Announcements

Sign up for the Vuo announcements mailing list to get news and join the community. We post about once per month.