The Psychological
Experiments Laboratory

Hans Irtel



User Forum

Experiment Demos

Lab Course

Vision Demos


Timing Notes









April, 3, 2008 [2.1.19]:

Bugfix in display selection menu of the display editor.

March, 10, 2008 [2.1.18]:

We have a new Display object named HTTPRequest. This can be used to send an arbitrary HTTP request to any HTTP server and collect the server's response into an experimental parameter while the experiment is running. Usually the target URL will be a script which processes the information it gets and sends back some information to the running experiment.

A new timer type has been added: FIXED_DELAY_TIMER. It allows Display objects to be shown with a certain delay while the processing of all other Display objects goes on as usual. This makes it possible to to run a display list with arbitrary timing methods and concurrently show a single Display object at a given point in time. The delayed object is treated like a TRANSPARENT overlay and has no duration. Its Duration parameter actually is the delay being used. This allows a limited amount of concurrent processing. Since the delay object is TRANSPARENT it also makes it possible to selectively remove Display objects from the screen by overwriting it with blanks bars.

February, 28, 2008 [2.1.17]:

The VoiceKey response object now observes its local StopImmediately flag. The same holds for the VOICE_KEY_TIMER. The respective global flag is the global parameter VoiceKeyStopImmediately.

February, 27, 2008 [2.1.16]:

SAM scales are available in 5, 7, or 9 point versions now. A SAM demo has been added to the demo experiments.

January, 24, 2008 [2.1.15]:

Fixed bug in TextImage which resulted in position errors of mirror images at some rotation values.

November, 2, 2007 [2.1.14]:

Cleared some problems with color table files and fixed some errors in the manual.

Fixed bug in Import statement and allow imports of multiple design nodes. It is now allowed to import assignment groups, display list declarations and session, block, and trial nodes. It is also possible now to repeatedly import session, block, and trial nodes. This makes it possible to write sessions, blocks, and trials once and use it multiple times in a single design file.

Fixed aliasing properties of RatingScaleElement.

October, 17, 2007 [2.1.13]:

Enhanced the color device conversion package to allow for color tables. The color tables can be generated by the color calibration tool.

Addes some save/load features to the display editor for creating color target tables.

Fixed bug in de.pxlab.pxl.run.ExRunApplet which resulted in ignored command line options.

Added an example for sending applet data to a MySQL data base with php.

June, 20, 2007 [2.1.12]:

Added an encoding option to all demo applets. Maybe this helps Mac users to properly read the PXLab design files which have been created under Windows.

Changed ItemRanking to use the new screen button.

The new rating scale class is RatingScale. RatingScaleQuestion has been removed. Code classes for rating scale properties also have been renamed.

Implemented a screen button which works as an extension of a mouse button while mouse tracking is active.

Fixed intermediate bug in positioning of text and graphic rectangles with a position code.

Fixed bug in TextInputElement class when clearing a character in antialiasing mode. We have to clear the complete string rectangle which should also be more efficient than repainting the character with the background color.

Added class de.pxlab.pxl.data.Execute which is similar to de.pxlab.pxl.display.SystemProcess and allows the execution of any arbitrary external command during data analysis. Can also handle standard input and output streams of the external command.

June, 11, 2007 [2.1.11]:

Fixed the ItemRanking Display object.

Added the de.pxlab.awtx.Painter class to paint arbitray shapes and the GeometricPath Display object to show arbitrary 2D shapes.

Changed selection methods for PictureMatrix Display class: Can now use row overlay.

Fixed a bug in Display objects which automatically create Trial copies.

Fixed a bug in ExDesign which resulted in wrong information about the base URL of the design file.

April, 24, 2007 [2.1.10]:

Added a possible feedback delay to the TrackingTarget Display object.

Fixed bugs in and rewrote the following Display objects: ColorAdjustableHSB, DeviceControl, IlluminationDeviceControlDemo, TextImage, MultipleChoiceQuestion.

