--- API: 2.1 OpenSesame: 3.2.7 Platform: nt --- set width 1024 set uniform_coordinates yes set title "BCE dual task" set subject_parity even set subject_nr 0 set start experiment set sound_sample_size -16 set sound_freq 48000 set sound_channels 2 set sound_buf_size 1024 set sampler_backend legacy set round_decimals 2 set mouse_backend xpyriment set keyboard_backend legacy set height 768 set fullscreen no set form_clicks no set foreground white set font_underline no set font_size 18 set font_italic no set font_family mono set font_bold no set experiment_path "C:\\Users\\vexne\\OneDrive\\Dokumente\\ARBEITARBEIT\\Misc\\OpenSesame" set disable_garbage_collection yes set description "A template containing a practice and an experimental phase" set coordinates uniform set compensation 0 set color_backend legacy set clock_backend legacy set canvas_backend xpyriment set bidi yes set background black define loop block_loop set source_file "" set source table set skip 0 set repeat 1 set order random set offset no set item trial_sequence set description "A single block of trials" set cycles 48 set continuous no set column_order "" set break_if_on_first yes set break_if "[count_trial_sequence] > 12 and [practice] = yes" setcycle 0 T1 1 setcycle 0 T2 2 setcycle 0 compatibility incompatible setcycle 0 correct_response_T1 y setcycle 0 correct_response_T2 n setcycle 0 soa 40 setcycle 1 T1 4 setcycle 1 T2 2 setcycle 1 compatibility compatible setcycle 1 correct_response_T1 x setcycle 1 correct_response_T2 n setcycle 1 soa 40 setcycle 2 T1 6 setcycle 2 T2 2 setcycle 2 compatibility compatible setcycle 2 correct_response_T1 x setcycle 2 correct_response_T2 n setcycle 2 soa 40 setcycle 3 T1 9 setcycle 3 T2 2 setcycle 3 compatibility incompatible setcycle 3 correct_response_T1 y setcycle 3 correct_response_T2 n setcycle 3 soa 40 setcycle 4 T1 1 setcycle 4 T2 3 setcycle 4 compatibility compatible setcycle 4 correct_response_T1 y setcycle 4 correct_response_T2 m setcycle 4 soa 40 setcycle 5 T1 4 setcycle 5 T2 3 setcycle 5 compatibility incompatible setcycle 5 correct_response_T1 x setcycle 5 correct_response_T2 m setcycle 5 soa 40 setcycle 6 T1 6 setcycle 6 T2 3 setcycle 6 compatibility incompatible setcycle 6 correct_response_T1 x setcycle 6 correct_response_T2 m setcycle 6 soa 40 setcycle 7 T1 9 setcycle 7 T2 3 setcycle 7 compatibility compatible setcycle 7 correct_response_T1 y setcycle 7 correct_response_T2 m setcycle 7 soa 40 setcycle 8 T1 1 setcycle 8 T2 7 setcycle 8 compatibility compatible setcycle 8 correct_response_T1 y setcycle 8 correct_response_T2 m setcycle 8 soa 40 setcycle 9 T1 4 setcycle 9 T2 7 setcycle 9 compatibility incompatible setcycle 9 correct_response_T1 x setcycle 9 correct_response_T2 m setcycle 9 soa 40 setcycle 10 T1 6 setcycle 10 T2 7 setcycle 10 compatibility incompatible setcycle 10 correct_response_T1 x setcycle 10 correct_response_T2 m setcycle 10 soa 40 setcycle 11 T1 9 setcycle 11 T2 7 setcycle 11 compatibility compatible setcycle 11 correct_response_T1 y setcycle 11 correct_response_T2 m setcycle 11 soa 40 setcycle 12 T1 1 setcycle 12 T2 8 setcycle 12 compatibility incompatible setcycle 12 correct_response_T1 y setcycle 12 correct_response_T2 n setcycle 12 soa 40 setcycle 13 T1 4 setcycle 13 T2 8 setcycle 13 compatibility compatible setcycle 13 correct_response_T1 x setcycle 13 correct_response_T2 n setcycle 13 soa 40 setcycle 14 T1 6 setcycle 14 T2 8 setcycle 14 compatibility compatible setcycle 14 correct_response_T1 x setcycle 14 correct_response_T2 n setcycle 14 soa 40 setcycle 15 T1 9 setcycle 15 T2 8 setcycle 15 compatibility incompatible setcycle 15 correct_response_T1 y setcycle 15 correct_response_T2 n setcycle 15 soa 40 setcycle 16 T1 1 setcycle 16 T2 2 setcycle 16 compatibility incompatible setcycle 16 correct_response_T1 y setcycle 16 correct_response_T2 n setcycle 16 soa 130 setcycle 17 T1 4 setcycle 17 T2 2 setcycle 17 compatibility compatible setcycle 17 correct_response_T1 x setcycle 17 correct_response_T2 n setcycle 17 soa 130 setcycle 18 T1 6 setcycle 18 T2 2 setcycle 18 compatibility compatible setcycle 18 correct_response_T1 x setcycle 18 correct_response_T2 n setcycle 18 soa 130 setcycle 19 T1 9 setcycle 19 T2 2 setcycle 19 compatibility incompatible setcycle 19 correct_response_T1 y setcycle 19 correct_response_T2 n setcycle 19 soa 130 setcycle 20 T1 1 setcycle 20 T2 3 setcycle 20 compatibility compatible setcycle 20 correct_response_T1 y setcycle 20 correct_response_T2 m setcycle 20 soa 130 setcycle 21 T1 4 setcycle 21 T2 3 setcycle 21 compatibility incompatible setcycle 21 correct_response_T1 x setcycle 21 correct_response_T2 m setcycle 21 soa 130 setcycle 22 T1 6 setcycle 22 T2 3 setcycle 22 compatibility incompatible setcycle 22 correct_response_T1 x setcycle 22 correct_response_T2 m setcycle 22 soa 130 setcycle 23 T1 9 setcycle 23 T2 3 setcycle 23 compatibility compatible setcycle 23 correct_response_T1 y setcycle 23 correct_response_T2 m setcycle 23 soa 130 setcycle 24 T1 1 setcycle 24 T2 7 setcycle 24 compatibility compatible setcycle 24 correct_response_T1 y setcycle 24 correct_response_T2 m setcycle 24 soa 130 setcycle 25 T1 4 setcycle 25 T2 7 setcycle 25 compatibility incompatible setcycle 25 correct_response_T1 x setcycle 25 correct_response_T2 m setcycle 25 soa 130 setcycle 26 T1 6 setcycle 26 T2 7 setcycle 26 compatibility incompatible setcycle 26 correct_response_T1 x setcycle 26 correct_response_T2 m setcycle 26 soa 130 setcycle 27 T1 9 setcycle 27 T2 7 setcycle 27 compatibility compatible setcycle 27 correct_response_T1 y setcycle 27 correct_response_T2 m setcycle 27 soa 130 setcycle 28 T1 1 setcycle 28 T2 8 setcycle 28 compatibility incompatible setcycle 28 correct_response_T1 y setcycle 28 correct_response_T2 n setcycle 28 soa 130 setcycle 29 T1 4 setcycle 29 T2 8 setcycle 29 compatibility compatible setcycle 29 correct_response_T1 x setcycle 29 correct_response_T2 n setcycle 29 soa 130 setcycle 30 T1 6 setcycle 30 T2 8 setcycle 30 compatibility compatible setcycle 30 correct_response_T1 x setcycle 30 correct_response_T2 n setcycle 30 soa 130 setcycle 31 T1 9 setcycle 31 T2 8 setcycle 31 compatibility incompatible setcycle 31 correct_response_T1 y setcycle 31 correct_response_T2 n setcycle 31 soa 130 setcycle 32 T1 1 setcycle 32 T2 2 setcycle 32 compatibility incompatible setcycle 32 correct_response_T1 y setcycle 32 correct_response_T2 n setcycle 32 soa 300 setcycle 33 T1 4 setcycle 33 T2 2 setcycle 33 compatibility compatible setcycle 33 correct_response_T1 x setcycle 33 correct_response_T2 n setcycle 33 soa 300 setcycle 34 T1 6 setcycle 34 T2 2 setcycle 34 compatibility compatible setcycle 34 correct_response_T1 x setcycle 34 correct_response_T2 n setcycle 34 soa 300 setcycle 35 T1 9 setcycle 35 T2 2 setcycle 35 compatibility incompatible setcycle 35 correct_response_T1 y setcycle 35 correct_response_T2 n setcycle 35 soa 300 setcycle 36 T1 1 setcycle 36 T2 3 setcycle 36 compatibility compatible setcycle 36 correct_response_T1 y setcycle 36 correct_response_T2 m setcycle 36 soa 300 setcycle 37 T1 4 setcycle 37 T2 3 setcycle 37 compatibility incompatible setcycle 37 correct_response_T1 x setcycle 37 correct_response_T2 m setcycle 37 soa 300 setcycle 38 T1 6 setcycle 38 T2 3 setcycle 38 compatibility incompatible setcycle 38 correct_response_T1 x setcycle 38 correct_response_T2 m setcycle 38 soa 300 setcycle 39 T1 9 setcycle 39 T2 3 setcycle 39 compatibility compatible setcycle 39 correct_response_T1 y setcycle 39 correct_response_T2 m setcycle 39 soa 300 setcycle 40 T1 1 setcycle 40 T2 7 setcycle 40 compatibility compatible setcycle 40 correct_response_T1 y setcycle 40 correct_response_T2 m setcycle 40 soa 300 setcycle 41 T1 4 setcycle 41 T2 7 setcycle 41 compatibility incompatible setcycle 41 correct_response_T1 x setcycle 41 correct_response_T2 m setcycle 41 soa 300 setcycle 42 T1 6 setcycle 42 T2 7 setcycle 42 compatibility incompatible setcycle 42 correct_response_T1 x setcycle 42 correct_response_T2 m setcycle 42 soa 300 setcycle 43 T1 9 setcycle 43 T2 7 setcycle 43 compatibility compatible setcycle 43 correct_response_T1 y setcycle 43 correct_response_T2 m setcycle 43 soa 300 setcycle 44 T1 1 setcycle 44 T2 8 setcycle 44 compatibility incompatible setcycle 44 correct_response_T1 y setcycle 44 correct_response_T2 n setcycle 44 soa 300 setcycle 45 T1 4 setcycle 45 T2 8 setcycle 45 compatibility compatible setcycle 45 correct_response_T1 x setcycle 45 correct_response_T2 n setcycle 45 soa 300 setcycle 46 T1 6 setcycle 46 T2 8 setcycle 46 compatibility compatible setcycle 46 correct_response_T1 x setcycle 46 correct_response_T2 n setcycle 46 soa 300 setcycle 47 T1 9 setcycle 47 T2 8 setcycle 47 compatibility incompatible setcycle 47 correct_response_T1 y setcycle 47 correct_response_T2 n setcycle 47 soa 300 run trial_sequence define sequence block_sequence set flush_keyboard yes set description "A sequence containing a single block of trials followed by feedback to the participant" run block_loop always run reset_feedback always run feedback "[practice] = no" define sketchpad end_of_experiment set start_response_interval no set duration keypress set description "A sketchpad notifying the participant that the experiment is finished" draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Press any key to exit" x=0 y=0 z_index=0 define sketchpad end_of_practice set start_response_interval no set duration keypress set description "A sketchpad notifying the participant that the practice phase is finished" draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="End of practice.

