Psychtoolbox interfaces between Matlab or Octave and the computer hardware. The PTB core routines provide high performance 2D and 3D graphics with the highest color and luminance precision, timing precision and control. This both on standard displays, as well as with special visual stimulators, and with High Dynamic Range displays, and with a wide variety of Virtual/Augmented Reality devices. They expose raw OpenGL commands, support video playback and capture, as well as low-latency precisely timed audio playback and capture. They facilitate the collection of observer responses with high timing precision via various input modalities like keyboard, mouse, game controllers, multi-touch touch screens, response boxes, gaze trackers, and digital / analog i/o equipment. Ancillary helper routines support common needs like color space transformations, calibration, and psychometric procedures like, e.g., the QUEST threshold seeking algorithm and others.

Various 3rd party frameworks and higher level toolboxes are built on top of Psychtoolbox to make implementation of research data collection especially easy in specific sub-domains of neuroscience. For beginners or certain domains there also exist user friendly 3rd party graphical user interfaces, e.g., PsyBuilder.

You can also run some of your Psychtoolbox studies online, via VPixx Labmaestro service under https://vpixx.com/products/labmaestro-packngo.

Psychtoolbox has many active users, an active forum, and is widely cited. The current version supports at least Matlab R2025a on Linux, Windows and macOS, and Octave 6 and later on Linux, and Octave 7.3 on Windows, and Octave 9 on macOS.

Psychtoolbox News

Psychtoolbox updated

kleinerm

Psychtoolbox 3.0.22.1 “Little Miss Sunshine!” was released at 11th July 2025.

You can download it as a zip file from the following link:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/releases/download/3.0.22.1/3.0.22.1.zip

This release is strongly recommended to upgrade to if you are a user of Psychtoolbox 3.0.20 on macOS or Windows, as it allows most reliable and smooth use under the new paid software license subscription model. Also if you are a user of Matlab R2025a, as it fixes various compatibility issues.

The complete development history can be found in our GitHub repository. The release tag is “3.0.22.1”, with the full tree and commit logs under the URL:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.22.1

This Psychtoolbox release was partially sponsored by Mathworks under the year 2024/2025 contract for improving compatibility with Matlab R2025a.

Compatibility changes wrt. Psychtoolbox 3.0.22.0:

  • Establish basic compatibility with Matlab version R2025a and later.

  • Make use with GStreamer 1.26 on MS-Windows more robust.

Highlights:

  • Compatibility fixes for Matlab R2025a with its new JavaScript based GUI and WebGL based graphics and plotting system, and the split process design between compute and GUI. Substantial work was needed to repair ListenChar, CharAvail, GetChar and FlushEvents, and to avoid annoying beep tones on key presses under macOS + R2025a. GetChar should work mostly as in the past, although limitations persist in some areas, some possibly hard or impossible to fix. A part of this compatibility work was sponsored by Mathworks.

  • Brightness control of at least internal displays now also works on Apple Silicon Macs.

All:

  • GetChar()/CharAvail()/ListenChar()/FlushEvents(): Do no longer use the Java path on Matlab R2025a and later. Matlab R2025a and later ditched the Java based GUI in favor of a completely new GUI and graphics backend, based apparently on JavaScript + the Chromium embedded “web browser” framework + WebGL rendering. It also split off all GUI and plotting code into a separate Matlab application process from the main process that executes the Matlab interpreter with all user script code and all of Psychtoolbox, completely isolating these two processes from each other, with only a restricted and proprietary communication link between them (most likely based on local IP loopback connections).

    This makes our GetCharJava implementation completely non-functional, with no known way to salvage it. As of now, I wouldn’t know how to do an alternative implementation hooking into the new JavaScript GUI, but first investigation suggests it is likely impossible, at least without significant help from Mathworks - they’d need to implement special purpose functionality for us.

    Therefore we now fall back to our KeyboardQueue based GetChar et al. implementation, just as on Octave, on MS-Windows, and for Matlab in “matlab -nodesktop” mode.

    New limitations caused by this:

    1. The same keyboard queue related restrictions as on MS-Windows, ie. no concurrent use of KbQueues for the default keyboard and GetChar/CharAvail/FlushEvents/ListenChar on macOS and Linux.

    2. Less reliable handling of composed characters, or no such handling at all. Less extra information as aux info, only timestamp, no other modifier keys state reporting etc.

    3. Suppression of typed characters spilling into the Matlab command window does no longer work in GUI mode on Matlab R2025a and later. Such is life…

  • IsGUI(): Fix for Matlab R2025a and its non-Java GUI.

  • No longer add the Psychtoolbox/PsychJava/ folder to Matlab’s Java class path on Matlab R2025a and later, as we can no longer use Java for our purposes, so no point in adding our Java class to the Matlab path.

  • PlayMoviesWithoutGapDemo1.m: Refine for more robustness with short movies. This should help issues like described in:

    https://psychtoolbox.discourse.group/t/invalid-movie-handle-provided-error-message/5719

  • Add MacBoynToLMS() to invert LMSToMacBoyn(). Contributed by David Brainard.

  • Various other smaller refinements, bug fixes and documentation updates.

