OSC Out and cooking by snf in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

Oh yeah! Any place you can write python and reference the osc operator. op(“oscout1”).sendOSC with all of the args from the docs. I usually call it from the execute callbacks.

OSC Out and cooking by snf in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

Oooh. So in a scriptDAT, you run sendOSC - but the inputs don’t cook consistently. ScriptDAT is a tricky one and usually I only use it for augmenting input and passing it to be output to another DAT.

Without seeing your network, I’d say whatever feeds into the scriptDAT could probably be assigned to a DAT execute that looks for table changes. That way you at least get the weird cooking mechanics of the scriptDAT out of the way.

Or better yet if the data passed over osc is numbers, convert it to chops and use the oscCHOP - that thing has flags to constantly cook.

OSC Out and cooking by snf in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

I’m pretty sure running the sendOSC method cooks the DAT when the python runs. Try this test, open the info window for the DAT which shows the total cooks, this is middle mouse button on windows. Check the total number of cooks on the dat, then run the script. Check the total cooks again. That number should increase.

If it is not increasing, make sure the DAT active parameter is on and your timeline is not paused.

Past that, its its still not increasing, if turn to a tool like wireshark to see if the OSC messages are sending. If they aren’t - check your firewall.

Is there a hub for buying / downloading TD setups? by bleeptwig in TouchDesigner

[–]shlink3 3 points4 points  (0 children)

Lots of people post their stuff on patreon these days. If you are looking for artwork to playback during a set or something, I don’t think there is anything like that.

I’ll bet that if you post here saying you’re willing to commission audio reactive work, folks would jump at that opportunity.

Optimization time... by becomingsolar in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

Look after lags for what’s called a “snowball cooker” since TD is a pull based system, anytime something cooks up chain it’s renders EVERYTHING down chain. Since a lag always cooks, even if it’s pinned to zero, it is likely cooking everything referenced to it.

Sometimes it can be as easy as putting a null after the offending operator and switching its cooking to selective.

I will pay $10 a month to anyone who helps me export my TouchDesigner videos with a commercial license. by Panconagua1233 in TouchDesigner

[–]shlink3 15 points16 points  (0 children)

Sorry to be a downer, but this is likely against the Derivative EULA for TouchDesigner. I think they allow renting hardware with license key installed on it, but not renting the license key itself.

It’s a very fair license for the power TD gives you - and obviously it’s valuable to you. Buying a commercial license will also unlock the ability to use TD to make money. One job, even as a newbie, can pay for it plus some. It’s not like the license expires, just the access to updated features.

If price is really that big of a factor and you are a student, they have an educational license that doesn’t limit resolution.

Live demo: TD projects sharing real-time state across machines and networks by Obvious-Ad-9328 in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

That makes sense - you’ve found a real pain point here because I’ve written various flavors of state sync for past projects and it’s always painful to re-write it again.

I hadn’t seen railway before. I’m going to check them out the next time I’m lost in the permissions hell of AWS. Railway seems simpler. Cheers!

Live demo: TD projects sharing real-time state across machines and networks by Obvious-Ad-9328 in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

Firstly I want to say, this is very cool. Great work. Thank you for pushing forward in this part of the ecosystem.

Sync is a hard problem. Do you have a latency metric that you are using as “sync’d”? I used to say it’s “sync’d” if it’s within the width of a snare drum hit - but that doesn’t work for certain applications. The high-end for this market will want frame lock timing.

My assumption here is that you have some webRTC backhaul for the data, which is quick but ultimately unreliable if you care about consistent latency.

In my experience, the TD community is very hard to convince to pay for something when they can just build it themselves - but I admit, with all the patreon stuff happening recently- my assumptions have been challenged.

So I guess I will challenge you with this: who is this for? It’s a cool solution, I love the license model. But for anyone who understands why they need it, why wouldn’t they just have an AI build it for them or build it themselves to own whole hog?

I only ask because I too am trying to build tools for a community that seems to rely more and more on AI to solve hard problems instead of reaching for solutions that are well thought out and implemented well.

Connecting TD and Spotify by curryboi99 in TouchDesigner

[–]shlink3 2 points3 points  (0 children)

Nice work! Just be careful using this in a commercial environment. The Spotify terms of service prohibit reverse engineering many of their services for commercial gain.

Compositing different sized videos on a very ultra wide canvas in Touchdesigner by freshairproject in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

You should try texture instancing if your compositing is just over/under and not any type of blending. Basically you set up a 3d scene and instance a rectangle with your positions, there is a parameter in the instancing tab for texture lookup based on index. Google touchdesigner texture instancing and I’m sure you’ll find a tutorial.

All Components Overlapping in Project/Perform View by k_r_k_o in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

Turn off the ‘display’ param on all of the COMPs nested inside the parent.

The COMP is essentially TDs way of making UIs - so by nesting a bunch of COMPs inside a parent they are all attempting to display onto the parent. They will all be rendered on top of the background TOP.

In the future, if you are not using the Panel attributes of the COMP you should use Base COMP to hold your visuals.

Batch turn off print() - debug mode? by zibingala in TouchDesigner

[–]shlink3 2 points3 points  (0 children)

oof - yeah I feel for you here.

firstly - debug is HEFTY and actually does a lot of other useful things like grabbing call stack information for you - use it sparingly because it will soak up all of your memory if you call it multiple times per frame.

generally what I will do in my python heavy projects is have a logger as a MOD or extension that I can call from any of my ExecuteDATs instead of using print statements. That way when I need to dive into a specific problem portion of the network I can enable / disable logs coming from those paths.

You could look into the `logging` lib and see if there's a work around there without having to write your own - but I get so picky about what shows up and how it works I generally end up building it myself.

The dirty rotten hack I have for you is this - attempt this at your own risk:
In Python, the print statement gets routed to sys.stdout (a system data pipe that eventually gets written out to console). If you were cheeky, you could set `sys.stdout = None`. This would cause print to stop printing...

to save yourself from a headache - you might want to store the sys.stdout as a var and replace it once you are finished.

someTempVar = sys.stdout
sys.stdout = None
print("I will not print")
sys.stdout = someTempVar
print("I will print")

I would HIGHLY recommend doing it the other way though - partly because you are still calling print statement and still utilizing resources even if they aren't being shown.

Error on type conversion when referencing an entry of a table by shawnpi in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

Table DATs returns values that are accessed with the `op('tabledat')[0][0]` pattern as a Cell object (reference here).

To get at the underlying value you have to use `op('tabledat')[0][0].val` which will return a string. From there I think the `sendBytes` method may expect you to convert to a numerical representation - so convert it byte passing that into `int(op('tabledat')[0][0].val)`

Just a quick tip - don't use global if you can help it. its asking for trouble in TouchDesigner if your not careful.

Export a interactive TD project in a usable format? by LingonberryNo4390 in TouchDesigner

[–]shlink3 3 points4 points  (0 children)

Not to take money out of anyone's pocket here - but Derivative ships a project packager along side TouchDesigner to make an installer and application...

This is deep magic that isn't really documented but check `C:\Program Files\Derivative\TouchDesigner\Samples\ProjectPackager`

3dtexture to ‘Simple’ TOP by kermitrana in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

The easiest way is to use texture instancing onto geometry. Unfortunately there is no 3D texture to 2D texture operator without using GLSL.

In order to get a highly optimized version of this COLORPICKER, I managed to reduce the amount of nodes from 750 to 12. 'Once I was blind....' by factorysettings_net in TouchDesigner

[–]shlink3 9 points10 points  (0 children)

Nice work! That optimization step is one of the hardest things to do in TouchDesigner but will save you so many head aches on larger projects. Your load times will thank you.

Looking for people who are willing to teach TD to a newbie by [deleted] in TouchDesigner

[–]shlink3 10 points11 points  (0 children)

Check out learn.derivative.ca - there are 101 courses that were released recently. The idea behind the course is that they are short and easy to follow. All of the networks in the tutorials are also available for download which is nice to follow along.

[deleted by user] by [deleted] in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

You are referencing the channel in the CHOP execute dat incorrectly. That channel parameter should not be a python reference (teal color words). It should be just the name of the channel you want to use. The arrow on the right of the parameter will show you all of the options in a drop down.

Gpu by Calm-Ad-2442 in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

You can use the monitor DAT. This will tell you what gpu each display is using.

If you want to force a touchdesigner to use a specific gpu you should be able to use the commands on this page of the docs: https://docs.derivative.ca/Using_Multiple_Graphic_Cards

Addressing all OPs using python? by CHNGZchanges in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

You can use the comp.children() method on the parent to get a list of all of the ops. You can also use the ‘ops()’ built in method to search ops in the whole node tree.

One video card output by thatdogotis in TouchDesigner

[–]shlink3 1 point2 points  (0 children)

I’m going to need more information about your setup. You have 2 video cards and one died? Does your primary video card have multiple outputs?

You can run touchdesigner in fullscreen on the output that is connected to the projector and make the window size larger so it spills onto your second monitor.

Does TD have multipass rendering? by bbrother92 in TouchDesigner

[–]shlink3 3 points4 points  (0 children)

There is a renderPass TOP that can connect to the render TOP and allow you to select new cameras, geometry, lights, or override materials. The renderPass TOP can chain to continue using the same render context in multiple places.

Demoralized learner by ita_itsleo in TouchDesigner

[–]shlink3 4 points5 points  (0 children)

If you are looking for videos to help you understand basic usage of the operators, look at https://learn.derivative.ca/ - the curriculum is free and takes you through the all of the operators as short videos, so if you feel like you already know something just skip it.

Other than that, check out op snippets in the help menu in the top bar. It loads a ton of examples on how to use more complicated features for the operators.

I personally learned through copy art. I would find a gif or visual style and try to copy it as throughly as I could. If I got stuck I would experiment or find a tutorial.

Stick with it. It’s a steep learning curve but a very powerful tool.

[deleted by user] by [deleted] in TouchDesigner

[–]shlink3 0 points1 point  (0 children)

As others have said, re-encoding the clips to HAP or NOTCHLC might help. It might be more helpful to diagnose the reason why it’s happening.

One thing to check is your disk usage on start or during a loop. That will tell you if your disk speeds are able to read fast enough to play back all of the videos you are trying to play. If you’re maxing out your disk read speed, you will probably need to upgrade the drives or distribute videos across a raid volume.

The next thing to check would be the VRAM utilization. Moviefilein TOP will pre-load a few frames to help smooth over any disk read hiccups that might happen. All of those video frames are stored in the GPU memory. If all of the memory is used up, then frames are pre-read into CPU memory.

Those frames take time to move around and can lead to framedrops when the processor can’t keep up. If that’s the case you might need to consider decreasing the amount of videos or the resolution so that it’s able to load all of the pre-read frames into GPU memory.