MartinusMagneson's picture

Magneson (@MartinusMagneson)

Compositions

MartinusMagneson's picture

Yep, those are Vuo with point meshes. The reference image is from Reaktor which generates the sine waves. To get it I split the receive live audio into First/Last in list, enqueued the values and merged them into an x/y list. I then triggered the enqueue node from a 'fire periodically' node that probably fires too fast for stable/efficient usage.

Shaders shouldn't be a too big of a problem in Vuo, they are quite easy to set up after you understand where stuff is supposed to go (but it probably helps to have someone knowing what they are doing (I'm not though)) . The SDK and the source are great resources, as are shadertoy, Paul Bourkes image filters and a bunch of other websites I don't remember.

MartinusMagneson's picture

The shader approach is so that you get more control over the individual pixels, and maybe a different approach to audio. As it stands now, I'm not sure about how phase is handled between the L/R channels.

OscTest.mov

Here I'm using Jerobeam Fendersons Oscilloscope music (no audio, sorry, check out http://oscilloscopemusic.com for some absolutely fantastic visuals), which is tailored for this sort of thing, and although I can see some definitive shapes in there, it doesn't seem to line up with what I get from Vuo.

However, when sending two sinewaves and adjusting the sample delay for one of them, I can do this:

OscTest2Sine.mov

But again the phase seems off:

So Vuo might be capable of an approximation initially at least. Would be nice to have a comment from Jaymie about the phasing, maybe there is something to clear up :)

MartinusMagneson's picture

Very cool project by the way! You don't have to do several process lists, you can easily have several 'Is Within Box' nodes within the one 'Build List'. All you have to do is a bit of nesting of the logic.

Here you have three different sources for the 'box'. If the first 'Select Input' is true, cyan will be passed along as the false color for the second box. If the second 'Select Input' is false, cyan will pass to the third box as the false color. If the third 'Select Input' is also false, it will then pass along cyan as the final color. If all are false, blue will be passed along, and if any of the later ones in the tree are true, it will settle at the latest 'true' color. This way, you only need to convert the one color-list to Art-Net. I think the color list would be the simplest option to deal with by far, especially for LED strips.

Composition is attached ("EDIT2_...").

MartinusMagneson's picture

What are you planning to make? Cymatics and Oscilloscopes are perhaps better placed in a shader of some sorts. I at least haven't found a satisfactory way to emulate that in Vuo (that doesn't necessarily mean it doesn't exist). I see from the way you pose the question that you might attack the problem from the wrong angle though. As audio input is a one dimensional value from 0 - 1 it doesn't lend itself well to xy(z) manipulation in its raw form. What it does well however, is scaling. So if you start by making a circle/sphere, then you can apply the audio values as scaling for those points, either by adding/mulitplying lists, or by scaling the points that go into them.

I'm attaching two compositions I whipped up quickly to demonstrate two ways of doing it, although there are a lot more. I suspect that if you go into 3D space with them, the z-axis (provided the object has origin at 0,0,0) will be the best one to scale.

MartinusMagneson's picture

You have to think about the process/build list nodes as a self-containing loop. This means that the hold nodes needs to be triggered from the loop itself in order to avoid flicker/unintended behaviour. So in order to get it to work, you would have to trigger the orange hold nodes from the orange process list "process item" port. However, I don't think that the process list is the best suited tool to do the task if I understand the build correctly.

If you look at the picture, the Xs mark where signals enter or leave a loop without a hold node, which will make things go bonkers.

As far as I understand it, the process list is intended to use to change items, i.e. if you input a 3D point list, you should expect a changed 3D list output. So when you then want to create a list of color items based on the 3D point list, the build list is better suited. This way you can pull the info from the original list, and create a new color list based on the attributes you set. To make it react to both set values, and an animated value, you can use the logic nodes && (AND) or || (OR) to merge which points it should react to (although at increased resource usage).

Here is the composition with a build list instead EDIT_IsWithinBox-2xProcessList-Color-boyaud.vuo

Pages