A teaching machine for free behavioral experiments
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
docs fix fpfn example config file Mar 8, 2018
languages fix persistence and refactoring i18n Sep 3, 2017
lib fix list ou of bounds error Aug 24, 2017
media media fallback path fix #48 Sep 3, 2017
releases media fallback path fix #48 Sep 3, 2017
tests compiling all tests Jul 19, 2017
.gitmodules update epiktimer submodule url Mar 19, 2018
COPYING Rename LICENSE to COPYING Sep 28, 2016
INSTALL.md improve install instructions Nov 1, 2016
stimulus_control.lpg add lazarus project group Oct 4, 2016
stimulus_control.lpi add schedules path to lpi project Oct 30, 2017
stimulus_control.lpr update project files Jul 19, 2017


Stimulus Control


Stimulus Control is a fork of EAM (https://github.com/eep-lab/eam).

  • It is aimed at fast programming of behavioral experiments.
  • It can be extended to Design, Present, Record and Archive a wide range of behavioral experiments.
  • It was designed for Participants, Researchers and Developers.
  • It is a prototype to run non time-critical experiments.
  • It is being inspired by OpenSesame, Psychopy and Expyriment.


Download the prototype here.

Instructions to compile the prototype here.

Some features

  • Text Messages

  • Simple Discriminations

  • Conditional Discriminations

  • Task Styles

    • Feature positive effect (uses keyboard as operandum)
    • Go/No-Go (using keyboard or mouse as operandum)
    • MTS (using keyboard or mouse as operandum)
    • SPAN (using keyboard or mouse as operandum, work in progress)
    • and others
  • Stimuli (antecedents, consequents):

    • Sounds using the (non-free, as in freedom) Bass library (a substitute is in need)
    • Images (jpg, bmp, png), opaque or transparent
    • Videos using the LCLVLC component and the libvlc library will be implemented.
  • Backgrounds

    • Random visual mask
    • Colors
  • Responses (schedules of reinforcements):

    • CRF, EXT
    • FT, VT
    • FR, VR
    • FI, VI,
    • DRH, DRL
  • Designs

    • Free operant
    • Discrete Trials
  • Performance Assessment/Criteria

    • Consecutive Hits
    • Hit porcentage in Bloc
  • Blocs of Trials

    • Create blocs of trials
    • Concatenate blocs of trials
    • Concatenate blocs of trials based on participant's performance (if criteria was reached, go to bloc x, if not go to bloc y)
  • Timestamped Events

    • Starts and endings of trials, Hits and Misses are timestamped by default
    • Custom timestamps can be implemented through custom trial types
    • For high precision and high granularity timestamps
      • We use EpikTimer package on windows
      • We use clock_get_time on linux
  • Pupil Communication (https://github.com/pupil-labs/pupil)

    • Auto start/stop of Pupil Recordings
    • Auto start/stop (and custom start) of the current selected Pupil Calibration Method
    • Prompts for unsuccesful calibration
    • More details about our implementation here: https://github.com/cpicanco/pupil-fpc
  • Cross-Platform. Tested under Windows (7, 8 and 10), Crunchbang 11, Ubuntu LTS (16.04) and Debian 9.

  • Free software, GPL3, compiled with Lazarus RAD IDE (1.8.2) and FPC (3.0.4).

  • Core code was written using a Behavior Analytic ontology.

Changes Made

  • Adapted from Delphi to Free Pascal compiler and Lazarus development environment
  • Replaced old GUI for a new prototype one
  • Fixed some timing bugs
  • Fixed some bugs related to the TTrial create/free life cycle
  • New trial types inherited from TTrial
  • Refactoring for better Behavior Analytic ontology fit.
  • For more, please check GitHub issues: https://github.com/cpicanco/stimulus_control/issues

Running from source