These Display objects have been added: FramedRod, DeviceControl which handles (almost) all external devices now,

The parameter FileName in a DataDisplay object is now relative to DataFileDestination and ProcessedDataDirectory.

Fixed the php script mailer.php which receives PXLab applet data and sends them to an arbitrary email address. Seems as if the php behavior had been changed recently.

Added some new response devices: polled devices like gamepads and joysticks, and the 3DConnexion SpaceMouse. These require special DLLs to access the respective DirectInput or proprietary device drivers.

Added mouse wheel support.

Removed references to non-Java timers.

Fixed bug in color adjustment GUI with 3 sliders: Changing the active slider did not preserve the current color coordinates.

October, 16, 2006 [2.1.9]:

Fixed bug in active session list creation for experiments which use multiple runs and multiple sessions for the same subject.

The Java export now works again. This makes it possible to compile experimental design files into Java source code and generate a jar-file which is a self-contained experiment and can be started by clicking on it with the mouse pointer.

October, 16, 2006 [2.1.8]:
Fixed bug in de.pxlab.pxl.calib.ColorCalibrationTool.
Added editing debug option 'edit' and made the design editor to show expression trees.
Still working on the design editor.

September, 05, 2006 [2.1.7]:
Added option -E to control input file encoding.
Enhanced statistical data analysis package in de.pxlab.stat. We now have applications to access most of the data analysis methods from the command line and apply them to data directories.

July, 17, 2006 [2.1.6]:
Added SubjectCode assignment from current value into the AssignmentGroup() which contains the session dependent parameter assignments of a dtr-file. If this is missing then SubjectCode values entered at runtime into a parameter dialog are not contained in a dtr-file.

July, 4, 2006 [2.1.5]:
Fixed some bugs in package de.pxlab.pxl.display.editor in order to make the VisionDemonstrations class work again. The applet version also works again now.

June, 20, 2006 [2.1.4]:
Fixed a bug related to media events. We now use two media timer devices: SYNC_TO_MEDIA_TIMER, and END_OF_MEDIA_TIME. The corresponding response codes are MediaEventCodes.SYNC_MEDIA when timing has been synchronized to a media player and MediaEventCodes.CLOSE_MEDIA when a player/recorder has closed the playing/recording stream. This also applies to the voice key timer.

March 16, 2006 [2.1.3]:
Moved the GretagMacbeth EyeOne Pro spectral distribution measurement tool into package de.pxlab.pxl.tools.eyeone
Allow Trial() display list arguments to define the column names of raw input data files when processing data with de.pxlab.pxl.run.ExStat.

February 14, 2006 [2.1.2]:
Added support for Scalable Vector Graphics (SVG) images and for an image cache.
Added some more mathematical functions to be used in expressions for parameter values.
Fixed a bug with newline characters in data tree output.
Fixed bug with application image file access on the local file system using absolute path names.

February 3, 2006 [2.1.1]:
Modified vertical reference point in Message display objects such that it refers to the message text base line. This better fits single line messages. Multiple line messages should use TextParagraph instead of Message.
Also fixed some formatting problems in the manual.

January 31, 2006 [2.1.0]:
Data processing support:
The PXlab input grammar has been extended to allow data processing objects being added to each procedure element. These objects get a table of the data collected and can do some data processing with it. The result of data processing is written to a new output file. Some basic statistical methods have been implemented. The main purpose of this feature, however, is to create data files which are more appropriate for widely used statistical software packages.
A new application (de.pxlab.pxl.run.ExStat) has been created which allows processing of multiple data files from an experiment. It reads PXLab data files and executes the data processing objects contained in the data files or in a separate data processing design file in the same context as the experiment has been run.

January 30, 2006:
Added the following mathematical functions to the expression parser: idiv, cos, tan, atan, sqrt, log, log10, exp, pow, abs, ceil, floor, round.

