POP Feedback Questions Thoughts

Viewer
I like the POP viewer palette component and its diversity, but find it less convenient than the traditional method of right clicking into the display options menu to just get the basic info I need. Often all the extra bells and whistles in the pop viewer slows my workflow down a bit when just looking for a specific thing like where is vertex 0 etc. I look forward to the day when the functionality of the POP viewer is built in to each POP and its usage is more akin to the SOP equivalent.

Monitoring and Predicting Usage
I find myself not knowing exactly how much data I am using and often crash by running out of GPU memory by going too far with a single parameter, When beforehand it seemed ok. This is unlike TOPS which just bog things down when you run out. Perhaps in the future middle mouse clicking a POP will give you the cumulative GPU usage, and I guess practice is the best guide. I see that a TOP will tell you that in the meantime, and I assume is includes POPs. Is that correct?

Direct vs Indirect
I would like some more information about direct vs indirect, best practices regarding direct and indirect etc. I am assuming it is try to use indirect POPs near the end of your chain to keep everything fast, but I would like to know whatever caveats there are

Snippets
I am really liking everything so far and look forward to a little more guidance. in the way of documentation and snippets, but for now I am figuring much of it out. Maybe you could give the alpha testers the current guidelines and best practices for making Op Snippets and we can try to contribute ideas and examples.

Specific Troubleshooting
I would like guidance on doing a transposed math equation where I combine 2 pops of say 10 and 20 point index length, and the result is 200 index length. Where one of the inputs (say B)gets transposed/shuffled, and each point in A is combined with every point in B, as opposed to only the matching indicies of A and B.

Presently I am doing a jig to TOP and back. Here is an example which I would like to remove the TOP and back and do it all in POPS.

pop a question.toe (22.2 KB)

Perhaps one way of doing this would be to allow the Grid POP’s Rows and Columns to be populated with a custom attributes taken from inputs, and some Grid combine POP that would allow custom mixes, or perhaps it could be an option in math mix that can transpose an input and give a longer result. Or perhaps it is already possible and I missed it

Unrelated but also using the same example:
Some method of Deletion with interpolation? I want to pull from a long indexed POP a few points from a dat that lie in-between my indices or attributes. I want the result to interpolate all attributes and give me only my selection.

Lets use the example file above .We can begin at the null POP called Q2 at the end of the chain. This pop has 259 points and many attributes, including one named Hz. Lets say I make another POP by converting all 20050 samples from an audio spectrum into a POP and giving it a new index attribute called Hz and a few new more attributes. How can I interpolate and extract the 259 frac values from the 20050 integer locations to add a new animated attributes for spectrum values into Q2? I can’t quite get it using the lookup although I feel like I should be able to.

RFE
I have always wanted good GPU audio. I wonder if you could port some of the Audio Chops into Audio POP subfamily of operators. Go check out GPU Audio They claim real time and major performance increases. Or maybe you can do it in house even better?

Even an audio oscillator to start would be awesome, Or just a transform that would do a phase at audio sample rates which would allow for POP modelling of waveforms

Playhead Pop: set up like clip SOP, whatever points from your 3d POP are in the 2d playhead plane are phase transformed at audio sample rates. Custom oscillator city.

2D SDF POPS

.Carve Pop
L-System
Ray Pop to include more features of Ray SOP
Boolean, Curvesect, Hole
Text Pop

I also would like to see the POP connected to some existing ops, like laser chop for converting to audio while we wait for Audio POPs. Object chops could use access, likely others

1 Like

Hey Alec,

Thank you for the feedback, very valuable. We’ll reply in more detail, just wanted to do a quick reply regarding Direct vs Indirect:

For some POPs the resulting topology is only known on the GPU, so to avoid an expensive readback to the CPU or added latency, all the POPs downstream become indirect, meaning the compute shaders are dispatched indirectly, reading the number of threads needed from a command buffer
That part adds a small overhead, filling the command buffers, and the other downside is the POPs allocate the max amount of memory possible, which can quickly result in using a lot more memory than actually needed.

The convert POP has a mode that does the readback to convert a POP back to direct, however it’s slow. And the interfamily OPs, POP to CHOP, POP to DAT, have a next frame option to prevent the stall, which adds latency

Long story short we’re planning on adding finer control of memory allocation in those cases.
Also one thing to be aware is for integrated GPUs that share cpu and gpu memory there’s no cost to converting back to direct, we’re planning on automating that as well.

Edit:
Forgot there was currently a somewhat hacky way to manually control memory allocation for downstream POPs and/or convert to direct POP with the attribute combine, edited toe with sample
GPUMem.toe (6.5 KB)

+1 on your viewer comments especially. All very good comments BTW.

So this one I initially thought a combination of a Copy POP and custom magic in a GLSL POP or the GLSL Copy POP but forgot the copy POP had some ability to combine the attributes from the template source and the object to be copied, on the second page
See GridCombine.toe
GridCombine.toe (6.3 KB)

