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.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!
Happy New Year!
Psychtoolbox 3.0.20.1 “Appletizer SP1” was released at 12th January 2025.
The complete development history can be found in our GitHub repository.
The release tag is “3.0.20.1”, with the full tree and commit logs under the URL:
https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/3.0.20.1
This Psychtoolbox release was sponsored by Mathworks under the year 2024/2025
contract for small enhancements and bug fixes.
Highlights:
- None. This is a minor macOS Apple Silicon maintenance release.
macOS:
-
Psychtoolbox was built and tested against native Matlab R2024b and against native
Octave 9.3 from HomeBrew, on macOS 13.7.1 Ventura for Intel Macs, and on macOS 14.5
Sonoma for Apple Silicon Macs.
-
Try to execute same code path on Apple Silicon macOS, regardless if running under native
Matlab/Octave for Apple Silicon ARM, or running under Intel Matlab/Octave via Rosetta2
emulation. Our license management aggregate stats tell us that a non-trivial fraction of
users still use Matlab for Intel Macs via Rosetta2 emulation on Apple Silicon, instead of
the recommended native Matlab/Octave for Apple Silicon. This would cause PTB to misbehave,
as it would think it runs on an Intel Mac and acts accordingly, instead of adapting to the
special snowflake that is macOS on Apple Silicon. This will especially cause trouble with
visual stimulation timing and some visual stimulus presentation. Note that this fix tries
to fix this, but Psychtoolbox is not and will not be tested for proper compatibility and
quality when running under Matlab/Octave for Intel via Rosetta2 on Apple Silicon!
Switching to native Matlab/Octave for Apple Silicon / ARM is strongly recommended.
-
Audio demos and tests: Request standard latency instead of larger latency on Apple Silicon.
The lose latency requirement was only meant to accomodate RaspberryPi’s, not Apple Silicon.
Enjoy!