Timing Parameters
Experiments
Testable provides fine-grained control over every temporal aspect of a trial. All timing values are in **milliseconds** unless noted otherwise.ITI: inter-trial interval
Section titled “ITI: inter-trial interval”The blank interval between the end of one trial and the start of the next. The screen is empty (or shows the background colour) during this time.
ITI = 500ISI: inter-stimulus interval
Section titled “ISI: inter-stimulus interval”The blank interval between stimuli within a single trial during sequential presentation. Relevant when you have multiple stim columns and want a gap between them.
For trials with three stimuli:
ISI = 300; 300This places a 300 ms gap after the first stimulus and another 300 ms gap after the second stimulus.
Grouping stimuli into screens: stimScreens
Section titled “Grouping stimuli into screens: stimScreens”When some stimuli should share a screen, state the grouping in the stimScreens column and keep the timing columns as plain value lists. Write one count per screen, joined with +:
stimScreens = 2+1presTime = 500ISI = 0With three stimuli: the first two appear together for 500 ms, then the third alone until the response (presTime takes one value per screen, or one fewer to leave the last screen up until the participant responds; ISI takes one value per gap). Two shorthands cover even splits: stimScreens = 2 makes screens of two until the stimuli run out, and 2*4 is four screens of two. With stimScreens set and no timing written at all, screens run for 1000 ms with 500 ms gaps and the last screen waits for the response.
To randomise the stimulus order while keeping the screen structure, see the stimOrder column: random(screens) shuffles whole screens and random(within screens) shuffles inside each screen.
The older notation: empty ISI slots
Section titled “The older notation: empty ISI slots”Before stimScreens, the grouping was written into ISI itself by omitting a value:
ISI = 500;;1000With four stimuli: 500 ms after stim1, then stim2 and stim3 appear on the same screen (no ISI), then 1000 ms before stim4. This notation still works, but stimScreens says the same thing more clearly and keeps grouping and timing in separate columns; prefer it for new files.
ISI = 0
Section titled “ISI = 0”Using ISI = 0 shows the next stimulus instantly after the previous one ends:
ISI = 500;0;1000With four stimuli: 500 ms after stim1, stim2 appears, stim3 appears instantly, then 1000 ms before stim4.
presTime: stimulus presentation time
Section titled “presTime: stimulus presentation time”How long each stimulus is shown before it disappears. Set it per stimulus using semicolons:
presTime = 500; 1000The first stimulus shows for 500 ms, the second for 1000 ms.
responseWindow: when participants can respond
Section titled “responseWindow: when participants can respond”The responseWindow column controls when responses open within a trial and, optionally, for how long.
The default
Section titled “The default”With no responseWindow column, or the cell left empty, responses open when the last stimulus appears and stay open indefinitely, even after the stimulus disappears, until a response is given.
Setting a deadline
Section titled “Setting a deadline”A plain number gives the participant a deadline:
responseWindow = 2000Responses open at the last stimulus as usual and close 2000 ms later. If nothing was pressed, the response is recorded as timeout and the trial auto-advances.
Choosing when responses open
Section titled “Choosing when responses open”Write a start position instead of, or in front of, the deadline:
| Example | Behaviour |
|---|---|
responseWindow = 2000 | Opens at last stimulus, closes 2000 ms later |
responseWindow = afterStim | Opens only after the last stimulus is hidden (or audio/video playback ends), stays open until response |
responseWindow = afterStim_2000 | Same, plus a 2000 ms deadline starting when the window opens |
responseWindow = lastStim | Opens at last stimulus onset and closes when it is hidden; a default response is recorded if none was given |
responseWindow = withStim | Open only while stimulus screens are displayed |
responseWindow = allStim | Opens at trial start, closes when the last stimulus is hidden |
responseWindow = allTrial | Opens at trial start, no automatic close unless a deadline is added |
responseWindow = 500_2000 | Both parts numeric: opens 500 ms after trial start, closes 2000 ms later |
responseWindow = 0 | Opens at trial start, no deadline |
Minimum response time: min and max
Section titled “Minimum response time: min and max”Use min: to block responses for an initial period, max: as a deadline, or both:
responseWindow = min:2000: responses do not count for the first 2000 ms. Key presses and clicks made during the minimum are buffered and applied the moment it ends; text boxes and the advance button are disabled and then re-enabled.responseWindow = min:2000;max:10000: the same, plus a timeout at 10 s.
These work with any response modality, not just text boxes. When a text-box trial times out with a partial answer, the recorded response has ;timeout appended.
Feedback timing
Section titled “Feedback timing”How long feedback stays up (feedbackTime) and where it appears (feedbackOptions) are covered on the Feedback page, together with everything else about feedback.
Holding the response window open
Section titled “Holding the response window open”To hold the response window open even after a response is given, until the full responseWindow duration has elapsed, add the waitResponseWindow flag to the trial’s responseOptions cell. Useful when you want a consistent total trial duration regardless of when the participant responds.
For audio and video trials where the full clip should play before the trial can advance, open the response window only after the stimuli finish, using the afterStim start position described above.
Achieved timing in results
Section titled “Achieved timing in results”Testable reports the actually achieved timings back into the results file (presTime_ms, ITI_ms, ISI_ms, frame counts, and more), so you can verify and filter trials where the display rounded your requested times to the screen’s refresh rate. These columns are documented in Results Reference: Timing Diagnostics.