First task, left hand: y odd, x even
Second task, right hand: m odd, n even

Press any key to continue" x=0 y=0 z_index=0 define sequence experiment set flush_keyboard yes set description "The main sequence of the experiment" run prepare_variables always run instructions always run practice_loop always run end_of_practice always run experimental_loop always run end_of_experiment always define loop experimental_loop set source_file "" set source table set skip 0 set repeat 4 set order random set offset no set item block_sequence set description "A loop containing one or more experimental blocks" set cycles 1 set continuous no set column_order practice set break_if_on_first yes set break_if never setcycle 0 practice no run block_sequence define feedback feedback set reset_variables yes set duration keypress set description "Provides feedback to the participant" draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Take a break!


Press any key to continue" x=0 y=0 z_index=0 define sketchpad instructions set start_response_interval no set duration keypress set description "A sketchpad containing the instructions for the participant" draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Left hand: y for odd, x for even
Right hand: n for even, m for odd

***

You will see two numbers appearing shortly one after the other. Indicate, if the numbers are odd or even.

Use your left hand to react to the first number. Press y if it's odd, and x if it's even.

Use your right hand to react to the second numer. Press n if it's even, and m if it's odd.

Your middle fingers react to odd numbers, while your index fingers react to even numbers.

Don't delay your response until both numbers are visible, react as fast and accuratly as you can, and first to the number that appears first.

