Overview

Psychtoolbox interfaces between Matlab or Octave and the computer hardware. The PTB core routines provide access to the display frame buffer and color lookup table, reliably synchronize with the vertical screen retrace, support sub-millisecond timing, expose raw OpenGL commands, support video playback and capture as well as low-latency audio, and facilitate the collection of observer responses. Ancillary routines support common needs like color space transformations and the QUEST threshold seeking algorithm.

Psychtoolbox has many active users, an active forum, and is widely cited. PTB-3 is based on the deprecated Psychophysics Toolbox Version 2 with its Matlab C extensions rewritten to be more modular and to use OpenGL on the back end. The current version supports Matlab R2012a+ and Octave 3.8 and later on Linux, and Octave 4.2 on MacOSX, and Windows.

Psychtoolbox News

Psychtoolbox beta updated

kleinerm

Psychtoolbox 3.0.14 “Yellow Alert!” was released at 8th October 2017. As usual, the complete development history can be found in our GitHub repository. The release tag is “PTB_Beta-2017-10-08_V3.0.14”, with the full tree and commit logs under the URL:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/PTB_Beta-2017-10-08_V3.0.14

New features and improvements:

All operating systems:

  • PsychPowerMate: Add ‘List’ function for enumerating multiple PowerMates, and the ability of ‘Open’ to select among them. Add timeout ability to ‘WaitButton’ and ‘WaitRotate’. Add a ‘wait for button release’ ability to ‘WaitButton’. Help text updates.
  • PsychtoolboxConfigDir: Cleanups and error handling improved.
  • Screen(‘ConfigureDisplay’,’Brightness’) - Fail gracefully on pure brightness queries: Return a -1 “unsupported” status code on unsupported setups instead of error out.
  • Screen: Make blue-line stereo sync lines 3 scanlines high. Increases robustness against slightly buggy display drivers and picky stereo goggle sync equipment.
  • NetStation: Add response check to GetNTP synchronization. For improved error handling. Contributed by Andreas Widmann.

Linux:

  • Research-grade Multi-Touch touchscreen and touchpad support. “help TouchInput” for a starter. MultiTouchMinimalDemo.m for a simple demo. MultiTouchDemo.m for an advanced demo.
  • PsychHID: Motion and valuator change recording in KbQueue event buffers, e.g., for time-stamped background recording of mice/joysticks/gamepad/controller movements etc.
  • PsychHID: Add new KbQueueCreate flag 4 for raw motion event delivery. Mostly useful for capturing raw motion dynamics of pointing devices or joysticks.
  • PsychPowerMate: New functions for background recording of knob turns and knob presses. Also acts as a demo for how to use the new motion/valuator change recording of PsychHID.
  • help Hybridgraphics simplified, now that Ubuntu 16.04.3-LTS makes many things simpler.
  • Improve some timing related info/warning messages.

Windows:

  • help DrawTextPlugin: Give more detailed troubleshooting instructions for Matlab + Windows.

OSX:

  • help PsychtoolboxKernelDriver: Update for Apples latest train wreck.
  • PsychHID/DaqDeviceIndex: Improve USB-HID interface detection. This may make DaqDeviceIndex work more reliable on the train wreck.
  • Add new warning message when running on OSX with broken AMD graphics, so people don’t waste time trying to get reliable timing on an unfixable setup. Clarify various other mostly OSX related warning messages.

Psychtoolbox beta updated

kleinerm

Psychtoolbox 3.0.14 “Kafkaesque!” was released at 19th August 2017. As usual, the complete development history can be found in our GitHub repository. The release tag is “PTB_Beta-2017-08-19_V3.0.14”, with the full tree and commit logs under the URL:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/PTB_Beta-2017-08-19_V3.0.14

New features and improvements:

All operating systems:

  • ConfirmInfo/TwoStateQuery: Remove brain-dead, broken GUI mode on current Matlab R2014b+, use sane text mode instead.
  • Helptext updates for KbName and DrawTextPlugin.
  • Make glShaderSource() command more robust against awkward/funky formatted GLSL shader code.
  • Fix ClockRandSeed() for compatibility with Octave, and with current Matlab.
  • Some improvements to ComputeCIEConeFundamentals.m by David Brainard.
  • Add new optional ‘GetNTPSynchronize’ command to NetStation(), which allows to NTP synchronize event timestamps on suitable EGI Netstation systems for much higher timestamp accuracy. Successfully tested on a 400 series amp with Linux as client and MacOs Netstation amp machine. Also a new helper function GetNTP() which is an OS independent simple NTP client. Code contributed and tested by Andreas Widmann and Urte Roeber, with helpful input by Justin Ales.
  • Add matching/selection of devices by productName, serialNumber or locationID to all of GetKeyboard/Mouse/Gamepad/KeypadIndices, ie. wherever this was missing.
  • VideoMultiCameraCaptureDemo: Make it write movies in a format that even Apples dumb Quicktime player can comprehend, similar to ImagingStereoDemo.

