Configuration file

The configuration file QDSpy.ini defines the environment in which stimuli are presented. Many of these parameters are hardware-specific (e.g. whether or not a lightcrafter or an digital I/O card is used) and need to be adjusted and/or optimized to the setup/experimental situation.

Deleting the QDSpy.ini file triggers QDSpy to generate a new file from standard values during the next program start.

This is an exemplary configuration, with brief explanations interspersed:


This section describes how the stimuli are presented on the current system (geometry-wise).

float_refresh_frequency_hz = 60.0

This parameter is mainly to inform QDSpy what refresh rate is expected but the program does not try to change adjust the refresh rate of the system; it has to be consistent with the that set for the graphics card.

int_screen_width_pix = 640
int_screen_height_pix = 480
int_center_offs_x_pix = 0
int_center_offs_y_pix = 0
float_center_rotation_deg = 0.0

These lines give the size of the presentation window, If either of the dimensions is zero, QDSpy generates a full-screen window occupying that screen. Together, int_center_offs_x_pix and int_center_offs_y_pix provide the offset of the stimulus screen centre, float_center_rotation_deg the rotation angle. The latter three parameters are for alignment purposes and also be changed via the GUI.

float_scale_x_um_per_pix = 0.5
float_scale_y_um_per_pix = 0.5

Stimulus scaling in micrometers per pixel.

int_screen_index = 0

The index of the display that shows the full-screen stimulus. Note that Windows counts the displays starting from 1, here the index starts with 0.

bool_disablefullscrcmd = True

Internal parameter with respect to OpenGL implementation. Ignore and do not change.

int_window_left_pix = 20
int_window_top_pix = 20

Top left position of the non-full screen stimulus window, in pixels.


The [Overlay] section contains parameters for a dual-display configuration.

bool_use_screen_overlay = False

Screen overlay mode is active if True and full-screen mode selected in the [Stage] section (see above).

int_screen_index_gui = 0

The index of the screen with the GUI.

int_screen1_2_width_pix = 1824
int_screen1_2_height_pix = 1140

The width and height of the combined overlay display, e.g. when using two lightcrafters with native resolution, use the values above.

int_x_offset_screen1_pix = 0
int_y_offset_screen1_pix = 0

Any offset of the screen #1 (the left screen/lightcrafter) relative to the top/right corner of the GUI display.

int_x_offset_screen2_center_pix = 0
int_y_offset_screen2_center_pix = 0

Any offset between screen #1 and screen #2 (right screen/lightcrafter) centre.


This section contains parameter relevant for stimulus presentation timing.

bool_incr_process_prior = True
bool_try_forcing_fsync = True
bool_disable_garbage_collector = False
float_gui_time_out = 5.0

These parameters influence how reliably the stimulus timing is, i.e. with respect to frame drops. Please do not change these parameters unless you know what you are doing. A few dropped frames at the beginning of a stimulus (e.g. when a movie is being loaded) are normal, but later during the stimulus no presentation frame drops should occur). Finally, float_gui_time_out (in seconds), deals with potential problems when loading very large stimuli.

bool_track_timing = True
bool_warn_when_frames_dropped = True
float_frame_dur_threshold_ms = 5.0

By default, QDSpy records the timing and warns if frames where dropped. By changing float_frame_dur_threshold_ms, the warning behaviour can be adapted (e.g. to report only grave delays between two frames).

bool_use_digitalio = False
str_digitalio_board_type = PCIDIO24
int_digitalio_board_num = 0
int_digitalio_device_num = 6
str_digitalio_port_out = A
str_digitalio_port_in = CLO
str_digitalio_port_user_out = B
int_digitalio_pin_markerout = 2
int_digitalio_pin_triggerin = 0
str_digitalio_pin_userout1 = 3, drug, 1
str_digitalio_pin_userout2 = 4, n/a, 0

These parameters need to be adjusted when a digital I/O board is used to provide a stimulus synchronisation signal (“trigger”). See Digital I/O for details.

Since v0.76 a new parameter str_digitalio_board_type is available. It can currently assume one of three values: PCIDIO24 and USB-1024LS sends the trigger to the usual digital I/O board from Measurement Computing, whereas Arduino aktivates the support for Arduino-type boards.

Since v0.77 new parameters are defined: str_digitalio_port_user_out defines the port for user-defined TTL output signals. The parameteters str_digitalio_pin_userout1 and str_digitalio_pin_userout2 define how the two user pins are to be used: They need to contain a comma separated list of pin number (0 to 7), a string for the GUI button (e.g. “puff”), and a number that indicates if the pin action is inverted (=1) or not (=0).

The Arduino support is experimental:

  • only tested with an Arduino UNO

  • baud rate of 115200

  • trigger out via pin 13

  • int_digitalio_board_num must be equal the number of the COM port the Arduino is connected to.

  • useer pins are not yet implemented


str_shader = .\Shader\
str_stimuli = .\Stimuli\
str_application = .\
str_logfiles = .\Logs\

These parameters determine some relative paths (relative to the QDSpy folder) used by the program.


This section deals with parameters that influence how colours and intensities are presented.

bool_use_lightcrafter = False
str_led_names = orange, UV1, blue1, UV2, green, blue2
str_led_filter_peak_wavelengths = 610, 380, 450, 400, 590, 450
str_led_device_indices = 1, 1, 1, 0, 0, 0
str_led_indices = 0, 1, 2, 0, 1, 2
str_led_default_currents = 15, 16, 17, 18, 19, 20
str_led_max_currents = 100, 100, 100, 100, 100, 100
str_led_qtcolor = darkYellow, darkMagenta, darkBlue, darkMagenta, darkGreen, darkBlue

These parameters are only relevant if a lightcrafter is used as display device. Two lightcrafters can be controlled (see [Overlay] section), therefore each of the parameters contains a list of up to 6 values (= two devices with three LEDs each). When only one lightcrafter is used, three values per parameter are sufficient.

LED names (str_led_names), peak wavelengths (str_led_filter_peak_wavelengths) as well as name of colour (str_led_qtcolor) are just for the representation of the respective GUI elements.

str_led_device_indices (0 or 1) and str_led_indices (0, 1, or 2) indicate which LED in which device is described. str_led_default_currents define the LED currents (0..255) at QDSpy start and str_led_max_currents the current setting limit for the GUI (0..255).

bool_allowgammalut = False
str_usergammalutfilename = defaultGammaLUT

Defines if gamma correction is used and which file contains the look-up table (see also Gamma correction and Gamma correction (installation) for details)

bool_markershowonscreen = True
str_markerrgba = 255,127,127,255
str_antimarkerrgba = 0,0,0,255

Defines if the synchronisation marker (“trigger”) is displayed in the lower right corner of the stimulus screen and what color (and alpha value) it has. str_antimarkerrgba defines the colour of the “anti” marker, which “blanks” the marker area on the screen when the marker is not displayed. This prevents large stimuli from interacting with the marker display.

bool_use_control_window = False
float_control_window_scale = 0.2

Defines if the stimulus should be displayed in an additional window next to the GUI. Note that depending on your graphics card and how well the refresh rates between the different displays match, turning on this feature can hamper with stimulus presentation performance (e.g. frame drops).


bool_use3dtextures = 0
bool_recordstim = 0
str_window_geometry_cam = 0, 30, 300, 20
bool_allow_camera = False

These parameters influence performance or are experimental. Please do not change these parameters unless you know what you are doing.