Paced Motor Timing Task

Technical Manual

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond

Created: January 17, 2013

Last Modified: January 08, 2024 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

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.

Duration

6 minutes

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.

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

Procedure

- 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
before or after the beep signal. 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
The script records the timestamp of the beep as well as the timestamp of each response made in the raw datafile.

Algorithm for SYNCHRONIZATION analysis:
- the script looks at the last 10 beeps and tries to match up each of these beeps with the closest (non matched)
spacebar response that was made within (beepTimeStamp - SOA/2) to (beepTimeStamp + SOA/2)
- the scripts calculates the absolute difference between the beepTimeStamp and matched responseTimeStamp: abs(beepTimeStamp-responseTimeStamp)
- if no adequate response match is found for a beep, the script substitutes (SOA/2) for the calculated difference
- the script calculates the mean of the 10 time differences: (theoretical Range: 0-SOA/2)

Algorithm for TAP INTERVAL analysis:
- the script looks at all responses made during the TARGET-TIME-INTERVAL: (timestamp of first of the last 10 beeps - SOA/2) TO (timestamp of last of the last 10 beeps + SOA/2)
- the script then calculates all the tap intervals from all responses made during that time frame
as differences in timestamps of these responses
Example: tapInterval1 = responseTimeStamp2-responseTimeStamp1
- the script calculates the mean of all these tap intervals
the more responses were made during the TARGET-TIME-INTERVAL,
the more intervals are used for the calculation of the mean

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).

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

Summary Data

File Name: pacedmotortiming_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
startDate Date the session was run
startTime Time the session was run
subjectId Participant ID
groupId Group number
sessionId Session number
elapsedTime Session duration in ms
completed 0 = Test was not completed
1 = Test was completed
Parameter Settings
reps Number of test trials (default: 20) the start beep does not count towards this number
validReps Number of paced/unpaced trials used for summary statistics (default: the last 10 pacers/trials)
in condition B, the pacer signal does not play anymore for these trials
soa1 SOA 1 in ms (default: 1000ms) => SOA = Stimulus Onset Asynchrony
soa2 SOA 2 in ms (default: 2000ms)
soa3 SOA 3 in ms (default: 4000ms)
Summary Variables
Paced Trials (Condition A)
nrResponsesCondASOA1 Number of all registered spacebar presses for Condition A ("paced") with soa1 (for all 20 beeps)
targetIntervalTapResponsesASOA1 The number of tap responses made during the TARGET-TIME-INTERVAL
Considered for the analysis of tap intervals are all tap responses that are registered from
TARGET-TIME-INTERVAL = (timestamp of first of 10 last beeps) - (SOA/2) TO (timestamp of last of 10 last beeps) + (SOA/2)
extraTapResponsesASOA1 The number of extra tap responses (beyond 10) during TARGET-TIME-INTERVAL
meanTICondASOA1 Mean Tap Interval (time intervals between taps).
stdTICondASOA1 Associated standard deviation of tap intervals
pacedResponseCountCondASOA1 Number of matched responses for the last 10 beeps for Condition A ("paced") with soa1
that are used to calculate 'meanToACondA-soa1' (Range: 0-10).
If this number is lower than 10, not all beeps were successfully paired with a spacebar press.
meanToACondASOA1 Mean TapOnsetAsynchrony (ToA) for conditionA for soa1; based on the last 10 (default) beeps
matched with the closest (non matched) response
within the time interval: beepTimeStamp +/- (SOA/2)
(ToA = Deviation from pacer beep -whether early or late)
if a beep remains unmatched, (SOA/2) is substituted in for the time difference
between beepTimeStamp and responseTimeStamp for the purpose of the
script's synchronicity analyses
=> Maximum of meanToACondASOA1 = (SOA/2)
stdToACondASOA1 Associated standard deviations of ToAs
(same for soa2-soa3)
UNPACED TRIALS (CONDITION B)
nrResponsesCondBSOA1 Counts all responses made during the Unpaced Condition (counts responses across paced and unpaced trials)
unpacedResponseCountCondBSOA1 Counts number of unpaced responses (should be 10)
meanTICondBSOA1 Mean Tap Interval (time intervals between taps) in ms based on the last 10 (default) intervals
for ConditionB ('unpaced') with soa1
stdTICondBSOA1 Associated standard deviation of tap intervals
(same for soa2-soa3)

Raw Data

File Name: pacedmotortiming_raw*.iqdat

Data Fields

NameDescription
computer.platform Device platform: win | mac |ios | android
date Date the session was run
time Time the session was run
subject Participant ID
group Group number
session Session number
blockCode Name of the current block
blockNum Number of the current block
trialCode Name of the current trial
trialNum Number of the current trial
condition 1 = pacer signal present until the end
2 = pacer signal stops after a predetermined number of trials (here:10)
conditionCounter Counts the number of blocks run in the paced (1) and unpaced (2) conditions
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
sound.beep.timestamp The timestamp of the current beep (measured from script onset)
responseTimeStampsPerBeep The timestamp(s) of the spacebar responses made in one (beep-)trial
for unpaced trials this will always be 1
countResponsesTrial A counter variable that counts all registered responses during a trial
responseCounter Counts all responses made during a block (should be 20)

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
reps Number of test trials the start beep does not count towards this number20
validReps Number of paced/unpaced trials used for summary statistics
in condition B, the pacer signal does not play anymore for these trials
the last 10 pacers/trials
soa1 SOA 1 in ms => SOA = Stimulus Onset Asynchrony1000ms
soa2 SOA 2 in ms 2000ms
soa3 SOA 3 in ms 4000ms
maxAsynchrony Maximum absolute deviation in ms from pacer that that is considered a synchronous response 120ms
getReadyDuration The duration (in ms) of the get-ready trial 3000ms