January 16, 2006:
Allow timer stop control by the currently active display object. This allows display objects to prevent a timer to stop their display period before a certain state has been arrived at. This is necessary in order to have display objects which must have certain response states before they may be stopped. An example is picture selection where at least one picture must be selected before the display can be stopped.

November 3, 2005 [2.0.1]:
Cleaned up the interaction between JOIN-overlay and Execute parameters both for JustInTime and preloadable display objects.
Fixed a bug which resulted in multiple calls to recompute() for JustInTime JOIN-overlay objects.
Fixed mechanism for automatically incrementing the build count with ant.

October 18, 2005 [2.0.0]:
The new version 2.0 archive files are on-line now. The design editor still is not yet updated but is able to run experiments.

September 5, 2005:
Put the experiments of the lab course on-line.

August 5, 2005:
The runtime core of PXLab 2.0 seems ready to be published. We have checked more than 50 design files now and found them to work as expected. The design editor is not yet updated but is able to run experiments. The display editor including the vision demonstrations also works properly but has lost its ability to show the demos in full screen mode.

July 12, 2005:
Started to set up the new WWW-page. Also began updating older design files for the laboratory course.

July 8, 2005:
Ran several timing tests using an oszilloscope, the external control box signal, and a light sensitive transistor mounted to the display screen. Results are satisfactory but not fool-proof. It seems that some understanding of PXLab's inner working is necessary to get optimized timing.

July 5, 2005:
Fixed a wide spread bug in the context of using the ExPar.set(ExParValue) method. This is no longer allowed. In order to set an ExPar to an ExParValue we have to use ExPar.getValue().set(ExParValue). This guarantees that the ExParValue stack of values is not broken by push()/pop() operations at runtime. A new but private method ExPar.setValue() has been introduced for replacing the ExParValue of an ExPar. This should only be done at startup or when ExPar.resetValues() is called to reset the runtime table of ExPar objects.

June 16, 2005:
Reworked the timing properties. It turned out that the java.lang.Object.wait() method has a granularity of about 16 ms under Windows XP and about 10 ms under Windows 2000 (www rumors say that it is 1 ms under Linux). Thus we implemented our own optimized wait method with 1 ms accuracy. This is done with pure Java but relies on Java 5 features. First tests show that timing at the 1 ms accuracy level and video synchronization are OK as long as every single display object provides at least 20 ms for preparing the next display object. Video synchronization still needs the DirectX based DLL library pxlab.dll and only works under Windows.

May 23, 2005:
PXLab now has been put under an Open Source Initiative license.

May 23, 2005:
Sound and video has been implemented. The sound recording feature also includes a voice key response timer.

February 24, 2005:
Implemented the new debugging options 'timing' and 'hrtiming' which create a high resolution timing protocol of display list presentation.

February 14, 2005:
Slight semantic change of the design file interpretation. The Procedure() node now is a display list node as any other of its subnodes. We may define the Procedue() and the ProcedureEnd() display list which are shown at the start and end of a run. The top level Procedure() node now has the same semantics as all other display list nodes. Only parameter values my be entered as argument values. The parameter names for the Procedure() node argument list is defined by the respective Procedure() display list.

When an experimental run is started then the parameters of the Procedure() node are pushed first and then the argument list of Experiment() is pushed. Thus Experiment() node parameter values override Procedure() node parameter values. Note that Experiment() node parameter values cannot be defined in the design file but may only be defined by external methods.

Parameters which are contained in the Experiment() argument list and do not have any value being defined at run time will be requested in the runtime parameter dialog as usual. The same holds for a covariate factor if it is not yet defined by the Experiment() node.

Covariate factors may have operationalization parameters. The meaning is that after all runtime parameters are defined the covariate factor level and its operationalization values are set for all operationalization parameters. This is done after Procedure() and Experiment() parameters have been set and before subject groups and sessions are assigned.

After the requested sessions have been run the parameters RemainingSessionGroup and RemainingSessionRuns are set such that the data tree contains information about the remaining sessions which have to be run for the given subject. Thus the last data tree of a subject may be used to figure out how to continue data collection at subsequent runs.

