jstrecker's picture

Jaymie (@jstrecker)


  • Vuo Founder
  • Team Vuo
jstrecker's picture
@jstrecker commented on @MartinusMagneson's Discussion, “Memory leak

Floats and integers don't need to be (and shouldn't be) retained and released. Only heap-allocated pointers need it.

A few examples of node classes that use struct instance data are vuo.data.record, vuo.osc.send, and vuo.scene.twirl. If those don't answer your question, maybe post some of your code here and I can try to give a more specific answer.

jstrecker's picture

A known bug. It's on our to-do list.

jstrecker's picture
@jstrecker commented on @Citizen-Caine's Discussion, “Shadertoy probs

Hi, @CitizenCaine. I see that you already applied the workarounds here. Beyond that, you can check Console.app for errors and warnings…

ERROR: 0:141: Identifier name 'gl_FragColor' cannot start with 'gl_'
ERROR: 0:141: Identifier name 'gl_FragCoord' cannot start with 'gl_'

These are fixed by deleting the mainVR function.

ERROR: 0:14: Invalid call of undeclared identifier 'textureLod'
ERROR: 0:25: Use of undeclared identifier 'rg'
ERROR: 0:25: Use of undeclared identifier 'rg'

These are because Vuo's Shadertoy implementation doesn't know the textureLod function. Unfortunately it doesn't know the texelFetch function in the alternative branch either. Perhaps there's some code you could substitute in to get equivalent behavior, though I don't know what it would be.

jstrecker's picture
@jstrecker commented on @MartinusMagneson's Discussion, “Beat Detection

It looks at peaks all over. Basically, it splits the spectrum into a bunch of ranges, and looks for amplitude spikes in each range. It filters out the spikes that are unlikely to be rhythmic, and it uses the time difference between those that remain to adjust the reported BPM. More detail at https://github.com/cjcliffe/beatdetektor/blob/master/cpp/BeatDetektor.h#L36.

Once the algorithm has settled on a BPM, it naturally stays near that BPM (since the algorithm is designed to classify spikes that aren't near beats as being non-rhythmic). So it should be good for tracking the minor fluctuations when people play music without a metronome, but it wouldn't work well for intentional accelerando/rallentando.

If you change the Tempo Range port's value, it deletes and recreates the BeatDetektor instance, which should be equivalent to using the Reset port.

jstrecker's picture

With File > Save Composition to Node Library, it will more or less accept the title as you enter it. A limitation is that it will capitalize every word.

The title is parsed from the node class name, which is treated as camelCase. So jersmi.myNiftyNode.vuo becomes "My Nifty Node".

Does that answer your question, or is there some specific case where it's not working as you intend?