Tidal modulator has a floating point error bug that triggers under a very specific set of conditions, as described here:
I also noticed that the reason a few of us have encountered it or triggered it is, also, kinda moot: syncing Tidal modulator to a clock doesn’t really do much.
I used to be able to trigger the bug; but now I can’t, not after Windows’ patch tuesday.
Whatever the case might be, I created Aestus: clock sync is now a button (restores clock syncing AND bank selection when the module is in Sheep mode) and putting a clock signal in the “Clock” input actually syncs the module (takes a couple of seconds to adjust to your clock, as expected, and, needless to say, being user controlled, the module no longer automagically turns sync on when a cable is connected to the “Clock” port); puts the available options on the faceplate, and all my usual, controversial, stuff; but it would be nice to see if the module no longer crashes other people’s machines or I’m just having local, Windowsy fever dreams.
Sooo… if you’d like to test it (and enjoy it :)), grab the 2.5.0WIP nightly from the usual Mutants spot; play around with it, put a clock on it, turn sync on, off, remove the clock, play with the range button, reclock it, declockit, sync it, desync it… and… let me know how it goes
2.5.0WIP crashed to deksktop for me (updated windows 11) sending random stuff to clock and trig and toggling “sync”. Nothing in the log - I will run it in a terminal later, when i get it built to see if something is written in developer mode.
sync on, click “frequency range” many times - no crash happens.
toggle sync button off and on.
Activate the frequency range button a few times. It changes the button color to red, and crashes. reproduced 5 times in a row, but sometimes it doesn’t crash when doing this procedure
Thanks Jens! The one you experienced I’m aware of and looking into
I might actually have to do with the original crash: I need to recheck the Tides hardware source: the problem might stem from the Range button not being ignored when it should be (i.e. when in PLL mode).
I just pushed a potential fix and triggered a nightly, I’d be really grateful if you test it.
I can use FM now and the module chugs along happily.
The fix comes with a probable slight performance hit: dividing instead of shifting right; but I don’t think it’s that severe (better than crashing, always )
The problem would probably also affect line 405 from the block Steve mentions, so that has been changed as well.
Lemme know how it goes
If it goes well, I’ll probably go through the ByteBeats and do this for those that break, so, hopefully, 2 birds, 1 stone.
I’m going to bed: I’ve not been a happy camper today.
I don’t know what that comment of yours means, but:
a) clearly there is a divide by zero going on, regardless of rising clocks.
b) as @Steve_Russell pointed out, there is clearly an uninitialized variable in one of the modules.
I know you didn’t write this old bad code, but these days I think everyone initializes their variable where they are declared so that this can’t happen. The idea being that if one later adds a variable it is possible to forget to initialize it in some Init function.
As others have pointed out, valgrind can easily find these code issues automatically.