Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

incorrect trigger behavior, possible a bug

For general discussion related FlowStone

Re: incorrect trigger behavior, possible a bug

Postby tester » Wed Mar 13, 2013 2:06 am

Possible evidence for entangled triggers :-)

I noticed, that oscillators (at least sine), when they get value = 1/0 (time instead frequency is provided, so f=1/t and if t=0, then you know, veeeery huge value) - they get stuck until stream connection is broken. But...

In scenario in which input is sent to "select" primitive first and then to "equal" primitive ("if value = 0, then switch to second input" condition) - oscillator is running. Which means - despite the trigger order (first send through selector, then to condition), oscillator is not receiving buggy value as it would if the triggers were not collaborating secretly.

Have not tested yet with timer separation which provides slight delay, but maybe tomorrow.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: incorrect trigger behavior, possible a bug

Postby trogluddite » Wed Mar 13, 2013 9:47 am

Yes, that would be right.
When the "value" input of the selector sees a trigger, it causes a "call back" trigger from the "select" input, to immediately update the selection value, even if the selection value hasn't seen the initial input trigger yet.
When the initial input trigger then does arrive at the 'select' input, it does nothing, because the selector recognises the trigger by its ID tag, and knows that it has already been acted upon.

That's the tricky bit of the trigger system - the invisible "call back" triggers ("secret collaboration"!)
In fact, the selector is about only way to easily 'see' these "backwards" triggers - here's an example...
Backwards Triggers.fsm
(284 Bytes) Downloaded 872 times

Change the selector to the unselected input - as expected the selector doesn't switch because of the blocker. But set it to the unselected input, and then press the trigger button. "Magic" - the selector switches over, even though no trigger has come into the input side.
Because the selector has the little picture showing the routing, it can be used to check for reverse triggers in cases where you think they might be causing a problem - they can cause things to update before you expect sometimes because they propagate backwards a very long way, unless you block them by using sample-and-hold prim's.
That may well be why your zero values are sometimes still getting through, but I'd have to see the schematic to be sure of this.
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: incorrect trigger behavior, possible a bug

Postby tester » Wed Mar 13, 2013 12:26 pm

Here is an experiment. Run audio and type "0". Some oscillators will be blocked, even if you change the value again to something else.

Trigger separation by order logic works here differently than separation by time event.

And by the way - oscillators could have some internal min/max by default, to avoid such accidental situations.
Attachments
conspiracy-of-entangled-triggers.fsm
(1.84 KiB) Downloaded 849 times
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: incorrect trigger behavior, possible a bug

Postby trogluddite » Wed Mar 13, 2013 9:39 pm

tester wrote:oscillators could have some internal min/max by default, to avoid such accidental situations

Yes, I agree with you there.
It's quite a common situation with oscillators, filters etc. - anything where the next value has to be calculated from the previous one. Once there is an infinity in there somewhere, the next value cannot be calculated - infinity + x = infinity etc. And it is certainly good programming practice to protect as close to the 'sensitive' part as possible.
The only reason I can see for the lack of protection is to save a very small number of CPU cycles - but IMHO, especially for software like this, designed to minimise programming effort, I would thing the bias should be for more protection.

Your schematic does exactly what I would expect - but I think it maybe shows that there is something I haven't explained too well - a misunderstanding about your meaning of 'entangled'... (and lack of explanation in the User Guide too!)

The rule that a trigger must be 'finished' before it can take another path always applies within the SM schematic - but timers behave like MIDI - the 'start' trigger is sent outside the schematic to Windows.
Just like MIDI, the act of sending the 'start' message to 'the outside' counts as 'done' for that trigger path, and other trigger paths (and other new triggers) are free to proceed without waiting for the timer to end.
The trigger that finally comes out of the timer is a completely new one, unrelated to the 'start' trigger - again, much like MIDI, it behaves as a new 'external' event.

This is why the 'timed' selectors are free to lock the oscillators - the trigger sets off the timer (done for that path), and then is free to proceed through the selector, because the selector doesn't switch until the timer returns its new event.

So any unpredictability is not caused by the trigger system itself, but the fact that we have given some control to an external force - just as we can send MIDI, but never be sure if the destination will actually play a note!