Linux:

  • Psychtoolbox was built and tested against Matlab R2025a and Octave 6.4 under Ubuntu 22.04.5-LTS. Now only works on Ubuntu 22.04-LTS and later.

  • PsychLinuxConfiguration(): Adapt for Matlab R2025a and later. No need for JOGL “Java OpenGL” related workarounds anymore for R2025a+, now that WebGL is used. Matlab still needs the “broken override Vulkan loader” workaround though.

Windows:

  • Psychtoolbox was built against Matlab R2024b and tested against Matlab R2025a.

  • help GStreamer: Update link to MS-Windows MSVC GStreamer 1.22. The old download was removed, so adapt link from 1.22.5 to 1.22.12 as closest to the last tested version.

  • Add robustness of GStreamer setup if GStreamer version 1.26 or later is used. GStreamer 1.26 changed the default installation location on MS-Windows. Normally the proper location of GStreamer runtimes is communicated to Psychtoolbox via an environment variable. If this isn’t the case in some cases then a probe sequence for common default installation locations was used. The probe sequence is now updated to search and hopefully find GStreamer 1.26+ at its default install locations, avoiding startup failure.

macOS:

  • Psychtoolbox was built and tested against native Matlab R2025a and against native Octave 9.4 from HomeBrew, on macOS 13.7.5 Ventura for Intel Macs, and on macOS 15.5 Sequoia for Apple Silicon Macs.

  • Fix keyboard input focus restoration after closing opaque fullscreen onscreen windows on Intel Macs. Substantial work was needed to achieve this with the new Matlab R2025a dual-process design (Psychtoolbox process separate from Matlab GUI process).

  • Fix a new bug, where in fullscreen window mode on R2025a, every keypress causes an annoying beep tone from macOS. This is also due to the new split dual-process design, but workarounds have been implemented to hopefully fix it.

  • Screen: Implement new method for Screen('ConfigureDisplay', 'Brightness') which also works on (at least) the internal displays of Apple Silicon Macs. Also removed support for ‘AutoBrightnessMode’ which did not ever work with any macOS release, so give up on it.

  • TwoStateQuery(): Cleanup, and reenable good questdlg() for Matlab R2025a+ on macOS for Apple Silicon Macs.

Enjoy!

Psychtoolbox updated

kleinerm

Psychtoolbox 3.0.22.0 “Oh wie schoen ist Panama!” was released at 28th May 2025.

You can download it as a zip file from the following link:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/releases/download/3.0.22.0/3.0.22.0.zip

This release is strongly recommended to upgrade to if you are a user of Psychtoolbox 3.0.20 on macOS or Windows, as it allows most reliable and smooth use under the new paid software license subscription model.

The complete development history can be found in our GitHub repository. The release tag is “3.0.22.0”, with the full tree and commit logs under the URL:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.22.0

This Psychtoolbox release was sponsored by Mathworks under the year 2024/2025 contract for significant enhancements, sponsoring the OpenXR hand tracking support as major new feature.

Compatibility changes wrt. Psychtoolbox 3.0.21.0:

  • This release no longer supports the Ubuntu 20.04-LTS “Focal Fossa” family of Linux operating system distributions, and siblings like Debian GNU/Linux 11 “Bullseye”. In fact, it requires Ubuntu 22.04.5-LTS “Jammy Jellyfish” with all updates installed, or Debian GNU/Linux 12 “Bookworm” and equivalent distributions, ie. Linux distributions where all software components are at least as modern and recent as those in Ubuntu 22.04.5-LTS. Psychtoolbox Mex files will no longer work on older distributions, or if some would appear to work, they might show various subtle and not so subtle malfunctions - iow. they woud be unfit for research grade data collection.

  • Psychtoolbox for Matlab on Linux now also requires a paid software subscription license, while the Octave variant for Linux remains free of cost to use.

Highlights:

  • New fast, mostly seamless fixed refresh rate switching on Linux with AMD graphics.

  • Hand tracking performance optimizations.