January 13, 2005:
Parameter value substitution in strings like "... %Response% ..." has been changed such that array valued parameters no longer must show up in the form [x, ...] which corresponds to the input syntax, but may simply be shown as a series of blank-separated values. This makes it easier to import data files into standard statistical packages. The syntax for getting this is to append a format character sequence "@b" to the name of the experimental parameter like in %Response@b%.

December 13, 2004:
Modified the main session loop such that

  • it is now possible to have argument values in the Experiment() node, and
  • a Session() node is executed only if the current SubjectGroup is contained in the current value of ActiveSubjectGroups.

Note that parameter value arguments to the Experiment() node may not be defined in the design file but must be defined by programs which are able to handle design trees. The design file, however, can contain parameter names in the argument list of an Experiment() node.

The runtime parameter dialog now asks only for those parameter values which are not yet defined in the Experiment() node. This means that the Experiment node decalaration in the design file contains the respective parameter name and the corresponding parameter value of the Experiment() node has bee set otherwise.

September 14, 2004:
Fixed a bug which generated jumps during color adjustment of ColorAdjustible objects. Also made sure that adjustment always stays within a sensible range of colors.

September 13, 2004:
Rewrote ExDesignTreeFactory class for generating compilable experimental design files.

February 5, 2004:
Finally fixed the bug which always showed data twice when running as an applet.

January 27, 2004:
This semester's laboratory course in experimental psychology has been run successfully with the latest Java 2 version of PXLab. Seems that we can finally make the transition to Java 2. The Java 2 version of VisionDemonstrations ist available from a subsection of the demos page. It requires that the browser has the Java 2 plugin installed.

August 18, 2003:
New version on the net: 0.8 build 503 compiled for Java 2 but should still be Java 1.1 compatible. Demos on the net still use the Java 1.1 archive since this is compatible with Internet Explorer.

August 7, 2003:
New version on the net: 0.8 build 476. Should still be Java 1.1 compatible. Uses double buffering by default for all display objects now.

July 30, 2003:
Rewrote the installation instructions of the tutorial. We now have a pxlab.properties file and can insert global parameter assignment files to initialize experimental parameters. These mechanisms may be used to adapt PXLab to the physical system properties of the monitor which is used as a display device.

Also reorganized the color device setup procedure to make sure that device setup from an experimental parameter file works as intended.

We finally are cleaning up the Java 1.1 version and intend to make the final move to Java 2. This means that the Java 1.1 version will no longer be updated.

June 26, 2003:
We now have overlay display objects which can be switched on at the beginning of a display list and remain visible until the list is finished. This may be used to add instruction messages to every display object of a display list. These overlay objects are appended to every timing group of a display list.

We use full screen exclusive mode painting on Java 2 systems now and allow display screen selection for systems which have two monitors connected.

Fixed problems with the new KeyboardFocusManager of Java 1.4. in full screen mode.

Can now use the high resolution timer implementation of Java3D. It works for the Windows DirektX implementation of Java3D, but I have not yet been able to test other implementations of Java3D.

Can now initialize the experimental parameters from an ASCII property file.

Rewrote the color device setup such that device primary coordinates and gamma correction parameters are initialized properly from the experimental design file.

Finally cleaned up some spurious AWT paint() events which interfered with display list presentation.

April 16, 2003:
We now use four archive files to distribute PXLab: a minimal runtime package, a demo and a documentation package, and the source archive.

April 14, 2003:
The new WWW site is up.

April, 02, 2003:
Use the POST method of the HTTP protocol to send data to the server which are collected by experiments running as applets. This solves the problem of size limitations with the GET method.

March 05, 2003:
Serial communication line support: We can now send messages to devices connected to a serial communication line and receive responses from the device. Current application is a color measurement device which gets a trigger command and sends back the color measurement data.

March 05, 2003:
New WWW site design. Also starts this file.