User Manual: Inquisit Paced Motor Timing Task


___________________________________________________________________________________________________________________	

									*PACED MOTOR TIMING*
___________________________________________________________________________________________________________________	

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 06-17-2013
last updated:  03-02-2022 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 03-02-2022 Millisecond Software
___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________	
This script implements a Paced Motor Timing procedure similarly to the one described in:

Wittmann, M., Leland, D.S., Jan Churan, J. & Paulus, M.P.(2007). Impaired time perception and motor timing
in stimulant-dependent subjects. Drug and Alcohol Dependence, 90, 183–192.

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________	
participants are asked to synchronize keyboard clicks with a steady pacer signal of equally spaced beeps.

In condition A: pacer signal (beep) is played for all test trials.
In condition B: pacer signal (beep) is only played in the beginning.

Note: taps in this script are accepted before or after a beep is played.

___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of the script takes appr. 6 minutes to complete

__________________________________________________________________________________________________________________	
DATA FILE INFORMATION 
___________________________________________________________________________________________________________________	
The default data stored in the data files are:

(1) Raw data file: 'pacedmotortiming_raw*.iqdat' (a separate file for each participant)

computer.platform:				the platform the script was run on (win/mac/ios/android)
date, time: 					date and time script was run 
subject, group: 				with the current subject/groupnumber
session:						with the current session id

blockcode, blocknum:			the name and number of the current block (built-in Inquisit variable)
trialcode, trialnum: 			the name and number of the currently recorded trial (built-in Inquisit variable)
									Note: trialnum is a built-in Inquisit variable; it counts all trials run; even those
									that do not store data to the data file such as feedback trials. Thus, trialnum 
									may not reflect the number of main trials run per block.
										
										
condition:						1 = pacer signal present until the end; 
								2 = pacer signal stops after a predetermined number of trials (here:10)
								
(parameter) reps:				stores the number of pacer repetitions for the current block
SOA:							stores the SOA for the current block

countbeeps:						counts the number of beeps played

currentBeepResponse:			stores '57' (spacebar press) for the response that is considered 
								the response 'meant for' the current trial beep (paced trials only)
								(if no response was made that the computer associated with the current beep,
								this variable is empty)
									
nextBeepResponse:				stores '57' (spacebar press) if currentBeepResponse is already set for the current beep
								and the recorded response is closer to the next beep than the current one
								=> nextBeepResponse will be stored under currentBeepResponse for the subsequent trial
								(paced trials only)
									
additionalResponses:			counts the number of spacebar presses made that are not associated with any beep
								Note: these additional responses can be considered a red flag
										
currentBeepResponseRT:			stores the response time (in ms) of the response associated with the current beep 
								relative to the current beep
								=> negative response times: the response associated with the current beep was made
								before the beep was played
																												
currentBeepResponse_Dev:		stores the ms deviation of the current tap from the current beep
									