It also explains what is meant by the "race condition" jargon that I mentioned before.
The timer counts for a indeterminate amount of time (the value input is only approximate). Other events inside the schematic can happen at any random time too (user moved knob, new MIDI note). We can approximately know when either of these two things might happen, but it can never be known 100% for sure which will happen first - hence the analogy of a race.
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: incorrect trigger behavior, possible a bug

Postby MyCo » Thu Mar 14, 2013 1:18 am

this "trigger separation" is complete bullshit. You shouldn't use timers for this. As Trog stated earlier, timer primitives use windows timers. They are not guaranteed to fire anyway, especially when the window they are defined in is minimized or hidden. Windows is also allowed to kill timers, when the queue is full, or delayed by CPU intense processes.

I also don't think that there is anything wrong with the oscs input boundary. The freq connector clearly says: "freq in range 0-1". So it's definitely the users fault when he doesn't provide valid inputs.
User avatar
MyCo
 
Posts: 718
Joined: Tue Jul 13, 2010 12:33 pm
Location: Germany

Re: incorrect trigger behavior, possible a bug

Postby tester » Sat Apr 20, 2013 9:28 pm

I disagree. It solves some practical problems, not solvable (ambiguous, FS bugs) or difficult to handle with "order logic" only. Tested. Good makeshift is not bad if it works.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
tester
 
Posts: 1786
Joined: Wed Jan 18, 2012 10:52 pm
Location: Poland, internet

Re: incorrect trigger behavior, possible a bug

Postby Walter Sommerfeld » Sun Oct 06, 2013 3:37 pm

Hi Steven,

can u please have a look @ ur 'Settings File Manager'...

maybe a déjà vu:

Cannot '[Recall Defaults] - Restore all settings to the stored default values.'!!! in SM or FS...
from the default 'Custom Setting'

cheers,
Walter
User avatar
Walter Sommerfeld
 
Posts: 249
Joined: Wed Jul 14, 2010 6:00 pm
Location: HH - Made in Germany

Re: incorrect trigger behavior, possible a bug

Postby trogluddite » Sun Oct 06, 2013 7:45 pm

Hi Walter, nice to hear from you.

Seems working fine here - but "here" means correct folder names are likely saved into the schematic.
Take a look inside module, Settings File Manager -> File Handling -> Paths - does the folder path look right? I only made/used this with Win XP, so I wonder if maybe it is a folders/file permissions problem?
All schematics/modules I post are free for all to use - but a credit is always polite!
Don't stagnate, mutate to create!
User avatar
trogluddite
 
Posts: 1730
Joined: Fri Oct 22, 2010 12:46 am
Location: Yorkshire, UK

Re: incorrect trigger behavior, possible a bug

Postby Walter Sommerfeld » Sun Oct 06, 2013 9:31 pm

Yeah - i'm more of a silent observer lately.... ;)

2 much ruby 2 explore 8-)

I wonder if maybe it is a folders/file permissions problem?

Nope: everything under control here in win 8(6) - All in \Roaming\path
Open works fine and a new ini will always be generated...

But - if i kill the ini and click on [recall defaults] the defaults are only saved from sample - not from the properties:
Attachments
recall bug.png
recall bug.png (8.88 KiB) Viewed 14226 times
User avatar
Walter Sommerfeld
 
Posts: 249
Joined: Wed Jul 14, 2010 6:00 pm
Location: HH - Made in Germany

Re: incorrect trigger behavior, possible a bug

Postby billv » Mon Oct 07, 2013 12:24 am

MyCo wrote:this "trigger separation" is complete bullshit. You shouldn't use timers for this

tester wrote:I disagree. It solves some practical problems, not solvable (ambiguous, FS bugs) or difficult to handle with "order logic" only.

I agree with Myco here tester...
I know at times it's usefull...but if ever i have to do it in a circuit to make it work...
to me it means I'm doing something wrong....
I find the need for it a clear sign I'm going about creating the circuit the wrong way...
In other words...using it i always feel like I'm cheating... :mrgreen:
billv
 
Posts: 1157
Joined: Tue Aug 31, 2010 3:34 pm
Location: Australia

PreviousNext

Return to General

Who is online

Users browsing this forum: Google [Bot] and 81 guests