Skip to content

stimN

Experiments Surveys & forms On form rows the stimuli display next to the question; they are not clickable response options there.

stim1..stimN are the test stimuli of a trial: the images or words laid out on screen (simultaneously or split across screens by ISI), or the ordered playlist of audio/video files for media trials. They are the clickable response items when no keyboard/buttons are defined. The upper bound is not 6: more numbered slots are available (see Tips & gotchas).

Put one stimulus per column: for image, audio and video trials the filename WITHOUT its extension (face1 in stim1, face2 in stim2, and so on). stimFormat supplies the extension, and it is not added a second time when the cell already ends with it.

On word trials (stimFormat is word) the cell is free text. It is rendered as HTML, and %variable% placeholders are replaced before it is shown.

Leave a slot empty when the trial does not need it. A value containing % is treated as a dynamic stimulus and resolved when the trial runs instead of being preloaded.

ValueTrial typeBehavior
emptyanyEmpty slot; see Defaults for how it affects the trial’s stimulus count
<basename>imagePreloaded image; stimFormat appended as extension; the basename is saved with a click as responseText
<basename>audio/videoPlayed in sequence; the file is looked up in the project’s stimuli
any text / HTMLwordShown as the word’s text, with HTML rendered and %variable% placeholders replaced
text with %imageTreated as a dynamic stimulus, not preloaded

Every slot is empty by default, and a trial with no stim columns filled in has no test stimuli.

How many stimulus slots a trial uses is the HIGHEST numbered column you filled in, not how many you filled in. A trial with only stim3 filled uses three slots and shows two empty positions next to it. A longer stimList or stim cell raises that number, and on stimFormat: list rows the picked list row (stim_actual) replaces it outright.

  • stimFormat determines the trial type and the extension appended to the cell. Extensions are never read from the stim cells themselves. For stimFormat: html, stim1 is the fallback app reference when stim is empty, and the in-app testableSDK API is documented in the “Custom HTML trials” section of the stimFormat page.
  • stimList, stim and stim_actual: when any of them has a value, its semicolon-separated items REPLACE the stimN columns as the trial’s stimuli. Values a trial picked from a dynamic list also take precedence over what is written in the cell.
  • ISI and presTime split the stimuli into screens: N usable ISI values give up to N+1 screens, and a value with empty segments like 10;;100 groups several stimuli onto one screen. With a single numeric ISI, no target and more than one stimulus, stim1 goes on the first screen and the rest on the second.
  • stimScreens sets explicit per-screen grouping and takes precedence over ISI-driven splitting. Write it as 1+2+3, as a broadcast count like 2, or as 2*4; it applies when every count is at least 1 and the counts add up to the trial’s stimulus count. An empty or malformed value falls back to the ISI behaviour, and save-time validation reports those as errors. When stimScreens yields more than one screen, an empty presTime defaults to 1000 ms per screen except the last (which waits for a response) and an empty ISI defaults to 500 ms gaps. On trials with a target, stimScreens is ignored, and combining the two is rejected when you save.
  • Clicks and responses: images become clickable when type is test or practice and both keyboard and button1 are empty; for words, responseType must also be empty or clicks. A click records the stim NUMBER as the response, so the key column is scored against that number. You can also write key: stimN, which points at stim slot N and stays correct under stimOptions: random. On image trials the basename is saved separately as responseText and is NOT used for scoring.
  • stimSize and stimPos are applied per stim slot.
  • stimOptions containing random shuffles the on-screen order of the stimuli, and the play order on audio/video trials.
  • Audio/video trials: the files play in sequence with the ISI gaps between them; only the trial’s numbered stim slots are used, and target is ignored.
  • In multiplayer arenas, stim1 is shared with the other players.
typestimFormatstim1stim2stim3stim4presTimekey
test.pngapplepearplumfig30002

Four PNGs shown simultaneously for 3000 ms, clickable; clicking pear (stim 2) is correct.

typestimFormatstim1stim2stim3ISIpresTime
test.jpgface1face2face3500;500200;200;200

Sequential: each face for 200 ms with 500 ms blank gaps.

typestimFormatstim1stim2ISIresponseWindow
test.mp3tone_lowtone_high1000afterStim

Plays tone_low.mp3, waits 1000 ms, plays tone_high.mp3; responses enabled after the last file ends.

  • You are not limited to six. The trial file offers as many numbered stim slots as the highest stim<number> column you actually include (and the longest stimList cell), with a floor of 12, so stim7..stim12 always work even though most docs say 6.
  • Because the slot count is the highest number you filled in, gaps show up on screen: stim1 and stim3 with nothing in stim2 leaves an empty position in the middle.
  • The same image used on many trials is downloaded only once.
  • Word cells render HTML rather than escaping it, so markup such as <b> works and stray angle brackets are interpreted as tags.

stimN appears in these worked recipes:

  • Click the target: Present several images as clickable response options and score the clicked target correctly even when display positions are shuffled.
  • Label choice task: Let participants assign on-screen text labels to images by drag and drop, requiring a minimum amount of labelling before they can continue.
  • Replayed random order: Shuffle a block once, then replay that exact order in a later block so both passes share identical order effects.
  • Slider rating trial: Rate each stimulus on a configurable slider scale inside an experiment trial.
  • Type the answer: Collect a free-typed answer in an input box on a test trial and score it against the expected text.