# #Last update: 2006/06/30 SR #Updated for Version 1.01 # #======================================================= # At startup the program is looking for a ContStimMaster.ini file in the directories: # C:\WINNT # C:\WINDOWS # - the first file found is used # # Example of ContStimMaster.ini: # == Begin == #[contstim] #IniFile=C:\users\rebrik\contstim.ini # == End == # IniFile is a complete path to the file with contstim parameters. # If the file specified in IniFile is not found, ContStimMaster.ini is used, # so it can contain all contstim.ini parameters if needed # Warning: ContStimMaster.ini is read only ONCE at the program start, so if # ContStimMaster.ini is changed, the program has to be restarted # for the changes to take effect #======================================================= #contstim.ini file # #SECTIONS: [Setup] [Log] [GammaCorrection] # [contstim] [EpisodicGratings][Bitmap] # [Sync] [TTL] [Trigger] # #------------------------------------------------------- [Setup] #Note: paramters in this section are read only once at #the program startup, they are not reloaded on parameter #initialization #"iSetupDIO","1",iSetupDIO # Initialize DIO board. Note: should be set to 1 for TTL or DIO use iSetupDIO = 1 #"iSetupUDP","1",iSetupUDP # Initialize DIO board. Note: should be set to 1 for UDP sync use iSetupUDP = 1 #------------------------------------------------------- [Log] #"blnIgnoreMissedFrames", "0",z_blnIgnoreMissedFrames # Ignore missing frames, do not stop when there are too many. # Useful for debugging on slow computers blnIgnoreMissedFrames = 0 #"blnWriteLogFiles", "1",z_blnWriteLogFiles # Save ini files on every stimulus run blnWriteLogFiles = 1 #"strLogFilesDir", "c:\\Temp",z_szLogFilesDir # Directory where to save the log. It should exist strLogFilesDir = "c:\temp\constimlog" #------------------------------------------------------- [GammaCorrection] #"MonitorIntensitiesFile", "", str # File containing output intensities versus color index # It has 256 lines in the format: #ColorIndex MonitorIntensity #Example: #123 45.78 #Lines are ordered by color index (0 to 255) #If no file is specified a default identity dependency is used #resulting in no gamma-correction MonitorIntensitiesFile = "Y:\work\Stryker\ContStim\MonitorCalibration\Nokia445X_HSE839_2.txt" #------------------------------------------------------- [contstim] #---> Monitor settings #"monitorwidthcm", "40", monitorwidthcm # Screen width in centimeters. If specified, is used to calculate pixelwidthum monitorwidthcm = 40 #"monitorheightcm", "30", monitorheightcm # Screen height in centimeters, not used. # All angles are calculated from the horizontal dimensions, # pixels are considered to be square monitorheightcm = 30 #"MonitorResolutionWidth", "1024", display_width # Horizontal number of pixels. Used to set videomode, # also used to calculate pixelwidthum MonitorResolutionWidth = 1024 #"MonitorResolutionHeight", "768", display_height # Vertical number of pixels. Used to set videomode. MonitorResolutionHeight = 768 #"screendistancecm", "40.0", screendistancecm # Distance from the monitor in centimeters screendistancecm = 40 #"refreshratehz", "60.0", refreshratehz # Monitor refresh rate in Hz # NOTE: In versions <0.002 2005/07/07> and higher it DOES set the refresh rate! refreshratehz = 60 #"blnSetRefreshRate", "1", blnSetRefreshRate # When blnSetRefreshRate = 0 refresh rate is not set by contstim. Default is 1 (Do Set) # If blnSetRefreshRate = 0 double check that is set to actual refresh rate. blnSetRefreshRate = 1 #"contrastpct", "80.0", contrastpct #"backgroundpct", "50.0", backgroundpct # Contrast in percent and background in percent # Background and foreground brightnesses are calculated from # these parameters as follows: # fore=((backgroundpct+backgroundpct*contrastpct)*2.55); # back=((backgroundpct-backgroundpct*contrastpct)*2.55); # Brightness is clipped in software to fit in 0-255 range contrastpct = 100 backgroundpct = 50 #"BoundBoxCenterXDeg", "0.0", dBoundBoxCenterXDeg #"BoundBoxCenterYDeg", "0.0", dBoundBoxCenterYDeg # Center of the box (in degrees) in which stimulus is displayed # 0,0 corresponds to the screen center # X -axis: right shift - positive, left shift - negative # Y- axis: down shift - positive, up shift - negative BoundBoxCenterXDeg = 0 BoundBoxCenterYDeg = 0 #"BoundBoxCenterWidthDeg", "20", dBoundBoxCenterWidthDeg #"BoundBoxCenterHeightDeg", "15", dBoundBoxCenterHeightDeg # Size of the box (in degrees) in which stimulus is displayed #BoundBoxCenterWidthDeg = 57.3 #BoundBoxCenterHeightDeg = 42.97 BoundBoxCenterWidthDeg = 40 BoundBoxCenterHeightDeg = 40 #---> Phase settings #"iniangle", "0", z_dPhase0_Beg # Starting phase of a sequence in cycles. # Meaning of sequence is stimuls-specific, see below. iniangle = 0.0 #"finangle", "5", z_dPhase0_End # Final phase of a sequence in cycles. # Meaning of sequence is stimuls-specific, see below. finangle = 50 #"anglecycle_min", "0.2", anglecycle_min # Rate of orientation sweep in orientation cycles (360deg. each) per minute # e.g. anglecycle_min = 0.1 is 360 degrees in 10 minutes anglecycle_min = 120 #"tfcycle_min", "1.0", z_dTF_CyclesPerMinute # Rate of temporal frequency sweep, cycles per minute tfcycle_min = 2 #"sfcycle_min", "1.0", z_dSF_CyclesPerMinute # Rate of spatial frequency sweep, cycles per minute sfcycle_min = 2 #"BitmapPeriodSec", "8.0", dBitmapPeriodSec # Duration of display of one sequence of bitmaps in seconds. # Each bitmap is displayed for BitmapPeriodSec/N_Bitmaps BitmapPeriodSec = 10.0 # Note: in drifting gratings, phase rate is controlled by # the temporal frequency: tfcycle_sec # Temporal frequency of a grating in Hz (cycles per second) #---> Gratings settings #"blnSineGratings", "0", blnSineGratings # Selects whether to use square grating (0) or # sine grating (1) blnSineGratings = 1; #"striperatio", "0.5", striperatio # Fraction of the spatial period occupied by a stripe (bright part of the grating) striperatio = 0.4 #"direction_deg", "0.0", direction_deg # Direction of movement in degrees. 0 is from left to right, 90 is from bottom to top direction_deg = 0 #"sfcycle_deg", "0.2", sfcycle_deg # Spatial frequency of grating in cycles/degree # 0.017453302 = 1 cycle of 1024 pixels on 40cm wide screen viewd from 40 cm #sfcycle_deg = 0.217453302 sfcycle_deg = 0.05 #"tfcycle_sec", "2.0", tfcycle_sec # Temporal frequency of a grating or drifting circles in Hz (cycles per second) tfcycle_sec = 0.01 #"blnOldStripePhaseCompatibility", "1",blnOldStripePhaseCompatibility # In old compatibility mode Phase = 0 when the stripe is in the center, # otherwise Phase = 0 when the down-up transition is in the center # ( 0 degree direction, moving left-to-right, dark left, bright right) blnOldStripePhaseCompatibility = 1 # Rotating gratings #"clockwise", "1.0", clockwise # Rotation direction. Should be +1 or -1 # -1 corresponds to counterclockwise direction clockwise = -1 # Variable spatial frequency gratings #"minsfcycle_deg", "0.2", minsfcycle_deg #"maxsfcycle_deg", "0.4", maxsfcycle_deg # In Variable SF gratings, minsfcycle_deg specifies the SF displayed at the # start of a cycle, and maxsfcycle_deg specifies the SF displayed at the end # of a cycle. If minsfcycle_deg < maxsfcycle_deg, stimuli go low -> high SF. # If maxsfcycle_deg < minsfcycle_deg, stimuli go high -> low SF. minsfcycle_deg=0.1 maxsfcycle_deg=0.5 # Variable temporal frequency gratings #"mintfcycle_sec", "1", mintfcycle_sec #"maxtfcycle_sec", "4", maxtfcycle_sec # In Variable TF gratings, mintfcycle_deg specifies the TF displayed at the # start of a cycle, and maxtfcycle_deg specifies the TF displayed at the end # of a cycle. If mintfcycle_deg < maxtfcycle_deg, stimuli go low -> high TF. # If maxtfcycle_deg < mintfcycle_deg, stimuli go high -> low TF. mintfcycle_sec = 0.5 maxtfcycle_sec = 5.0 # Bar fields #"barPhasesFilename", "C:\ContStim\BarPhases.txt", szBarPhasesFilename #"barLengthDeg", "3.0", barLengthDeg #"barSpacingDeg", "6.0", barSpacingDeg barPhasesFilename = "C:\ContStim\BarPhases.txt" barLengthDeg = 3.0 barSpacingDeg = 6.0 # Multiple spatial frequency stripes #"stripesizedeg", "10.0", stripesizedeg # Size of stripe in degrees for drifting multiple spatial frequency stripes. stripesizedeg = 6.0 #"speeddeg_sec", "1.0" speeddeg_sec; # Speed of multiple spatial frequency stripes, degrees per second speeddeg_sec = 0.5 # Old Val's stuff, used in bitmaps and stripes #"originx_deg", "0.0", originx_deg # Used in drifting stripes and in bitmaps # Relative to the screen center originX_deg = 0.0 # Old Val's stuff, used in bitmaps and stripes #"originy_deg", "0.0", originy_deg # Used in drifting circles, drifting square grating and in bitmaps # Relative to the screen center originY_deg = 0.0 #------------------------------------------------------- [EpisodicGratings] # Square wave gratings. #"EpisodicSequenceCommonDisplayTimeSec", "0.0", dEpisodicSequenceCommonDisplayTimeSec #if "EpisodicSequenceCommonDisplayTimeSec" is bigger then 0, all gratings # are displayed for the specified duration in seconds regardless of the duration # specified in the EpisodicSequence string (see below) #EpisodicSequenceCommonDisplayTimeSec="4" #"EpisodicSequence", "0,2|90,2|180,2|270,2|blank,2" # Sequence of parameter sets divided by "|" # Parameter set format: X,Y,Z # X-direction of grating, # Y-duration in seconds, # Z-keep the phase constant if possible # # if X is "blank" , then background is shown: Y is the duration, Z is not used. #Examples: #EpisodicSequence= "0,1.0,0|45,1.0,0|blank,2|90,1.0,0|blank,2|135,1.0,0 " # 8 conditions - direction #EpisodicSequence="0,1.0,0|45,1.0,0|90,1.0,0|135,1.0,0|180,1.0,0|225,1.0,0|270,1.0,0|315,1.0,0" #EpisodicSequence="0,1.0,0|blank,2|45,1.0,0|blank,2|90,1.0,0|135,1.0,0|180,1.0,0|225,1.0,0|270,1.0,0|315,1.0,0" #EpisodicSequence= "0,1.0,0|blank,2|90,1.0,0|blank,2|180,1.0,0|blank,2|270,1.0,0|blank,2" #EpisodicSequence= "0,2,0|180,2,1|0,2,1|180,2,1|blank,1" EpisodicSequence= "blank,2|0,2,1|180,2,1|45,2,0|225,2,1|90,2,0|270,2,1|135,2,0|315,2,1" #------------------------------------------------------- [Bitmap] #---> Bitmap settings #"BitmapDirectory", ".", pcBitmapDirectory # The directory where bitmaps are stored BitmapDirectory = "Y:\work\Stryker\ContStim\bmp\" #BitmapFileNameMask", "*.bmp", pcBitmapFileNameMask # Mask to select bitmaps e.g. movie01_frame*.bmp BitmapFileNameMask = frame*.bmp #"BitmapStretchCoeff", "1.0", fBitmapStrechCoeff # Scale of the bitmap. # Bug: if the value is not 1.0, # the sequence is displayed behind the application window. S.R. BitmapStretchCoeff = 1.0 #"BitmapBackground", "0", iBitmapBackground # Int value = 0,1,2 Selects method of setting the background # 0 = use 0 color # 1 - RGB value, specified in BitmapBackgroundRGB # 2 - Pixel value, pixel is specified in BitmapBackgroundPixel BitmapBackground = "0" #"BitmapBackgroundRGB", "0,0,0", crBitmapBackgroundRGB # if BitmapBackground == 1, use this value for the background BitmapBackgroundRGB="128,0,0" #"BitmapBackgroundPixel", "0,0", stBitmapBackgroundPixel # if BitmapBackground == 2, go to specified pixel and use its color as the background. BitmapBackgroundPixel="3,3" #"BitmapColorKey", "0", iBitmapColorKey # Int value = 0,1,2 Selects method of setting the transparent color # 0 = do not use 0 transparency # 1 - RGB value, transparent color specified in BitmapColorKeyRGB # 2 - transparent color is taken from the pixel specified in stBitmapColorKeyPixel # If BitmapColorKey !=0, all pixels that have the transparent color # are rendered transparent. BitmapColorKey="0" #"BitmapColorKeyRGB", "0,0,0", crBitmapColorKeyRGB # if BitmapColorKey == 1, use this value for the transparent color BitmapColorKeyRGB="128,128,128" #"BitmapColorKeyPixel", "0,0" stBitmapColorKeyPixel # if BitmapColorKey == 2, go to specified pixel and use its color as transparent. BitmapColorKeyPixel="100,100" #------------------------------------------------------- [Sync] # DIO sync signal is output on Channel B. # It varies between 0 and 255 and indicates the phase of the # stimulus cycle. # UDP sync signal varies between 0 and 65535 # and indicates the phase of the stimulus cycle. #"SyncDIOYes","0", iUseSynchDIO - int value # Use Digital IO Card for synchronization 0 = do not use #SyncDIOYes = 1 #"SyncUDPYes","0", iUseSynchUDP - int value # Use Network Card for synchronization 0 = do not use #SyncUDPYes = 1 # Note: DIO and UDP syncs can be used simultaneously #"SyncUDPHost","", g_szUDP_Host - default is DEFAULT_UDP_HOST = "localhost" # computer name where to send network synchronization packets # SyncUDPHost = "mps-pc99.ucsf.edu" SyncUDPHost = "mccoy.ucsf.edu" #"SyncUDPPort","", g_nUDP_Port - default is DEFAULT_UDP_PORT = 8936 # Port to use for the network synchronization #"OutputVideoSyncEvery","8", iOutputVideoSyncEvery # Int value. 1 = output sync on every frame, 2 = output sync on every second frame, etc OutputVideoSyncEvery = 2 #------------------------------------------------------- [TTL] # Used to control devices (e.g. shutters) via port C, upper 4 bits #"TTLOn", "0", iUseTTL - numeric value TTLOn = 1 #Period of the TTL sequence is TTLPeriodFactor times longer than #the period of the stimulus #"TTLPeriodFactor", "1.0", dTTLPeriodFactor TTLPeriodFactor = 4.0 #Digital sequence of 4 values is output to port C (high 4 bits). #Period of the whole sequence is period of the stimulus multiplied by TTLPeriodFactor #"TTLSequence", "0,0,0,0" - string of 4 ints, comma-separated, #each value should be within [0,15] range TTLSequence = "1,2,1,2" #------------------------------------------------------- [Trigger] #"TriggerOn", "0", iUseTrigger # Wait for an external trigger on port C (low part) # before starting the stimulus # TriggerOn = 0 - don't use the trigger (don't wait) # TriggerOn = 1 - use the trigger (wait) TriggerOn = 1 #"TriggerMask", "1", iTriggerMask - should be between 0 and 15 TriggerMask = 1 # NOTE: Parameters are NOT case-sensitive.