Otherwise we’re adding some features to make it easier to manipulate grids using x y z coordinates and not only 1d index, so a less obscure way to do it might come as well

Unrelated but also using the same example:
Some method of Deletion with interpolation? I want to pull from a long indexed POP a few points from a dat that lie in-between my indices or attributes. I want the result to interpolate all attributes and give me only my selection.

So I think you were pretty close, indeed the Lookup Attribute does it, by default it expects a normalized lookup index, between 0-1, but if you use the “Input Attr is Lookup Index” toggle it’s expected to match the lookup table number of samples. Agreed the parameter name is a bit obscure currently.
see attached toe.
LookupIndex.toe (6.5 KB)

Thanks for sharing your toe, have to dig deeper in the setup, I thought it would be easier to do separate simpler examples toe for the above, let me know if you have issues in your file.

Simplification, generally to add n attribute with 0, 1, 2 … in point value: Your CHOP to POP can be followed by a Pattern POP set to not Ramp but Index, Parameter Size 1, and output to Hz.

randomly looking at things…

You should use Parent Shortcuts vs parent(2) and all that.

You are doing logB(A) where B is from a parameter. You can put the number directly on the Math Mix’s B par - put the expression parent(2).par.Root there. it resolves to 2.

good trick getting a color wheel using Cosine in for 3 attributes and phase shifts of .333 .

Vincent thank you very much for explaining about memory, I am getting a lot less crashes now that I am setting the mem based on your hints.

The Copy POP method worked perfect, although I could see in the future putting this somewhere else also, so that the combinations could be more diverse like a math mix. In this case multiplication is what I wanted, but I could try a few others as well. XYZ grids sounds awesome.

Greg Your suggestions helped me to clear up my network. The Color Wheel is for the Octave Wheel!

The goal is to slowly integrate POP into some existing audio tools. I often have the Audio spectrum transformed into Note instead of Hz This mapping first allows for all sorts of interesting uses such as converting between audio and MIDI, Generating tones for effects, analyzing, tuning physical instruments, synthesizing seagull voices. the majority of my recent youtube videos are TouchDesigner audio using these ideas.

More show and tell: This is integrating POPs into the note compass. Last time we got the Hz values into POP, now I have them octave aligned them for use as a tuner. This example is pretty good as it shows the location and color of the note, but I still need to tweak the visual for tool usage. I have left the TOP version in there which works great, and is customizable in its output threshold via custom pars

I am unsure why the file size is so large

The TOP version and its ui and custom pars are /Note Compass/. It’s pixel interpolation between octaves and its custom pars based on level tops make it really good for studio usage.

See the POP version WIP inside it

The other year I made a video about doing audio on GPU via tops. That still works, and in many ways is much smoother than it was before, I like to dabble and experiment for fun. My current workflow for TOP Audio is to make a clone of the audio process . I don’t work on the audio, rather a top image of the note aligned spectrum, and the clone applies the same effects chain to the audio. This greatly improves the visualization for understanding. I often use an unrelated image chain to further visualize the process occurring, especially if I have a plan.

HERTZ BRAIN Sample Toe

/project1/Compass_Playlist/Note_Compass/ has custom parameters for toggling the TOP chain, POP chain, and Chroma Hz Hunter, Also has pars for dialing in the TOP Note Compass’s viewer and some audio routing options. The UI for Chroma hunter is here, click in the green box to select a Hz value from the spectrum image

This file has 5 or more points of interest

  1. POP audio. Extremely basic examples of edits: transform, composite, and cache
    found at
    /project1/Compass_Playlist/Note_Compass/Project1/

  2. an oscillator chain that mimics the audio, makes a “blur” of the audio. When made with chops I am limited to a few oscillators, but if we could get POP audio, then the blur could get much better. For now it is a fun technique that I am porting to POPs, but I need the final chain, the audio output to also be pops for maximum goodness.

/project1/Compass_Playlist/Note_Compass/HertzBrainList has Tunings custom pars for setting your note list, and for the max oscillators allowed in Misc

The actual audio is produced @
/project1/Compass_Playlist/Note_Compass/HertzBrain/POP_Note_Compass/replicator1

and further edited in
/project1/Compass_Playlist/Note_Compass/Project1/

2.POP note compass WIP, I have the spectrum aligned to note value and octave, it is not as functional as the TOP version yet, but I just need to iron out the visual, the data is there

/project1/Compass_Playlist/Note_Compass/HertzBrain/POP_Note_Compass/ and toggle the bypass flag on merge4

3.TOP Audio Process manager this base is where you model the effects chains, A clone does the actual effects on the audio. This way you can use a note aligned spectrum and other images as your workspace, and actual audio gets processed in the clone

go inside the following and use the network editor and ops as UI
/project1/Compass_Playlist/Note_Compass/Audio_process_manager

4.Chroma Hunter Super stipped down example where you use a note aligned map to select a target Hz. TOP based, but will likely be ported to POP as well.

  1. Old versions of HertzBrain (Root Tuning Octave) and TOP only note compass playlister can be found can be found inside /project1/
1 Like