High compatibility with different versions of Windows, graphic cards and modes
ActiveSTIM is designed for Windows programming environment and care was taken that it is compatible across different versions. ActiveSTIM has been extensively tested and used on Windows 98, NT, 2000 and XP.
ActiveSTIM relies on DirectDraw technology for its graphical operations. This technology was initially developed for the purpose of high compatibility of computer games across different graphic cards. Today, all of the major manufacturers of graphic cards support DirectDraw and therefore, enable ActiveSTIM to directly access to the hardware graphic accelerators. As a consequence, ActiveSTIM can work with virtually every graphic card without any need for additional configuration.
ActiveSTIM can work with all the graphical modes that are available on the system (i.e., screen resolution and color depth). With newer models of graphic cards ActiveSTIM can also directly select the screen refresh rate.
We recommend using high performance graphic card.
Experiments are controlled from a programming language of user’s choice
Here we provide and example of how the command for setting the screen graphic mode looks in different languages. In this example the graphic mode is set to 1024x768 pixels, 8-bit color depth and 100 Hz refresh rate. Click on name of programming language to see further details.
AStim.Set 1024, 768, 8, 100
AStim.Set (1024, 768, 8, 100);
AStim.Set (1024, 768, 8, 100);
AStim.Set (1024, 768, 8, 100);
invoke (AStim, 'Set', 1024, 768, 8, 100);
ActiveX technology also enables the client application to control ActiveSTIM over local area network (LAN). This provides additional flexibility in the development and debugging of the client applications. The ability to control ActiveSTIM remotely also enables one to monitor the progress of the experiment from another computer or another room and to easily integrate visual stimulation software with other software applications in the lab with which it might be interdependant.
ActiveSTIM manual describes how to setup client-server control over local area network and also includes a programming tutorial that is written in a pseudo code and that can be easily translated into another programming language.
Flexible management of bitmap files, creation of movies
ActiveSTIM loads a number of bitmap files into memory and prepares them for fast presentation on the screen. The amount of memory that can be occupied by images is limited only with the total RAM available on the computer (the memory on the graphic card + the main memory of the computer). Each image is assigned an index which is used by other functions to referring to this image.
ActiveSTIM can also organize multiple images into a film (movie). Films can be built from multiple bitmap files but can be also made by cutting film frames from larger bitmaps (see the illustration for sinusoidal grating). Films are also assigned indexes that are used in a similar way as those for images. During presentation, ActiveSTIM aligns the frames of the film with the frames of the screen.
ActiveSTIM manages in addition:
- Color palettes (8-bit mode),
- Transparency and
- Drawing order of multiple images.
Stimulus accuracy based on individual screen frames
The time at which ActiveSTIM functions will be executed is always specified in the screen frames. Thus, the stimulus presentation has the temporal accuracy that is maximum possible achievable for the given hardware.
The following example line calls the function for presenting an image with index 3, at the 50th screen frame and centered at the x-y coordinates 500 and 300.
AStim.ShowObject( 3, 500, 300, 50 )
The TTL pulses that can be used for synchronization with other laboratory equipment are precisely aligned with the stimulus events. The following function will send a TTL pulse that lasts for 1 ms at the line 0 of the digital port and simultaneously with the presentation of object 3 from the preceding example.
AStim.Trigger( 0, 50 )
Take a closer look at ActiveSTIM architecture.
High temporal accuracy of ActiveSTIM is achieved through lean and optimized code and a high-precision timer that monitors all the events. If the computer cannot achieve desired temporal accuracy (i.e., the graphical operations take longer than the time available between the screen frames), the client application will be informed. In this case it is necessary to scale down with the graphical demands or to upgrade the system with hardware that has better performance.
Digital I/O through National Instruments boards
In order to achieve high accuracy digital I/O operations ActiveSTIM relies on National Instruments (NI) boards. ActiveSTIM setup recognizes and lists all NI boards installed on the computer. The user canselect the board that will be used by ActiveSTIM and configure its ports for either input or output functions. The drivers for NI boards also provide compatibility across different version of Windows operating systems.
Digital I/O functions:
- Changing states of the output port
- Monitoring changes on the input port
- Sending TTL pulses (1 ms duration)
National Instruments board recommendation.
Response times measured with up to 10 µs accuracy
ActiveSTIM uses two different models for measuring response times. If it is not necessary to make changes on the screen while ActiveSTIM is waiting for a behavioral response (steady stimuli), all the resources can be used for monitoring the digital board. In this case the accuracy with which response times are measured is well below 1 ms and usually below 10 microseconds.
ActiveSTIM can also update the frames of the presented films and monitor the digital board, in which case it checks the state of the digital board in the intervals of 1 ms. In this case, responses are collected with the accuracy of around 1 millisecond.
Short development time
The very idea of the ActiveSTIM concept is to enable the users who are already familiar with one programming language to design their own programs for accurate visual stimulation by investing very little additional effort. Such users do not need to invest time learning a new programming language.
The users who are not familiar with programming have the freedom of choosing the programming language with which they will start. Their choice might depend on the availability of the programming environment, personal preferences or simply recommendation. For example, Visual Basic is an integral part of Microsoft Office and therefore, every computer running Excel or Word can be used for controlling visual stimulation without imposing additional costs for a compiler.
Finally, the users who are familiar with ActiveSTIM functions and have already written their own code for controlling ActiveSTIM enjoy the ability of creating new visual stimuli quickly - very often within minutes. This provides a great power for researchers by enabling them to quickly test new ideas and to develop new full-scaled experiments within a short period of time.