Psykinematix GPU Version 2.1 - 'Sea Pineapple' Release - June 2017

The Researcher Edition (GPU v2.*) is a highly optimized version of Psykinematix that fully takes advantage of your computer's graphics card to bring real-time and full-screen generation of complex, time-varying, or very large stimuli without impacting its precious video memory !

Try the Trial Version Upgrade from v1.* Purchase a License


Time-varying stimuli can monopolize a considerable amount of your computer resources because a new stimulus may have to be generated for each video frame and be stored in the limited video memory (
see below to find out how much video memory would be typically required). Because of this, long delays and slow performance may ensue resulting in improper timing in your experiment.

While the
Standard Edition of Psykinematix does a decent job to optimize the generation of time-varying stimuli (by skipping duplication for instance), the new GPU Edition of Psykinematix alleviates all these problems by translating and compiling the mathematical description you provide for your stimuli into a shader program that runs directly on the GPU (Graphics Processing Unit) of your graphics card.

This results in
full-screen stimuli generated in real-time, and this is totally automatic and transparent to the user ! The GPU Edition can even modulate the visual stimuli with variable parameters provided in real-time by some external equipment.


Let's assume you wish to present a static stimulus full-screen on a Full HD display (1920 x 1080) with a 8-bit format encoding for each pixel component. How much memory is needed to store this stimulus in your computer's graphics card? Let's do the math:
  • An achromatic version of this stimulus would require: 1920 x 1080 bytes, that is about 2MB.
  • A color (RGB) version of the same stimulus would require 3 times as much (i.e. 2 MB for each Red, Green and Blue component), that is 6 MB.
  • Each stimulus would actually require an extra byte to encode transparency (the Alpha layer) in case your stimulus needs to be combined with a previously presented stimulus, that is as much as 8 MB for a RGBA stimulus.
Now let's assume you want to present a dynamic version of the same stimulus, and for a duration of just 1 second at a frame rate of 60 images per second (i.e. 60 Hz display). The RGBA representation of this dynamic stimulus would then require 60 x 8 = 480 MB. Yes, this is already half a gigabyte for just 1 second ! Considering that a typical high-end graphics card contains 4 GB of video memory, this means that you will be able to present no more than 8 seconds of this single dynamic stimulus ! Woah, this sounds very limiting, don't you think ?

Most people who needs long dynamic presentation will suffer eventually from this limitation, and typically would have to make some compromises, by either:
  • maxing out the amount of video memory when selecting their computer's graphics card,
  • decreasing the resolution of their display if they cannot upgrade their graphics card,
  • decreasing the size of their stimulus (as well as the viewing distance to maintain a constant visual angle),
  • or producing a cyclic version of their stimulus if possible (e.g. for 1 second and repeated as needed).
However, thanks to the power of modern graphics card, it is now possible in many cases to reduce the required video memory to, guess what, almost 0 MB. Yes, zero megabyte ! How ? By instructing the graphics card to generate the stimulus on the fly instead of using the main processor to compute and store each video frame of the dynamic stimuli.

That's what the GPU (Graphics Processing Unit) of your graphics card can do for you if it is directly programmed using the OpenGL shading language (similar to C language). The Psykinematix GPU Edition does that for you automatically: it translates the mathematical description you provide for your time-varying stimulus into a shader program compiled for your graphics card GPU.

Release Notes

Version 2.1 (Researcher/GPU Edition)  Released: June 21, 2017

New Features:

  • On-the-fly movie export of whole experimental session when control-clicking the "Start" button,
  • Support for Interlaced Stereo mode,
  • Support for time-varying position of whole RDK stimuli,
  • Support for dynamic shape in shape-based RDK stimuli,
  • "Custom" placement of stimuli instances in spatial nAFC Procedure (through [NFCINDEX] variable),
  • Addition of Parameter Configurations (independent variables) in Experiment Control Settings,
  • Notification system to warn about potential issues affecting the experimental setup (e.g. brightness change, expired calibrations, etc.)

Feature Improvements:

  • Improved compatibility with macOS 10.10 "Yosemite" to 10.12 "Sierra",
  • More reliable movie Export of OpenGL preview,
  • Addition of Anti-aliasing options in Experiment properties,
  • Support for chromatic coordinates specification using a chromatic diagram (for xyY and Yu'v' color spaces),
  • Support for trichomatic specification of background appearance in Experiment Display Settings,
  • Addition of xyY, Yu'v', L*a*b* as "Color Space" in Default Preferences tab,
  • Addition of 'bessj1' and 'bessjn' Bessel functions for Custom stimulus,
  • Support for 'rnd' and 'irand' functions in shader-based Custom Stimuli,
  • Support for 'time' variable directly in custom expression (also works for OpenGL Preview or movie export)
  • Improvement of Graphing Math Palette to specify temporal properties of stimuli,
  • Support for spatial jitter direction in SSS stimuli (x-, y- and isotropic in addition of xy-),
  • Improved generation of non-overlapping heterogeneous SSS stimuli elements with warning in case the overlapping constraint is too strong,
  • Addition of minimum/maximum abort criterion based on a number of consecutive incorrect responses in Staircase properties panel,
  • Support for custom catch values in Staircase properties panel (multiple values separated with \),
  • Support for Standard/Test randomization for MOCS and Bayesian Methods,
  • Addition of a separate ISI parameters to insert between the Standard/Test randomization in Yes/No procedure,
  • Addition of PAUSETRIALS, PAUSETIME, PAUSEDURATION and PAUSEMSG system variables to control pauses at regular intervals
  • Support for string variable in Association composing,
  • Better estimation of calibration completion levels (based on the selected chromatic mode),
  • Addition of NetStation Drift Correction and Sync Timing options to troubleshoot communication timing,

