Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed a bug in RSVP stimuli and a rounding issue in stimulus duration #158

Merged
merged 2 commits into from
Mar 25, 2021

Conversation

bartkrekelberg
Copy link
Member

Fixes a bug in which localized parameters in an RSVP would update in the second frame and not hte first of an rsvp item. (This requires the call to localizeParms(s,true)).

Fixes a bug/oddity with duration:

Previously the offFrame was determined by rounding on+duration to the nearest frame. But the onFrame was determined by rounding on alone.
In the current code, on is rounded first, and then duration is rounded separately, and the offFrame calculation is done by adding onFrame+durationFrame
This has the advantage that a duration less than half a frame will always round to zero and this no longer depends on the on-time
Example: on =1, duration =0.4
round(1) = 1, round(1 + 0.4) = 1
no stimulus shown, because onFrame =1, offFrame =1

But if on= 1.4
round(1.4)= 1, and round (1.4+0.4) = 2
one stimulus frame shown in frame 1

…the second frame and not hte first of an rsvp item. (This requires the call to localizeParms(s,true)).

Fixes a bug/oddity with duration:

Previously the offFrame was determined by rounding  on+duration to the nearest frame.  But the onFrame was determined by rounding on alone.
In the current code, on is rounded first, and then duration is rounded separately, and the offFrame calculation is done by adding onFrame+durationFrame
This has the advantage that a duration less than half a frame will always round to zero and this no longer depends on the on-time
Example: on =1, duration =0.4
round(1) = 1, round(1 + 0.4) = 1
no stimulus shown, because onFrame =1, offFrame =1

But if on= 1.4
round(1.4)= 1, and round (1.4+0.4) = 2
one stimulus frame shown in frame 1
else % Is on already or turning on.
% Checck that we have not reached full duration yet.
% No +1 here.
sOffFrame = sOnFrame + round(s.loc_duration*s.cic.screen.frameRate/1000);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the key change for the duration fix.

Copy link
Member

@adammorrissirrommada adammorrissirrommada left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made some comments, but the key changes look OK to me. I'll hold off on approving the PR until you respond to the comments

@bartkrekelberg bartkrekelberg merged commit d12e4b9 into master Mar 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants