CroftSoft / Library / Software


David Wallace Croft

2007 Nov 30 Fri


CroftSoft Infant is Open Source software which presents visual stimuli to infants and reacts to their responses via a pacifier connected to a pressure transducer. It has been used to collect research data from newborn infants. If you would like the documentation or code updated, please contact David Wallace Croft.

Here is a QuickTime movie demonstrating an early version of the software responding to pacifier input:


A fellow Java programmer pointed out to me that the device poses a strangulation risk. From the picture, we can see that the tubing connecting the pacifier to the air pressure transducer and the cable connecting the transducer to the joystick port on the computer could become wrapped around the neck of the infant. I reassured him that the device would only be used in scientific research and that the child would not be left unattended. If you build and employ a similar device, you should be aware of this risk and ensure that the child using the device is attended at all times. A long-term solution might be to integrate the pacifier and transducer with a wireless transmitter such that no tubing or cord is required.


The application is downloaded, installed, and launched by clicking on the screenshot image at the top of this webpage or this link. If the download fails, the user should verify that a recent version of Java has been installed on the computer.


The first time the program is launched, it will create a subdirectory under your home directory called .croftsoft/infant/images. It will then copy three example image files to that directory. You can replace the files in this directory with any number of your own in any common image format.

The image names in the directory are sorted in alphanumeric order. After sorting, the first is used as the background image (e.g., "background.png"). The second and following are used as the images to be presented in sequence ("image001.png", "image002.png", ..., "image010.png", etc.).

In the Control Panel, click on the "Display" or "Start" button to bring up the Stimulus Window. The background image will be displayed. Position the Stimulus Window so that it does not overlap the Control Panel.

Squeeze on the pacifier input device and then release to display the first image. Squeeze and release it again to display the next image. If you do not have the pacifier connected, you can press and release the spacebar key on the keyboard to test the system. Note that it is the release, not the initial squeeze, that is considered the event trigger.

The image will be displayed after the pacifier is released for a duration which is specified in the input area on the Control Panel. The length of time is given in units of seconds. The initial default value is 0.4 seconds (400 milliseconds). If you change the duration, the change will be saved to a configuration file when you exit the program.

If the pacifier is squeezed and released again within the 400 ms window, the same image will continue to be displayed. If not, the display will return to the background image after the elapsed time. The next time the pacifier is squeezed and released, a stimulus image will be displayed again.

If the period between pacifier releases is less than the interstimulus interval (ISI) setting, the stimulus image will remain the same. If the period is greater than the ISI, the next stimulus image in the sequence will be displayed.

The "Start" button logs the start time on the Control Panel and resets the image array index to the first image in the series as sorted alphanumerically by filename when the program was first started. The start and stop times of the images presented are also logged. The times recorded in the log are only given to the nearest second as the clock used for this purpose is of a low resolution.

The clock used to time the image durations is of a much higher resolution. The update loop which is timed off of the high resolution clock is programmed to run at 100 updates per second so the image duration resolution is around 0.01 seconds. For a given duration of 0.4 seconds, the actual image display time should be between 0.39 to 0.41 seconds after the pacifier is released.

Open Source

The source code is available for reuse under the terms of the Academic Free License.


Ana-Maria Mata-Otero, a graduate student in Behavioral and Brain Sciences at the University of Texas at Dallas, was using an old software and hardware configuration which needed to be replaced. She recruited Lawrence J. Cauller, Ph.D. who in turn recruited his graduate student David Wallace Croft to help her. Unfortunately, there was no documentation and no source code available for the previous system.

Dr. Cauller and Mr. Croft were able to figure out how to read data from the pressure transducer using these wiring instructions and the JInput API. Dr. Cauller wired the pressure tranducer including the addition of an external knob to fine-tune sensitivity. Ms. Mata-Otero, as the Subject Matter Expert, provided the software requirements specification and feedback during the development process. Mr. Croft programmed the software and created this webpage documentation. Both source code and webpages are archived in an Open Source repository so that the system should not have to be rebuilt from scratch in the future.

An example of research this has employed this type of input device in the past includes that of Michelle Barrile, Erika S. Armstrong, and Dr. Thomas G. R. Bower of the University of Texas at Dallas, as documented in the paper "Novelty and frequency as determinants of newborn preference", Developmental Science 2:1 (1999), pp 47-52.

Ms. Mata-Otero reported that she was able to use CroftSoft Infant to collect research data from newborn infants in support of her doctoral dissertation.

Open Source

CroftSoft Code Library
JInput API


Tomi Engdahl, "PC joystick interface circuits", 2005-01-13, viewed 2006-01-10,
CroftSoft Web


Creative Commons License
© 2007 CroftSoft Inc.
You may copy this webpage under the terms of the
Creative Commons Attribution License.