User interface improvements:

  • Events' property panel can now be opened by simply clicking the events' icon,
  • Psykinematix files can be opened by directly double-clicking them in the Finder (*.epkmx, *.lpkmx, *.dpkmx),
  • Support for undo/redo operations in Designer panel,
  • Addition of a contextual menu to events in Designer panel
  • Support for undo/redo operations when editing expression for "Custom" stimuli,
  • Detect and emit descriptive error when image RSVP is set with "All Simultaneous" selection mode,
  • Redesign of Plotter panel,
  • Subject-specific parameter/values can be added, deleted or edited directly in Subject panel,
  • Ability to select which data to show in the Gamma calibration table drawer (& addition of CIE xy and DE2000 data),
  • A particular resolution and all its calibration configurations can now be deleted by control-clicking the '-' button in Calibration panel,
  • Addition of an option for alternative ESCape key as a work-around to missing ESC key on newer MacBook &MacBookPro laptops with Touch Bar),


  • Detect change of subject selection through up/down arrow keys and update variable table in Subject panel
  • Stuck textfields when locking the properties panels,
  • Blank texture generation for non-precomputed images with random duration,
  • Issue with same name events embedded in a timeline,
  • Issue with global rotation in text or image-based MEF,
  • Issue with expression-based evaluation of x,y coordinates of SSS stimuli,
  • Uncorrect link for Psykinematix Facebook Group from Help panel,
  • Blank color stimuli when LMS to RGB matrix gets reset,
  • Issue with lost editing being when closing the math palette,
  • Shader-based stimulus generation when using the nAFC Procedure.
Version 2.0.2 (Researcher/GPU Edition)  Released: Sept 20th, 2016

Full Compatibility with Mac OS X 10.12 (Sierra)

Version 2.0.1 (Researcher/GPU Edition)  Released: Jan 7th, 2016

Full Compatibility with Mac OS X 10.11 (El Capitan)

Version 2.0 (Researcher/GPU Edition)  Released: July 28, 2015

New Features:

  • Support for GPU-based preview and run-time rendering for custom, grating and checkerboard stimuli,
  • Option for GPU-based stimulus generation in Timing Preferences, Experiment Display Preferences and Rendering Control Settings for individual stimuli,
  • Backup & Restore options in File menu,
  • "Open Log File" option in File menu,
  • Support for multimedia image stimulus in MEF and SSS stimuli,
  • Support for Conditional event embedded in Association event,
  • Standard/Test intervals randomization option in Yes/No procedure,
  • pnoise(X,Y) function to generate Perlin noise in Custom Stimuli,
  • log2(), clip(), step() and hsmoothstep() in mathematical expressions,
  • Support for 11.6 bits monochromatic mode through Bit-Stealing
  • Support for Noisy-Bit technique (stochastic dithering) to provide quasi-continuous luminance resolution (based on Allard & Faubert 2008)

Feature Improvements:

  • Better report in Plotter panel of results obtained from interleaved methods,
  • Support for expression-based "ResponseTime" property in "Trial Properties" inside Procedure panel,
  • Support for time-varying alpha for Text Multimedia stimuli,
  • Support for custom image as target and square shape for ground in Ishihara stimuli,
  • Addition of "Targeted Chromatic Mode" in Gamma calibration panel,
  • Report R2 value for Gamma correction,
  • Support for time-varying grid size in MEF stimuli,
  • Support for Catch trial proportion in Staircase method,
  • No error anymore for missing event in Association Composed Stimuli,
  • Addition of a "Hole Size" parameter in zone specification for RDK stimuli,
  • Addition of "Asyn/Syn" lifetime mode in RDK stimuli,
  • Support for time-varying elements in RDK stimuli and "Asyn/Syn" dynamics mode,
  • Support for time-varying direction, speed, coherence and dot number in RDK stimuli,
  • Report multiple declarations of the same variable as a warning rather than a critical error,
  • Better randomization of conditions with different number of trials,
  • Addition of optional Pause between repeats in Conditions Method,
  • Addition of [RESPONSE] and [RT] system-defined variables,
  • Support for comparison (<a>==<b>) and conditional (<a>?<b>:<c>) formats in trigger information,

User interface improvements:

  • Prevent attempt to change event title if locked,
  • Experiment title can be renamed for individual sessions in Subjects panel,
  • Access to all sections of documentation from contextual Help window,


  • License activation issue under OSX 10.7 and 10.8,
  • Issues with time-varying texture-based stimuli used as RDK elements,
  • Crash when using custom stimuli with RGB outputs,
  • Improved speed and memory usage when generating time-varying stimuli by preventing computation of duplicated frames,
  • Hang problem when closing some Keyspan serial devices,
  • Shape stimuli not rendered in achromatic mode when selected,
  • Preview in window mode always rendered in RGB mode.