All:

  • Software subscription licenses can now also be activated during setup with user email+password of the account of the license manager self service portal. Psychtoolbox will fetch the correponding license key automatically.

  • License management now contains functionality needed for implementation of campus licenses, unattended auto setup of licenses, and educational licenses.

  • Performance optimizations for the articulated hand and finger tracking for OpenXR, which was introduced in Psychtoolbox 3.0.20.4. Now operates 20-30 times faster, doing its job in less than 0.5 msecs on average hardware.

  • PR655parsespdstr(): Fix to handle zero values in measurements correctly. Contributed by Danny Garside @da5nsy thanks!

  • Various other smaller refinements, bug fixes and documentation updates.

Linux:

  • Psychtoolbox was built and tested against Matlab R2024b and Octave 6.4 under Ubuntu 22.04.5-LTS. Now only works on Ubuntu 22.04-LTS and later.

  • Added workarounds for bugs in AMD’s Vulkan driver AMDVLK that have been introduced due to mistakes by AMD’s developers since version v-2023.Q2.2 and later, starting in May 2023. These bugs prevent 16 bpc ultra-high precision framebuffers to be reported as supported in both SDR and HDR mode of operation, with some driver versions even 10 bpc support is lacking in SDR Standard Dynamic Range mode! The bug prevents all AMD RDNA 3+ graphics cards with Navi 30 or later gpu family from using these 16 bpc framebuffers, and thereby from achieving up to 12 bpc effective output precision. Our new workaround tricks the faulty drivers into supporting these modes anyway and thereby restores the 10 bpc modes in SDR/HDR and tries to restore 16 bpc modes for up to 12 bpc effective output color precision in SDR and HDR again. While this has been confirmed to work on gpu’s of the AMD Vega gpu family and earier models, the situation on AMD Navi / RDNA gpu’s ist still unclear at time of this release. There might be additional bugs in the AMDVLK drivers still preventing this. Unfortunately the tester for this feature on AMD RDNA gpu’s has not reported back in reasonable time and we have to release now, with this question still to be answered.

  • Support for rapid, seamless video refresh rate switching on modern FreeSync capable AMD graphics cards, when used with a Variable Refresh Rate capable display device, connected via DisplayPort, e.g. suitable FreeSync, GSync and “Vesa DisplayPort Adaptive Sync” capable monitors. This can be triggered for a whole X-Screen with one or multiple active outputs via the command Screen('Framerate', screenId, 2, reqHz); or on a individual per-output basis via Screen('ConfigureDisplay', 'FineGrainedSwitchRefreshRate', screenId, outputId, reqHz); This allows to request an instant switch of the displays to a new video refresh rate reqHz within the variable refresh rate range supported by the display monitor, e.g., to run dynamic animations or movie playback at a specific exact rate, and switch that rate on a trial-by-trial basis if needed, with switching times in the range of only one to a few video refresh cycle duration. All AMD graphics cards since the Sea Island gpu family from around the year 2014 should be supported.

    The new test and demo VRRFixedRateSwitchingTest.m demonstrates and tests this.

  • Fix touchscreen enumeration for touchscreens operated by the “Intel Precision Touch and Stylus Daemon” iptsd version 3 and later. GetTouchDeviceIndices() now filters out the wrong touchscreen device and enumerates the correct devices.

Windows:

  • Psychtoolbox was built and tested against Matlab R2024b and Octave 7.3.

macOS:

  • Psychtoolbox was built and tested against native Matlab R2024b and against native Octave 9.4 from HomeBrew, on macOS 13.7.5 Ventura for Intel Macs, and on macOS 14.5 Sonoma for Apple Silicon Macs.

  • Add a Datapixx mex file for Matlab on Apple Silicon Macs, based on VPixx latest release. This is supposed, but not tested by us, to make basic support for VPixx devices work on macOS for Apple Silicon. Note that the Datapixx mex file for Octave is not ready and most likely broken on Apple Silicon, as of now.

Enjoy!

End of first batch of free trials for Psychtoolbox imminent

kleinerm

This is a reminder that the first large batch of free time limited trials for free use of Psychtoolbox 3.0.20 and later for Apple macOS and Microsoft Windows will end very soon for all those machines on which version 3.0.20 was first used before start of April 2025.

Free trials for those machines will end on coming Monday the 14th of April 2025, and further use of the software will require a paid software subscription license key, which you can buy from our store, accessible from www.psychtoolbox.net.

Free trials started for initial installations since April will always end 14 days after initial use of Psychtoolbox version 3.0.20 or later on a given machine.

We strongly recommend upgrading any 3.0.20 Psychtoolbox to at least version 3.0.21.0, but in general to the very latest published version.

Buy now and receive a license at a low early-bird rate!

For questions and discussions, follow this link to the discussion thread on our user forum.

For answers to frequently asked questions, follow this link to the slowly building FAQ on our Wiki.

News Archive