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 R2024b on Linux, Windows
and macOS, and Octave 5 and later on Linux, and Octave 7.3 on Windows, and Octave 9 on macOS.
Psychtoolbox 3.0.20.4 “Sleight of Hand” was released at 21st March 2025.
The complete development history can be found in our GitHub repository.
The release tag is “3.0.20.4”, with the full tree and commit logs under the URL:
https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.20.4
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.
Highlights:
- OpenXR articulated handtracking and fingertracking support for VR applications.
Sponsored by Mathworks.
All:
-
We now have OpenXR hand tracking support via our OpenXR driver, utilizing
the XR_EXT_hand_tracking OpenXR extension! This works on Linux and Windows
with any articulated hand tracking device that has suitable runtime support.
Tested with Monado Mercury computer vision hand tracker and UltraLeap
Leapmotion v2 vision based hand tracker on Linux Ubuntu 22.04/24.04 and on
MS-Windows 10, both with Monado and SteamVR, Octave and Matlab.
The extended VRInputStuffTest.m
demo demonstrates this new feature on
supported VR hand tracking hardware if the optional function parameter
withHandTracking
is provided with a non-zero value. Tracked right and
left hands of the user are then visualized.
Thanks to Mathworks for sponsoring this work!
-
PsychLicenseHandling(): Refine auto download and install for LM client libs.
-
Various other smaller refinements, bug fixes and documentation updates.
Linux:
-
Psychtoolbox was built and tested against Matlab R2024a and Octave 5.2 and later.
-
Our OpenXR VR/AR/MR/XR driver can now use articulated hand trackers to track
a users hand and finger movements and configuration. Tested with a Ultraleap
Leapmotion v2 controller under SteamVR and Monado runtimes with a real VR HMD
and a simulated HMD, as well as under Monado with Monado’s Open source Mercury
hand tracker on a simulated NorthStar HMD and with a Luxonis W-Pro smart camera.
Windows:
-
Psychtoolbox was built and tested against Matlab R2024a and Octave 7.3.
-
Screen(): Improve/Fix per-pixel alpha for onscreen window transparency, now also
on Matlab, not just Octave!
This used to work on WindowsXP, but got broken by some later version of
MS-Windows. This change should fix it on Windows 10+, at least on the tested
gpu’s from Intel, AMD and NVidia.
-
Screen(): Whenever GStreamer is used, disallow MMCSS scheduling. This is a
workaround for a GStreamer bug present since at least GStreamer 1.22. If Priority(1)
was called in a script before Screen('OpenMovie')
to enable Realtime scheduling,
it would end with a crash during movie playback. See GitHub issue #857 reported
by Diederick Niehorster for the background info.
-
Our OpenXR VR/AR/MR/XR driver can now use articulated hand trackers to track
a users hand and finger movements and configuration. Tested with a Ultraleap
Leapmotion v2 controller under SteamVR runtime with a real VR HMD.
macOS:
- Psychtoolbox was built and tested against native Matlab R2024a and against native
Octave 9.4 from HomeBrew, on macOS 13.7.1 Ventura for Intel Macs, and on macOS 14.5
Sonoma for Apple Silicon Macs.
Enjoy!
Psychtoolbox 3.0.20.3 “Appletizer SP3” was released at 3rd February 2025.
The complete development history can be found in our GitHub repository.
The release tag is “3.0.20.3”, with the full tree and commit logs under the URL:
https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.20.3
This Psychtoolbox release was sponsored by Mathworks under the year 2024/2025
contract for small enhancements and bug fixes.
- None expected. Identical to 3.0.20.2, except for a small improvement in our
statistics for macOS Apple Silicon to account for Rosetta2.
Highlights:
- None. This release contains minor functional and quality improvements, bug
fixes, and refinement of license management support for macOS and Windows in
the run-up to the launch of the actual paid license model / end of free trial
period.
All:
-
PsychLicenseHandling(): Add auto download and install for LM client libs.
Detect absence of required license manager client libraries during ‘Setup’ and try
to auto-download and install the missing crucial libraries.
This is relevant for non-standard Psychtoolbox installations via GitHub clone or
checkout, download of source tree zip/tgz files, or maybe even when the deficient
Matlab Add-On manager will be reenabled and used in a future release, if we are lucky.
Should fix multiple trouble reports on the forum from both Windows and macOS users,
encountered if they download the “wrong” (ie., not recommended for beginners) zip or
tar.gz files for a Psychtoolbox release, instead of the recommended zip file.
-
Update license management libraries to Cryptlex Runtime v3.31.2.
Apart from minor bug fixes, the main improvement is support for system-wide
activations on macOS, which should be quite useful for our users on Apple macOS,
as one user account on a Apple machine can activate a machine license, and all users
on that machine should be able to use it, instead of having to repeat the procedure
for each user account on a machine. This was so far only possible on MS-Windows.
-
DrawFormattedText() and DrawFormattedText2(): Improve formatting/layout of Unicode text.
Make it work with double() encoded unicode under Matlab/Octave with ‘wrapat’ and
‘justifytomax’ layout, and per-word bounding boxes. And with text wrapping.
Over 8 hours of tinkering, but seems to work better, as tested on Ubuntu 20.04 with
Octave 5.2 and Matlab R2024a.
-
PsychtoolboxPostInstallRoutine: Prune pointless Octave path removals.
These are dead and pointless since a while.
-
Various other smaller refinements, bug fixes and documentation updates.
Linux:
- Psychtoolbox was built and tested against Matlab R2024b and Octave 5.2 and later.
Windows:
-
Psychtoolbox was built and tested against Matlab R2024b and Octave 7.3.
-
Move all Matlab mexw64 mex files into PsychBasic folder, delete the now unused
PsychBasic/MatlabWindowsFilesR2007a subfolder, which is obsolete since a long
time, so get rid of it and store the Matlab mex files for Windows in the same
location as the Matlab mex files for Linux and macOS - the PsychBasic/ folder.
The file extension makes sure everything gets sorted. This may make it possible
to reenable “Matlab Toolbox Add-On” MLTBX support sometime in the future, although
more work will be needed for that.
-
Screen(): Improve/Fix per-pixel alpha for onscreen window transparency.
This used to work on WindowsXP, but got broken by some later version of
MS-Windows. This change should fix it on Windows 10+, at least on the tested
gpu’s. Right now this improvement is limited to Octave, Matlab will follow in
the next release if testing with this does not show problems.
macOS:
-
Psychtoolbox was tested against native Matlab R2024b and against native Octave 9.3
from HomeBrew.
-
PsychtoolboxPostInstallRoutine: Raise minimum macOS version check to 10.13.
We need at least macOS 10.13 for Intel Macs and macOS 11 for Apple Silicon Macs.
-
Allow system-wide node-locked machine license activations, so only one user has to
do the activation, and then all users on that machine can use Psychtoolbox without
need to activate per user account.
-
Datapixx mex for Octave/Matlab on macOS Apple Silicon rebuilt against a more recent
VPixx release from 2019 instead of 2014. Still outdated, but better than before, to
fix possible interop problems of Apple Silicon Macs with VPixx devices. Not yet
tested and confirmed to make things work - Awaiting user feedback.
Enjoy!
Psychtoolbox 3.0.20.2 “Appletizer SP2” was released at 1st February 2025.
The complete development history can be found in our GitHub repository.
The release tag is “3.0.20.2”, with the full tree and commit logs under the URL:
https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.20.2
This Psychtoolbox release was sponsored by Mathworks under the year 2024/2025
contract for small enhancements and bug fixes.
Highlights:
- None. This release contains minor functional and quality improvements, bug
fixes, and refinement of license management support for macOS and Windows in
the run-up to the launch of the actual paid license model / end of free trial
period.
All:
-
PsychLicenseHandling(): Add auto download and install for LM client libs.
Detect absence of required license manager client libraries during ‘Setup’ and try
to auto-download and install the missing crucial libraries.
This is relevant for non-standard Psychtoolbox installations via GitHub clone or
checkout, download of source tree zip/tgz files, or maybe even when the deficient
Matlab Add-On manager will be reenabled and used in a future release, if we are lucky.
Should fix multiple trouble reports on the forum from both Windows and macOS users,
encountered if they download the “wrong” (ie., not recommended for beginners) zip or
tar.gz files for a Psychtoolbox release, instead of the recommended zip file.
-
Update license management libraries to Cryptlex Runtime v3.31.2.
Apart from minor bug fixes, the main improvement is support for system-wide
activations on macOS, which should be quite useful for our users on Apple macOS,
as one user account on a Apple machine can activate a machine license, and all users
on that machine should be able to use it, instead of having to repeat the procedure
for each user account on a machine. This was so far only possible on MS-Windows.
-
DrawFormattedText() and DrawFormattedText2(): Improve formatting/layout of Unicode text.
Make it work with double() encoded unicode under Matlab/Octave with ‘wrapat’ and
‘justifytomax’ layout, and per-word bounding boxes. And with text wrapping.
Over 8 hours of tinkering, but seems to work better, as tested on Ubuntu 20.04 with
Octave 5.2 and Matlab R2024a.
-
PsychtoolboxPostInstallRoutine: Prune pointless Octave path removals.
These are dead and pointless since a while.
-
Various other smaller refinements, bug fixes and documentation updates.
Linux:
- Psychtoolbox was built and tested against Matlab R2024b and Octave 5.2 and later.
Windows:
-
Psychtoolbox was built and tested against Matlab R2024b and Octave 7.3.
-
Move all Matlab mexw64 mex files into PsychBasic folder, delete the now unused
PsychBasic/MatlabWindowsFilesR2007a subfolder, which is obsolete since a long
time, so get rid of it and store the Matlab mex files for Windows in the same
location as the Matlab mex files for Linux and macOS - the PsychBasic/ folder.
The file extension makes sure everything gets sorted. This may make it possible
to reenable “Matlab Toolbox Add-On” MLTBX support sometime in the future, although
more work will be needed for that.
-
Screen(): Improve/Fix per-pixel alpha for onscreen window transparency.
This used to work on WindowsXP, but got broken by some later version of
MS-Windows. This change should fix it on Windows 10+, at least on the tested
gpu’s. Right now this improvement is limited to Octave, Matlab will follow in
the next release if testing with this does not show problems.
macOS:
-
Psychtoolbox was tested against native Matlab R2024b and against native Octave 9.3
from HomeBrew.
-
PsychtoolboxPostInstallRoutine: Raise minimum macOS version check to 10.13.
We need at least macOS 10.13 for Intel Macs and macOS 11 for Apple Silicon Macs.
-
Allow system-wide node-locked machine license activations, so only one user has to
do the activation, and then all users on that machine can use Psychtoolbox without
need to activate per user account.
-
Datapixx mex for Octave/Matlab on macOS Apple Silicon rebuilt against a more recent
VPixx release from 2019 instead of 2014. Still outdated, but better than before, to
fix possible interop problems of Apple Silicon Macs with VPixx devices. Not yet
tested and confirmed to make things work - Awaiting user feedback.
Enjoy!