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
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
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
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
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
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
Fixed bugs in and rewrote the following Display objects:
ColorAdjustableHSB, DeviceControl, IlluminationDeviceControlDemo,
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
Added editing debug
option 'edit' and made the design editor to show expression
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
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
Added some more mathematical functions to be used in expressions for
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
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,
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
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
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
September 5, 2005:
Put the experiments of the lab course
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
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
- it is now possible to have argument values in the Experiment() node,
- 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
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
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
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
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
March 05, 2003:
New WWW site design. Also starts this file.