Millisecond Forums

Different trials conditional on participants response

https://forums.millisecond.com/Topic30069.aspx

By Gaetan - 11/9/2020

Hi all,

I'm trying to program an approach-avoidance task in which participants have to decide to approach a stimulus (by pressing the UP arrow) or avoid a stimulus (by pressing the DOWN arrow). Based on what they do, participants should see (1) A reward screen when they approach; (2) A no_reward screen when they avoid; (3) a time-out message when they fail to response in time (i.e., within 3 seconds).

I've tried different things (braching, the /responsetrial attribute and the /ontrialend attibute), but I can't figure it out. Anyone have any suggestions/solutions?

What I have now:

<trial high_level0>
/ stimulustimes = [100 = cover; 500 = high_level0; 3500 = cover]
/ validresponse = (200, 208)
/ response = timeout(3500)
/ responseinterrupt = trial
/ branch = [if (trial.high_level0.response==200)trial.high_reward_US_level0]
/ branch = [if (trial.high_level0.response==208)trial.no_reward_noUS]
/ branch = [if (trial.high_level0.response==noresponse)trial.timeout_message]
</trial>

Thank you already for your help!

Best,
Gaetan
By Gaetan - 11/9/2020

Gaetan - 11/9/2020
Hi all,

I'm trying to program an approach-avoidance task in which participants have to decide to approach a stimulus (by pressing the UP arrow) or avoid a stimulus (by pressing the DOWN arrow). Based on what they do, participants should see (1) A reward screen when they approach; (2) A no_reward screen when they avoid; (3) a time-out message when they fail to response in time (i.e., within 3 seconds).

I've tried different things (braching, the /responsetrial attribute and the /ontrialend attibute), but I can't figure it out. Anyone have any suggestions/solutions?

What I have now:

<trial high_level0>
/ stimulustimes = [100 = cover; 500 = high_level0; 3500 = cover]
/ validresponse = (200, 208)
/ response = timeout(3500)
/ responseinterrupt = trial
/ branch = [if (trial.high_level0.response==200)trial.high_reward_US_level0]
/ branch = [if (trial.high_level0.response==208)trial.no_reward_noUS]
/ branch = [if (trial.high_level0.response==noresponse)trial.timeout_message]
</trial>

Thank you already for your help!

Best,
Gaetan

I had to add: I can make it work, sort of, but the trial first shows the stimulus figure ("high_level0") and only after the stimulus disappears from the screen, it records the responses and changes the trial. But I would like Inquisit to record the response *while* the stimulus is on the screen, and then follow this up with a next trial conditional on the response (or give a time out message).
By Gaetan - 11/9/2020

Update: I think I figured it out. I needed to specify / beginresponsetime because otherwise, Inquisit took by default the final stimulus presentation to start recording responses I believe, which messed up stimulus timing.

The code that worked for me now:

<trial high_level0>
/ stimulustimes = [100 = cover; 500 = high_level0; 3500 = cover]
/ validresponse = (200, 208)
/ response = timeout(3500)
/ responseinterrupt = trial
/ beginresponsetime = 500
/ responsetrial = (200, high_reward_US_level0)
/ responsetrial = (208, no_reward_noUS)
/ responsetrial = (noresponse, timeout_message)
</trial>