@ferdinand
First of all, thank you very much for your efforts; where you get such perseverance from is truly remarkable.
- Windows 11 Pro 26200.8524
- Cinema 4D 2026.2
- Hardware
- CPU: AMD Ryzen 9 5950X 16-Core
- RAM: 64 GB
- GPU: RTX 3060 (Studio Driver)
I think you misunderstood me. I’m not trying to report a bug here, since the issue isn't with Cinema 4D itself. Rather, I wanted to know if I’m handling the threading correctly here within the Main Thread, because I’ve been experiencing some freezing when I clicked the "Convert" button during playback.
️By the way in the simple plugin example, you can click the Convert Button multiple times. It just toggles back and forth between the two sounds.
I experienced these freezes with the paid plugin that is already on the market. In principle, the convert function is the same, though it’s a bit more complex—calculating and loading audio.
I have the bug report, too, in case that’s of interest. Though I don't think I checked for c4d.threading.GeIsMainThreadAndNoDraw in that instance. The AI has already analyzed the bug report and specifically pointed out the threading issue, so I’m asking here for the best way to handle the threading or whether I’m doing something wrong.
I’d rather not share the large plugin here, as it’s a commercial product.
The plugin is way more complex of course. I try not to build puny plugins
. Currently it consists of that tag and a GeDialog—the step sequencer—that can be launched from the tag.
The step sequencer also has a "Convert" button that triggers the same function within the plugin's NodeData. It works fine.
In the commercial version, I disabled both Convert Buttons the one in the StepSequencer and the one in the tag while the animation is running, just to be on the safe side.
Since you don't see any major issues with the example plugin's Convert method, I don't think the problem lies with the tag's Convert button, but rather with the Step Sequencer's Convert button.
Can I trigger the Convert method from within the GeDialog as well?
In other words:
- when a click occurs in the
GeDialog
- I send a
c4d.SpecialEventAdd()
- catch it in the
GeDialog's CoreMessage(),
- and trigger the tag's convert function.
That should put me in the Main Thread, right?
- Or can I fire it directly from the GeDialog's Command() method?
You can see it in the figure down below.
Theoretically, could I use any of the three methods, or is one better? Or am I not allowed to do that at all?

Anyone who works makes mistakes.
Cheers
T.B