Press any key to begin!" x=0 y=0 z_index=0 define logger logger set description "Logs experimental data" set auto_log yes define inline_script new_inline_script set description "Executes Python code" ___run__ fix_cv.show() # canvas show function returns a timestamp clock.sleep(500) # break after fixation start_time = stim_cv.show() #we can use this timestamp as the trials' start time while True: # we loop this whole section until one of two break conditions is met # show second frame whenever necessary if clock.time()-start_time > var.soa: # check internal clock, if the difference between current clock time and start time surpasses soa stim2_cv.show() # the 2nd canvas with both stimuli is shown # get a response k,t = kb.get_key() #get_key returns a key,timestamp tuple which here is called k,t and can be used to check which key was pressed at which timepoint later if k == None: # as long as no key is pressed, keep looping pass elif k in ['m','n'] and var.resp2 == None: # if there's nothing yet stored in resp2, and the key-part of the key/timestamp-tuple is filled with one of the two possible answers to Task 2, store that as response 2, and determine the response time by substrating the start_time of the trial from the timestamp part of the tuple var.resp2 = k var.resp2_time = t-start_time elif k in ['x','y'] and var.resp1 == None: # see above, now for task 1 var.resp1 = k var.resp1_time = t-start_time if var.resp1 != None and var.resp2 != None: # the loop of the trial breaks when both answers are given break if clock.time()-start_time > timeout: # if the timeout is met before both answers are given, the loop is also broken, setting the feedback to "too slow" var.correct = 0 var.miss = 1 break # loop breaks after timeout if var.miss == 1: # if it was a timeout, set the variable "first response" to 0 for the feedbacks var.first_response = 0 elif var.resp1_time < var.resp2_time: # check to which stimulus was responded first to select the right feedback var.first_response = 1 else: var.first_response = 2 # set the feedback options # if both correct and first responded to T1: correct if var.resp1 == var.correct_response_T1 and var.first_response == 1 and var.resp2 == var.correct_response_T2: var.correct = 1 var.feedback = 'Correct!' # if first responded to T2: wrong order elif var.first_response == 2: var.correct = 0 var.feedback = 'Wrong order!' # if not responded: too slow elif var.first_response == 0: var.feedback = 'Too slow!' # everything else is just wrong else: var.correct = 0 var.feedback = 'Wrong!' # you can also specify more cases, if only one is correct feedback_cv.text(var.feedback) feedback_cv.show() clock.sleep(1000) __end__ ___prepare__ # create the 4 canvases needed, with black background fix_cv = Canvas(background_color=(0,0,0)) stim_cv = Canvas(background_color=(0,0,0)) stim2_cv = Canvas(background_color=(0,0,0)) feedback_cv = Canvas(background_color=(0,0,0)) # init keyboard # limit to relevant keys and timeout very short # short timeout as preparation for the loop in the run phase? --> making it so, that the input is checked again and again rapidly for precise measurement kb = Keyboard(keylist=['m','n','y','x'],timeout = 2) # draw stimuli # all canvases get the fixation dot added fix_cv.fixdot(style= 'medium-open') stim_cv.fixdot(style= 'medium-open') stim2_cv.fixdot(style= 'medium-open') # stim_cv and stim2_cv get the Task 1 Stimulus added, 96 pixels to the left of the fixation (center is 0,0, -96: to the left) stim_cv.text(var.T1,x=-96,y=0) stim2_cv.text(var.T1,x=-96,y=0) # stim2_cv also gets the Task 2 Stimulus, to the right stim2_cv.text(var.T2,x=96,y=0) # init more variables var.miss = 0 # needed for feedback checks, has to be initialized first, so as it doesn't cause crashes later when the feedback preparation checks for the relevant variables and they're nonexistent var.resp1 = None var.resp2 = None var.resp1_time = 0 var.resp2_time = 0 timeout = 2500 __end__ define loop practice_loop set source_file "" set source table set skip 0 set repeat 1 set order random set offset no set item block_sequence set description "A loop containing one or more practice blocks" set cycles 1 set continuous no set column_order practice set break_if_on_first yes set break_if never setcycle 0 practice yes run block_sequence define inline_script prepare_variables set description "Executes Python code" set _run "" set _prepare "var.count_trial_sequence = 0" define reset_feedback reset_feedback set description "Resets the feedback variables, such as 'avg_rt' and 'acc'" define sequence trial_sequence set flush_keyboard yes set description "A single trial" run new_inline_script always run logger always