countresponses:					a counter variable that counts all registered responses 
								(should be 20, max.21 - otherwise participant simply pressed the Spacebar a lot or didn't press it enough)

start_TI:						stores the elapsed time of the script at the start of the response/tap interval in ms(RI)
										
TI:   							TI = response/Tap Interval (time between taps); stores the length of the response interval in ms (ideal TI = SOA)

warning:						participant responded in a way that the script did not account for (please, let us know) (once set, it stays that way)
								Note: if script was terminated with CTRL-Q, then this response will be collected under warning
								(this is expected)
										

(2) Summary data file: 'pacedmotortiming_summary*.iqdat' (a separate file for each participant)

inquisit.version:				Inquisit version run
computer.platform:				the platform the script was run on (win/mac/ios/android)
startDate:						date script was run
startTime:						time script was started
subjectid:						assigned subject id number
groupid:						assigned group id number
sessionid:						assigned session id number
elapsedTime:					time it took to run script (in ms); measured from onset to offset of script
completed:						0 = script was not completed (prematurely aborted); 
								1 = script was completed (all conditions run)	

///Parameter Settings:																		
(parameter) reps:				number of test trials (default: 20) Note: the start beep does not count towards this number
(parameter) valid_reps:			number of paced/unpaced trials used for summary statistics (default: the last 10 pacers/trials)
								Note: in condition B, the pacer signal does not play anymore for these trials
									
(parameter) SOA_1:				SOA 1 in ms (default: 1000ms) => SOA = Stimulus Onset Asynchrony
(parameter) SOA_2:				SOA 2 in ms (default: 2000ms)
(parameter) SOA_3:				SOA 3 in ms (default: 4000ms)


///Summary Variables:

PACED TRIALS (CONDITION A):

nrResponses_condA_SOA1:			number of all registered spacebar presses for Condition A ("paced") with SOA1 (for all 20 beeps);

meanTI_condA_SOA1:				mean Tap Interval (time intervals between taps) in ms based on the last 10 (default) intervals
								for ConditionA ('paced') with SOA1	
									
StD_TI_condA_SOA1: 				associated standard deviation of tap intervals

PacedResponseCount_condA_SOA1: 	number of responses for the last 10 beeps for Condition A ("paced") with SOA1
								that are used to calculate 'meanToA CondA-SOA1'. If this number is lower than 
								10, not all beeps were paired with a spacebar press.
									
meanToA_condA_SOA1: 			mean TapOnsetAsynchrony (ToA) for conditionA for SOA1; based on the last 10 (default) trials
								(ToA = Deviation from pacer beep -whether early or late) 
								Note: based on all collected 'currentBeepResponse' for the last 10 trials for ConditionA ('paced') 
								with SOA1
									
StD_ToA_condA_SOA1: 			associated standard deviations of ToAs

InvalidDeviations_conditionA_SOA1:	number of response deviations > (parameter) max_asynchrony for the last 10 (default) test trials 
									in condition A ('paced'). These responses are not considered "true" synchronized responses
									Note: empty deviations (as happens when there is no assigned response to a beep) are not considered 
									in this count.									
(same for SOA2-SOA3)


UNPACED TRIALS (CONDITION B):

nrResponses_condB_SOA1:				counts all responses made during the Unpaced Condition (counts responses across paced and unpaced trials)			
UnpacedResponseCount_condB_SOA1:	counts number of unpaced responses (should be 20)
	
meanTI_condB_SOA1:					mean Tap Interval (time intervals between taps) in ms based on the last 10 (default) intervals
									for ConditionB ('unpaced') with SOA1
									
StD_TI_condB_SOA1: 					associated standard deviation of tap intervals

(same for SOA2-SOA3)


warning:			participant responded in a way that the script did not account for (please, let us know) (once set, it stays that way)
					Note: if script was terminated with CTRL-Q, then this response will be collected under warning
					(this is expected)

___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	
- 2 pacing conditions (paced vs. unpaced) x 3 Stimulus Onset Asynchronies (SOAs: 1000ms, 2000ms, 4000ms)
- paced vs. unpaced tested in blocked format with paced conditions running first
- SOAs are sampled randomly within the pacing conditions

Paced Condition:
In the Paced Conditions deviations from the pacer signal are recorded. These deviations can occur (slightly) 
before or (slightly) after the beeper signal. Additionally, number of invalidresponses 
(absolute deviations of 120ms from the pacer beep) and Response Tap Intervals (time intervals between taps) 
are recorded. Only the last 10 tap intervals are considered for summary variables

- all trials can collect multiple spacebar presses to enable the collection of synchronized beeps
that happend before the beep is played

=> 'currentBeepResponse' is set if a response is made that is considered the synchronized response for the
current trial beep

=> 'nextBeepResponse' is set if
	a) currentBeepResponse is already set for the current beep but a(nother) spacebar press is collected  
	during the trial (nextBeepResponse will convert to currentBeepResponse for the next trial beep)
	b) currentBeepResponse is NOT set for the current beep (so this beep is missing a synchronized tap) 
	but spacebar press occurred closer in time to the next beep (as determined by the current SOA). 
	In this case, the script assumes the 
	spacebar press is actually an early spacebar press for the next beep and not a late one 
	for the current one.

=> If 'nextBeepResponse' is set and additional spacebar presses are registered, "Additional Responses"
	counts the number of additional spacebar presses.
	
Unpaced Condition:
In the unpaced condition, only Response Tap Intervals are recorded and only for the
last 10 tap intervals (in the summary data file).

Note: If only a subset of the conditions should be run, go to section Experiment and follow instructions.
 
___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________	
see section Editable Stimuli

___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________	
see section Editable Instructions

___________________________________________________________________________________________________________________	
EDITABLE CODE 
___________________________________________________________________________________________________________________	
check below for (relatively) easily editable parameters, stimuli, instructions etc. 
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code 
to further customize your experiment.

The parameters you can change are:

/reps:							number of test trials (default: 20) Note: the start beep does not count towards this number

/valid_reps:					number of paced/unpaced trials used for summary statistics (default: the last 10 pacers/trials)
									Note: in condition B, the pacer signal does not play anymore for these trials
									
/SOA_1:							SOA 1 in ms (default: 1000ms) => SOA = Stimulus Onset Asynchrony
/SOA_2:							SOA 2 in ms (default: 2000ms)
/SOA_3:							SOA 3 in ms (default: 4000ms)
/max_asynchrony:				maximum absolute deviation in ms from pacer that that is considered a synchronous response (default: 120ms)
/getReadyDuration:				the duration (in ms) of the get-ready trial (default: 3000ms)