Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 20, 2023
Last Modified: January 14, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's version of an Auditory Continuous Performance Task (ACPT). A Continuous Performance Task (CPT) uses a go/nogo testing paradigm with a stream of stimuli that either require a go response ("press the spacebar") or a nogo response ("don't do anything"). Usually a CPT presents a high frequency of stimuli that require a go response and a low frequency of nogo responses. It is generally used as a measure of sustained and selective attention. The CPT was originally run with visual stimuli; the ACPT runs with auditory stimuli instead. Specifically, the design of the Millisecond ACPT is a an auditory version of the an AX sub paradigm of the CPT task (see Rosvold, 1956) and modelled after the Conners Continuous Auditory Test of Attention (Conners CATA).
Conners, C. K. (2014). Conners Continuous Performance Test (Conners CPT 3) & Conners Continuous Auditory Test of Attention (Conners CATA): Technical Manual. Multi-Health Systems Inc.
Rosvold, H.E., Mirsky, A., Sarason, M., Bransome, E.D., Jr., and Beck, L.H. A Continuous Performance Test of brain damage. Journal of Consulting Psychology, 20, 343 (1956).
Kallo, Y. (2017). Arousal and Vigilance: The Effects of Physical Exercise and Positive Mood on Attention. International Journal of Sports and Exercise Medicine, 3(2). https://doi.org/10.23937/2469-5718/1510057
15 - 20 minutes
Participant listen to a stream of low (A) and high beeps (X) and are asked to a) press the spacebar for a high beep that follows a low beep (go = target = AX) "A" is interpreted as a signal, cue or warning b) to refrain from responding for a high beep that is NOT preceded by a low beep (nogo = no target = X) ( in this case it sounds like a high beep following a high beep)
The Inquisit ACPT is an auditory go/nogo task with a high frequency of go trials.
It is based on the AX CPT paradigm (see Rosvold).
Go trials: play two beeps; low (A) -> high (X)
Nogo trials: play only one beep; high (X)
The beeps are played with the same SOA, so that it sounds like a continuous stream of beeps
to participants.
(1) Intro: all introductory text is presented visually & aurally (can be repeated as often as necessary)
(2) Practice: max. 3 blocks (editable parameters) of 20 practice trials each (editable parameters)
- roughly 75% of practice trials are Go-trials
- roughly 25% of practice trials are Nogo-trials
- it is randomly decided whether the high beep plays in the left or right ear
- roughly 25% of all go-trials are SHIFT trials (play the low and high sound through different ears)
- the script check practice performance after each practice block
-> if practice performance is higher than parameters.minPracticeACC (editable), the test can start
-> the script runs a maximum of 3 practice blocks (editable parameters) before script termination
(3) Test:
- 4 blocks (editable parameter) of 50 trials each (editable parameters)
- each blocks:
- 80% Go trials (editable parameter)
- 20% Shift trials (editable parameter)
- half the go trials play the high sound through the left(right) ear
- 20% Nogo trials
- half the nogo trials play the high sound through the left(right) ear
- each blocks ends with an optional rest trial (editable parameter)
Trialsequence: Go
-> low beep (500ms, plays through)
-> 1500ms (delay)
-> high beep (high beep starts playing 2000ms after onset of low beep for max. 500ms)
-> next beep starts playing 2000ms (SOA) after onset of last high beep
provided by Millisecond - can be edited under section 'Editable Stimuli'
beeps generated in Audacity.
provided by Millisecond - can be edited under section 'Editable Instructions'
all instructions are provided to participants visually and aurally
The instructions were generated using the Google Translate fairy and Audacity.
File Name: acpt_summary*.iqdat
| Name | Description |
|---|---|
| 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 |
Practice |
|
| practiceBlockCounter | The number of practice blocks run |
| list.accPracticeBlock.mean | Stores the proportionCorrect practice performance at the end of the last practice block |
| practicePass | 1 = practice passed; 0 = practiceFailed |
Test |
|
| propAccOverall | Overall (across all test trials) proportion correct responses |
| hitRateOverall | Overall (across all test go trials) hitrate (response to X in AX trials) |
| meanHitRTOverall | Overall mean response time (in ms) to targets (response to X in AX trials) -> a fast hitRT coupled with high faRate/falseAlarmRate may indicate impulsive responding -> a slow hitRT (coupled with high error rate) may indicate inattentiveness while responding |
| sdHitRTOverall | Standard deviation of hitRTs (in ms) across all go trials (consistency of response speed to targets) -> indicator of variable attentiveness across the task |
| faRateOverall | Overall (across all test nogo trials) false alarm/commission rate (response to X in X trials) -> higher commission rate coupled with slower hitRate could point to inattentiveness -> higher commission rate coupled with normal/fast hitRate could point to impulsivity |
| meanFaRTOverall | Overall mean response time (in ms) to notargets (response to X in X trials) |
| sdFaRTOverall | Standard deviation of faRTs (in ms) across all nogo trials |
| falseAlarmRateOverall | Overall proportion of go trials with at least one falseAlarms response (response after A, before X) -> potentially anticipatory and/or impulsive response |
| corrRejectOverall | Overall proportion of correct responses in nogo trials (1-falseAlarmRateOverall) |
| meanFalseAlarmRTOverall | Overall mean response time (in ms) to first response after low beep before high high beep |
| sdFalseAlarmRTOverall | Standard deviation of FalseAlarmRT (in ms) across all go trials |
| missRateOverall | Overall proportion of misss across all test blocks (indicator of inattentiveness) |
| extraRespOverall | Overall number of extra responses made across all test trials extra responses: spacebar presses that are not counted as hits, misses, fa, cr or falseAlarms responses |
| zHitRateOverall | The calculate z-score of the overall hitRate |
| zFARateOverall | The calculated z-score of the overall falseAlarm/commission rate *Adjustments to z-scores as recommended by Gregg, A. & Sedikides, C. (2010). Narcissistic Fragility Rethinking Its Links to Explicit and Implicit Self-esteem, Self and Identity, 9:2, 142-161 (p.148) => Adjustments are made if the FArate (hitRate) = 0 (increased to 0.005) or 1 (decreased to 0.995)* |
| dPrime | Computes d' (parametric measure of discriminability btw. signals and noise) => Range (in this script) -5.1516586840152740479 <= <= 5.1516586840152740479 (=perfect performance) => The higher the value, the better signals (go stims) were overall distinguished from noise (nogo stims) (d' = 0: chance performance; negative d-primes: participant treated nontargets as targets and targets as nontargets) |
| c | C-criterion in signal detection:The absolute value of c provides an indication of the strength of the response bias/response style negative: participant more likely to report that signal is present (liberal response style) may favor faster responding in speed-accuracy trade-off response paradigms positive: favoring caution (conservative response style) |
Auditory Mobility |
|
| noSwitchHitRateOverall | The hitrate on no-shift (aka no switch) trials: low and high beep played in the same ear |
| noSwitchHitRTOverall | The mean hit response time on no-shift (aka no switch) trials |
| switchHitRateOverall | The hitrate on shift (aka switch) trials: low and high beep played in different ears |
| switchHitRTOverall | The mean hit response time on shift (aka switch) trials |
Block By Block Performance Statistics |
|
| hitRateBlock1 | HitRate in block1 |
| meanHitRTBlock1 | Mean hit response time (in ms) in block1 |
| sdHitRTBlock1 | Standard deviation of the hit response times (in ms) in block1 |
| falseAlarmRateBlock1 | FalseAlarmRate in block1 |
| faRateBlock1 | False alarmRate/commission rate in block1 |
| meanFaRTBlock1 | Mean commission response time (in ms) in block1 |
| missRateBlock1 | Miss rate in block1 |
| corrRejectRateBlock1 | Correct rejection rate in block1 (same for block2-4) |
File Name: acpt_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| 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 |
| blockCounterPerPhase | Counts the number of blocks run per phase |
| trialCounterPerBlock | Counts the number of trials run per block ( if go trials are repeated, the repeated trials do not count as extra trials) |
| target | 1 = the current trial presents a target (go trial) 2 = the current trial does not present a target (nogo trial) |
| shift | 0 = no shift go trial (AX presented in same ear) 1 = shift go trial (AX presented in different ears) |
| highPan | The presentation ear for the high beep (X) -10000 = solely on the left +10000 = solely on the right |
| lowPan | The presentation ear for the low beep (A) -10000 = solely on the left +10000 = solely on the right |
| response | The response of participant (scancode of response button) 57 = spacebar ! for falseAlarm Responses, this column may not record the early spacebar press. This is because the script is programmed to disregard spacebar presses before the high beep as invalid (that is the trial still waits for a valid response). Nevertheless, the script records whether such responses have been made under values.falseAlarmResponse/falseAlarmResponseCounter. |
| responseText | The name of the pressed response key looks empty for spacebar presses because it simply records a " " |
| respCategory | Hit = a spacebar response to the high beep in a go trial (this spacebar press is the only response made during the trial) miss = no spacebar response made in a go trial falseAlarm = perseverative Commission; a spacebar press was made inbetween a low and a high beep ( column response may not reflect this response) commission = a spacebar response to the high beep in a nogo trial correctRejection = no spacebar response in a nogo trial |
| falseAlarmResponse | 0 = no falseAlarm response was made during the current go trial 1 = falseAlarm response was made during the current go trial falseAlarmResponseCounter: sums up the number of falseAlarm responses made during the current go trial |
| counTExtraResp | Counts spacebar presses made in the intertrial interval before next trial beep starts |
| correct | Correctness of response (1 = correct, 0 = error) // only 'hits' and 'correct rejections' result in a correct response |
| sound.highBeep.stimulusOnset | The trial onsettime (in ms) of the high beep |
| latency | The response latency (in ms) measured from onset of trial |
| lowBeepRT | The response latency (in ms) measured from onset of low beep (first falseAlarm response) |
| highBeepRT | The response latency (in ms) measured from onset of high beep |
| currentSOA | The current stimulus onset asynchrony (in ms) - SOA between onset of one high beep and onset of following beep |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design |
||
| maxPracticeBlocks | The number of max practice blocks run | 3 |
| numberOfPracticeTrials | The number of practice trials per practice block | 20 |
| minPracticeAcc | Minimum proportion correct (across go/nogo trials) in the last practice block that allows advancement to the test for the sake of practice, falseAlarms responses count as incorrect | 0.75 |
| numberOfTestBlocks | The number of test blocks run script only provides summary variables for up to 4 | 4 |
| numberOfTrialsPerBlock | The number of trials per test block | 50 |
| propGoTrialsPerBlock | The proportion of Go trials per test block ensure that number results in an integer number of go trials | 0.8 |
| propSwitchGoTrialsPerBlock | The proportion of switch Go trials per test block ensure that number results in an integer number of go trials | 0.2 |
| provideRestTrialsAfterEachBlock | True: the script runs a rest trial after each block false: no rest trials are run; the test runs all trials one after the other without any noticeable distinction | true |
Timing Parameters |
||
| beepSOAMS | The stimulus onset asynchrony (in ms) of the beeps; is the same as the response Window to the high beep | 2000 |
| getReadyDurationMS | The duration (in ms) of the get ready trial | 2000 |
Responsekeys |
||
| responseKey | " " refers to the space bar if the response key is changed, the instructions need to be updated manually | " " |