This release "Crowning achievement" - II is __completely identical in content__ to the previous one. We just need to re-release it under a new release tag with a new versioning scheme for technical reasons.
The noteworthy thing about "Crowning achievement" is that it contains the highest number of 3rd party contributions (7 if i counted right) ever! Various people contributed new functions and improvements to existing functions. This would be a good trend if it continues. Thanks!
General improvements and new functionality for all operating systems:
- Add disclaimer to "help PsychContributed" that all code in there is not considered up to the regular quality standards, often only supported by the 3rd party contributors not by us, subject to removal or backwards incompatible changes or breakage for any reason. If you use it, you are mostly on your own!
- Improve some help texts, e.g.,
- Screen Rect? Screen GlobalRect? : Mention it also works on textures.
- Help section on display mirroring in PsychImaging() improved to match what works/doesn't on modern operating systems.
- sca(): No longer recenter the mouse cursor at the display center at invocation of sca(). This is a measure that was needed on old Linux distributions with some desktop environments, but not needed on modern Linux, Windows or macOS. It can trigger some weird crash bugs on some exotic Windows-10 multi-display setups. Problem reported by Diederick.
- Screen: Always print error messages wrt. sync test failure at OpenWindow time, even if level of verbosity is set to zero, to aid debugging the most common reason for OpenWindow failure on Apples trainwrecks and other low-quality systems.
- Add underlining support to Screen('DrawText') (ie. honor the Screen('TextStyle') setting flag 4 = underline) when using the modern standard drawtext plugin. So far underlining was only supported with some of the legacy OS specific text renderers. Now it works in the typical use case. Code for drawtext plugin contributed by Diederick (dcnieho).
- MinExpEntStair(): Make it compatible with modern Octave versions 4.4 and later, contributed by Diederick.
- Fix ClockRandSeed() for compatibility with recent Matlab versions. Problem reported and solution suggested by Xiangrui Li (xiangruili)
- MeasureDpi(): Now optionally allows DPI measurement using standard credit cards, as very common calibration objects of well defined size. Measuring with other objects is still possible, by specifying their size, as in the past. Some other minor improvements. Contributed by Miguel García García (mikelgg93).
- New function HoritaTitler() to control the Horita SCT-50 video titler and compatible devices via serial port (https://horita.com). Contributed by Natasa Ganea from the Goldsmiths Infantlab, University of London.
- New procedural texture shader for sine-wave and square-wave gratings which don't change brightness, but color between a neutral background color and two different colors at the peaks and valleys of the grating, e.g., red-green or blue-yellow gratings for research wrt. color opponent perception. Also with adjustable smoothness of the transition between the two colors for square-wave gratings, and with a radial aperture of controllable radius. CreateProceduralColorGrating() to create them, ProceduralColorGratingDemo.m to show how it is used. Contributed by Ian Andolina (iandol).
Linux:
- Add support for Octave 4.4+ 64-Bit, to support the new 64-Bit Octave 5.2 in Ubuntu 20.04-LTS. Mostly by adding an Eyelink mex file built against Octave 5.2 and checking that our set of mex files built against Octave 4.4 for Ubuntu 19.10 still works with Octave 5.2 on Ubuntu 20.04-LTS.
- Improvements to XOrgConfCreator() for Ubuntu 20.04 LTS and modern AMD gpu's:
- Fix ddx video driver detection on recent AMD gpu's with DCN display engine (Ryzen integrated graphics, AMD Navi gpu family of discrete gpu's).
- Allow to opt-out of use of modesetting-ddx, instead of only opt-in: The defaults have changed on Ubuntu 20.04 LTS. Modesetting is used by default on Intel and NVidia nouveau, instead of being an optional alternative compared to vendor specific intel-ddx and nouveau-ddx drivers.
- Make it robust against use under 30 bit color depth for the X-Screen if something is botched in the color depth 30 bit setup. XOrgConfCreator() is part of the troubleshooting procedure, so there shouldn't be a need to troubleshoot itself first in case of trouble.
- Reduce verbosity of gpu detection and low-level access setup machinery at default verbosity level.
Windows:
- ShowCursor(): Add support for more cursor shapes that are available on Windows by default. Contributed by Diederick.
- "help DrawTextPlugin": Mention alternate locations for the fontconfig cache, and how to solve trouble there. Problem and solution reported by sr-brian.
- PsychOculusVR1 driver: Allow printing of debug messages from secondary threads (VR runtime threads) again when running under Octave. As printing of debug messages from secondary threads crashes Matlab since around R2018, this was unconditionally disabled. Now we allow it again when running on Octave, so users could get more help in debugging mysterious problems iff they use Octave for debugging these problems.
macOS:
- Add MacDisplaySettings(), contributed by Denis Pelli (denispelli) . This is a replacement for AutoBrightness(), which is now a wrapper around MacDisplaySettings() for backwards compatibility. MacDisplaySettings() provides more control over more display settings which get in the way of properly calibrated monitors, e.g., automatic backlight brightness, nightshift, etc. It is also supposed to be more robust and faster than the old code. NOTE: This function is part of the PsychContributed category of functions. As such it is unsupported and not tested at all (not even for security issues or unintended side effects) by the official maintainer. It could fail or break or be changed in a backwards incompatible way in the future for any reason. All support requests will have to go directly to Denis Pelli.
PTB_Beta-2020-05-10_V3.0.16
The noteworthy thing about "Crowning achievement" is that it contains the highest number of 3rd party contributions (7 if i counted right) ever! Various people contributed new functions and improvements to existing functions. This would be a good trend if it continues. Thanks!
General improvements and new functionality for all operating systems:
- Add disclaimer to "help PsychContributed" that all code in there is not considered up to the regular quality standards, often only supported by the 3rd party contributors not by us, subject to removal or backwards incompatible changes or breakage for any reason. If you use it, you are mostly on your own!
- Improve some help texts, e.g.,
- Screen Rect? Screen GlobalRect? : Mention it also works on textures.
- Help section on display mirroring in PsychImaging() improved to match what works/doesn't on modern operating systems.
- sca(): No longer recenter the mouse cursor at the display center at invocation of sca(). This is a measure that was needed on old Linux distributions with some desktop environments, but not needed on modern Linux, Windows or macOS. It can trigger some weird crash bugs on some exotic Windows-10 multi-display setups. Problem reported by Diederick.
- Screen: Always print error messages wrt. sync test failure at OpenWindow time, even if level of verbosity is set to zero, to aid debugging the most common reason for OpenWindow failure on Apples trainwrecks and other low-quality systems.
- Add underlining support to Screen('DrawText') (ie. honor the Screen('TextStyle') setting flag 4 = underline) when using the modern standard drawtext plugin. So far underlining was only supported with some of the legacy OS specific text renderers. Now it works in the typical use case. Code for drawtext plugin contributed by Diederick (dcnieho).
- MinExpEntStair(): Make it compatible with modern Octave versions 4.4 and later, contributed by Diederick.
- Fix ClockRandSeed() for compatibility with recent Matlab versions. Problem reported and solution suggested by Xiangrui Li (xiangruili)
- MeasureDpi(): Now optionally allows DPI measurement using standard credit cards, as very common calibration objects of well defined size. Measuring with other objects is still possible, by specifying their size, as in the past. Some other minor improvements. Contributed by Miguel García García (mikelgg93).
- New function HoritaTitler() to control the Horita SCT-50 video titler and compatible devices via serial port (https://horita.com). Contributed by Natasa Ganea from the Goldsmiths Infantlab, University of London.
- New procedural texture shader for sine-wave and square-wave gratings which don't change brightness, but color between a neutral background color and two different colors at the peaks and valleys of the grating, e.g., red-green or blue-yellow gratings for research wrt. color opponent perception. Also with adjustable smoothness of the transition between the two colors for square-wave gratings, and with a radial aperture of controllable radius. CreateProceduralColorGrating() to create them, ProceduralColorGratingDemo.m to show how it is used. Contributed by Ian Andolina (iandol).
Linux:
- Add support for Octave 4.4+ 64-Bit, to support the new 64-Bit Octave 5.2 in Ubuntu 20.04-LTS. Mostly by adding an Eyelink mex file built against Octave 5.2 and checking that our set of mex files built against Octave 4.4 for Ubuntu 19.10 still works with Octave 5.2 on Ubuntu 20.04-LTS.
- Improvements to XOrgConfCreator() for Ubuntu 20.04 LTS and modern AMD gpu's:
- Fix ddx video driver detection on recent AMD gpu's with DCN display engine (Ryzen integrated graphics, AMD Navi gpu family of discrete gpu's).
- Allow to opt-out of use of modesetting-ddx, instead of only opt-in: The defaults have changed on Ubuntu 20.04 LTS. Modesetting is used by default on Intel and NVidia nouveau, instead of being an optional alternative compared to vendor specific intel-ddx and nouveau-ddx drivers.
- Make it robust against use under 30 bit color depth for the X-Screen if something is botched in the color depth 30 bit setup. XOrgConfCreator() is part of the troubleshooting procedure, so there shouldn't be a need to troubleshoot itself first in case of trouble.
- Reduce verbosity of gpu detection and low-level access setup machinery at default verbosity level.
Windows:
- ShowCursor(): Add support for more cursor shapes that are available on Windows by default. Contributed by Diederick.
- "help DrawTextPlugin": Mention alternate locations for the fontconfig cache, and how to solve trouble there. Problem and solution reported by sr-brian.
- PsychOculusVR1 driver: Allow printing of debug messages from secondary threads (VR runtime threads) again when running under Octave. As printing of debug messages from secondary threads crashes Matlab since around R2018, this was unconditionally disabled. Now we allow it again when running on Octave, so users could get more help in debugging mysterious problems iff they use Octave for debugging these problems.
macOS:
- Add MacDisplaySettings(), contributed by Denis Pelli (denispelli) . This is a replacement for AutoBrightness(), which is now a wrapper around MacDisplaySettings() for backwards compatibility. MacDisplaySettings() provides more control over more display settings which get in the way of properly calibrated monitors, e.g., automatic backlight brightness, nightshift, etc. It is also supposed to be more robust and faster than the old code. NOTE: This function is part of the PsychContributed category of functions. As such it is unsupported and not tested at all (not even for security issues or unintended side effects) by the official maintainer. It could fail or break or be changed in a backwards incompatible way in the future for any reason. All support requests will have to go directly to Denis Pelli.
PTB_Beta-2020-03-26_V3.0.16
General improvements:
- PlayMoviesDemo: Add alpha-blending support for transparent movies.
- Improve help text for Screen Screens?
- PsychPortAudio: Fix start of capture 'capturetime' timestamps in certain exotic conditions.
macOS:
- Fix crash on Screen() reload if GStreamer isn't installed, but libglib is installed by 3rd party, e.g., from HomeBrew.
- SetMouse: Deal better with Retina displays on macOS: At least if a window handle is provided, this should deal with position scaling on Retina displays if not using native Retina resolution on the trainwreck. Not great, but better than nothing.
Linux:
- Fix default audio input/capture device selection for certain exotic audio input devices which expose separate logical audio devices for playback vs. capture.
- Cut down on chatter if running on latest generations of AMD gpu's with DCN display engine, e.g., AMD Ryzen integrated processor graphics (Raven Ridge / Picasso / Renoir / ...) and AMD Navi family discrete graphics cards. These latest generation DCN display engines are not supported by our bag of low-level tricks, as there is neither need nor benefit. Spare the user from pointing this out with extra debug clutter.
- Fix detection code for VRR capable displays (HDMI VRR and DisplayPort Adaptive Sync / FreeSync). The detection code only probed the first connected display output, regardless into which output the display is plugged in, therefore falsely disabling VRR capable displays from using VRR.
PTB_Beta-2020-01-30_V3.0.16
PTB BETA "English breakfast"
General improvements:
- Fix movie playback with pixelformat = 10, ie. deep color playback of more than 8 bpc content.
Linux:
- Various high precision color improvements for Linux: Enable 10 bpc framebuffer support on Mesa by default. Make sure video outputs operate at maximum output precision in > 8 bpc modes. Improvements to 16 bpc framebuffer support on AMD DCE-8+ gpu's, now verified to be able to produce 12 bpc output precision.
- Improve default KbQueue selection to ignore certain mice which pretend to be also keyboards.
Windows:
- More hand-holding for people who are challenged with reading and install the wrong GStreamer variant.
PTB_Beta-2019-12-18_V3.0.16
General improvements:
- Adds PsychPhotodiode() driver for combining photo-diodes with sound cards for visual stimulus onset timestamping. Demonstrated in VRRTest.m as hwmeasurement=5 method.
- UpdatePsychtoolbox() will now potential file conflicts automatically by forcing the updated files from the upstream server, simply overwriting/discarding user modifications.
- Documentation updates. Among other minor things, point to the new user forum at Discourse.
- Improve ability to do reproducible builds for Python, contributed by Bernhard Wiedemann on behalf of openSUSE.
Linux improvements:
- Ship basic set of MEX files for Octave 4.4 on Linux, e.g., for easy use with Octave on Ubuntu 19.10. Currently missing, to be part of a later update: Eyelink.mex, PsychCV.mex.
- Improved VRR support for fine-grained visual stimulus onset timing on Linux. The API has been reworked to allow for more future flexibility and future extensions without breaking backwards compatibility of user scripts. Most importantly, a more sophisticated multi-threaded VRR scheduler is now used, which should take hardware (gpu and display) and operating system/driver constraints into account to provide more precise and stable visual stimulus onset timing. Testing shows pretty good results on AMD FreeSync hardware, and some improvements on NVidia G-Sync hardware. AMD gpu's and compatible "FreeSync" displays are strongly recommended over NVidia G-Sync for optimal current results and to take advantage of substantial improvements on Linux in the future.
PTB_Beta-2019-12-04_V3.0.16
Improvements for all systems:
- drawChromaticity() renamed to DrawChromaticity(), so Matlab/Octave don't complain and our documentation generator can actually generate documentation. Other small cleanups/refinements.
- InitializePsychSound() made less chatty.
- Minor improvements to PsychPortAudioTimingTest et al.: Go back to 44100 Hz sample rate, as that seems to be supported on a wider range of sound hardware. Weird, because the HDA spec only mandates 48000 Hz, so one would expect lazy hw vendors to implement that foremost.
- BasicSoundInputDemo: Only switch from recording to playback on ESCape key press.
Improvements on Linux:
- XOrgConfCreator can now configure hybrid graphics laptops also when running under Matlab, not just Octave, by working around a Matlab limitation. So far it didn't recognize a multi-gpu laptop as such when executed under Matlab, only on Octave.
- Support for use of Variable Refresh Rate (VRR) displays, also known as VRR, HDMI-2.1 VRR, DisplayPort Adaptive Sync, AMD FreeSync or NVidia G-Sync, with suitable AMD FreeSync or NVidia G-Sync gpu's on suitable Linux versions and drivers. "help VRRSupport" explains hardware and software requirements, gives setup instructions and usage / test instructions, and also provides background infos. VRRTest exercises suitable system setups. PsychImaging('AddTask', 'General', 'UseFineGrainedTiming'); requests use of VRR on supported setups. This is an initial implementations of the basics. It is expected to work best on AMD gpu's of the Vega gpu family or later, e.g., Ryzen / Raven Ridge integrated graphics controllers and Vega or Navi family discrete gpu's. It will also work with some more limitations on older AMD gpu's like Polaris, Volcanic Islands and Sea Islands family. It may work ok'ish on NVidia G-Sync gpu's, but use of AMD graphics + AMD FreeSync2 monitors is strongly recommended over NVidia graphics + NVidia G-Sync displays. Stay tuned for future improvements to VRR based fine grained visual stimulus timing. Not supported on MS-Windows yet.
PTB_Beta-2019-11-27_V3.0.16
This release was aptly named by Denis Pelli: The main meat of it is substantial improvements to visual stimulation timing on Apple macOS, as well as other fixes for Apples trainwrecks, e.g., for keyboard queries and for running Octave and Matlab R2019b without crashing. The timing fixes were done as contract work, paid by Denis Pelli. For more details about the general state (=awfulness) of current macOS and about these fixes see:
https://github.com/kleinerm/Psychtoolbox-3/pull/159
Iow. all Apple macOS users should upgrade to this release asap.
General improvements:
- Help text and doc updates.
- DownloadPsychtoolbox/UpdatePsychtoolbox: Improve some online help texts. Contributed by Ian Andolina.
- UpdatePsychtoolbox can now work even if the Psychtoolbox folder is not on the path. Contributed by Denis Pelli.
- Improvements to diagnostics, e.g., DatapixxGPUDitherpatternTest is even more careful now about detecting trouble.
- FlipTimingWithRtPhotoDiodeTest. Now also supports VideoSwitcher + RtBox for timing tests.
- Improved data sets: Update T_xyz1931 and T_xyz1964 with more decimal places and wavelength samples. Updated versions provided by Danny Garside. It’s possible this could break code that made assumptions about wavelength sampling, but code should not do that. Reviewed and merged by David Brainard.
- New function contributed by Danny Garside: drawChromaticity() can plot various types of chromaticity diagrams with spectrum locus. Reviewed and merged by David Brainard.
macOS Fixes and workarounds for the various horrifying Apple macOS operating system bugs:
- KbCheck: Handle Apple MacBookPro TouchBar Gimmick.
- KbCheck: Workaround for macOS Catalina's shoddy IOKit HID support which led to slowdowns of 50x
- KbQueueCreate: Workaround for macOS Catalina's latest multi-threading bugs to avoid crashing.
- Screen: Improve Retina display handling related to GetMouse and use of panel fitter.
- Screen: Workaround the endless number of graphics/display driver bugs affecting visual stimulus onset timing and timestamping. This should bring improved or well working visual timing on a variety of hardware on macOS 10.11 to 10.15.1, but is targeted at specifically macOS 10.14.6 Mojave with the MacBookPro 2017 and the iMac 27 inch 5k Retina late 2014. Work done under contract with Denis Pelli. A summary of all the horrors in Apples trainwrecks, and how we work around them now can be found in this pull request: https://github.com/kleinerm/Psychtoolbox-3/pull/159
- Fix crashes of Octave 5.1 during operation and shutdown caused by macOS multi-threading bugs
and other Apple screwups that just baffle my little brain to no end.
- Fix crash of Matlab R2019b due to more horrendous Apple screwups.
Windows:
- Make disable of display dithering for modern AMD gpu's on modern drivers actually work, for identity pixel passthrough needed by visual stimulators of VPixx and Cambridge Research Systems.
Linux:
- Improve gpu detection for some new AMD gpu's.
Enjoy!
PTB_Beta-2019-09-26_V3.0.16
This is mostly a bugfix and refinement release with only new functionality for GetSecs, and some new NVidia
gpu support on Linux.
* GetSecs('AllClocks'): Optionally return monotonicTime as 4th return argument. Identical to GetSecsTime on Windows and macOS, returns Posix CLOCK_MONOTONIC time on Linux. Allows timestamp remapping / sync with, e.g., Tobii gazetracker SDK.
* Screen on Linux now supports high precision timestamping with the proprietary NVidia driver for NVidia Volta and Turing gpu's.
* CenterRectOnPoint[d]: Fix ambiguity for 4x4 rect matrices.
* BackupCluts(): Ignore virtual screen 0 on a MS-Windows multi-display setup. By Ian Andolina.
* Allow use with Matlab releases < R2014b under macOS again. Not recommended on Apples current trainwrecks, but reenabled for consistency with Linux and Windows.
* Update some help texts and slightly improve some demos.
* Misc other stuff.
* Python port: Allow editable installs. Contributed by Eric Larson.
PTB_Beta-2019-08-07_V3.0.16
The initial release of Psychtoolbox 3.0.16, while light on new features and general improvements, marks the first big transition of runtime environments and build systems in almost 8 years, from:
* Octave 4.4.1 required to Octave 5.1.0 required on Windows and macOS.
* Matlab R2012a as a build and test system replaced by R2019a on Windows and macOS.
* Matlab R2014b as a build and test system and R2019a as a test system instead of old R2012a on GNU/Linux.
* Switch of the Windows build and test environment from Windows-7 SP1 to Windows-10.
* Windows 10 SDK and MSVC 2015-2019 runtimes instead of Windows 7 SDK and older MSVC 2010.
* Linux: At least GStreamer 1.4 required instead of GStreamer 1.0.
* Windows: At least GStreamer 1.16.0 in the MSVC variant required instead of >= GStreamer 1.4.0 MinGW variant.
This means that Octave users on Windows and macOS must upgrade to Octave 5.1.0 before they run UpdatePsychtoolbox or DownloadPsychtoolbox. All Windows users must upgrade GStreamer to version 1.16.0 MSVC before updating Psychtoolbox. Download link for new GStreamer on Windows:
<https://gstreamer.freedesktop.org/data/pkg/windows/1.16.0/gstreamer-1.0-msvc-x86_64-1.16.0.msi>
With this release, Windows users lose the ability to run Psychtoolbox without installing GStreamer - it is no longer optional, even if you don't need any GStreamer provided multi-media functionality or video capture / video recording.
On the plus side: This release may fix the crashes and stability problems that Windows users frequently experienced when using multi-media functionality with Matlab's GUI enabled. At least two Windows 10 test machines with R2014a and R2019a did not experience Matlab related stability issues anymore. Fingers crossed!
Windows users may require Microsoft Visual Studio Runtime 2015-2019 redistributable to be installed unless your system is sufficiently up to date to have this already. One suitable copy of this is bundled with Psychtoolbox and also available under this link:
<https://github.com/Psychtoolbox-3/Psychtoolbox-3/raw/master/Psychtoolbox/PsychContributed/vcredist_x64_2015-2019.exe>
You may want to make a backup copy of your current Psychtoolbox installation before upgrading to this one!
General improvements:
* Fix small bug in PsychPortAudio('Stop'): Did not block until true sound offset, but possibly return a few msecs too early.
* Add new MouseMotionRecordingDemo.m: Shows how to record mouse/trackpad movements et al. on Linux and Windows via use of enhanced keyboard queues.
* Various documentation updates, e.g., for Linux gamemode support, RetinaDisplays, GStreamer.
* Minor improvements and various cleanups.
* Datapixx updated to latest state from VPixx upstream to support their latest functionality.
Linux:
* Enable GstDeviceMonitors for nicer or theoretically more robust video capture device enumeration.
* Now requires at least GStreamer 1.4.0. Matlab mex files will fail on distributions with older GStreamer versions. Octave mex files provided by Ubuntu/Debian and NeuroDebian would continue to work on older GStreamer versions without GstDeviceMonitors support.
* Ubuntu 14.04-LTS or other distros older than Ubuntu 16.04-LTS are no longer supported. This because they lack GStreamer 1.4+, but also no further testing is performed against them.
* Our package work with Octave 3.8 - 4.2. Octave 4.4 and 5.1 will be supported by NeuroDebian packages octave-psychtoolbox-3 or the Linux distributions octave-psychtoolbox-3 packages themselves.
* Developed and tested against Matlab R2019a and R2014b, no longer R2012a, but is expected - but not tested - to continue to work with R2012a.
* The RaspberryPi edition now is build and tested against the current Raspbian 10 "Buster" based OS, with Octave 4.4.1 instead of older Octave versions. You need to upgrade to the latest Raspbian to use this release. Or use the distribution provided and probably somewhat outdated octave-psychtoolbox-3 package.
Windows:
* Now absolutely requires the MSVC built GStreamer 1.16.0 for both Octave and Matlab. Screen() will no longer work without GStreamer 1.16.0 MSVC installed! Download link:
<https://gstreamer.freedesktop.org/data/pkg/windows/1.16.0/gstreamer-1.0-msvc-x86_64-1.16.0.msi>
* May require Microsoft Visual Studio Runtime 2015-2019 redistributable to be installed. One suitable copy of this is bundled with Psychtoolbox and also available under this link:
<https://github.com/Psychtoolbox-3/Psychtoolbox-3/raw/master/Psychtoolbox/PsychContributed/vcredist_x64_2015-2019.exe>
* Keyboard queues can now record mouse/touchpad etc. motion as well, also raw motion, similar to Linux.
* Update PsychPortAudio's internal Portaudio library to latest upstream release with improvements and bug fixes to Windows WASAPI sound backend support.
* Now runs on and requires 64-Bit Octave 5.1, no longer on Octave 4.4.1.
* Now is tested and developed against Matlab R2019a, no longer R2012a, but should continue to work on older Matlab versions than R2019a.
* Crashes of Matlab in Java / GUI mode when using GStreamer functions like movie playback/writing/recording and video capture may be finally resolved! At least testing on Windows 10 with R2019a and R2014a did not experience any crashes anymore. Fingers crossed.
* Improved compatibility and easier setup of GStreamer 1.16.0 + Octave 5.1.0.
OSX:
* Improve robustness of Screen('ConfigureDisplay','Brightness') on Apples recent trainwrecks with NightShift support and such. Also add theoretical ability to control 'AutoBrightness' mode - in practice it doesn't seem to work at all on any tested macOS 10.13 or 10.14 system.
* Now runs on and requires 64-Bit Octave 5.1, no longer on Octave 4.4.1.
* Now is tested and developed against Matlab R2019a, no longer R2012a, but should continue to work on older Matlab versions, possibly back to R2014b.
PTB_Beta-2019-07-25_V3.0.15
This is a small bug fix update of 3.0.15 final for some compatibility issues between new features and Matlab on Linux. The new gamemode setup in PsychLinuxConfiguration did not work as expected with Matlab.
This supposed to be final Psychtoolbox 3.0.15 PTB beta update "No rocket science" mostly contains bug fixes, workarounds for OS bugs, and new features and improvements here and there.
It is expected to be the last release in the 3.0.15 series, before we start the 3.0.16 series. The 3.0.16 series will drop support for Ubuntu versions older than 16.04.6-LTS and equivalent other distributions, and will also involve a major update of the Microsoft Windows build system, the Matlab versions used for building and testing and the supported Octave versions.
General:
* Improvements to Python implementations for PsychHID, PsychPortaudio: Pythonic wrapper classes hid and audio and hidtest_pythonic, ppatest_pythonic. Ability to build wheels and sdist's for upload to PyPi. Jon Peirce currently takes care of building and uploading this stuff to PyPi et al. Bug fixes by Jon and myself for .py and C code, e.g., for detection of HID devices with exotic names on MS-Windows. Also add some missing license file to PyPi distro by Richard Höchenberger.
* Various updates to help texts and documentation.
* MakeBeep: Fix off-by-one error by Diederick.
* Addition of "Krinov reflectance data" data set by David Brainard.
* Fix failure of PsychHID('ReceiveReports') with optional options struct - regression introduced around beginning of 2019 (forum msg 23724).
* Screen: Fix GStreamer movie audio writing for recent GStreamer versions. Audio track writing (cfe. ImagingStereoDemo([],[],2)) failed on Ubuntu 19.04, because the audio layout of source data was not specified. Current plugins seem to require explicit specification of our interleaved input format audio caps as "format=interleaved".
* PsychRTBox: Adapt for use with Bits emulated virtual RTBox. Tested on Linux, untested on macOS.
* BitsPlusDIO2Matrix(): Allow use of Bits trigger output port.
* Ask/GetString/GetEchoString/GetCharTest: Deal with Unicode key input. This now allows to take input in character sets / from keyboard layouts other than US layout with ASCII/Latin-1. E.g., german umlauts etc. should be processed properly. Only tested on Linux, but hopefully works on Windows/macOS as well. One limitation that became apparent is that GNU/Octave doesn't really support processing of Unicode, while Matlab does. So while you can record/receive use input from non-US layout keyboards, and process it in your own scripts, many of Octave's string processing functions and printing of such strings to the command window via fprintf() or disp() may fail for non-ASCII characters. This is a Octave design limitation as of Octave 5.1. You will have to work around it on a case by case basis in your scripts.
* PsychImaging: For Native10/11/16Bit framebuffer mode, don't load identity lut.
If use of a gpu native 10 Bit, 11 Bit or 16 Bit framebuffer is requested, and this happens via native graphics driver facilities and not via our own Linux+AMD MMIO low-level hackery, then do not request use of a identity gamma lut via LoadIdentityClut() anymore.
Modern Intel/AMD/NVidia gpu's when operated natively in > 8 bpc framebuffer depths can switch to hardware lut's with more than 10 bpc output width, so we'd lose precision for gamma correction by using our shader based method instead. Also LoadIdentityClut() built in lut's are only optimized for / targeted at 8 bpc framebuffer passthrough, e.g., for use with VPixx and CRS devices, VideoSwitcher and other video attenuators. If used in 10 bpc framebuffer mode or higher they might truncate output precision to 8 bpc, e.g., on Intel graphics chips under Linux!
* PsychImaging: Add support for native 16 bit floating point framebuffers.
A new task 'EnableNative16BitFloatingPointFramebuffer' requests 64 bpp, 16 bpc RGBA16F floating point windowing system framebuffers. Also requests >= 16 bpc float precision from the imaging pipeline if
the pipeline is enabled. Switches to unclamped normalized high-res color range 0.0 - 1.0 as usual.
This is so far only known to work in a meaningful way on NVidia GeForce 1000+ "Pascal" gpu's under Windows-10. Photometer measurement on a 8 bit panel with dithering enabled showed at least roughly 11 bits luminance precision under quick testing. Didn't work on AMD + Windows-10, untested on Intel,
macOS. Not yet supported on Linux.
AdditiveBlendingForLinearSuperpositionTutorial and BitsPlusCSFDemo
show off the new mode on suitable gpu + os combos.
* Snd(): Allow better interop with PsychPortAudio via pahandle sharing. "help Snd" for explanation. Should also help with shared use of PsychPortAudio and Beeper() or PsychPortAudio and Eyelink tracker calibration/recalibration iff Eyelink audio feedback tones are used.
* OpenAL MOAL support improvements:
* Clean up moaldemo and AudioTunnel3DDemo a bit. moaldemo did not work under Octave on any machine other my own, duh!
* Fix use of OpenAL on Matlab R2015b and later: Broken, but never reported as broken by anyone.
* Implement all missing OpenAL 1.1 functions, e.g., various missing alGetXXX() functions that are rarely needed.
* DrawFormattedText2 with cache as input in cacheOnly mode, to transform text in cache without having it drawn to screen. Also some other bug fixes. By Diederick.
* ConfirmInfo and TwoStateQuery now work in GUI mode on R2014b and later. By Diederick.
* TwoStateQuery: Fix Octave GUI support for current Octave versions.
Linux:
* Priority(): Add support for Feral Interactive's gamemode optimizations. See "help LinuxGameMode" for setup instructions and detailed explanations. The short story is that if you install the FeralInteractive gamemode package on your Linux distribution, which is easy on Ubuntu 18.04 LTS, then calling Priority(n) with a real-time priority level n > 0 will trigger additional automatic optimizations of your Linux system for optimal real-time behaviour, low-latency, precise timing etc. Hardware I/O for Octave/Matlab is prioritized over other applications. Processors (cpu's) are switched into high-performance mode for more deterministic timing and compute performance. Supported graphics cards, currently modern models from AMD and NVidia, will be switched to high-performance mode as well. Priority(0) restores standard system operation for less real-time but more energy savings.
* XOrgConfCreator: Usability improvements.
* Try to workaround or at least warn about runtime environments which may cause trouble in multi-threaded operation, because the host application doesn't call XInitThreads() early enough during application startup. This problem was discovered with the PsychHID implementation on Python. It is fixed in current PsychoPy releases, and worked around for various other Python IDE's or the Python commandline interpreter. Turns out that Octave versions up to and including Octave 4.0.x (e.g,, shipped in Ubuntu 16.04 LTS by default!) and Matlab pre R2013b also have/had this problem. While Screen() has workarounds for this in place and PsychHID never caused trouble, this may mean we just got lucky. Ideally upgrading to Linux distros with at least Octave 4.2 (using QT-5 for its GUI) or Matlab versions of R2013b or later is recommended.
* AMD Vega-M gpu's should now get detected properly by low-level code to use our bag of tricks if needed. Vega-M is part of some high-end Intel processors.
* LoadIdentityClut(): Now should also work to load identity pixel-passthrough, e.g., for use with VPixx devices, with latest AMD gpu's of the DCE-12 Vega series and - starting with the upcoming Linux 5.3 kernel - also with latest AMD gpu's/apu's that have the new DCN-1/2 display engines, e.g., integrated AMD Raven / Vega11 in AMD Ryzen processors, or the brand-new AMD Navi gpu generation. These latter parts with DCN display engines are no longer supported by Psychtoolbox low-level setup code, as the default amdgpu display driver provides all the functionality we need - and more! This means though that we leave pixel-identity passthrough setup to the AMD display driver, so PTB must help the driver to do the right thing and validation is needed to make sure things stay in a good shape. Note this also means that DCN parts like Ryzen/Raven won't be suitable for use with special visual stimulators like VPixx devices until Linux 5.3 is released with neccessary enhancements, e.g., as part of Ubuntu 19.10 in October 2019.
* PsychHID: Allow keyboard queue cookedKeys to handle non-US keyboards. We now deal with other keyboard layouts than US properly. See "help KbEventGet" for remaining pitfalls or troubleshooting if extra configuration is required to make this work.
* GetChar et al.: Use KbQueue fallback under Linux + Matlab + KDE. Not sure when this happened, but at least KDE Plasma 5 under Ubuntu 18.04 LTS and later steals keyboard input focus from the Matlab window as soon as a fullscreen PTB onscreen window opens. Various attempts at preventing this failed, e.g., use of different config options in the KControlcenter, definition of suitable window rules for Matlab or PTB, code hacks... The net result is that Matlab will lose input focus on Linux+KDE, therefore Java based GetChar() will be starved of keyboard input.
Pragmatic solution: Detect if KDE is used as desktop GUI and use the kbQueue fallback, just like in matlab -nojvm mode, on Octave, and on Microsoft Windows.
Other options would be to use old-style override redirect setup for onscreen windows even on KDE single-display via Screen('Preference','ConserveVRAM', 2^25) -- but then one must manually (Shift+ALT+F12) toggle off the desktop compositor, which is clunky and easy to forget.
* VideoCapture: Fix use of dc1394src with GStreamer engine. Never worked. But is also kind of moot, as with pro class DC1394 cameras you should use our dedicated DC1394 firewire high-performance video capture engine. Anyway, cosmetic fixes are also fixes...
Windows:
* GetMouse can now also return "physical" mouse cursor position.
For the Windows version, return two valuator axis, which encode mouse cursor (x,y) position in what MS calls physical cursor coordinates. This is the returned (x,y) position from calling the windows api function GetPhysicalCursorPos(). This only works with Matlab, not with Octave due to limitations of Octave's MinGW runtime environment on Windows. As a side-effect, this also means Screen() won't work with WindowsXP 64-Bit anymore, Windows Vista is now an absolute must. Officially we don't support anything older than Windows-7 anymore, so this doesn't really matter.
Usage on Windows for additional physical coordinates:
[x,y,b,f,v] = GetMouse();
physicalX = v(1);
physicalY = v(2);
This may or may not help for use case from forum message 23845, fingers crossed!
macOS:
* PsychtoolboxKernelDriver: Add up to date, but unsigned, kext. This one is rebuilt from current source as of June 2019, so should support all AMD Polaris DCE-11.2 gpu’s used in Apples latest luxury toys, but not Vega gpu's with DCE-12 display engine, so the most expensive Apple gear will as of now also be the most dysfunctional. "help PsychtoolboxKernelDriver" for details. The updated driver for latest Polaris gpu's is not cryptographically signed or attested by Apple, so it will not load without SIP disabled. It may not even load automatically during system boot, requiring manual loading via kextload or kexttool after each reboot. The old driver is still shipping and this one is at least cryptographically signed - but not attested by Apple.
However, latest - and way too late for this release cycle - user feedback from testing with a Polaris class "Radeon Pro 560X" gpu under macOS 10.14 Mojave shows that these machines are just as broken in terms of visual stimulation timing and timestamping as most other Apple machines. Therefore the driver can only detect but not fix or workaround the breakage. Upgrading to Linux is strongly recommended on the subset of modern Apple machines that still allow to do that without major pain and problems.
* DownloadPsychtoolbox: Provide more hand-holding in case of outdated svn clients, as frequently shipping with the "most advanced operating system in the world".
PTB_Beta-2019-04-01_V3.0.15
Linux bug fixes and improvements:
* Fix bug of accidental activation of P-Sync visual stimulus onset timing method on Linux with AMD gpu's as a side-effect of the 'DrawDots' bug-fix for Mesa versions like Mesa 18.2.2 shipping in Ubuntu 18.04.2-LTS.
* Fix Matlab crash when using keyboard- or touch input queues with ridiculously small size. Fix for Linux only, although this would also crash on Windows and macOS, but no time for a quick fix there atm.
* Update Datapixx to the latest official release from VPixx. Linux only so far. No time for more atm.
General improvements:
* MakeBeep() Fix off-by-1 error in length of output generated, by Diederick.
* A couple of help texts slightly updated, some demos slightly refined.
* Delete some dead code, e.g., MOGL glmXXX functions and EventAvailTest.m
PTB_Beta-2019-02-07_V3.0.15
PTB beta update "P-Funk" mostly contains bug fixes, workarounds for OS bugs, minor improvements here and there.
General:
* Help text updates. Online docs improvements and updates.
* Bug fixes and minor improvements.
* Screen('DrawDots') optimize round dot rendering for dot_type 3.
* Screen('Transformtexture') fix some corner-case bug.
* DrawFormattedText/DrawFormattedText2: Suppress unicode warnings on Octave.
* DrawFormattedText2 enhanced by Diederick: Can now handle unicode text. Can now cache drawn text into internal texture for much faster redrawing of text that needs to be presented in multiple stimulus frames, misc other improvements and fixes.
* DrawFormattedText2Demo shows Diederick's new features, like fast text scrolling by redrawing from texture cache, and unicode rendering.
* The Brainard lab did random improvements to random stuff in PsychColorimetric, but without useful commit messages as usual, so i won't try to figure out what they did. Things changed, 'nuff said.
OSX:
* PsychPortAudio: Increase default sound output latency to at least 10 msecs for reqlatencyclass setting 0 and 1 (which is the default class setting). This to work around the latest macOS operating system bugs wrt. audio. Apples trainwreck reports being able to support latencies it can't actually handle, so on some Macs this leads to audio dropout and crackling sounds. Select a latency more compatible with the trainwreck, unless agressive low latency is requested with settings 2 and greater, or manually overriden with the suggestedLatencySecs parameter.
* Block use of PsychtoolboxKernelDriver for AMD gpu's with DCE-12 display engine for now, ie., Vega family, e.g., the most expensive 2018 MacBook"Pro" toy, and the absurdly overpriced iMac"Pro". DCE-12 is not yet supported in our low-level code for macOS and can't be validated without access to suitable hardware. This means that those machines are mostly unusable for exact visual timing and other tasks with need for precise control, and that many bugs can't be detected/worked around by Psychtoolbox.
Windows:
* Fix a potential crash-bug on recent Matlab versions, e.g., reported against R2018a, with the new PsychOculusVR1 driver for Oculus Rift CV1 VR HMD.
Linux:
* Fix AMD screen+output -> displayhead mapping for AMD gpu's driven by amdgpu-kms + DisplayCore on kernels later than Linux 4.15. Makes auto-detection of mapping for low-level access plug & play again.
* Add support for low-level access for AMD gpu's with DCE-12 display engine, ie. Vega family.
* Add low-level support for a few more upcoming AMD gpu's.
* Fix failure of Screen('DrawDots') to draw round dots if different point sizes across dots are requested and running on Mesa versions 18.1.0 - 18.3.1. Bug is properly fixed in Mesa 18.3.2 and later.
* Add highly experimental P-Sync support for some AMD gpu's.
PTB_Beta-2018-11-25_V3.0.15
The Psychtoolbox-3.0.15 beta update "Late Bloomer", apart from minor improvements, adds one piece of long awaited functionality, basic support for the Oculus VR Rift CV1 Virtual Reality headset for 64-Bit Microsoft Windows 7 and later. Two years later than i hoped, but better late than never...
Major new features: Windows only in this case.
* Finally adds support for the Oculus Rift CV1 and other Oculus VR products using the "new" v1 SDK and runtime. The new PsychOculusVR1() driver allows use of the Oculus Rift CV1 under 64-Bit Microsoft-Windows 7 or later versions with Octave 4.4.1 or Matlab. Use of Windows-10 is strongly recommended. Existing VR usercode should not need modifications if it uses the PsychVRHMD() high-level driver, as the new driver is as compatible to the old driver as possible, so the switch to a Rift CV1 should be basically plug & play. Example demos that should work are VRHMDDemo, VRHMDDemo1, SuperShapeDemo, MorphDemo, and as part of the separate Horde3DForPsychtoolbox package the HordeVRDemo. Classic "closed loop" VR with a tight stimulus presentation loop that uses Screen('Flip', win); should work well, as tested on Windows-10. Timed flips however, a la Screen('Flip', win, tWhen); with a target time more than a video frame in the future, may show unreliable timing. Timestamps returned by 'Flip' will be generally not very accurate or trusworthy, despite being self-consistent. Pausing animations for more than about a second will bring up the sandclock icon in the VR view. These are limitations imposed on us, because the Oculus v1 SDK allows for much less low-level control than our other VR drivers, ie. the old Oculus drivers for Rift DK1 and Rift DK2, or the PsychOpenHMDVR driver for Linux. It is unclear if this can be improved upon, but so far all my attempts failed due to SDK limitations or what might be bugs in the proprietary Oculus runtime / VR compositor for Windows, or in NVidia's proprietary graphics drivers for Windows. The new driver exposes support for VR input controllers like the Oculus Remote control, the XBox controller or the Oculus Touch controllers - the new demo VRInputStuffTest.m shows the new input capabilities.
Minor updates and improvements:
* Some help text updates.
* TextBounds(): Make usable with Unicode text.
* AppleVersion(): Make it less broken, but still pretty pointless.
* Remove Psychtoolbox3-Slides.pdf - it was utterly outdated.
* PsychJavaSwingCleanup: Try to cope with latest macOS Mojave bugs: On Mojave, onscreen windows get stuck after “window close”, because Apple. Probably new bugs in macOS 10.14 Window/GUI event handling. The hack is as awful as the operating system it tries to deal with. Use of macOS 10.14 is strongly discouraged and officially unsupported at this time.
* License and trademark doc updates.
PTB_Beta-2018-11-08_V3.0.15
Psychtoolbox 3.0.15 "The Shape of Things to come" is a substantial upgrade, collecting over 5 months of work, with potential backwards compatibility breaking changes especially for Windows audio support.
Apart from various small improvements and bug fixes these are the major new features and improvements:
* Substantial internal code refactoring.
* Initial port of a subset of Psychtoolbox mex files to Python:
* WaitSecs, GetSecs, IOPort, PsychHID and PsychPortAudio are ported.
* Python 2.7 and Python 3.5+ should work, but Python 3.6+ is recommended.
* Python extension binaries are not bundled with Psychtoolbox, to not further bloat the distribution, also because these extensions have to be built specifically for each minor Python 3.x release, due to limitations in Python's ABI compatibility. Local builds and installs can be done via standard distutils method, e.g., python setup.py install --user
* Basic Python support code and basic test code in the PsychPython subfolder of the root folder.
* Porting of these Psychtoolbox mex files to Python was financially supported by a contract with the University of Nottingham on behalf of Jon Peirce and the PsychoPy toolkit. Thank you!
* PsychPortAudio: Upgrade used libportaudio from our over 10 years old heavily modified branch to what is essentially the (almost) unmodified current upstream Portaudio v19.6.0-devel. This has different OS specific consequences - new features and improvements, but also loss of features - listed below. Various audio demos and tests have been refined accordingly. Small other improvements, e.g., one can now specify a fractional sampling frequency in 'Open' and debug/diagnostic messages have been refined.
* BitsPlusPlus improvements:
* Support two connected CRS devices for dual-display operation: New subfunction 'SetDualDevices' controls and describes the new functionality.
* Improvements to 'OpenBits' - handles, port specs.
* Screen: Remove restriction of valid refresh between 25-250 Hz. Also allow to skip "out-of-vblank" 2 msecs minimum waits before Flip via a new ConserveVRAMSettings flag. This allows to operate displays with more than 250 Hz refresh rate, or even more than 500 Hz, e.g., custom DLP devices, although the latter might be highly unstable on operating systems other than Linux.
* CreateProceduralSmoothedApertureSineGrating(): Clarify interactions with alpha blending. Documentation and demos got updated. With contributions from Matthew Krause. See GitHub issue 505 for more details and discussion (https://github.com/Psychtoolbox-3/Psychtoolbox-3/issues/505).
* PsychOptics: OtfToPsf(): Increase default tolerance for negative PSF values. (David Brainard)
Linux:
* This release is tested and known to work well on Ubuntu 18.04 LTS "The Bionic Beaver", which going forward is now the recommended Linux distribution. Ubuntu 16.04 LTS continues to be supported and tested, specifically Ubuntu 16.04.5 LTS. Ubuntu 14.04 LTS is less than 6 months away from its end-of-life and no longer receives any compatibility testing, but expected but not verified to work reasonably well. Please note that our upstream release may not work with Ubuntu 18.10 "Cosmic Coala" at least as tested with Ubuntu 18.10's Octave 4.4.1 due to potential ABI compatibility issues. You need to use official distribution packages built and provided by Ubuntu 18.10, or NeuroDebian provided packages of octave-psychtoolbox-3 once they become available.
* Screen: Improve detection of AMD gpu's under Mesa 18 and later on Ubuntu 18.04 LTS. Also now support AMD Vega 10, Vega 20 and Vega M for low-level control.
* Screen: Handle amdgpu-kms's DisplayCore code for engine detection. Make display detection and identity pixel passthrough work on latest generation AMD gpu's controlled by the new AMD DisplayCore driver. AMD RavenRidge APU's have a new DCN display engine, and PTB's low-level gpu control code is not tested/verified for compatibility with those new display engines. May or may not work.
* Fix multitouch touch screen input support on multi-X-Screen setups. This didn't work properly due to what i think is likely a X-Server bug. Now we work around the problem. Reported by multiple users to work now on single x-screen and multi x-screen setups with one or more touch displays.
* PsychPortAudio on Linux now dynamically links against the system provided libportaudio.so.2, e.g., version 19.6.0 on Ubuntu 18.04 LTS. This
* Allows for additional low latency optimizations for even lower latencies at requested latency class 3 or higher, e.g., less than 10 msecs on Intel HDA onboard sound chips.
* Supports use of the JACK audio server as an additional backend to the standard ALSA backend.
* It is so far untested if PsychPortAudio still works out of the box on Ubuntu 14.04 LTS, whose bundled portaudio library may or may not be too old, whereas support on Ubuntu 16.04 LTS is verified.
Windows:
* GNU Octave 4.2.0 is no longer supported. Psychtoolbox 3.0.15 now requires and supports the new 64-Bit Octave 4.4.1 (https://ftp.gnu.org/gnu/octave/windows/octave-4.4.1-w64-installer.exe). Psychtoolbox on Octave 4.4.1 has been tested with GStreamer 1.14.4. Due to incompatibilities between Octave and GStreamer you will need to delete the following DLL files in the C:\Octave\4.4.1\bin\ folder, or Screen() won't work properly:
* libglib-2.0.0.dll
* libgmodule-2.0.0.dll
* opengl32.dll
* wintabslowloop.m: Fix missing assignment/misasignment of pkt(9) when using WinTabMex() for accessing digitizer tablets. This allows to properly handle pen pressure information. However, user reporting suggests that the WinTab api is sometimes unreliable on some tablets and use cases.
* PsychPortaudio now uses a dynamically linked Portaudio 19.6.0-devel DLL from upstream:
* As this DLL is build with MSVC 2017, it requires the "Microsoft Visual C++ 2015 redistributable
Update 3", which may or may not be part of Windows-7 and later. I couldn't verify this due to lack of testing hardware.
* The proprietary ASIO sound API and backend is no longer supported. Note: "ASIO is a trademark and software of Steinberg Media Technologies GmbH."
* DirectSound backend support is also removed in this build.
* 'DirectInputMonitoring' is no longer supported.
* PsychPortAudio now supports the Windows WASAPI sound system on Windows Vista and later and uses it in low-latency/high timing precision mode. Microsoft documentation claims substantially improved performance for WASAPI compared to older legacy Windows backends(See https://docs.microsoft.com/en-gb/windows-hardware/drivers/audio/low-latency-audio). Testing on one machine with a Intel HDA onboard sound chip showed that millisecond accurate sound timing and sound onset timestamping is possible, with comparable precision to the former ASIO backend on pro sound hardware. On Windows-10, absolute latencies for sound onset of less than 10 msecs and bit-exact audio reproduction are possible for high settings of reqlatencyclass, whereas older versions of Windows are more limited, often to at least 20 msecs latency.
* Mapping of PsychPortAudio sound channels to hardware channels is now via the 'selectchannels' parameter of PsychPortAudio('Open', ...); on the WASAPI backend with Windows 7 - Windows 10. However, how well channel mapping works is so far untested. Mapping is not likely to be identical with the one formerly supported via ASIO, so scripts using the 'selectchannels' parameter may need to be adapted.
OSX:
* macOS 10.12 Sierra is no longer tested by myself. My development and main test system is now macOS 10.13 High Sierra, but testing is very limited due to ageing and partially defective hardware. Psychtoolbox is now built against the 10.14 Mojave SDK, but should continue to work on macOS 10.11 El Capitan, which however judging by the lack of critical security updates seems to have been declared end-of-life and abandoned by Apple. macOS 10.14 Mojave received some very light testing. Mojave seems to be the so far worst Apple operating system for visual stimulation. Testing on a Apple macMini 2012 showed visual stimulation to be completely broken.
* GNU Octave 4.2 is no longer supported. Psychtoolbox 3.0.15 now requires and supports the new 64-Bit Octave 4.4.1, as tested with the HomeBrew version (https://formulae.brew.sh/formula/octave)
* Screen: Workaround broken OSX Show/HideCursor support. Multiple invocations of HideCursor or ShowCursor no longer stack and behave like on real operating systems.
* PsychPortaudio now uses unmodified and statically linked Portaudio 19.6.0-devel:
* 'DirectInputMonitoring' is no longer supported.
* Mapping of PsychPortAudio sound channels to hardware channels is now possible via the 'selectchannels' parameter of PsychPortAudio('Open', ...);
* PsychPortAudio may now allow for a tad lower latency and better timing precision on modern Apple Macs due to some optimizations and fixes.
PTB_Beta-2018-05-26_V3.0.14
PTB BETA "Red Alert!" provides the following improvements and bug fixes.
Linux:
* XOrgConfCreator improvements:
* Handle multi x-screen setups better if modesetting-ddx video driver is used, as on latest Ubuntu 16.04.3+ LTS systems for Intel graphics chips.
* Force the NVidia proprietary graphics driver to report/allow VR HMDs instead of hiding them. By default such HMDs get hidden, unless a proper xorg.conf is created to force them to show up.
* Allow selection of color depth 30 on a per-x-screen basis. Not needed for AMD gpu's, but useful for NVidia proprietary and for future depth 30 support on NVidia open-source and Intel open-source drivers.
* Screen: Allow logging and delay of NVision3D trigger timing. setenv('PTB_NVISION3D_DELAY', 'SECONDS'); allows to delay trigger emission by SECONDS after vblank, in case we need to phase-shift the trigger emission. This will also swap emission of left-eye and right-eye triggers. This temporary debug setting should allow to better find out how to get this actually working ok'ish.
* Build fixes for latest Debian upstream.
* Minor improvements to low-level gpu control code.
* Add AMD DCE12 as supported display engine for low level functions - Untested due to lack of hardware, assumed to work like older generations DCE10/11.
* Screen: Disable GstDeviceMonitor/DeviceProvider support on Linux. It only provided minor to no benefit so far, we can easily do without it. This removal allows to build PTB on Ubuntu > 14.04 in the future while hopefully retaining backward compatibility for basic features to Ubuntu 14.04 for its remaining 1 year life-span.
Windows:
* Timeglue: Improve single-core locking on Windows. This to avoid a potential failure in very rare circumstances. In fact, only one failure incident was reported in over 10 years, not reproducible, so this may be a pointless improvement, but who knows?
OSX:
* GetMouseWheel(): Fix potential compatibility issue with some mice when using this low-level trickery. May or may not help. May or may not hurt.
* GetKeyboardIndices/GetKeypadIndices: Filter out locationID zero on OSX. Just like default logic for KbCheck does, to deal with the broken MacBookPro 2016+ touch-bar.
All systems:
* Fix a crash on Linux or MacOSX with Matlab R2018a if CTRL+C is pressed while KbQueues are active.
* PsychtoolboxPostInstallRoutine: No longer perform any online registration.
* No longer prompt for any participation in the 1st Psychtoolbox user online survey.
* Various help text updates. Various minor updates in debugging output.
* Ask(): Fix formatting / text alignment. Fix by user jonasvannijnatten.
* psychrethrow(): Handle MException objects.
* EyelinkGazeContingentDemo: Fix issues due to recent Matlab case sensitivity.
* New types of procedural shaders by Ian Andolina: Add smoothed edge disc and sine gratings, add square wave grating.
* LoadOBJFile: Fix error if texture coordinates or normal vectors are missing. Reported and partially fixed by user wangsen131. Additional fixups by kleinerm
* PsychPortAudio: Handle lifecyle issues and some other bugs. Fixes contributed by user bmtran. Some minor other improvements by kleinerm.
* Screen: Fix Screen('Close', window) logic.
* Screen: No longer report 'dacbits' in Screen('ReadNormalizedGammaTable') - it's bs. There's no way we can faithfully detect and report it, so just report 0 from now on as "I don't know". Better no info than wrong info.
* Fix creation of procedural shaders on multi-window, multi-screen setups under certain corner cases.
* PsychColorimetric: New function ComputeDE2000_Lab by David Brainard's lab. Other minor improvements, e.g., to SplineSpd().
* Quest: Improvements by Denis Pelli: "Enhanced to allow for monotonically DECREASING psychometric function. Formerly we assumed it was monotonically INCREASING. Now it can be either. This new feature has not been extensively tested.". Some optional animated graph for QuestDemo.
PTB BETA "Red Alert!" SP4
* New ProceduralSmoothedDiscMaskDemo by Ian Andolina.
* Small "help GStreamer" fix.
* Welcome splash is no longer asking for donations.
PTB_Beta-2017-10-08_V3.0.14
New features and improvements:
All:
* 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 insted 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 kbqueue flag 4 for raw motion event delivery.
* PsychPowerMate: New functions for background recording of knob turns and knob presses.
* 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/DaqDeviceFind: Improve USB-HID interface detection. This may make DaqDeviceFind 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.
PTB_Beta-2017-08-19_V3.0.14
Linux improvements and fixes:
* PsychOpenHMDVR: Fixes and hacks to make Rift CV1 work better. Add source of openhmdkeepalivedaemon.
* 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.
General improvements:
* 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.
PTB_Beta-2017-08-09_V3.0.14
PTB BETA release "Beamtenmikado"
New feature, for Linux only:
* 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 only tested with the Rift DK2 on standard PC and the RaspberryPi-2. Test with a CV1 was unsuccessful - the display didn't light up - although no such problems were reported by other users of OpenHMD, so may be a local problem. No other HMDs available for testing - HTC Vive or Sony PSVR results would be interesting.
General improvements for all OS'es:
* 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.
Linux fixes and small improvements:
* 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.
Windows fixes:
* 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.
PTB_Beta-2017-06-11_V3.0.14
All:
- 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 release-ready but unreleased new OculusVR driver for 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.
PTB_Beta-2017-05-12_V3.0.14