MGL
Mgl is a suite of mex/m files for displaying visual psychophysics stimuli and writing experimental programs in Matlab. Runs on Mac OS X (G4/5 and Intel 32 and Intel 64 bit OS Versions 10.5-10.7) Version 2.0. An older version 1.5 runs on Linux.
A quick overview
mgl is a set of matlab functions for dispalying full screen visual stimuli from matlab. It is based on OpenGL functions, but abstracts these into more simple functions that can be used to code various kinds of visual stimuli. It can be used on Mac OS X systems (a Windows beta is in the works and an older but fully usable version (1.5) exists for Linux).
- mgl contains a set of higher-level routines for helping you write stimulus programs which takes care of parameter randomization, timing of trials, synching with MRI scanners, collection of eye data etc.
- Stimuli can be displayed full screen or in a window (helpful for debugging on a system that only has one display).
- With a single command that specifies the distance to and size of a monitor, the coordinate system can be specified in degrees of visual angle, thus obviating the need to explicitly convert from the natural coordinate frame of psychophysics experiments into pixels.
- You can read and write digital signals with National Instruments digital I/O boards (see here).
- You can set the gamma table for example to linearize the output of your monitor.
- You can calibrate monitors automatically through serial connection to a PhotoResearch PR650, Minolta or Topcon photometer (see here).
- You can get accurate keyboard and mouse event information.
- You can play sounds.
- You can play quicktime movies.
- You can control multiple screens for example to control stereo displays.
- mgl is 64-bit compliant, except for the National Instruments code which relies on 32 bit libraries provided by the manufactures.
- mgl works with the latest versions of Mac OS X (10.5-10.7) and with the latest versions of Matlab (7.4-7.12) as of 10/21/2011. In general, we stay reasonably up to date with releases of Mac OS and Matlab. If we encounter any compatibility issues, that information will generally be posted here.
The best way to see whether it will be useful to you is to try out the mglTest programs and also the sample experiment testExperiment. A basic “hello world” program can be written in four lines:
% Open the screen, 0 specifies to draw in a window. % 1 would be full screen in the main display % 2 would be full screen in a secondary display, etc... >> mglOpen(0); % Select the coordinate frame for drawing % (e.g. for a monitor 57 cm away, which has width and height of 16 and 12 cm). >> mglVisualAngleCoordinates(57,[16 12]); % Draw the text in the center (i.e. at 0,0) >> mglTextDraw('Hello World!',[0 0]); % The above is drawn on the back-buffer of the double-buffered display % To make it show up you flush the display. % This function will wait till the end of the screen refresh >> mglFlush;
When finished, with displaying the stimuli, you simply close the screen:
>> mglClose;
