Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Credits:
Millisecond thanks Dr. Susanne Jaeggi for kindly providing original instruction materials, stimuli,
as well as assistance!
as well as assistance!
Created: March 01, 2012
Last Modified: July 17, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements a basic dual n-back procedure. The n-back task is a go/nogo working-memory performance task with increasing levels of difficulty. Levels of n adapt to block performance levels. The dual n-back procedure requires participants to keep track of a visual and an auditory set of stimuli at the same time.
The implemented procedure is based on Jaeggi et al (2010).
Jaeggi, Susanne M.; Studer-Luethi, Barbara; Buschkuehl, Martin; Su, Yi-Fen; Jonides, John; Perrig, Walter J. (2010). The relationship between n-back performance and matrix reasoning - implications for training and transfer. Intelligence, 38, 625–635.
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)
20 minutes
In Dual n-back tasks, participants are presented with two sequences of stimuli in two modalities at the same time Here: a) VISUAL: a random sequence of blue squares that can be presented in 8 different locations on the screen and b) AUDITORY: a random sequence of 8 spoken Roman letters In each trial one visual and one auditory stimulus are presented and participants are asked to indicate whether the currently presented stimuli fulfill the following criteria:
For N=0 trials: - is the location of the square the same as the target location? If so (it's a target), and press "A". If not, don't press "A". - is the letter the same as the target letter? If so (it's a target), and press "L". If not, don't press "L".
For N=1 trials: - is the location of the square the same as the one in the previous trial? If so (it's a target), and press "A". If not, don't press "A". - is the letter the same as the one in the previous trial? If so (it's a target), and press "L". If not, don't press "L".
For N=2 trials: - is the location of the square the same as the one two trials before? If so (it's a target), and press "A". If not, don't press "A". - is the letter the same as the one two trials before? If so (it's a target), and press "L". If not, don't press "L".
For N=3 trials: - is the location of the square the same as the one three trials before? If so (it's a target), and press "A". If not, don't press "A". - is the letter the same as the one three trials before? If so (it's a target), and press "L". If not, don't press "L".
For N=4 trials: - is the location of the square the same as the one four trials before? If so (it's a target), and press "A". If not, don't press "A". - is the letter the same as the one four trials before? If so (it's a target), and press "L". If not, don't press "L".
Etc. for increasing levels of N
A blue square and 8 letter sound files, stored in language dependent file 'dualnbacktask_a_instruc_inc.iqjs'
provided by Millisecond - can be edited under section Editable Instructions
in script 'dualnbacktask_a_instruc_inc.iqjs'
File Name: dualnbacktaskAdaptiveSummary*.iqdat
| Name | Description |
|---|---|
| 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 |
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| completed | 0 = Test was not completed 1 = Test was completed |
| totalBlocks | The total number of experimental blocks run |
| parameters- startN | The first level of N tested |
| parameters- minN | The lowest possible level of N that can be tested |
| meanLevelN | The mean level N run |
| medianLevelN | The median level N run |
| maxLevelN | The maximum level N run |
| minLevelN | The minimum level N run |
| propCorrectOverall | Overall proportion correct (across all test blocks) |
| list.vHits.itemCount | The number of visual target trials across all test blocks |
| vHitRateOverall | The hitRate for visual targets across all test blocks (hit: pressing A for a visual target) |
| vMissRateOverall | The overall miss rate for visual targets |
| list.vFAs.itemCount | The number of visual nontarget trials across all test blocks |
| vFaRateOverall | The false alarm rate for visual nontargets across all test blocks (False Alarm: pressing A for a visual nontarget) |
| vCrRateOverall | The overall correct rejection rate for visual nontargets |
| zVHitRateOverall | Computed z-score of the visual hitRate |
| zVFaRateOverall | Computed z-score of the visual false alarm rate |
| dPrimeVisualOverall | Visual d' (parametric measure of sensitivity) The higher the value, the better visual targets were overall correctly distinguished from visual nontargets (d' = 0: chance performance; negative values: nontargets were treated as targets and targets were treated as nontargets) |
| cVisualOverall | 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 (non-alcoholic stimuli) is present (liberal response style) may favor faster responding in speed-accuracy trade-off response paradigms positive: favoring caution (conservative response style) |
| list.aHits.itemCount | The number of Audio target trials across all test blocks |
| aHitRateOverall | The hitRate for Audio targets across all test blocks (hit: pressing A for a Audio target) |
| aMissRateOverall | The overall miss rate for auditory targets |
| list.aFAs.itemCount | The number of Audio nontarget trials across all test blocks |
| aFaRateOverall | The false alarm rate for Audio nontargets across all test blocks (False Alarm: pressing A for a Audio nontarget) |
| aCrRateOverall | The overall correct rejection rate of auditory nontargets |
| zAHitRateOverall | Computed z-score of the Audio hitRate |
| zAFaRateOverall | Computed z-score of the Audio false alarm rate |
| dPrimeAudioOverall | Audio d' (parametric measure of sensitivity) The higher the value, the better Audio targets were overall correctly distinguished from Audio nontargets (d' = 0: chance performance; negative values: nontargets were treated as targets and targets were treated as nontargets) |
| cAuditoryOverall | C-criterion for auditory condition |
| dv | ((vTotalHits - vTotalFA) + (aTotalHits - aTotalFA))/2) /number of total experimental blocks Dependent Variable suggested by Jaeggi et al (2010) |
File Name: dualnbacktaskAdaptiveRaw.iqdat
| Name | Description |
|---|---|
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| blockcode | The name the current block (built-in Inquisit variable) |
| blocknum | The number of the current block (built-in Inquisit variable) |
| trialcode | The name of the currently recorded trial (built-in Inquisit variable) |
| trialnum | The number of the currently recorded trial (built-in Inquisit variable) trialnum is a built-in Inquisit variable; it counts all trials run even those that do not store data to the data file. |
| totalBlocks | The total number of experimental blocks run |
| n | The current level N tested |
| startTrialCounter | Keeps track of how many start trials have been run |
Stimuli |
|
| stimulusItem.1 | The shape presented |
| vPosition | Contains the position of the current square 0 = (25%, 25%), 1 = (50%, 25%), 2 = (75%, 25%), 3 = (25%, 50%), 4 = (75%, 50%), 5 = (25%, 75%), 6 = (50%, 75%), 7 = (75%, 75%) |
| vCurrentTarget | The position number of the current visual target |
| stimulusItem.2 | The letter presented |
| aStimNumber | The itemNumber of the current letter audio file |
| aCurrentTarget | The itemNumber of the current visual target |
Dv |
|
| response1 | Stores the scancode of the first response made in a trial 30 = A (response key for a visual target) 38 = L (response key for an auditory target) 0 = no response made |
| latency1y | The latency (in ms) of the first response |
| response2 | Stores the scancode of the second response made in a trial 30 = A (response key for a visual target) 38 = L (response key for an auditory target) 0 = no response made |
| latency2 | The latency (in ms) of the second response |
| vResponseCategory | "vHit" vs. "vOmission Error" vs. "vCorrReject" vs. "vCommission Error" (v = visual) |
| aResponseCategory | "aHit" vs. "aOmission Error" vs. "aCorrReject" vs. "aCommission Error" (a = auditory) |
| correct | The correctness of the response (1 = completely correct; 0 = otherwise) |
| latency | The latency (in ms) of the last response made (if any), no response => latency will be equal to SOA |
| list.blockAcc.mean | Proportion correct during the current block (start trials are excluded in block acc assessment by default, editable) correct = visual AND audio response are correct; error = any other response pattern |
| list.blockAccVisual.mean | Proportion correct visual responses during the current block (start trials are excluded in block acc assessment by default, editable) |
| list.blockAccAudio.mean | Proportion correct audio responses during the current block (start trials are excluded in block acc assessment by default, editable) |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design |
||
| allowPracticeRepeat | True: practice can be repeated as often as indicated (default) false: practice cannot be repeated | true |
| excludeStartTrialfromPerformanceMeasure | True (1): performance during start trials that cannot be targets yet is not considered for Block level performance analyses, e.g. for feedback purposes false (0): performance during start trials that cannot be targets yet IS considered for block performance analyses | true |
| numberTestBlocks | The number of n-back tasks to perform for adaptive testing | 15 |
| moveUpCriterium | Sets the minimum proportion correct in a block to move up to the next level N excludes start trials by default | 0.9 |
| moveDownCriterium | Sets the minimum proportion correct in a block to stay on the same level N (anything lower and participant moves down a level); excludes start trials by default | 0.75 |
| startN | Sets the starting N | 1 |
| minN | Sets the lowest possible N to run | 1 |
Timing Parameters |
||
| soa | Stimulus Onset Asynchrony | 3000 |
| stimulusPresentationTime | The presentation time (in ms) of the stimuli | 500 |
Debugging |
||
| debugMode | Debugmode = 1: targetalerts are shown on screen, debugmode = 0, no targetalerts are shown | 0 |