High compatibility with different versions of Windows, graphic
cards and graphic 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
ActiveSTIM is designed and optimized for communication with
other applications through ActiveX technology. This offers
to the user a choice between a number of programming environments
that can be used for writing client applications and the control
of experiments (e.g., Visual Basic, Visual C++, Borland Builder,
Borland Delphi, Matlab, LabVIEW, JavaScript). ActiveSTIM comes
with demo source code of client applications written for many
major programming platforms. Hence, the users who are already
familiar with one of the programming languages can quickly
learn how to make an ActiveX connection to ActiveSTIM and quickly
begin creating their own experiments.
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.
Visual
Basic AStim.Set 1024, 768, 8, 100
C,
C++ AStim.Set (1024, 768, 8,
100);
Borland
Delphi AStim.Set (1024, 768, 8, 100);
JavaScript
AStim.Set (1024, 768, 8, 100);
Matlab
invoke (AStim, 'Set', 1024, 768, 8, 100);
LAN Connection
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.

(click for larger picture)
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.
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 can
select
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.