Linux:

  • PsychOpenHMDVR driver for virtual reality headsets (HMDs) supported by OpenHMD. See “help PsychOpenHMDVR” for help and setup instructions. OpenHMD currently supports the Oculus Rift DK1/DK2/CV1, the HTC Vive, the Sony PSVR, and some more exotic devices. No controller input is supported so far. Only head orientation/rotation tracking supported, no absolute position tracking, as that is wip in OpenHMD. Also less sophisticated latency/blur compensation. The driver is so far tested with the Rift DK2 and Rift CV1 on standard PC and the DK2 on RaspberryPi-2. Use of the CV1 requires running openhmdkeepalivedaemon.
  • Clear screen in multi-x-screen config properly to black in stereomode 4/5 at window close.
  • Support transparent windows on 10 bpc / 30 bit color depth setups.
  • Handle use of software renderer wrt. to stimulus timing a bit more intelligently - avoid false warning.
  • VRHMDDemo: Allow selection of HMD via optional deviceIndex parameter.
  • KbQueues: Fix failure to detect key events on multi-x-screen setups if mouse pointer is on other screen than X-Screen 0.

Windows:

  • Handle backwards compatibility bugs in AMD’s proprietary display drivers for Windows, which cause failure to load identity lut’s in LoadIdentityClut() or failure to disable digital display dithering when requested to do so. Investigated and fixes contributed by Mark Repnow.

  • Some build system improvements and code formatting cleanups by Diederick. Also removal of dead tests for ancient Matlab 4/5 bugs on ancient MacOS 8/9.

Psychtoolbox beta updated

kleinerm

Psychtoolbox 3.0.14 “Kalsarikännit” was released at 11th June 2017. As usual, the complete development history can be found in our GitHub repository. The release tag is “PTB_Beta-2017-06-11_V3.0.14”, with the full tree and commit logs under the URL:

https://github.com/Psychtoolbox-3/Psychtoolbox-3/tree/PTB_Beta-2017-06-11_V3.0.14

This release mostly contains bug-fixes, small improvements and minor new features.

Btw. I’ve observed on some MS-Windows systems that UpdatePsychtoolbox - or more accurately the underlying svn Subversion command line tool - didn’t do anything. It claimed a successfull update, but didn’t update anything. This was also reported once in our Issue tracker. I don’t know if this is a Windows specific svn bug, or something more widespread. Anyway, if UpdatePsychtoolbox doesn’t upgrade/change about 60 files then something went wrong, and you’ll need to use DownloadPsychtoolbox for a completely fresh download. Let us know if this happens on other systems than Windows.

New features and improvements:

All operating systems:

  • Fix PsychImaging ‘EnableCLUTRemapping’ task. Did only work in scripts, not functions, due to a bug introduced in last beta. Also had off-by-one indexing errors for > 256 slot LUTs. CLUTMappingBugTest.m allows to test for proper functioning of this now, ie. verifies the bug-fix.

  • Fix use of Screen(‘PutImage’) when Psychimaging NormalizedHighRescolorRange task is used. PutImageTest.m verifies the bug fix.

  • Improve Screen(‘LoadNormalizedGammatable’) compatibility with functions that expect return values for loadOnNextFlip setting 2 – where those return arguments are meaningless, but return them anyway with faked values to simplify user scripts.

  • NetStation() go back to January 2017 version, as the version from the latest beta contains show-stopper bugs curtesy of myself and Justin Ales. This needs more work before a proper update to NTP synced synching is possible.

  • Remove all traces (and users) of the long dead SerialComm() serial port driver for 32-Bit Matlab on OSX. This wasn’t used by default by anything, and everything has higher quality IOPort based implementations.

  • Final fixes and prep work for the ready-for-release, but unreleased, new OculusVR1 driver for Oculus HMD’s which need the 1.x runtime.

  • Add compat code to the general VR handling routines like PsychVRHMD, and add some compat routines for functions freshly exposed on the Oculus-1 driver.

  • Pimp some VR related demos a bit.

Linux:

  • Provide anti-aliased round dots on RaspberryPi via Screen(‘DrawDots’). Raspian can do this now with its current Mesa vc4 driver version.

  • Update “help SyncTrouble” and “help HybridGraphics”, as well as some flip warning messages, to reflect our current knowledge about this stuff on Linux.

  • Fix NVidia Optimus detection on Linux with the proprietary NVidia driver. Turns out our detection code only worked by chance on the NVidia 840M laptop by chance. Increasing hardware samples to n=2 with the Razer Blade 2016 showed it was broken. Now works (hopefully) on all such laptops.

  • XOrgConfCreator: Add automatic setup code for 30 bit native framebuffers (Intel, NVidia, amdgpu-pro), and setup for special 16 bpc framebuffer experimental code on Linux + AMD Sea Islands gpus.

Windows:

  • Make ColorCal2() driver work on Windows by use of virtual COM port, by a dedicated code path.

News Archive