init
@@ -0,0 +1,77 @@
|
||||
PROJECT(openvibe-ssvep-mind-shooter)
|
||||
|
||||
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
|
||||
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
|
||||
|
||||
INCLUDE("FindThirdPartyVRPN_Check")
|
||||
IF(NOT PATH_VRPN)
|
||||
MESSAGE(STATUS " --> Not building ${PROJECT_NAME}")
|
||||
RETURN()
|
||||
ENDIF(NOT PATH_VRPN)
|
||||
|
||||
INCLUDE("FindThirdPartyCEGUI_Check")
|
||||
IF(NOT CEGUI_FOUND OR NOT OgreCEGUIRenderer_FOUND)
|
||||
MESSAGE(STATUS " --> Not building ${PROJECT_NAME}")
|
||||
RETURN()
|
||||
ENDIF(NOT CEGUI_FOUND OR NOT OgreCEGUIRenderer_FOUND)
|
||||
|
||||
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.h src/*.inl)
|
||||
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_FILES})
|
||||
SET_PROPERTY(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${APP_FOLDER})
|
||||
|
||||
INCLUDE("FindOpenViBE")
|
||||
INCLUDE("FindOpenViBECommon")
|
||||
INCLUDE("FindOpenViBEToolkit")
|
||||
INCLUDE("FindOpenViBEModuleEBML")
|
||||
INCLUDE("FindOpenViBEModuleFS")
|
||||
INCLUDE("FindOpenViBEModuleTCPTagging")
|
||||
INCLUDE("FindThirdPartyCEGUI") # CEGUI + CEGUIOgreRender included
|
||||
INCLUDE("FindThirdPartyVRPN")
|
||||
INCLUDE("FindThirdPartyOgre3D")
|
||||
INCLUDE("FindThirdPartyOgre3DTerrain") # OGRE + OIS included, pulls boost thread
|
||||
INCLUDE("FindThirdPartyBoost") # Using Ogre headers on Win32 causes dependency to Boost thread library
|
||||
INCLUDE("FindThirdPartyBoost_Thread") # Note that this is a potential issue on Windows, as the dependencies/ogre/boost and dependencies/boost are not the same at the time of writing this.
|
||||
|
||||
|
||||
|
||||
# ---------------------------------
|
||||
# Finds standard library pthread
|
||||
# Adds library to target
|
||||
# Adds include path
|
||||
# ---------------------------------
|
||||
IF(UNIX)
|
||||
FIND_LIBRARY(LIB_STANDARD_MODULE_PTHREAD pthread)
|
||||
IF(LIB_STANDARD_MODULE_PTHREAD)
|
||||
MESSAGE(STATUS " Found pthread...")
|
||||
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_STANDARD_MODULE_PTHREAD})
|
||||
ELSE(LIB_STANDARD_MODULE_PTHREAD)
|
||||
MESSAGE(STATUS " FAILED to find pthread...")
|
||||
ENDIF(LIB_STANDARD_MODULE_PTHREAD)
|
||||
ENDIF(UNIX)
|
||||
|
||||
# ---------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
# ---------------------------------
|
||||
|
||||
|
||||
# ----------------------
|
||||
# Generate launch script
|
||||
# ----------------------
|
||||
OV_INSTALL_LAUNCH_SCRIPT(SCRIPT_PREFIX "openvibe-ssvep-mind-shooter-trainer" EXECUTABLE_NAME ${PROJECT_NAME} PARAMETERS "impact-trainer")
|
||||
OV_INSTALL_LAUNCH_SCRIPT(SCRIPT_PREFIX "openvibe-ssvep-mind-shooter-shooter" EXECUTABLE_NAME ${PROJECT_NAME} PARAMETERS "impact-shooter")
|
||||
OV_INSTALL_LAUNCH_SCRIPT(SCRIPT_PREFIX "openvibe-ssvep-stimulator-generic" EXECUTABLE_NAME ${PROJECT_NAME} PARAMETERS "generic")
|
||||
|
||||
# -----------------------------
|
||||
# Install files
|
||||
# -----------------------------
|
||||
INSTALL(TARGETS ${PROJECT_NAME}
|
||||
RUNTIME DESTINATION ${DIST_BINDIR}
|
||||
LIBRARY DESTINATION DESTINATION ${DIST_LIBDIR}
|
||||
ARCHIVE DESTINATION DESTINATION ${DIST_LIBDIR})
|
||||
|
||||
INSTALL(DIRECTORY share/ DESTINATION ${DIST_DATADIR}/openvibe/applications/ssvep-mind-shooter)
|
||||
|
||||
INSTALL(DIRECTORY bci-examples DESTINATION ${DIST_DATADIR}/openvibe/scenarios/)
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains configuration files created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains materials created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains classifiers and CSP filters created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains configuration files generated by the scenarios.
|
||||
@@ -0,0 +1,672 @@
|
||||
<OpenViBE-Scenario>
|
||||
<FormatVersion>1</FormatVersion>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.1.99</CreatorVersion>
|
||||
<Settings></Settings>
|
||||
<Inputs></Inputs>
|
||||
<Outputs></Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x00000efb, 0x00007452)</Identifier>
|
||||
<Name>Time based epoching</Name>
|
||||
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Epoched signal 1</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Epoch 1 duration (in sec)</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>2.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Epoch 1 intervals (in sec)</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>0.250000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x002363af)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x000026ba, 0x000014fc)</Identifier>
|
||||
<Name>Spectral analysis</Name>
|
||||
<AlgorithmClassIdentifier>(0x84218ff8, 0xa87e7995)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Amplitude</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Phase</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Real Part</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Imag Part</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Amplitude</Name>
|
||||
<DefaultValue>true</DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Phase</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Real Part</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Imaginary Part</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>192.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x4e5c55a0, 0xe69eb7db)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x004039af)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>4</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x0000441d, 0x00001a28)</Identifier>
|
||||
<Name>Acquisition client</Name>
|
||||
<AlgorithmClassIdentifier>(0x35d225cb, 0x3e6e3a5f)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
|
||||
<Name>Experiment information</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Signal stream</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x013df452, 0xa3a8879a)</TypeIdentifier>
|
||||
<Name>Channel localisation</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
|
||||
<Name>Channel units</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Acquisition server hostname</Name>
|
||||
<DefaultValue>${AcquisitionServer_HostName}</DefaultValue>
|
||||
<Value>${AcquisitionServer_HostName}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Acquisition server port</Name>
|
||||
<DefaultValue>1024</DefaultValue>
|
||||
<Value>1024</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>-16.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x0d4656c0, 0xc95b1fa8)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x00596403)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
|
||||
<Value>false</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>5</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00006e09, 0x00006c54)</Identifier>
|
||||
<Name>Temporal filter</Name>
|
||||
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Filtered signal</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
|
||||
<Name>Filter method</Name>
|
||||
<DefaultValue>Butterworth</DefaultValue>
|
||||
<Value>Butterworth</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
|
||||
<Name>Filter type</Name>
|
||||
<DefaultValue>Band pass</DefaultValue>
|
||||
<Value>Band pass</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Filter order</Name>
|
||||
<DefaultValue>4</DefaultValue>
|
||||
<Value>4</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Low cut frequency (Hz)</Name>
|
||||
<DefaultValue>29</DefaultValue>
|
||||
<Value>3.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>High cut frequency (Hz)</Name>
|
||||
<DefaultValue>40</DefaultValue>
|
||||
<Value>40.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Pass band ripple (dB)</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>0.500000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>48.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x27a4ceec, 0x876d6384)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x005c78a8)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>6</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00006ff2, 0x000035c1)</Identifier>
|
||||
<Name>Signal display</Name>
|
||||
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Data</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
|
||||
<Name>Channel Units</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
|
||||
<Name>Display Mode</Name>
|
||||
<DefaultValue>Scan</DefaultValue>
|
||||
<Value>Scan</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
|
||||
<Name>Auto vertical scale</Name>
|
||||
<DefaultValue>Per channel</DefaultValue>
|
||||
<Value>Per channel</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Scale refresh interval (secs)</Name>
|
||||
<DefaultValue>5</DefaultValue>
|
||||
<Value>5</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Vertical Scale</Name>
|
||||
<DefaultValue>100</DefaultValue>
|
||||
<Value>100</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Vertical Offset</Name>
|
||||
<DefaultValue>0</DefaultValue>
|
||||
<Value>0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Time Scale</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
<Value>10</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Horizontal ruler</Name>
|
||||
<DefaultValue>true</DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Vertical ruler</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Multiview</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>752.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x92c056a7, 0x2dc71aff)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x0020924b)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
|
||||
<Value>false</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>9</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>3</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x4f539eea, 0x4f1d2b36)</Identifier>
|
||||
<Name>Instant Bars</Name>
|
||||
<AlgorithmClassIdentifier>(0xecb46081, 0x96da0d49)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Matrix</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Channel Localisation</Name>
|
||||
<DefaultValue>${AdvancedViz_ChannelLocalisation}</DefaultValue>
|
||||
<Value>${AdvancedViz_ChannelLocalisation}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Positive Data Only ?</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Gain</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Caption</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value></Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Translucency</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x3d3c7c7f, 0xef0e7129)</TypeIdentifier>
|
||||
<Name>Color</Name>
|
||||
<DefaultValue>${AdvancedViz_DefaultColorGradient}</DefaultValue>
|
||||
<Value>${AdvancedViz_DefaultColorGradient}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>256</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x6b60e2b2, 0xf4839b7d)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>6</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x00000c5d, 0x00003e97)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00000efb, 0x00007452)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x000026ba, 0x000014fc)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x0000235d, 0x00005682)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x0000441d, 0x00001a28)</BoxIdentifier>
|
||||
<BoxOutputIndex>1</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00003f9c, 0x000047e9)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00006ff2, 0x000035c1)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00006d4e, 0x0000333e)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00000efb, 0x00007452)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x2146ff07, 0x607b577b)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x000026ba, 0x000014fc)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x4f539eea, 0x4f1d2b36)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x00002d94, 0x00007404)</Identifier>
|
||||
<Text>Display the signal from all channels </Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>960.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00004efd, 0x0000146d)</Identifier>
|
||||
<Text>You can browse each box' documentation by selecting the box and pressing <b>F1</b>
|
||||
|
||||
This scenario set is documented in 'http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/'</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>528</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-112</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00007577, 0x000059a7)</Identifier>
|
||||
<Text><b><big>Acquisition test</big></b>
|
||||
|
||||
Scenario used for testing data acquisition. The signal quality should
|
||||
always be checked before training.
|
||||
|
||||
You can monitor signals from all of the electrodes. Individual
|
||||
signals are shown for each channel, as well as FFT power of all channels.
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>224.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>16.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Metadata>
|
||||
<Entry>
|
||||
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
|
||||
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
|
||||
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":776,"identifier":"(0x00002985, 0x00004ff2)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":753},{"boxIdentifier":"(0x4f539eea, 0x4f1d2b36)","childCount":0,"identifier":"(0x470943ea, 0x174708bb)","parentIdentifier":"(0xffffffff, 0xffffffff)","type":3},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x000024d0, 0x00004b7a)","index":0,"name":"Default tab","parentIdentifier":"(0x00002985, 0x00004ff2)","type":2},{"boxIdentifier":"(0x00006ff2, 0x000035c1)","childCount":0,"identifier":"(0x00003256, 0x00006784)","index":0,"parentIdentifier":"(0x000024d0, 0x00004b7a)","type":3}]</Data>
|
||||
</Entry>
|
||||
</Metadata>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
|
||||
<Value>Jozef Legeny</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
|
||||
<Value>1.0</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
|
||||
<Value>SSVEP Acquisition Test</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
|
||||
<Value>http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
|
||||
<Value>SSVEP</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
|
||||
<Value>Inria</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
@@ -0,0 +1,583 @@
|
||||
<OpenViBE-Scenario>
|
||||
<FormatVersion>1</FormatVersion>
|
||||
<Creator>Designer</Creator>
|
||||
<CreatorVersion>2.0.0</CreatorVersion>
|
||||
<Settings></Settings>
|
||||
<Inputs></Inputs>
|
||||
<Outputs></Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x00000533, 0x00001c79)</Identifier>
|
||||
<Name>Experiment Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>New input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-experiment-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
|
||||
<Name>Target Light Color</Name>
|
||||
<DefaultValue>100,0,0</DefaultValue>
|
||||
<Value>100,0,0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
|
||||
<Name>Target Dark Color</Name>
|
||||
<DefaultValue>0,0,0</DefaultValue>
|
||||
<Value>10,0,0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Stimulation Frequencies</Name>
|
||||
<DefaultValue>20;15;12</DefaultValue>
|
||||
<Value>5.454545;6.6666;7.5</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Epoch Duration</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Epoch Interval</Name>
|
||||
<DefaultValue>0.1</DefaultValue>
|
||||
<Value>0.1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Frequency Tolerance</Name>
|
||||
<DefaultValue>0.250</DefaultValue>
|
||||
<Value>0.25</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>CSP Spatial Filter Order</Name>
|
||||
<DefaultValue>3</DefaultValue>
|
||||
<Value>6</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Focus Point</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>400</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x000024b5, 0x00000bb5)</Identifier>
|
||||
<Name>Peripheral Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-peripheral-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Screen Refresh Rate</Name>
|
||||
<DefaultValue>60</DefaultValue>
|
||||
<Value>60</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Window Width</Name>
|
||||
<DefaultValue>800</DefaultValue>
|
||||
<Value>800</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Window Height</Name>
|
||||
<DefaultValue>600</DefaultValue>
|
||||
<Value>600</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Fullscreen</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>64</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00004bf3, 0x00007808)</Identifier>
|
||||
<Name>Player Controller</Name>
|
||||
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
|
||||
<Name>Stimulation name</Name>
|
||||
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
|
||||
<Value>OVTK_StimulationId_TrainCompleted</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
|
||||
<Name>Action to perform</Name>
|
||||
<DefaultValue>Pause</DefaultValue>
|
||||
<Value>Stop</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>528</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x568d148e, 0x650792b3)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00005dd3, 0x00000cf3)</Identifier>
|
||||
<Name>EEG Input Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>New input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-eeg-input-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Channels</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>:</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
|
||||
<Name>Selection Method</Name>
|
||||
<DefaultValue>Reject</DefaultValue>
|
||||
<Value>Select</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
|
||||
<Name>Match Method</Name>
|
||||
<DefaultValue>Smart</DefaultValue>
|
||||
<Value>Smart</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Training Data File</Name>
|
||||
<DefaultValue>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Testing Data File</Name>
|
||||
<DefaultValue>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>224</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x000011e3, 0x00005213)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x000024b5, 0x00000bb5)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00005dd3, 0x00000cf3)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00002afe, 0x00005880)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00005dd3, 0x00000cf3)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00000533, 0x00001c79)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x0000591f, 0x00006602)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00000533, 0x00001c79)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00004bf3, 0x00007808)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x00000df6, 0x00003d56)</Identifier>
|
||||
<Text><big><b>Experiment Settings</b></big>
|
||||
|
||||
Settings concerning the SSVEP experiment in general.
|
||||
|
||||
<b>Target Light Color</b> and <b>Target Dark Color</b> represent
|
||||
the two colors which will be used to generate the flickering of
|
||||
the targets. The notation Light and Dark is arbitrary, however on
|
||||
frequencies using odd number of frames will use more frames to
|
||||
represent the Light color.
|
||||
|
||||
<b>Screen Refresh Rate : </b> The refresh rate of your screen,
|
||||
refer to your screen's user manual to find this value.
|
||||
|
||||
<span color="red">Important notice</span>
|
||||
|
||||
Your screen will be able to reproduce only frequencies which
|
||||
are result of division of your screen refresh rate by an
|
||||
integer.
|
||||
|
||||
<b>Stimulation Frequencies</b> A comma separated list of
|
||||
frequencies used for the stimulation. Refer to the documentation
|
||||
for more details.
|
||||
|
||||
<b>Processing Epoch Duration</b> The length of the slice of the signal
|
||||
which will be used to find SSVEP response. With longer duration precision
|
||||
will increase at the detriment of the lag.
|
||||
|
||||
<b>Processing Epoch Interval</b> The speed interval between slices of the
|
||||
signal.
|
||||
|
||||
<b>Processing Frequency Tolerance</b> The width of the frequency band
|
||||
around the stimulation frequency used for classification.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>-176</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>128</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x0000187e, 0x00005350)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>400</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x0000288f, 0x00005f55)</Identifier>
|
||||
<Text><b>Welcome to the 'classic' SSVEP Mind Shooter</b>
|
||||
|
||||
Binary classifiers and CSP are used
|
||||
by the signal processing pipelines.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>-176.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-192.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x000031b0, 0x00003fa0)</Identifier>
|
||||
<Text><big><b>Scenario description</b></big>
|
||||
|
||||
<b><span color="red">This scenario must be run at least once before
|
||||
running any further SSVEP scenarios</span></b>
|
||||
|
||||
This is a scenario where you can configure your SSVEP experiment. There
|
||||
are two boxes containing configuration parameters:
|
||||
|
||||
<b>Peripheral Settings</b>
|
||||
|
||||
<b>Experiment Settings</b>
|
||||
|
||||
For more detailed description please refer to the SSVEP
|
||||
documentation page.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>336</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-160</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00003244, 0x00004359)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>64</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00005ca6, 0x00003399)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>224</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Metadata>
|
||||
<Entry>
|
||||
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
|
||||
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
|
||||
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":1,"identifier":"(0x00005488, 0x0000451f)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00000bbf, 0x000047e2)","index":0,"name":"Default tab","parentIdentifier":"(0x00005488, 0x0000451f)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x000017e4, 0x00003d53)","index":0,"name":"Empty","parentIdentifier":"(0x00000bbf, 0x000047e2)","type":0}]</Data>
|
||||
</Entry>
|
||||
</Metadata>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
|
||||
<Value>Jozef Legeny</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
|
||||
<Value>1.0</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
|
||||
<Value>SSVEP Configuration</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
|
||||
<Value>http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
|
||||
<Value>SSVEP</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
|
||||
<Value>Inria</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
@@ -0,0 +1,41 @@
|
||||
flip_count = 0
|
||||
switched_flip_count = 0
|
||||
flips = {}
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
flip_count = box:get_input_count()
|
||||
|
||||
for i = 1, flip_count do
|
||||
flips[i] = false
|
||||
end
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and switched_flip_count < flip_count do
|
||||
|
||||
for i = 1, flip_count do
|
||||
if box:get_stimulation_count(i) > 0 then
|
||||
|
||||
box:remove_stimulation(i, 1)
|
||||
|
||||
if not flips[i] then
|
||||
switched_flip_count = switched_flip_count + 1
|
||||
flips[i] = true
|
||||
|
||||
io.write("Flip ", i, " of ", flip_count, " switched\n")
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_Label_00, box:get_current_time())
|
||||
end
|
||||
@@ -0,0 +1,63 @@
|
||||
targets = {}
|
||||
non_targets = {}
|
||||
sent_stimulation = 0
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
-- read the parameters of the box
|
||||
|
||||
s_targets = box:get_setting(2)
|
||||
|
||||
for t in s_targets:gmatch("%d+") do
|
||||
targets[t + 0] = true
|
||||
end
|
||||
|
||||
s_non_targets = box:get_setting(3)
|
||||
|
||||
for t in s_non_targets:gmatch("%d+") do
|
||||
non_targets[t + 0] = true
|
||||
end
|
||||
|
||||
sent_stimulation = _G[box:get_setting(4)]
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
finished = false
|
||||
|
||||
while box:keep_processing() and not finished do
|
||||
|
||||
time = box:get_current_time()
|
||||
|
||||
while box:get_stimulation_count(1) > 0 do
|
||||
|
||||
s_code, s_date, s_duration = box:get_stimulation(1, 1)
|
||||
box:remove_stimulation(1, 1)
|
||||
|
||||
|
||||
|
||||
if s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F then
|
||||
|
||||
received_stimulation = s_code - OVTK_StimulationId_Label_00
|
||||
|
||||
|
||||
if targets[received_stimulation] ~= nil then
|
||||
box:send_stimulation(1, sent_stimulation, time)
|
||||
elseif non_targets[received_stimulation] ~= nil then
|
||||
box:send_stimulation(2, sent_stimulation, time)
|
||||
end
|
||||
|
||||
elseif s_code == OVTK_StimulationId_ExperimentStop then
|
||||
finished = true
|
||||
end
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,74 @@
|
||||
channels = nil
|
||||
selection_method = nil
|
||||
match_method = nil
|
||||
|
||||
training_datafile = nil
|
||||
testing_datafile = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
channels = box:get_setting(2)
|
||||
selection_method = box:get_setting(3)
|
||||
match_method = box:get_setting(4)
|
||||
training_datafile = box:get_setting(5)
|
||||
testing_datafile = box:get_setting(6)
|
||||
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
-- create material
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/channel-selector.cfg'"))
|
||||
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/configuration/channel-selector.cfg"), "w")
|
||||
|
||||
if cfg_file == nil then
|
||||
box:log("Error", "Could not open config file for writing")
|
||||
end
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", channels))
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", selection_method))
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", match_method))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-reader-training.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-reader-training.cfg"), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", training_datafile))
|
||||
-- cfg_file:write(string.format("<SettingValue>32</SettingValue>\n"))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-reader-testing.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-reader-testing.cfg"), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", testing_datafile))
|
||||
-- cfg_file:write(string.format("<SettingValue>32</SettingValue>\n"))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
|
||||
|
||||
|
||||
-- notify the scenario that the configuration process is complete
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
|
||||
end
|
||||
@@ -0,0 +1,190 @@
|
||||
stimulation_frequencies = {}
|
||||
frequency_count = 0
|
||||
|
||||
target_light_color = {}
|
||||
target_dark_color = {}
|
||||
training_target_size = {}
|
||||
training_targets_positions = {}
|
||||
|
||||
processing_epoch_duration = nil
|
||||
processing_epoch_interval = nil
|
||||
processing_frequency_tolerance = nil
|
||||
csp_filter_order = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
for value in box:get_setting(2):gmatch("%d+") do
|
||||
table.insert(target_light_color, value)
|
||||
end
|
||||
|
||||
for value in box:get_setting(3):gmatch("%d+") do
|
||||
table.insert(target_dark_color, value)
|
||||
end
|
||||
|
||||
for value in box:get_setting(4):gmatch("%d+[.]?%d*") do
|
||||
table.insert(stimulation_frequencies, value)
|
||||
frequency_count = frequency_count + 1
|
||||
end
|
||||
|
||||
processing_epoch_duration = box:get_setting(5)
|
||||
processing_epoch_interval = box:get_setting(6)
|
||||
processing_frequency_tolerance = box:get_setting(7)
|
||||
csp_filter_order = box:get_setting(8)
|
||||
s_focus_point = box:get_setting(9)
|
||||
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
-- create material
|
||||
|
||||
box:log("Info", box:get_config("Creating materials in '${Player_ScenarioDirectory}/appconf/materials/flickering.material'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/materials/flickering.material"), "w"))
|
||||
|
||||
cfg_file:write("material target_bright\n")
|
||||
cfg_file:write("{\n")
|
||||
cfg_file:write(" technique\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" pass\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" ambient 0 0 0 0\n")
|
||||
cfg_file:write(" diffuse 0 0 0 0\n")
|
||||
cfg_file:write(" specular 0 0 0 0\n")
|
||||
cfg_file:write(" emissive ", target_light_color[1] / 100, " ", target_light_color[2] / 100, " ", target_light_color[3] / 100, "\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write("}\n")
|
||||
cfg_file:write("material target_dark\n")
|
||||
cfg_file:write("{\n")
|
||||
cfg_file:write(" technique\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" pass\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" ambient 0 0 0 0\n")
|
||||
cfg_file:write(" diffuse 0 0 0 0\n")
|
||||
cfg_file:write(" specular 0 0 0 0\n")
|
||||
cfg_file:write(" emissive ", target_dark_color[1] / 100, " ", target_dark_color[2] / 100, " ", target_dark_color[3] / 100, "\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write("}\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- prepare the datafolder
|
||||
|
||||
foldername = box:get_config("${Player_ScenarioDirectory}/signals/userdata-[$core{date}-$core{time}]")
|
||||
os.execute(string.format("mkdir \"%s\"", foldername))
|
||||
|
||||
box:log("Info", box:get_config("Writing additional configuration to '${Player_ScenarioDirectory}/appconf/application-configuration.conf'"))
|
||||
|
||||
-- this file was generated by configuration-peripheral-settings.lua, here we just add to it
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/application-configuration.conf"), "a"))
|
||||
|
||||
for i=1,frequency_count do
|
||||
cfg_file:write("SSVEP_Frequency_", i, " = ", string.format("%g", stimulation_frequencies[i]), "\n")
|
||||
end
|
||||
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourRed = %f\n", target_light_color[1] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourGreen = %f\n", target_light_color[2] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourBlue = %f\n", target_light_color[3] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourRed = %f\n", target_dark_color[1] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourGreen = %f\n", target_dark_color[2] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourBlue = %f\n", target_dark_color[3] / 100))
|
||||
|
||||
cfg_file:write("SSVEP_UserDataFolder = ", foldername, "\n")
|
||||
cfg_file:write("SSVEP_FocusPoint = ", s_focus_point, "\n")
|
||||
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
-- create configuration files for temporal filters
|
||||
|
||||
for i=1,frequency_count do
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%db.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%db.cfg"), i), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write("<SettingValue>Butterworth</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>Band pass</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>4</SettingValue>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] - processing_frequency_tolerance))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] + processing_frequency_tolerance))
|
||||
cfg_file:write("<SettingValue>0.500000</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%dh1.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%dh1.cfg"), i), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write("<SettingValue>Butterworth</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>Band pass</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>4</SettingValue>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] * 2 - processing_frequency_tolerance))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] * 2 + processing_frequency_tolerance))
|
||||
cfg_file:write("<SettingValue>0.500000</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/csp-spatial-filter-trainer-%db.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/csp-spatial-filter-trainer-%db.cfg"), i), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(" <SettingValue>OVTK_StimulationId_ExperimentStop</SettingValue>\n")
|
||||
cfg_file:write(string.format(box:get_config(" <SettingValue>${Player_ScenarioDirectory}/classifiers/csp-%db</SettingValue>\n"), i))
|
||||
cfg_file:write(string.format(" <SettingValue>%d</SettingValue>\n", csp_filter_order))
|
||||
cfg_file:write(" <SettingValue></SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/csp-spatial-filter-trainer-%dh1.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/csp-spatial-filter-trainer-%dh1.cfg"), i), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(" <SettingValue>OVTK_StimulationId_ExperimentStop</SettingValue>\n")
|
||||
cfg_file:write(string.format(box:get_config(" <SettingValue>${Player_ScenarioDirectory}/classifiers/csp-%dh1</SettingValue>\n"), i))
|
||||
cfg_file:write(string.format(" <SettingValue>%d</SettingValue>\n", csp_filter_order))
|
||||
cfg_file:write(" <SettingValue></SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
end
|
||||
|
||||
-- create configuration file for time based epoching
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/time-based-epoching.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/time-based-epoching.cfg"), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_duration))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_interval))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- create the file writer configuration
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-writer.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-writer.cfg"), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s/eeg-data-[$core{date}-$core{time}].ov</SettingValue>\n", foldername))
|
||||
cfg_file:write("<SettingValue>false</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/csp-filter.cfg'"))
|
||||
|
||||
-- notify the scenario that the configuration process is complete
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
|
||||
end
|
||||
@@ -0,0 +1,53 @@
|
||||
vrpn_host = nil
|
||||
vrpn_port = nil
|
||||
screen_refresh_rate = nil
|
||||
window_width = nil
|
||||
window_height = nil
|
||||
fullscreen = nil
|
||||
|
||||
function initialize(box)
|
||||
screen_refresh_rate = box:get_setting(2)
|
||||
window_width = box:get_setting(3)
|
||||
window_height = box:get_setting(4)
|
||||
fullscreen = box:get_setting(5)
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
|
||||
box:log("Info", box:get_config("Generating '${Player_ScenarioDirectory}/appconf/application-configuration.conf'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/application-configuration.conf"), "w"))
|
||||
|
||||
cfg_file:write("# This file was automatically generated!\n\n")
|
||||
cfg_file:write("# If you want to change the SSVEP configuration\n")
|
||||
cfg_file:write("# please use the provided ssvep-configuration scenario.\n")
|
||||
|
||||
cfg_file:write("SSVEP_ScreenRefreshRate = ", screen_refresh_rate, "\n")
|
||||
cfg_file:write("SSVEP_VRPNServerPort = 1337\n")
|
||||
cfg_file:write("SSVEP_VRPNHost = localhost\n")
|
||||
|
||||
-- cfg_file:close()
|
||||
|
||||
-- box:log("Info", box:get_config("Generating '${Player_ScenarioDirectory}/appconf/ogre-configuration.conf'"))
|
||||
|
||||
-- cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/appconf/ogre-configuration.conf"), "w")
|
||||
|
||||
-- cfg_file:write("# This file was automatically generated!\n\n")
|
||||
-- cfg_file:write("# If you want to change the SSVEP configuration\n")
|
||||
-- cfg_file:write("# please use the provided ssvep-configuration scenario.\n")
|
||||
|
||||
cfg_file:write("SSVEP_Ogre_LogToConsole = False\n")
|
||||
|
||||
cfg_file:write("SSVEP_Ogre_ScreenWidth = ", window_width, "\n")
|
||||
cfg_file:write("SSVEP_Ogre_ScreenHeight = ", window_height, "\n")
|
||||
cfg_file:write("SSVEP_Ogre_FullScreen = ", fullscreen, "\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
end
|
||||
@@ -0,0 +1,119 @@
|
||||
classes = nil
|
||||
|
||||
do_debug = false;
|
||||
|
||||
score = {}
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
classes = box:get_setting(2)
|
||||
|
||||
for j = 1, classes do
|
||||
score[j] = {}
|
||||
for i = 1, classes do
|
||||
score[j][i] = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
|
||||
correct = 0
|
||||
incorrect = 0
|
||||
|
||||
for j = 1, classes do
|
||||
|
||||
output = string.format("Target %d : ", j - 1)
|
||||
inClass = 0
|
||||
|
||||
for i = 1, classes do
|
||||
inClass = inClass + score[j][i]
|
||||
end
|
||||
|
||||
for i = 1, classes do
|
||||
output = output .. string.format("%d : %5.1f%%, ", i - 1, 100*score[j][i]/inClass)
|
||||
|
||||
if i == j then
|
||||
correct = correct + score[j][i]
|
||||
else
|
||||
incorrect = incorrect + score[j][i]
|
||||
end
|
||||
end
|
||||
|
||||
box:log("Info", string.format("%s total %d", output, inClass))
|
||||
end
|
||||
|
||||
box:log("Info", string.format("Correct %4d -> %5.1f%%", correct, 100*correct/(correct+incorrect)))
|
||||
box:log("Info", string.format("Incorrect %4d -> %5.1f%%", incorrect, 100*incorrect/(correct+incorrect)))
|
||||
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
finished = false
|
||||
trials = {}
|
||||
trialNum = 0
|
||||
|
||||
while not finished and box:keep_processing() do
|
||||
|
||||
-- time = box:get_current_time()
|
||||
|
||||
while box:get_stimulation_count(1) > 0 do
|
||||
|
||||
s_code, s_date, s_duration = box:get_stimulation(1, 1)
|
||||
box:remove_stimulation(1, 1)
|
||||
|
||||
if s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F then
|
||||
if do_debug then box:log("Info", string.format("Received target %d at ", s_code) .. s_date) end
|
||||
|
||||
trialNum = trialNum + 1
|
||||
trials[trialNum]={}
|
||||
trials[trialNum].class = s_code - OVTK_StimulationId_Label_00 + 1
|
||||
trials[trialNum].start_time = 9999999999;
|
||||
trials[trialNum].stop_time = 9999999999;
|
||||
|
||||
elseif s_code == OVTK_StimulationId_VisualStimulationStart then
|
||||
if do_debug then box:log("Info", "Trial started at " .. s_date) end
|
||||
trials[trialNum].start_time = s_date;
|
||||
|
||||
elseif s_code == OVTK_StimulationId_VisualStimulationStop then
|
||||
if do_debug then box:log("Info", "Trial ended at " .. s_date) end
|
||||
trials[trialNum].stop_time = s_date;
|
||||
|
||||
elseif s_code == OVTK_StimulationId_ExperimentStop then
|
||||
finished = true
|
||||
end
|
||||
end
|
||||
|
||||
while box:get_stimulation_count(2) > 0 do
|
||||
|
||||
s_code, s_date, s_duration = box:get_stimulation(2, 1)
|
||||
box:remove_stimulation(2, 1)
|
||||
|
||||
if do_debug then box:log("Info", string.format("Received prediction %d at ", s_code) .. s_date) end
|
||||
|
||||
if (s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F) then
|
||||
-- not the fastest but ok for small trial amounts
|
||||
for i = trialNum,1,-1 do
|
||||
if s_date >= trials[i].start_time and s_date <= trials[i].stop_time then
|
||||
|
||||
if do_debug then box:log("Info", string.format("Accepted prediction %d at ", s_code) .. s_date) end
|
||||
|
||||
real_target = trials[i].class
|
||||
prediction = s_code - OVTK_StimulationId_Label_00 + 1
|
||||
|
||||
-- if do_debug then box:log("Info", string.format(" -> %d %d ", real_target, prediction)) end
|
||||
|
||||
score[real_target][prediction] = score[real_target][prediction] + 1
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
buffer = {}
|
||||
|
||||
function initialize(box)
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
-- This script receives stimulations and lets pass only every other one
|
||||
-- for each stimulation code
|
||||
-- Useful to remove "key up" events of keyboard stimulator
|
||||
function process(box)
|
||||
|
||||
while (box:keep_processing()) do
|
||||
|
||||
for index = 1, box:get_stimulation_count(1) do
|
||||
|
||||
stimulation = box:get_stimulation(1, index)
|
||||
|
||||
if buffer[stimulation] == nil then
|
||||
box:send_stimulation(1, stimulation, box:get_current_time(), 0)
|
||||
buffer[stimulation] = 1
|
||||
else
|
||||
buffer[stimulation] = nil
|
||||
end
|
||||
|
||||
box:remove_stimulation(1, 1)
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
@@ -0,0 +1,44 @@
|
||||
class_count = 0
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
class_count = box:get_setting(2)
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() do
|
||||
|
||||
if box:get_stimulation_count(1) > 0 then
|
||||
|
||||
local decision = 0
|
||||
local conflict = false
|
||||
|
||||
-- check each input
|
||||
for i = 1, class_count do
|
||||
-- if the frequency is considered as stimulated
|
||||
stim_id = box:get_stimulation(i, 1)
|
||||
-- box:log("Info", string.format("Received %d from %d", stim_id, i))
|
||||
if stim_id == OVTK_StimulationId_Label_01 then
|
||||
if decision ~= 0 then
|
||||
conflict = true
|
||||
end
|
||||
decision = i
|
||||
end
|
||||
box:remove_stimulation(i, 1)
|
||||
end
|
||||
|
||||
-- If several classifiers predict 'in class', predict no action class 0 instead.
|
||||
if conflict then
|
||||
decision = 0
|
||||
end
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_Label_00 + decision, box:get_current_time() + 0.01, 0)
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,70 @@
|
||||
sequence = {}
|
||||
flickeringDelay = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
s_sequence_types = box:get_setting(2)
|
||||
s_sequence_positions = box:get_setting(3)
|
||||
s_target_lockdown = box:get_setting(4)
|
||||
s_pilot_assist = box:get_setting(5)
|
||||
s_feedback = box:get_setting(6)
|
||||
s_onebyone = box:get_setting(7)
|
||||
s_analog_control = box:get_setting(8)
|
||||
s_log_level = box:get_setting(9)
|
||||
|
||||
box:log("Info", string.format("Target Types Sequence : [%s]\n", s_sequence_types))
|
||||
|
||||
for target in s_sequence_positions:gmatch("%d+") do
|
||||
table.insert(sequence, target)
|
||||
end
|
||||
|
||||
-- create the configuration file for the shooter application
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/appconf/shooter-configuration.conf"), "w")
|
||||
|
||||
cfg_file:write("SSVEP_EnemyOrder = ", s_sequence_types, "\n")
|
||||
cfg_file:write("SSVEP_TargetLockdown = ", s_target_lockdown, "\n")
|
||||
cfg_file:write("SSVEP_PilotAssist = ", s_pilot_assist, "\n")
|
||||
cfg_file:write("SSVEP_Feedback = ", s_feedback, "\n")
|
||||
cfg_file:write("SSVEP_OneByOne = ", s_onebyone, "\n")
|
||||
cfg_file:write("SSVEP_AnalogControl = ", s_analog_control, "\n")
|
||||
cfg_file:write("SSVEP_LogLevel = ", s_log_level, "\n")
|
||||
|
||||
cfg_file:close()
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
-- while targets are available, send a stimulation with new target
|
||||
-- position for each request
|
||||
|
||||
while box:keep_processing() do
|
||||
if box:get_stimulation_count(1) > 0 then
|
||||
|
||||
identifier, date, duration = box:get_stimulation(1, 1)
|
||||
|
||||
if identifier == OVTK_StimulationId_Target then
|
||||
current_time = box:get_current_time() + 1
|
||||
|
||||
-- if no targets are available, quit the game
|
||||
if # sequence == 0 then
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
|
||||
break
|
||||
end
|
||||
|
||||
next_target = sequence[1]
|
||||
table.remove(sequence, 1)
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_Label_00 + next_target , current_time, 0)
|
||||
end
|
||||
|
||||
box:remove_stimulation(1, 1)
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
delay = 1
|
||||
|
||||
function initialize(box)
|
||||
s_delay = box:get_setting(2);
|
||||
|
||||
io.write(string.format("Delay : [%s]\n", s_delay))
|
||||
|
||||
if (s_delay:find("^%d+$") ~= nil) then
|
||||
delay = tonumber(s_delay)
|
||||
else
|
||||
io.write("[ERROR] The parameter should be a numeric value\n")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
box:send_stimulation(1, 0x00008001, delay, 0)
|
||||
end
|
||||
@@ -0,0 +1,79 @@
|
||||
sequence = {}
|
||||
number_of_cycles = 0
|
||||
|
||||
stimulation_duration = 7
|
||||
break_duration = 2
|
||||
flickering_delay = 3.5
|
||||
|
||||
stimulationLabels = {
|
||||
0x00008100,
|
||||
0x00008101,
|
||||
0x00008102,
|
||||
0x00008103,
|
||||
}
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
|
||||
-- load the goal sequence
|
||||
s_sequence = box:get_setting(2)
|
||||
|
||||
for target in s_sequence:gmatch("%d+") do
|
||||
table.insert(sequence, target)
|
||||
number_of_cycles = number_of_cycles + 1
|
||||
end
|
||||
|
||||
stimulation_duration = box:get_setting(3)
|
||||
break_duration = box:get_setting(4)
|
||||
flickering_delay = box:get_setting(5)
|
||||
|
||||
box:log("Info", string.format("Number of goals in sequence: [%d]", number_of_cycles))
|
||||
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/configuration/stimulation-based-epoching.cfg"), "w")
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(" <SettingValue>", stimulation_duration, "</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>", flickering_delay, "</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>OVTK_StimulationId_Target</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
current_time = box:get_current_time() + 1
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStart, current_time, 0)
|
||||
|
||||
current_time = current_time + 2
|
||||
|
||||
for i,target in ipairs(sequence) do
|
||||
box:log("Info", string.format("Goal no %d is %d at %d", i, target, current_time))
|
||||
-- mark goal
|
||||
box:send_stimulation(2, OVTK_StimulationId_LabelStart + target, current_time, 0)
|
||||
-- wait for Flickering_delay seconds
|
||||
current_time = current_time + flickering_delay
|
||||
-- start flickering
|
||||
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStart, current_time, 0)
|
||||
-- wait for Stimulation_duration seconds
|
||||
current_time = current_time + stimulation_duration
|
||||
-- unmark goal and stop flickering
|
||||
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStop, current_time, 0)
|
||||
-- wait for Break_duration seconds
|
||||
current_time = current_time + break_duration
|
||||
end
|
||||
|
||||
current_time = current_time + 2
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains signals recorded by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains configuration files created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains materials created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains classifiers and CSP filters created by the SSVEP scenarios.
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains configuration files generated by the scenarios.
|
||||
@@ -0,0 +1,672 @@
|
||||
<OpenViBE-Scenario>
|
||||
<FormatVersion>1</FormatVersion>
|
||||
<Creator>OpenVIBE</Creator>
|
||||
<CreatorVersion>0.1.99</CreatorVersion>
|
||||
<Settings></Settings>
|
||||
<Inputs></Inputs>
|
||||
<Outputs></Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x00000efb, 0x00007452)</Identifier>
|
||||
<Name>Time based epoching</Name>
|
||||
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Epoched signal 1</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Epoch 1 duration (in sec)</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>2.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Epoch 1 intervals (in sec)</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>0.250000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x002363af)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x000026ba, 0x000014fc)</Identifier>
|
||||
<Name>Spectral analysis</Name>
|
||||
<AlgorithmClassIdentifier>(0x84218ff8, 0xa87e7995)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Amplitude</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Phase</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Real Part</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Imag Part</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Amplitude</Name>
|
||||
<DefaultValue>true</DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Phase</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Real Part</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Imaginary Part</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>192.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x4e5c55a0, 0xe69eb7db)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x004039af)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>4</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x0000441d, 0x00001a28)</Identifier>
|
||||
<Name>Acquisition client</Name>
|
||||
<AlgorithmClassIdentifier>(0x35d225cb, 0x3e6e3a5f)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
|
||||
<Name>Experiment information</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Signal stream</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x013df452, 0xa3a8879a)</TypeIdentifier>
|
||||
<Name>Channel localisation</Name>
|
||||
</Output>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
|
||||
<Name>Channel units</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Acquisition server hostname</Name>
|
||||
<DefaultValue>${AcquisitionServer_HostName}</DefaultValue>
|
||||
<Value>${AcquisitionServer_HostName}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Acquisition server port</Name>
|
||||
<DefaultValue>1024</DefaultValue>
|
||||
<Value>1024</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>-16.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x0d4656c0, 0xc95b1fa8)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x00596403)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
|
||||
<Value>false</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>5</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00006e09, 0x00006c54)</Identifier>
|
||||
<Name>Temporal filter</Name>
|
||||
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Input signal</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Filtered signal</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
|
||||
<Name>Filter method</Name>
|
||||
<DefaultValue>Butterworth</DefaultValue>
|
||||
<Value>Butterworth</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
|
||||
<Name>Filter type</Name>
|
||||
<DefaultValue>Band pass</DefaultValue>
|
||||
<Value>Band pass</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Filter order</Name>
|
||||
<DefaultValue>4</DefaultValue>
|
||||
<Value>4</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Low cut frequency (Hz)</Name>
|
||||
<DefaultValue>29</DefaultValue>
|
||||
<Value>3.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>High cut frequency (Hz)</Name>
|
||||
<DefaultValue>40</DefaultValue>
|
||||
<Value>40.000000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Pass band ripple (dB)</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>0.500000</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>48.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x27a4ceec, 0x876d6384)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x005c78a8)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>6</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00006ff2, 0x000035c1)</Identifier>
|
||||
<Name>Signal display</Name>
|
||||
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
|
||||
<Name>Data</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Input>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
|
||||
<Name>Channel Units</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
|
||||
<Name>Display Mode</Name>
|
||||
<DefaultValue>Scan</DefaultValue>
|
||||
<Value>Scan</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
|
||||
<Name>Auto vertical scale</Name>
|
||||
<DefaultValue>Per channel</DefaultValue>
|
||||
<Value>Per channel</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Scale refresh interval (secs)</Name>
|
||||
<DefaultValue>5</DefaultValue>
|
||||
<Value>5</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Vertical Scale</Name>
|
||||
<DefaultValue>100</DefaultValue>
|
||||
<Value>100</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Vertical Offset</Name>
|
||||
<DefaultValue>0</DefaultValue>
|
||||
<Value>0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Time Scale</Name>
|
||||
<DefaultValue>10</DefaultValue>
|
||||
<Value>10</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Horizontal ruler</Name>
|
||||
<DefaultValue>true</DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Vertical ruler</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Multiview</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>752.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x92c056a7, 0x2dc71aff)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x0020924b)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
|
||||
<Value>false</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>9</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>3</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x28b20eb9, 0x6ca2286f)</Identifier>
|
||||
<Name>Instant Bars</Name>
|
||||
<AlgorithmClassIdentifier>(0xecb46081, 0x96da0d49)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
|
||||
<Name>Matrix</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Channel Localisation</Name>
|
||||
<DefaultValue>${AdvancedViz_ChannelLocalisation}</DefaultValue>
|
||||
<Value>${AdvancedViz_ChannelLocalisation}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Positive Data Only ?</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Gain</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Caption</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value></Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Translucency</Name>
|
||||
<DefaultValue>1</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x3d3c7c7f, 0xef0e7129)</TypeIdentifier>
|
||||
<Name>Color</Name>
|
||||
<DefaultValue>${AdvancedViz_DefaultColorGradient}</DefaultValue>
|
||||
<Value>${AdvancedViz_DefaultColorGradient}</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>256</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>560</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x6b60e2b2, 0xf4839b7d)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>6</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x00000c5d, 0x00003e97)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00000efb, 0x00007452)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x000026ba, 0x000014fc)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x0000235d, 0x00005682)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x0000441d, 0x00001a28)</BoxIdentifier>
|
||||
<BoxOutputIndex>1</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00003f9c, 0x000047e9)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00006ff2, 0x000035c1)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00006d4e, 0x0000333e)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00006e09, 0x00006c54)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00000efb, 0x00007452)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x5b7cfcf0, 0x1cbb9051)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x000026ba, 0x000014fc)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x28b20eb9, 0x6ca2286f)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x00002d94, 0x00007404)</Identifier>
|
||||
<Text>Display the signal from all channels </Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>960.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>112.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00004efd, 0x0000146d)</Identifier>
|
||||
<Text>You can browse each box' documentation by selecting the box and pressing <b>F1</b>
|
||||
|
||||
This scenario set is documented in 'http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/'</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>528</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-112</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00007577, 0x000059a7)</Identifier>
|
||||
<Text><b><big>Acquisition test</big></b>
|
||||
|
||||
Scenario used for testing data acquisition. The signal quality should
|
||||
always be checked before training.
|
||||
|
||||
You can monitor signals from all of the electrodes. Individual
|
||||
signals are shown for each channel, as well as FFT power of all channels.
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>224.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>16.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Metadata>
|
||||
<Entry>
|
||||
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
|
||||
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
|
||||
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":776,"identifier":"(0x00002985, 0x00004ff2)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":753},{"boxIdentifier":"(0x28b20eb9, 0x6ca2286f)","childCount":0,"identifier":"(0x63bb111b, 0x0b13330c)","parentIdentifier":"(0xffffffff, 0xffffffff)","type":3},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x000024d0, 0x00004b7a)","index":0,"name":"Default tab","parentIdentifier":"(0x00002985, 0x00004ff2)","type":2},{"boxIdentifier":"(0x00006ff2, 0x000035c1)","childCount":0,"identifier":"(0x00003256, 0x00006784)","index":0,"parentIdentifier":"(0x000024d0, 0x00004b7a)","type":3}]</Data>
|
||||
</Entry>
|
||||
</Metadata>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
|
||||
<Value>Jussi T. Lindgren, Jozef Legeny</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
|
||||
<Value>1.0</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
|
||||
<Value>SSVEP Acquisition Test</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
|
||||
<Value>http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
|
||||
<Value>SSVEP</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
|
||||
<Value>Inria</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
@@ -0,0 +1,599 @@
|
||||
<OpenViBE-Scenario>
|
||||
<FormatVersion>1</FormatVersion>
|
||||
<Creator>Designer</Creator>
|
||||
<CreatorVersion>2.0.0</CreatorVersion>
|
||||
<Settings></Settings>
|
||||
<Inputs></Inputs>
|
||||
<Outputs></Outputs>
|
||||
<Boxes>
|
||||
<Box>
|
||||
<Identifier>(0x00000533, 0x00001c79)</Identifier>
|
||||
<Name>Experiment Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>New input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-experiment-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
|
||||
<Name>Target Light Color</Name>
|
||||
<DefaultValue>100,0,0</DefaultValue>
|
||||
<Value>100,0,0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
|
||||
<Name>Target Dark Color</Name>
|
||||
<DefaultValue>0,0,0</DefaultValue>
|
||||
<Value>10,0,0</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Stimulation Frequencies</Name>
|
||||
<DefaultValue>20;15;12</DefaultValue>
|
||||
<Value>5.454545;6.6666;7.5</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Epoch Duration</Name>
|
||||
<DefaultValue>0.5</DefaultValue>
|
||||
<Value>1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Epoch Interval</Name>
|
||||
<DefaultValue>0.1</DefaultValue>
|
||||
<Value>0.1</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
|
||||
<Name>Processing Frequency Tolerance</Name>
|
||||
<DefaultValue>0.250</DefaultValue>
|
||||
<Value>0.25</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>CSP Spatial Filter Order</Name>
|
||||
<DefaultValue>3</DefaultValue>
|
||||
<Value>2</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Focus Point</Name>
|
||||
<DefaultValue>false</DefaultValue>
|
||||
<Value>false</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>400</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x0004a72a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x000024b5, 0x00000bb5)</Identifier>
|
||||
<Name>Display Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-peripheral-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Screen Refresh Rate</Name>
|
||||
<DefaultValue>60</DefaultValue>
|
||||
<Value>60</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Window Width</Name>
|
||||
<DefaultValue>800</DefaultValue>
|
||||
<Value>800</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
|
||||
<Name>Window Height</Name>
|
||||
<DefaultValue>600</DefaultValue>
|
||||
<Value>600</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
|
||||
<Name>Fullscreen</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>true</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>64.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>369.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x007b56c4)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00004bf3, 0x00007808)</Identifier>
|
||||
<Name>Player Controller</Name>
|
||||
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
|
||||
<Name>Stimulation name</Name>
|
||||
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
|
||||
<Value>OVTK_StimulationId_TrainCompleted</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
|
||||
<Name>Action to perform</Name>
|
||||
<DefaultValue>Pause</DefaultValue>
|
||||
<Value>Stop</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>528</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0x568d148e, 0x650792b3)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x00208175)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>2</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
<Box>
|
||||
<Identifier>(0x00005dd3, 0x00000cf3)</Identifier>
|
||||
<Name>EEG Input Settings</Name>
|
||||
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
|
||||
<Inputs>
|
||||
<Input>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>New input</Name>
|
||||
</Input>
|
||||
</Inputs>
|
||||
<Outputs>
|
||||
<Output>
|
||||
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
|
||||
<Name>Stimulations</Name>
|
||||
</Output>
|
||||
</Outputs>
|
||||
<Settings>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
|
||||
<Name>Lua Script</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/scripts/configuration-eeg-input-settings.lua</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
|
||||
<Name>Channels</Name>
|
||||
<DefaultValue></DefaultValue>
|
||||
<Value>:</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
|
||||
<Name>Selection Method</Name>
|
||||
<DefaultValue>Reject</DefaultValue>
|
||||
<Value>Select</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
|
||||
<Name>Match Method</Name>
|
||||
<DefaultValue>Smart</DefaultValue>
|
||||
<Value>Smart</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Training Data File</Name>
|
||||
<DefaultValue>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
<Setting>
|
||||
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
|
||||
<Name>Testing Data File</Name>
|
||||
<DefaultValue>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</DefaultValue>
|
||||
<Value>${Player_ScenarioDirectory}/signals/ssvep-record-current.ov</Value>
|
||||
<Modifiability>false</Modifiability>
|
||||
</Setting>
|
||||
</Settings>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
|
||||
<Value>224</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
|
||||
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
|
||||
<Value>(0x00000000, 0x00dac25b)</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
|
||||
<Value>1</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
|
||||
<Value></Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Box>
|
||||
</Boxes>
|
||||
<Links>
|
||||
<Link>
|
||||
<Identifier>(0x000011e3, 0x00005213)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x000024b5, 0x00000bb5)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00005dd3, 0x00000cf3)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x00002afe, 0x00005880)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00005dd3, 0x00000cf3)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00000533, 0x00001c79)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
<Link>
|
||||
<Identifier>(0x0000591f, 0x00006602)</Identifier>
|
||||
<Source>
|
||||
<BoxIdentifier>(0x00000533, 0x00001c79)</BoxIdentifier>
|
||||
<BoxOutputIndex>0</BoxOutputIndex>
|
||||
</Source>
|
||||
<Target>
|
||||
<BoxIdentifier>(0x00004bf3, 0x00007808)</BoxIdentifier>
|
||||
<BoxInputIndex>0</BoxInputIndex>
|
||||
</Target>
|
||||
</Link>
|
||||
</Links>
|
||||
<Comments>
|
||||
<Comment>
|
||||
<Identifier>(0x00000df6, 0x00003d56)</Identifier>
|
||||
<Text><big><b>Experiment Settings</b></big>
|
||||
|
||||
Settings concerning the SSVEP experiment in general.
|
||||
|
||||
<b>Target Light Color</b> and <b>Target Dark Color</b> represent
|
||||
the two colors which will be used to generate the flickering of
|
||||
the targets. The notation Light and Dark is arbitrary, however on
|
||||
frequencies using odd number of frames will use more frames to
|
||||
represent the Light color.
|
||||
|
||||
<b>Screen Refresh Rate : </b> The refresh rate of your screen,
|
||||
refer to your screen's user manual to find this value.
|
||||
|
||||
<span color="red">Important notice</span>
|
||||
|
||||
Your screen will be able to reproduce only frequencies which
|
||||
are result of division of your screen refresh rate by an
|
||||
integer.
|
||||
|
||||
<b>Stimulation Frequencies</b> A comma separated list of
|
||||
frequencies used for the stimulation. Refer to the documentation
|
||||
for more details.
|
||||
|
||||
<b>Processing Epoch Duration</b> The length of the slice of the signal
|
||||
which will be used to find SSVEP response. With longer duration precision
|
||||
will increase at the detriment of the lag.
|
||||
|
||||
<b>Processing Epoch Interval</b> The speed interval between slices of the
|
||||
signal.
|
||||
|
||||
<b>Processing Frequency Tolerance</b> The width of the frequency band
|
||||
around the stimulation frequency used for classification.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>-176</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>128</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x0000187e, 0x00005350)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>400</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x0000288f, 0x00005f55)</Identifier>
|
||||
<Text><b>Welcome to the 'multiclass' SSVEP Mind Shooter</b>
|
||||
|
||||
Multiclass classifiers and CSP are used
|
||||
by the signal processing pipelines.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>-160.000000</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-192.000000</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x000031b0, 0x00003fa0)</Identifier>
|
||||
<Text><big><b>Scenario description</b></big>
|
||||
|
||||
<b><span color="red">This scenario must be run at least once before
|
||||
running any further SSVEP scenarios</span></b>
|
||||
|
||||
This is a scenario where you can configure your SSVEP experiment. There
|
||||
are two boxes containing configuration parameters:
|
||||
|
||||
<b>Peripheral Settings</b>
|
||||
|
||||
<b>Experiment Settings</b>
|
||||
|
||||
For more detailed description please refer to the SSVEP
|
||||
documentation page.</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>336</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>-160</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00003244, 0x00004359)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>64</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
<Comment>
|
||||
<Identifier>(0x00005ca6, 0x00003399)</Identifier>
|
||||
<Text> <b><span color="#2060ff">Configurable box</span></b>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</Text>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
|
||||
<Value>368</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
|
||||
<Value>224</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</Comment>
|
||||
</Comments>
|
||||
<Metadata>
|
||||
<Entry>
|
||||
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
|
||||
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
|
||||
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":1,"identifier":"(0x00005488, 0x0000451f)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00000bbf, 0x000047e2)","index":0,"name":"Default tab","parentIdentifier":"(0x00005488, 0x0000451f)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x000017e4, 0x00003d53)","index":0,"name":"Empty","parentIdentifier":"(0x00000bbf, 0x000047e2)","type":0}]</Data>
|
||||
</Entry>
|
||||
</Metadata>
|
||||
<Attributes>
|
||||
<Attribute>
|
||||
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
|
||||
<Value>Jussi T. Lindgren, Jozef Legeny</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
|
||||
<Value>1.0</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
|
||||
<Value>SSVEP Configuration</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
|
||||
<Value>http://openvibe.inria.fr/using-the-ssvep-mind-shooter-scenarios/</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
|
||||
<Value>SSVEP</Value>
|
||||
</Attribute>
|
||||
<Attribute>
|
||||
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
|
||||
<Value>Inria</Value>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
</OpenViBE-Scenario>
|
||||
@@ -0,0 +1,74 @@
|
||||
channels = nil
|
||||
selection_method = nil
|
||||
match_method = nil
|
||||
|
||||
training_datafile = nil
|
||||
testing_datafile = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
channels = box:get_setting(2)
|
||||
selection_method = box:get_setting(3)
|
||||
match_method = box:get_setting(4)
|
||||
training_datafile = box:get_setting(5)
|
||||
testing_datafile = box:get_setting(6)
|
||||
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
-- create material
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/channel-selector.cfg'"))
|
||||
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/configuration/channel-selector.cfg"), "w")
|
||||
|
||||
if cfg_file == nil then
|
||||
box:log("Error", "Could not open config file for writing")
|
||||
end
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", channels))
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", selection_method))
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", match_method))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-reader-training.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-reader-training.cfg"), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", training_datafile))
|
||||
-- cfg_file:write(string.format("<SettingValue>32</SettingValue>\n"))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-reader-testing.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-reader-testing.cfg"), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s</SettingValue>\n", testing_datafile))
|
||||
-- cfg_file:write(string.format("<SettingValue>32</SettingValue>\n"))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
|
||||
|
||||
|
||||
-- notify the scenario that the configuration process is complete
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
|
||||
end
|
||||
@@ -0,0 +1,185 @@
|
||||
stimulation_frequencies = {}
|
||||
frequency_count = 0
|
||||
|
||||
target_light_color = {}
|
||||
target_dark_color = {}
|
||||
training_target_size = {}
|
||||
training_targets_positions = {}
|
||||
|
||||
processing_epoch_duration = nil
|
||||
processing_epoch_interval = nil
|
||||
processing_frequency_tolerance = nil
|
||||
csp_filter_order = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
for value in box:get_setting(2):gmatch("%d+") do
|
||||
table.insert(target_light_color, value)
|
||||
end
|
||||
|
||||
for value in box:get_setting(3):gmatch("%d+") do
|
||||
table.insert(target_dark_color, value)
|
||||
end
|
||||
|
||||
for value in box:get_setting(4):gmatch("%d+[.]?%d*") do
|
||||
table.insert(stimulation_frequencies, value)
|
||||
frequency_count = frequency_count + 1
|
||||
end
|
||||
|
||||
processing_epoch_duration = box:get_setting(5)
|
||||
processing_epoch_interval = box:get_setting(6)
|
||||
processing_frequency_tolerance = box:get_setting(7)
|
||||
csp_filter_order = box:get_setting(8)
|
||||
s_focus_point = box:get_setting(9)
|
||||
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
-- create material
|
||||
|
||||
box:log("Info", box:get_config("Creating materials in '${Player_ScenarioDirectory}/appconf/materials/flickering.material'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/materials/flickering.material"), "w"))
|
||||
|
||||
cfg_file:write("material target_bright\n")
|
||||
cfg_file:write("{\n")
|
||||
cfg_file:write(" technique\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" pass\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" ambient 0 0 0 0\n")
|
||||
cfg_file:write(" diffuse 0 0 0 0\n")
|
||||
cfg_file:write(" specular 0 0 0 0\n")
|
||||
cfg_file:write(" emissive ", target_light_color[1] / 100, " ", target_light_color[2] / 100, " ", target_light_color[3] / 100, "\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write("}\n")
|
||||
cfg_file:write("material target_dark\n")
|
||||
cfg_file:write("{\n")
|
||||
cfg_file:write(" technique\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" pass\n")
|
||||
cfg_file:write(" {\n")
|
||||
cfg_file:write(" ambient 0 0 0 0\n")
|
||||
cfg_file:write(" diffuse 0 0 0 0\n")
|
||||
cfg_file:write(" specular 0 0 0 0\n")
|
||||
cfg_file:write(" emissive ", target_dark_color[1] / 100, " ", target_dark_color[2] / 100, " ", target_dark_color[3] / 100, "\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write(" }\n")
|
||||
cfg_file:write("}\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- prepare the datafolder
|
||||
|
||||
foldername = box:get_config("${Player_ScenarioDirectory}/signals/userdata-[$core{date}-$core{time}]")
|
||||
os.execute(string.format("mkdir \"%s\"", foldername))
|
||||
|
||||
box:log("Info", box:get_config("Writing additional configuration to '${Player_ScenarioDirectory}/appconf/application-configuration.conf'"))
|
||||
|
||||
-- this file was generated by configuration-peripheral-settings.lua, here we just add to it
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/application-configuration.conf"), "a"))
|
||||
|
||||
for i=1,frequency_count do
|
||||
cfg_file:write("SSVEP_Frequency_", i, " = ", string.format("%g", stimulation_frequencies[i]), "\n")
|
||||
end
|
||||
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourRed = %f\n", target_light_color[1] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourGreen = %f\n", target_light_color[2] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetLightColourBlue = %f\n", target_light_color[3] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourRed = %f\n", target_dark_color[1] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourGreen = %f\n", target_dark_color[2] / 100))
|
||||
cfg_file:write(string.format("SSVEP_TargetDarkColourBlue = %f\n", target_dark_color[3] / 100))
|
||||
|
||||
cfg_file:write("SSVEP_UserDataFolder = ", foldername, "\n")
|
||||
cfg_file:write("SSVEP_FocusPoint = ", s_focus_point, "\n")
|
||||
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
-- create configuration files for temporal filters
|
||||
|
||||
for i=1,frequency_count do
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%db.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%db.cfg"), i), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write("<SettingValue>Butterworth</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>Band pass</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>4</SettingValue>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] - processing_frequency_tolerance))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] + processing_frequency_tolerance))
|
||||
cfg_file:write("<SettingValue>0.500000</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
box:log("Info", string.format(box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%dh1.cfg'"), i))
|
||||
|
||||
cfg_file = assert(io.open(string.format(box:get_config("${Player_ScenarioDirectory}/configuration/temporal-filter-freq-%dh1.cfg"), i), "w"))
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write("<SettingValue>Butterworth</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>Band pass</SettingValue>\n")
|
||||
cfg_file:write("<SettingValue>4</SettingValue>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] * 2 - processing_frequency_tolerance))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] * 2 + processing_frequency_tolerance))
|
||||
cfg_file:write("<SettingValue>0.500000</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
|
||||
end
|
||||
|
||||
-- create configuration file for CSP Trainer
|
||||
cfg_filename = box:get_config("${Player_ScenarioDirectory}/configuration/regularized-csp-trainer.cfg")
|
||||
|
||||
box:log("Info", "Writing file '" .. cfg_filename .. "'")
|
||||
|
||||
cfg_file = assert(io.open(cfg_filename, "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(" <SettingValue>OVTK_StimulationId_ExperimentStop</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>${Player_ScenarioDirectory}/classifiers/csp-filters.cfg</SettingValue>\n")
|
||||
cfg_file:write(string.format(" <SettingValue>%d</SettingValue>\n", csp_filter_order))
|
||||
cfg_file:write(" <SettingValue>false</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>Chunk average</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>true</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>0.0</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>0.0</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- create configuration file for time based epoching
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/time-based-epoching.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/time-based-epoching.cfg"), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_duration))
|
||||
cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_interval))
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- create the file writer configuration
|
||||
box:log("Info", box:get_config("Writing file '${Player_ScenarioDirectory}/configuration/file-writer.cfg'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/configuration/file-writer.cfg"), "w"))
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(string.format("<SettingValue>%s/eeg-data-[$core{date}-$core{time}].ov</SettingValue>\n", foldername))
|
||||
cfg_file:write("<SettingValue>false</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:close()
|
||||
|
||||
-- notify the scenario that the configuration process is complete
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
|
||||
end
|
||||
@@ -0,0 +1,53 @@
|
||||
vrpn_host = nil
|
||||
vrpn_port = nil
|
||||
screen_refresh_rate = nil
|
||||
window_width = nil
|
||||
window_height = nil
|
||||
fullscreen = nil
|
||||
|
||||
function initialize(box)
|
||||
screen_refresh_rate = box:get_setting(2)
|
||||
window_width = box:get_setting(3)
|
||||
window_height = box:get_setting(4)
|
||||
fullscreen = box:get_setting(5)
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
|
||||
box:log("Info", box:get_config("Generating '${Player_ScenarioDirectory}/appconf/application-configuration.conf'"))
|
||||
|
||||
cfg_file = assert(io.open(box:get_config("${Player_ScenarioDirectory}/appconf/application-configuration.conf"), "w"))
|
||||
|
||||
cfg_file:write("# This file was automatically generated!\n\n")
|
||||
cfg_file:write("# If you want to change the SSVEP configuration\n")
|
||||
cfg_file:write("# please use the provided ssvep-configuration scenario.\n")
|
||||
|
||||
cfg_file:write("SSVEP_ScreenRefreshRate = ", screen_refresh_rate, "\n")
|
||||
cfg_file:write("SSVEP_VRPNServerPort = 1337\n")
|
||||
cfg_file:write("SSVEP_VRPNHost = localhost\n")
|
||||
|
||||
-- cfg_file:close()
|
||||
|
||||
-- box:log("Info", box:get_config("Generating '${Player_ScenarioDirectory}/appconf/ogre-configuration.conf'"))
|
||||
|
||||
-- cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/appconf/ogre-configuration.conf"), "w")
|
||||
|
||||
-- cfg_file:write("# This file was automatically generated!\n\n")
|
||||
-- cfg_file:write("# If you want to change the SSVEP configuration\n")
|
||||
-- cfg_file:write("# please use the provided ssvep-configuration scenario.\n")
|
||||
|
||||
cfg_file:write("SSVEP_Ogre_LogToConsole = False\n")
|
||||
|
||||
cfg_file:write("SSVEP_Ogre_ScreenWidth = ", window_width, "\n")
|
||||
cfg_file:write("SSVEP_Ogre_ScreenHeight = ", window_height, "\n")
|
||||
cfg_file:write("SSVEP_Ogre_FullScreen = ", fullscreen, "\n")
|
||||
|
||||
cfg_file:close()
|
||||
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
|
||||
end
|
||||
@@ -0,0 +1,109 @@
|
||||
classes = nil
|
||||
|
||||
current_target = nil
|
||||
start_time = 0;
|
||||
stop_time = -1;
|
||||
|
||||
do_debug = false;
|
||||
|
||||
score = {}
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
classes = box:get_setting(2)
|
||||
|
||||
for j = 1, classes do
|
||||
score[j] = {}
|
||||
for i = 1, classes do
|
||||
score[j][i] = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
|
||||
correct = 0
|
||||
incorrect = 0
|
||||
|
||||
for j = 1, classes do
|
||||
|
||||
output = string.format("Target %d : ", j - 1)
|
||||
inClass = 0
|
||||
|
||||
for i = 1, classes do
|
||||
inClass = inClass + score[j][i]
|
||||
end
|
||||
|
||||
for i = 1, classes do
|
||||
output = output .. string.format("%d : %5.1f%%, ", i - 1, 100*score[j][i]/inClass)
|
||||
|
||||
if i == j then
|
||||
correct = correct + score[j][i]
|
||||
else
|
||||
incorrect = incorrect + score[j][i]
|
||||
end
|
||||
end
|
||||
|
||||
box:log("Info", string.format("%s total %d", output, inClass))
|
||||
end
|
||||
|
||||
box:log("Info", string.format("Correct %4d -> %5.1f%%", correct, 100*correct/(correct+incorrect)))
|
||||
box:log("Info", string.format("Incorrect %4d -> %5.1f%%", incorrect, 100*incorrect/(correct+incorrect)))
|
||||
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
finished = false
|
||||
|
||||
while not finished do
|
||||
|
||||
-- time = box:get_current_time()
|
||||
|
||||
while box:get_stimulation_count(1) > 0 do
|
||||
|
||||
s_code, s_date, s_duration = box:get_stimulation(1, 1)
|
||||
box:remove_stimulation(1, 1)
|
||||
|
||||
if s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F then
|
||||
if do_debug then box:log("Info", string.format("Received target %d at ", s_code) .. s_date) end
|
||||
current_target = s_code - OVTK_StimulationId_Label_00
|
||||
|
||||
elseif s_code == OVTK_StimulationId_VisualStimulationStart then
|
||||
if do_debug then box:log("Info", "Trial started at " .. s_date) end
|
||||
start_time = s_date
|
||||
-- We don't know the stop time yet, so for now accept anything in range [start_time, infty]
|
||||
stop_time = -1
|
||||
|
||||
elseif s_code == OVTK_StimulationId_VisualStimulationStop then
|
||||
if do_debug then box:log("Info", "Trial ended at " .. s_date) end
|
||||
stop_time = s_date
|
||||
|
||||
elseif s_code == OVTK_StimulationId_ExperimentStop then
|
||||
finished = true
|
||||
end
|
||||
end
|
||||
|
||||
while box:get_stimulation_count(2) > 0 do
|
||||
|
||||
s_code, s_date, s_duration = box:get_stimulation(2, 1)
|
||||
box:remove_stimulation(2, 1)
|
||||
|
||||
if do_debug then box:log("Info", string.format("Received prediction %d at ", s_code) .. s_date) end
|
||||
|
||||
if s_date >= start_time and (stop_time < 0 or s_date < stop_time) and (s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F) then
|
||||
|
||||
if do_debug then box:log("Info", string.format("Accepted prediction %d at ", s_code) .. s_date) end
|
||||
|
||||
real_target = current_target + 1
|
||||
prediction = s_code - OVTK_StimulationId_Label_00 + 1
|
||||
score[real_target][prediction] = score[real_target][prediction] + 1
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
buffer = {}
|
||||
|
||||
function initialize(box)
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
-- This script receives stimulations and lets pass only every other one
|
||||
-- for each stimulation code
|
||||
-- Useful to remove "key up" events of keyboard stimulator
|
||||
function process(box)
|
||||
|
||||
while (box:keep_processing()) do
|
||||
|
||||
for index = 1, box:get_stimulation_count(1) do
|
||||
|
||||
stimulation = box:get_stimulation(1, index)
|
||||
|
||||
if buffer[stimulation] == nil then
|
||||
box:send_stimulation(1, stimulation, box:get_current_time(), 0)
|
||||
buffer[stimulation] = 1
|
||||
else
|
||||
buffer[stimulation] = nil
|
||||
end
|
||||
|
||||
box:remove_stimulation(1, 1)
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
@@ -0,0 +1,70 @@
|
||||
sequence = {}
|
||||
flickeringDelay = nil
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
s_sequence_types = box:get_setting(2)
|
||||
s_sequence_positions = box:get_setting(3)
|
||||
s_target_lockdown = box:get_setting(4)
|
||||
s_pilot_assist = box:get_setting(5)
|
||||
s_feedback = box:get_setting(6)
|
||||
s_onebyone = box:get_setting(7)
|
||||
s_analog_control = box:get_setting(8)
|
||||
s_log_level = box:get_setting(9)
|
||||
|
||||
box:log("Info", string.format("Target Types Sequence : [%s]\n", s_sequence_types))
|
||||
|
||||
for target in s_sequence_positions:gmatch("%d+") do
|
||||
table.insert(sequence, target)
|
||||
end
|
||||
|
||||
-- create the configuration file for the shooter application
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/appconf/shooter-configuration.conf"), "w")
|
||||
|
||||
cfg_file:write("SSVEP_EnemyOrder = ", s_sequence_types, "\n")
|
||||
cfg_file:write("SSVEP_TargetLockdown = ", s_target_lockdown, "\n")
|
||||
cfg_file:write("SSVEP_PilotAssist = ", s_pilot_assist, "\n")
|
||||
cfg_file:write("SSVEP_Feedback = ", s_feedback, "\n")
|
||||
cfg_file:write("SSVEP_OneByOne = ", s_onebyone, "\n")
|
||||
cfg_file:write("SSVEP_AnalogControl = ", s_analog_control, "\n")
|
||||
cfg_file:write("SSVEP_LogLevel = ", s_log_level, "\n")
|
||||
|
||||
cfg_file:close()
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
-- while targets are available, send a stimulation with new target
|
||||
-- position for each request
|
||||
|
||||
while box:keep_processing() do
|
||||
if box:get_stimulation_count(1) > 0 then
|
||||
|
||||
identifier, date, duration = box:get_stimulation(1, 1)
|
||||
|
||||
if identifier == OVTK_StimulationId_Target then
|
||||
current_time = box:get_current_time() + 1
|
||||
|
||||
-- if no targets are available, quit the game
|
||||
if # sequence == 0 then
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
|
||||
break
|
||||
end
|
||||
|
||||
next_target = sequence[1]
|
||||
table.remove(sequence, 1)
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_Label_00 + next_target , current_time, 0)
|
||||
end
|
||||
|
||||
box:remove_stimulation(1, 1)
|
||||
end
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
delay = 1
|
||||
|
||||
function initialize(box)
|
||||
s_delay = box:get_setting(2);
|
||||
|
||||
io.write(string.format("Delay : [%s]\n", s_delay))
|
||||
|
||||
if (s_delay:find("^%d+$") ~= nil) then
|
||||
delay = tonumber(s_delay)
|
||||
else
|
||||
io.write("[ERROR] The parameter should be a numeric value\n")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
box:send_stimulation(1, 0x00008001, delay, 0)
|
||||
end
|
||||
@@ -0,0 +1,80 @@
|
||||
sequence = {}
|
||||
number_of_cycles = 0
|
||||
|
||||
stimulation_duration = 7
|
||||
break_duration = 2
|
||||
flickering_delay = 3.5
|
||||
epoching_delay = 1
|
||||
|
||||
function initialize(box)
|
||||
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
|
||||
|
||||
-- load the goal sequence
|
||||
s_sequence = box:get_setting(2)
|
||||
|
||||
for target in s_sequence:gmatch("%d+") do
|
||||
table.insert(sequence, target)
|
||||
number_of_cycles = number_of_cycles + 1
|
||||
end
|
||||
|
||||
stimulation_duration = box:get_setting(3)
|
||||
break_duration = box:get_setting(4)
|
||||
flickering_delay = box:get_setting(5)
|
||||
epoching_delay = box:get_setting(6)
|
||||
|
||||
box:log("Info", string.format("Number of goals in sequence: [%d]", number_of_cycles))
|
||||
|
||||
if stimulation_duration-epoching_delay <= 0 then
|
||||
box:log("Error", "Stimulation duration - epoching delay is not greater than 0.")
|
||||
end
|
||||
|
||||
-- These specify how long and with what offset data will be collected after the flicker start
|
||||
-- for csp/classifier training. A positive epoching delay is to avoid the ERP effect due to stimulus onset
|
||||
cfg_file = io.open(box:get_config("${Player_ScenarioDirectory}/configuration/stimulation-based-epoching.cfg"), "w")
|
||||
|
||||
cfg_file:write("<OpenViBE-SettingsOverride>\n")
|
||||
cfg_file:write(" <SettingValue>", stimulation_duration-epoching_delay, "</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>", epoching_delay, "</SettingValue>\n")
|
||||
cfg_file:write(" <SettingValue>OVTK_StimulationId_VisualStimulationStart</SettingValue>\n")
|
||||
cfg_file:write("</OpenViBE-SettingsOverride>\n")
|
||||
|
||||
cfg_file:close()
|
||||
end
|
||||
|
||||
function uninitialize(box)
|
||||
end
|
||||
|
||||
function process(box)
|
||||
|
||||
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
|
||||
box:sleep()
|
||||
end
|
||||
|
||||
current_time = box:get_current_time() + 1
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStart, current_time, 0)
|
||||
|
||||
current_time = current_time + 2
|
||||
|
||||
for i,target in ipairs(sequence) do
|
||||
box:log("Info", string.format("Goal no %d is %d at %d", i, target, current_time))
|
||||
-- mark goal
|
||||
box:send_stimulation(2, OVTK_StimulationId_LabelStart + target, current_time, 0)
|
||||
-- wait for Flickering_delay seconds
|
||||
current_time = current_time + flickering_delay
|
||||
-- start flickering
|
||||
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStart, current_time, 0)
|
||||
-- wait for Stimulation_duration seconds
|
||||
current_time = current_time + stimulation_duration
|
||||
-- unmark goal and stop flickering
|
||||
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStop, current_time, 0)
|
||||
-- wait for Break_duration seconds
|
||||
current_time = current_time + break_duration
|
||||
end
|
||||
|
||||
current_time = current_time + 2
|
||||
|
||||
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
|
||||
|
||||
box:sleep()
|
||||
end
|
||||
@@ -0,0 +1 @@
|
||||
This folder contains signals recorded by the SSVEP scenarios.
|
||||
@@ -0,0 +1,8 @@
|
||||
material BasicSurface/Diffuse
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass { lighting off }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$name = $ARGV[0];
|
||||
|
||||
sub writeMaterial($$$)
|
||||
{
|
||||
my ($material, $dark, $angle) = @_;
|
||||
|
||||
$dark = $dark ? "-dark" : '';
|
||||
my $suffix = $angle ? "-$angle" : '';
|
||||
|
||||
$effect = "";
|
||||
$effect = "rotate $angle" if $angle;
|
||||
|
||||
return qq[
|
||||
|
||||
material GenericSurface/$material$suffix$dark
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
ambient 1 1 1 1
|
||||
diffuse 1 1 1 1
|
||||
specular 0 0 0 0
|
||||
emissive 0 0 0
|
||||
|
||||
scene_blend alpha_blend
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture $material$dark.png
|
||||
$effect
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
opendir DIR, "textures";
|
||||
@files = readdir DIR;
|
||||
closedir DIR;
|
||||
|
||||
@files = grep (/(?<!-dark)\.png$/, @files);
|
||||
|
||||
foreach $texture (@files)
|
||||
{
|
||||
$texture =~ s/\.png//;
|
||||
|
||||
print writeMaterial($texture, 0, 0);
|
||||
print writeMaterial($texture, 1, 0);
|
||||
print writeMaterial($texture, 0, 90);
|
||||
print writeMaterial($texture, 1, 90);
|
||||
print writeMaterial($texture, 0, 180);
|
||||
print writeMaterial($texture, 1, 180);
|
||||
}
|
||||
|
After Width: | Height: | Size: 400 B |
|
After Width: | Height: | Size: 396 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 317 B |
|
After Width: | Height: | Size: 314 B |
|
After Width: | Height: | Size: 285 B |
|
After Width: | Height: | Size: 283 B |
|
After Width: | Height: | Size: 285 B |
|
After Width: | Height: | Size: 283 B |
|
After Width: | Height: | Size: 285 B |
|
After Width: | Height: | Size: 283 B |
@@ -0,0 +1,245 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Imageset name="TaharezLook" imagefile="TaharezLook.tga" nativeHorzRes="800" nativeVertRes="600" autoScaled="true" version="2">
|
||||
<Image name="ClientBrush" xPos="2" yPos="2" width="64" height="64" />
|
||||
<Image name="GenericBrush" xPos="9" yPos="71" width="1" height="1" />
|
||||
<Image name="WindowLeftEdge" xPos="6" yPos="95" width="1" height="22" xOffset="4" />
|
||||
<Image name="WindowRightEdge" xPos="34" yPos="95" width="1" height="22" xOffset="-5" />
|
||||
<Image name="WindowTopEdge" xPos="9" yPos="68" width="23" height="1" />
|
||||
<Image name="WindowBottomEdge" xPos="9" yPos="143" width="23" height="1" />
|
||||
<Image name="WindowTopLeft" xPos="2" yPos="68" width="5" height="24" />
|
||||
<Image name="WindowTopRight" xPos="34" yPos="68" width="5" height="24" />
|
||||
<Image name="WindowBottomLeft" xPos="2" yPos="120" width="5" height="24" />
|
||||
<Image name="WindowBottomRight" xPos="34" yPos="120" width="5" height="24" />
|
||||
<Image name="ButtonLeftNormal" xPos="68" yPos="20" width="12" height="16" />
|
||||
<Image name="ButtonMiddleNormal" xPos="82" yPos="20" width="12" height="16" />
|
||||
<Image name="ButtonRightNormal" xPos="96" yPos="20" width="12" height="16" />
|
||||
<Image name="ButtonLeftPushed" xPos="68" yPos="38" width="12" height="16" />
|
||||
<Image name="ButtonMiddlePushed" xPos="82" yPos="38" width="12" height="16" />
|
||||
<Image name="ButtonRightPushed" xPos="96" yPos="38" width="12" height="16" />
|
||||
<Image name="ButtonLeftHighlight" xPos="68" yPos="56" width="12" height="16" />
|
||||
<Image name="ButtonMiddleHighlight" xPos="82" yPos="56" width="12" height="16" />
|
||||
<Image name="ButtonRightHighlight" xPos="96" yPos="56" width="12" height="16" />
|
||||
<Image name="CheckboxNormal" xPos="110" yPos="2" width="12" height="12" />
|
||||
<Image name="CheckboxHover" xPos="110" yPos="30" width="12" height="12" />
|
||||
<Image name="CheckboxMark" xPos="110" yPos="16" width="12" height="12" />
|
||||
<Image name="RadioButtonNormal" xPos="124" yPos="2" width="12" height="12" />
|
||||
<Image name="RadioButtonHover" xPos="124" yPos="30" width="12" height="12" />
|
||||
<Image name="RadioButtonMark" xPos="124" yPos="16" width="12" height="12" />
|
||||
<Image name="TitlebarLeft" xPos="68" yPos="2" width="8" height="16" />
|
||||
<Image name="TitlebarMiddle" xPos="78" yPos="2" width="8" height="16" />
|
||||
<Image name="TitlebarRight" xPos="88" yPos="2" width="8" height="16" />
|
||||
<Image name="NewTitlebarLeft" xPos="61" yPos="127" width="13" height="16" />
|
||||
<Image name="NewTitlebarMiddle" xPos="77" yPos="127" width="12" height="16" />
|
||||
<Image name="NewTitlebarRight" xPos="92" yPos="127" width="12" height="16" />
|
||||
<Image name="SysAreaMiddle" xPos="107" yPos="127" width="12" height="16" />
|
||||
<Image name="SysAreaRight" xPos="122" yPos="127" width="13" height="16" />
|
||||
<Image name="StaticLeft" xPos="41" yPos="89" width="6" height="6" />
|
||||
<Image name="StaticRight" xPos="63" yPos="89" width="6" height="6" />
|
||||
<Image name="StaticTop" xPos="52" yPos="78" width="6" height="6" />
|
||||
<Image name="StaticBottom" xPos="52" yPos="100" width="6" height="6" />
|
||||
<Image name="StaticTopLeft" xPos="41" yPos="78" width="6" height="6" />
|
||||
<Image name="StaticTopRight" xPos="63" yPos="78" width="6" height="6" />
|
||||
<Image name="StaticBottomLeft" xPos="41" yPos="100" width="6" height="6" />
|
||||
<Image name="StaticBottomRight" xPos="63" yPos="100" width="6" height="6" />
|
||||
<Image name="StaticBackdrop" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="ProgressBarLeft" xPos="71" yPos="74" width="7" height="12" />
|
||||
<Image name="ProgressBarMiddle" xPos="80" yPos="74" width="6" height="12" />
|
||||
<Image name="ProgressBarRight" xPos="88" yPos="74" width="6" height="12" />
|
||||
<Image name="ProgressBarDimSegment" xPos="96" yPos="74" width="8" height="12" />
|
||||
<Image name="ProgressBarLitSegment" xPos="106" yPos="74" width="8" height="12" />
|
||||
<Image name="EditBoxLeft" xPos="41" yPos="108" width="4" height="18" />
|
||||
<Image name="EditBoxMiddle" xPos="47" yPos="108" width="4" height="18" />
|
||||
<Image name="EditBoxRight" xPos="53" yPos="108" width="4" height="18" />
|
||||
<Image name="EditBoxCaret" xPos="60" yPos="108" width="4" height="18" />
|
||||
<Image name="SpinnerUpNormal" xPos="68" yPos="110" width="10" height="6" />
|
||||
<Image name="SpinnerDownNormal" xPos="68" yPos="118" width="10" height="6" />
|
||||
<Image name="SpinnerUpHover" xPos="82" yPos="110" width="10" height="6" />
|
||||
<Image name="SpinnerDownHover" xPos="82" yPos="118" width="10" height="6" />
|
||||
<Image name="TextSelectionBrush" xPos="8" yPos="70" width="16" height="16" />
|
||||
<Image name="VertScrollTop" xPos="182" yPos="2" width="20" height="8" />
|
||||
<Image name="VertScrollMiddle" xPos="182" yPos="12" width="20" height="8" />
|
||||
<Image name="VertScrollBottom" xPos="182" yPos="22" width="20" height="8" />
|
||||
<Image name="VertScrollBarSegment" xPos="206" yPos="2" width="4" height="10" />
|
||||
<Image name="VertScrollThumbNormal" xPos="214" yPos="2" width="8" height="24" />
|
||||
<Image name="VertScrollThumbHover" xPos="224" yPos="2" width="8" height="24" />
|
||||
<Image name="VertScrollUpNormal" xPos="196" yPos="32" width="12" height="12" />
|
||||
<Image name="VertScrollDownNormal" xPos="182" yPos="32" width="12" height="12" />
|
||||
<Image name="VertScrollUpHover" xPos="196" yPos="46" width="12" height="12" />
|
||||
<Image name="VertScrollDownHover" xPos="182" yPos="46" width="12" height="12" />
|
||||
<Image name="MiniVertScrollBarSegment" xPos="207" yPos="60" width="4" height="10" />
|
||||
<Image name="MiniVertScrollThumbNormal" xPos="214" yPos="59" width="7" height="22" />
|
||||
<Image name="MiniVertScrollThumbTopNormal" xPos="214" yPos="59" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbMiddleNormal" xPos="214" yPos="65" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbBottomNormal" xPos="214" yPos="76" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbTopHover" xPos="223" yPos="59" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbMiddleHover" xPos="223" yPos="65" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbBottomHover" xPos="223" yPos="76" width="7" height="5" />
|
||||
<Image name="MiniVertScrollThumbHover" xPos="223" yPos="59" width="7" height="22" />
|
||||
<Image name="MiniVertScrollUpNormal" xPos="194" yPos="60" width="10" height="9" />
|
||||
<Image name="MiniVertScrollDownNormal" xPos="182" yPos="59" width="10" height="9" />
|
||||
<Image name="MiniVertScrollUpHover" xPos="194" yPos="70" width="10" height="9" />
|
||||
<Image name="MiniVertScrollDownHover" xPos="182" yPos="69" width="10" height="9" />
|
||||
<Image name="VertSliderBody" xPos="234" yPos="2" width="9" height="48" />
|
||||
<Image name="VertSliderThumbNormal" xPos="217" yPos="28" width="15" height="6" />
|
||||
<Image name="VertSliderThumbHover" xPos="217" yPos="36" width="15" height="6" />
|
||||
<Image name="MiniHorzScrollBarSegment" xPos="244" yPos="80" width="10" height="4" />
|
||||
<Image name="MiniHorzScrollThumbNormal" xPos="233" yPos="87" width="22" height="7" />
|
||||
<Image name="MiniHorzScrollThumbLeftNormal" xPos="233" yPos="87" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollThumbMiddleNormal" xPos="239" yPos="87" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollThumbRightNormal" xPos="250" yPos="87" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollThumbHover" xPos="233" yPos="96" width="22" height="7" />
|
||||
<Image name="MiniHorzScrollThumbLeftHover" xPos="233" yPos="96" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollThumbMiddleHover" xPos="239" yPos="96" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollThumbRightHover" xPos="250" yPos="96" width="5" height="7" />
|
||||
<Image name="MiniHorzScrollLeftNormal" xPos="246" yPos="55" width="9" height="10" />
|
||||
<Image name="MiniHorzScrollRightNormal" xPos="245" yPos="67" width="9" height="10" />
|
||||
<Image name="MiniHorzScrollLeftHover" xPos="236" yPos="55" width="9" height="10" />
|
||||
<Image name="MiniHorzScrollRightHover" xPos="235" yPos="67" width="9" height="10" />
|
||||
<Image name="ListboxLeft" xPos="41" yPos="89" width="7" height="6" />
|
||||
<Image name="ListboxRight" xPos="62" yPos="89" width="7" height="6" />
|
||||
<Image name="ListboxTop" xPos="52" yPos="78" width="6" height="7" />
|
||||
<Image name="ListboxBottom" xPos="52" yPos="99" width="6" height="7" />
|
||||
<Image name="ListboxTopLeft" xPos="41" yPos="78" width="7" height="7" />
|
||||
<Image name="ListboxTopRight" xPos="62" yPos="78" width="7" height="7" />
|
||||
<Image name="ListboxBottomLeft" xPos="41" yPos="99" width="7" height="7" />
|
||||
<Image name="ListboxBottomRight" xPos="62" yPos="99" width="7" height="7" />
|
||||
<Image name="ListboxBackdrop" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="ListboxSelectionBrush" xPos="8" yPos="70" width="16" height="16" />
|
||||
<Image name="ComboboxEditLeft" xPos="138" yPos="2" width="8" height="16" />
|
||||
<Image name="ComboboxEditMiddle" xPos="148" yPos="2" width="8" height="16" />
|
||||
<Image name="ComboboxListButtonNormal" xPos="158" yPos="2" width="16" height="16" />
|
||||
<Image name="ComboboxListButtonHover" xPos="158" yPos="20" width="16" height="16" />
|
||||
<Image name="ComboboxListLeft" xPos="138" yPos="48" width="8" height="8" />
|
||||
<Image name="ComboboxListRight" xPos="158" yPos="48" width="8" height="8" />
|
||||
<Image name="ComboboxListTop" xPos="148" yPos="48" width="8" height="8" />
|
||||
<Image name="ComboboxListBottom" xPos="148" yPos="58" width="8" height="8" />
|
||||
<Image name="ComboboxListTopLeft" xPos="138" yPos="38" width="8" height="8" />
|
||||
<Image name="ComboboxListTopRight" xPos="158" yPos="38" width="8" height="8" />
|
||||
<Image name="ComboboxListBottomLeft" xPos="138" yPos="58" width="8" height="8" />
|
||||
<Image name="ComboboxListBottomRight" xPos="158" yPos="58" width="8" height="8" />
|
||||
<Image name="ComboboxListBackdrop" xPos="148" yPos="48" width="8" height="8" />
|
||||
<Image name="ComboboxSelectionBrush" xPos="8" yPos="70" width="16" height="16" />
|
||||
<Image name="ComboboxDividerLeft" xPos="138" yPos="68" width="14" height="1" />
|
||||
<Image name="ComboboxDividerMiddle" xPos="154" yPos="68" width="8" height="1" />
|
||||
<Image name="ComboboxDividerRight" xPos="164" yPos="68" width="14" height="1" />
|
||||
<Image name="HeaderBarBackdropNormal" xPos="230" yPos="163" width="10" height="12" />
|
||||
<Image name="HeaderBarBackdropHover" xPos="230" yPos="163" width="10" height="12" />
|
||||
<Image name="HeaderBarSplitterNormal" xPos="225" yPos="92" width="3" height="16" />
|
||||
<Image name="HeaderBarSplitterHover" xPos="200" yPos="92" width="3" height="16" />
|
||||
<Image name="HeaderBarSortUp" xPos="233" yPos="178" width="8" height="8" />
|
||||
<Image name="HeaderBarSortDown" xPos="244" yPos="178" width="8" height="8" />
|
||||
<Image name="MultiListLeft" xPos="170" yPos="92" width="7" height="6" />
|
||||
<Image name="MultiListRight" xPos="191" yPos="92" width="7" height="6" />
|
||||
<Image name="MultiListTop" xPos="181" yPos="81" width="6" height="7" />
|
||||
<Image name="MultiListBottom" xPos="181" yPos="102" width="6" height="7" />
|
||||
<Image name="MultiListTopLeft" xPos="170" yPos="81" width="7" height="7" />
|
||||
<Image name="MultiListTopRight" xPos="191" yPos="81" width="7" height="7" />
|
||||
<Image name="MultiListBottomLeft" xPos="170" yPos="102" width="7" height="7" />
|
||||
<Image name="MultiListBottomRight" xPos="191" yPos="102" width="7" height="7" />
|
||||
<Image name="MultiListBackdrop" xPos="181" yPos="92" width="6" height="6" />
|
||||
<Image name="MultiListSelectionBrush" xPos="9" yPos="71" width="14" height="14" />
|
||||
<Image name="AltProgressLeft" xPos="71" yPos="88" width="8" height="12" />
|
||||
<Image name="AltProgressMiddle" xPos="81" yPos="88" width="8" height="12" />
|
||||
<Image name="AltProgressRight" xPos="91" yPos="88" width="8" height="12" />
|
||||
<Image name="AltProgressQuarter" xPos="102" yPos="89" width="3" height="4" />
|
||||
<Image name="AltProgressHalf" xPos="109" yPos="89" width="4" height="5" />
|
||||
<Image name="AltProgressLight1" xPos="100" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight2" xPos="106" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight3" xPos="112" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight4" xPos="118" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight5" xPos="124" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight6" xPos="130" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight7" xPos="136" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight8" xPos="142" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight9" xPos="148" yPos="97" width="4" height="8" />
|
||||
<Image name="AltProgressLight10" xPos="154" yPos="97" width="4" height="8" />
|
||||
<Image name="CloseButtonNormal" xPos="41" yPos="128" width="16" height="16" />
|
||||
<Image name="CloseButtonHover" xPos="41" yPos="146" width="16" height="16" />
|
||||
<Image name="CloseButtonPressed" xPos="41" yPos="164" width="16" height="16" />
|
||||
<Image name="NewCloseButtonNormal" xPos="90" yPos="146" width="10" height="10" />
|
||||
<Image name="NewCloseButtonHover" xPos="90" yPos="146" width="10" height="10" />
|
||||
<Image name="NewCloseButtonPressed" xPos="90" yPos="146" width="10" height="10" />
|
||||
<Image name="MultiLineEditboxLeft" xPos="41" yPos="89" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxRight" xPos="63" yPos="89" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxTop" xPos="52" yPos="78" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxBottom" xPos="52" yPos="100" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxTopLeft" xPos="41" yPos="78" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxTopRight" xPos="63" yPos="78" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxBottomLeft" xPos="41" yPos="100" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxBottomRight" xPos="63" yPos="100" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxBackdrop" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="MultiLineEditboxSelectionBrush" xPos="9" yPos="71" width="14" height="14" />
|
||||
<Image name="MouseTarget" xPos="182" yPos="127" width="17" height="17" xOffset="-8" yOffset="-8" />
|
||||
<Image name="MouseArrow" xPos="138" yPos="127" width="31" height="25" xOffset="0" yOffset="0" />
|
||||
<Image name="MouseMoveCursor" xPos="201" yPos="127" width="18" height="18" xOffset="-8" yOffset="-8" />
|
||||
<Image name="MouseNoSoCursor" xPos="221" yPos="127" width="8" height="18" xOffset="-3" yOffset="-8" />
|
||||
<Image name="MouseEsWeCursor" xPos="182" yPos="150" width="18" height="8" xOffset="-8" yOffset="-3" />
|
||||
<Image name="MouseNeSwCursor" xPos="201" yPos="147" width="14" height="14" xOffset="-7" yOffset="-7" />
|
||||
<Image name="MouseNwSeCursor" xPos="230" yPos="126" width="14" height="14" xOffset="-7" yOffset="-7" />
|
||||
<Image name="MouseTextBar" xPos="173" yPos="127" width="7" height="18" xOffset="-2" yOffset="-9" />
|
||||
<Image name="TabHorizontalFiller" xPos="197" yPos="201" width="7" height="1" />
|
||||
<Image name="TabContentPaneUpperLeft" xPos="41" yPos="78" width="7" height="7" />
|
||||
<Image name="TabContentPaneUpper" xPos="52" yPos="78" width="6" height="7" />
|
||||
<Image name="TabContentPaneUpperRight" xPos="62" yPos="78" width="7" height="7" />
|
||||
<Image name="TabContentPaneLeft" xPos="41" yPos="89" width="7" height="6" />
|
||||
<Image name="TabContentPaneRight" xPos="62" yPos="89" width="7" height="6" />
|
||||
<Image name="TabContentPaneLower" xPos="52" yPos="99" width="6" height="7" />
|
||||
<Image name="TabContentPaneLowerLeft" xPos="41" yPos="99" width="7" height="7" />
|
||||
<Image name="TabContentPaneLowerRight" xPos="62" yPos="99" width="7" height="7" />
|
||||
<Image name="TabContentPaneMiddle" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="TabButtonScrollLeftNormal" xPos="97" yPos="108" width="16" height="17" />
|
||||
<Image name="TabButtonScrollRightNormal" xPos="112" yPos="108" width="16" height="17" />
|
||||
<Image name="TabButtonScrollLeftHover" xPos="127" yPos="108" width="16" height="17" />
|
||||
<Image name="TabButtonScrollRightHover" xPos="142" yPos="108" width="16" height="17" />
|
||||
<Image name="TabButtonLeftNormal" xPos="41" yPos="89" width="7" height="6" />
|
||||
<Image name="TabButtonRightNormal" xPos="62" yPos="89" width="7" height="6" />
|
||||
<Image name="TabButtonUpperNormal" xPos="52" yPos="78" width="6" height="7" />
|
||||
<Image name="TabButtonLowerNormal" xPos="52" yPos="99" width="6" height="7" />
|
||||
<Image name="TabButtonUpperLeftNormal" xPos="41" yPos="78" width="7" height="7" />
|
||||
<Image name="TabButtonUpperLeft2Normal" xPos="186" yPos="164" width="7" height="7" />
|
||||
<Image name="TabButtonUpperRightNormal" xPos="62" yPos="78" width="7" height="7" />
|
||||
<Image name="TabButtonLowerLeftNormal" xPos="41" yPos="99" width="7" height="7" />
|
||||
<Image name="TabButtonLowerRightNormal" xPos="62" yPos="99" width="7" height="7" />
|
||||
<Image name="TabButtonLowerRight2Normal" xPos="187" yPos="195" width="7" height="7" />
|
||||
<Image name="TabButtonMiddleNormal" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="TabButtonLeftSelected" xPos="41" yPos="89" width="7" height="6" />
|
||||
<Image name="TabButtonRightSelected" xPos="62" yPos="89" width="7" height="6" />
|
||||
<Image name="TabButtonUpperSelected" xPos="52" yPos="78" width="6" height="7" />
|
||||
<Image name="TabButtonLowerSelected" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="TabButtonUpperLeftSelected" xPos="41" yPos="78" width="7" height="7" />
|
||||
<Image name="TabButtonUpperRightSelected" xPos="62" yPos="78" width="7" height="7" />
|
||||
<Image name="TabButtonLowerLeftSelected" xPos="41" yPos="99" width="7" height="7" />
|
||||
<Image name="TabButtonLowerRightSelected" xPos="62" yPos="99" width="7" height="7" />
|
||||
<Image name="TabButtonMiddleSelected" xPos="52" yPos="89" width="6" height="6" />
|
||||
<Image name="TooltipTopLeft" xPos="61" yPos="160" width="4" height="4" />
|
||||
<Image name="TooltipTopRight" xPos="85" yPos="160" width="5" height="4" />
|
||||
<Image name="TooltipBottomLeft" xPos="61" yPos="184" width="4" height="5" />
|
||||
<Image name="TooltipBottomRight" xPos="85" yPos="184" width="5" height="5" />
|
||||
<Image name="TooltipLeftEdge" xPos="61" yPos="171" width="4" height="6" />
|
||||
<Image name="TooltipRightEdge" xPos="85" yPos="171" width="5" height="6" />
|
||||
<Image name="TooltipTopEdge" xPos="72" yPos="160" width="6" height="4" />
|
||||
<Image name="TooltipBottomEdge" xPos="72" yPos="184" width="6" height="5" />
|
||||
<Image name="TooltipMiddle" xPos="72" yPos="171" width="6" height="6" />
|
||||
<Image name="MenuTopLeft" xPos="166" yPos="204" width="2" height="2" />
|
||||
<Image name="MenuTopRight" xPos="175" yPos="204" width="3" height="2" />
|
||||
<Image name="MenuBottomLeft" xPos="166" yPos="213" width="2" height="3" />
|
||||
<Image name="MenuBottomRight" xPos="175" yPos="213" width="3" height="3" />
|
||||
<Image name="MenuLeft" xPos="166" yPos="209" width="2" height="1" />
|
||||
<Image name="MenuRight" xPos="175" yPos="209" width="3" height="1" />
|
||||
<Image name="MenuTop" xPos="171" yPos="204" width="1" height="2" />
|
||||
<Image name="MenuBottom" xPos="171" yPos="213" width="1" height="3" />
|
||||
<Image name="MenuMiddle" xPos="171" yPos="209" width="1" height="1" />
|
||||
<Image name="PopupMenuFrameTopLeft" xPos="186" yPos="204" width="2" height="2" />
|
||||
<Image name="PopupMenuFrameTopRight" xPos="195" yPos="204" width="4" height="2" />
|
||||
<Image name="PopupMenuFrameBottomLeft" xPos="186" yPos="213" width="2" height="4" />
|
||||
<Image name="PopupMenuFrameBottomRight" xPos="195" yPos="213" width="4" height="4" />
|
||||
<Image name="PopupMenuFrameLeft" xPos="186" yPos="209" width="2" height="1" />
|
||||
<Image name="PopupMenuFrameRight" xPos="195" yPos="209" width="4" height="1" />
|
||||
<Image name="PopupMenuFrameTop" xPos="191" yPos="204" width="1" height="2" />
|
||||
<Image name="PopupMenuFrameBottom" xPos="191" yPos="213" width="1" height="4" />
|
||||
<Image name="PopupMenuMiddle" xPos="191" yPos="209" width="1" height="1" />
|
||||
<Image name="PopupMenuArrowRight" xPos="179" yPos="204" width="5" height="5" />
|
||||
<Image name="PopupMenuArrowLeft" xPos="179" yPos="210" width="5" height="5" />
|
||||
<Image name="TreeListClosed" xPos="175" yPos="111" width="7" height="11" xOffset="8" yOffset="2" />
|
||||
<Image name="TreeListOpened" xPos="164" yPos="111" width="11" height="7" xOffset="8" yOffset="2"/>
|
||||
</Imageset>
|
||||
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" ?>
|
||||
<GUIScheme version="5" name="TaharezLook">
|
||||
<Imageset filename="TaharezLook-0.8.imageset" />
|
||||
<Font filename="bluehighway-8-0.8.font" />
|
||||
<Font filename="bluehighway-10-0.8.font" />
|
||||
<Font filename="bluehighway-12-0.8.font" />
|
||||
<Font filename="bluehighway-24-0.8.font" />
|
||||
<Font filename="bluehighway-impact-0.8.font" />
|
||||
<LookNFeel filename="TaharezLook-0.8.looknfeel" />
|
||||
<WindowRendererSet filename="CEGUICoreWindowRendererSet" />
|
||||
|
||||
<FalagardMapping windowType="TaharezLook/Button" targetType="CEGUI/PushButton" renderer="Core/Button" lookNFeel="TaharezLook/Button" />
|
||||
<FalagardMapping windowType="TaharezLook/Checkbox" targetType="CEGUI/Checkbox" renderer="Core/ToggleButton" lookNFeel="TaharezLook/Checkbox" />
|
||||
<FalagardMapping windowType="TaharezLook/ImageButton" targetType="CEGUI/PushButton" renderer="Core/Button" lookNFeel="TaharezLook/ImageButton" />
|
||||
<FalagardMapping windowType="TaharezLook/RadioButton" targetType="CEGUI/RadioButton" renderer="Core/ToggleButton" lookNFeel="TaharezLook/RadioButton" />
|
||||
<FalagardMapping windowType="TaharezLook/FrameWindow" targetType="CEGUI/FrameWindow" renderer="Core/FrameWindow" lookNFeel="TaharezLook/FrameWindow" />
|
||||
<FalagardMapping windowType="TaharezLook/Titlebar" targetType="CEGUI/Titlebar" renderer="Core/Titlebar" lookNFeel="TaharezLook/Titlebar" />
|
||||
<FalagardMapping windowType="TaharezLook/SystemButton" targetType="CEGUI/PushButton" renderer="Core/Button" lookNFeel="TaharezLook/Button" />
|
||||
<FalagardMapping windowType="TaharezLook/Editbox" targetType="CEGUI/Editbox" renderer="Core/Editbox" lookNFeel="TaharezLook/Editbox" />
|
||||
<FalagardMapping windowType="TaharezLook/MultiLineEditbox" targetType="CEGUI/MultiLineEditbox" renderer="Core/MultiLineEditbox" lookNFeel="TaharezLook/MultiLineEditbox" />
|
||||
<FalagardMapping windowType="TaharezLook/Menubar" targetType="CEGUI/Menubar" renderer="Core/Menubar" lookNFeel="TaharezLook/Menubar" />
|
||||
<FalagardMapping windowType="TaharezLook/PopupMenu" targetType="CEGUI/PopupMenu" renderer="Core/PopupMenu" lookNFeel="TaharezLook/PopupMenu" />
|
||||
<FalagardMapping windowType="TaharezLook/MenuItem" targetType="CEGUI/MenuItem" renderer="Core/MenuItem" lookNFeel="TaharezLook/MenuItem" />
|
||||
<FalagardMapping windowType="TaharezLook/AlternateProgressBar" targetType="CEGUI/ProgressBar" renderer="Core/ProgressBar" lookNFeel="TaharezLook/AltProgressBar" />
|
||||
<FalagardMapping windowType="TaharezLook/ProgressBar" targetType="CEGUI/ProgressBar" renderer="Core/ProgressBar" lookNFeel="TaharezLook/ProgressBar" />
|
||||
<FalagardMapping windowType="TaharezLook/VUMeter" targetType="CEGUI/ProgressBar" renderer="Core/ProgressBar" lookNFeel="TaharezLook/VUMeter" />
|
||||
<FalagardMapping windowType="TaharezLook/VerticalScrollbar" targetType="CEGUI/Scrollbar" renderer="Core/Scrollbar" lookNFeel="TaharezLook/VerticalScrollbar" />
|
||||
<FalagardMapping windowType="TaharezLook/HorizontalScrollbar" targetType="CEGUI/Scrollbar" renderer="Core/Scrollbar" lookNFeel="TaharezLook/HorizontalScrollbar" />
|
||||
<FalagardMapping windowType="TaharezLook/VerticalScrollbarThumb" targetType="CEGUI/Thumb" renderer="Core/Button" lookNFeel="TaharezLook/VerticalScrollbarThumb" />
|
||||
<FalagardMapping windowType="TaharezLook/HorizontalScrollbarThumb" targetType="CEGUI/Thumb" renderer="Core/Button" lookNFeel="TaharezLook/HorizontalScrollbarThumb" />
|
||||
<FalagardMapping windowType="TaharezLook/LargeVerticalScrollbar" targetType="CEGUI/Scrollbar" renderer="Core/Scrollbar" lookNFeel="TaharezLook/LargeVerticalScrollbar" />
|
||||
<FalagardMapping windowType="TaharezLook/LargeVerticalScrollbarThumb" targetType="CEGUI/Thumb" renderer="Core/Button" lookNFeel="TaharezLook/LargeVerticalScrollbarThumb" />
|
||||
<FalagardMapping windowType="TaharezLook/TabButton" targetType="CEGUI/TabButton" renderer="Core/TabButton" lookNFeel="TaharezLook/TabButton" />
|
||||
<FalagardMapping windowType="TaharezLook/TabControl" targetType="CEGUI/TabControl" renderer="Core/TabControl" lookNFeel="TaharezLook/TabControl" />
|
||||
<FalagardMapping windowType="TaharezLook/TabContentPane" targetType="DefaultWindow" renderer="Core/Default" lookNFeel="TaharezLook/TabContentPane" />
|
||||
<FalagardMapping windowType="TaharezLook/TabButtonPane" targetType="DefaultWindow" renderer="Core/Default" lookNFeel="TaharezLook/TabButtonPane" />
|
||||
<FalagardMapping windowType="TaharezLook/ComboDropList" targetType="CEGUI/ComboDropList" renderer="Core/Listbox" lookNFeel="TaharezLook/ComboDropList" />
|
||||
<FalagardMapping windowType="TaharezLook/ComboEditbox" targetType="CEGUI/Editbox" renderer="Core/Editbox" lookNFeel="TaharezLook/ComboEditbox" />
|
||||
<FalagardMapping windowType="TaharezLook/Combobox" targetType="CEGUI/Combobox" renderer="Core/Default" lookNFeel="TaharezLook/Combobox" />
|
||||
<FalagardMapping windowType="TaharezLook/Listbox" targetType="CEGUI/Listbox" renderer="Core/Listbox" lookNFeel="TaharezLook/Listbox" />
|
||||
<FalagardMapping windowType="TaharezLook/ListHeader" targetType="CEGUI/ListHeader" renderer="Core/ListHeader" lookNFeel="TaharezLook/ListHeader" />
|
||||
<FalagardMapping windowType="TaharezLook/ListHeaderSegment" targetType="CEGUI/ListHeaderSegment" renderer="Core/ListHeaderSegment" lookNFeel="TaharezLook/ListHeaderSegment" />
|
||||
<FalagardMapping windowType="TaharezLook/MultiColumnList" targetType="CEGUI/MultiColumnList" renderer="Core/MultiColumnList" lookNFeel="TaharezLook/MultiColumnList" />
|
||||
<FalagardMapping windowType="TaharezLook/Slider" targetType="CEGUI/Slider" renderer="Core/Slider" lookNFeel="TaharezLook/Slider" />
|
||||
<FalagardMapping windowType="TaharezLook/SliderThumb" targetType="CEGUI/Thumb" renderer="Core/Button" lookNFeel="TaharezLook/SliderThumb" />
|
||||
<FalagardMapping windowType="TaharezLook/ScrollablePane" targetType="CEGUI/ScrollablePane" renderer="Core/ScrollablePane" lookNFeel="TaharezLook/ScrollablePane" />
|
||||
<FalagardMapping windowType="TaharezLook/Spinner" targetType="CEGUI/Spinner" renderer="Core/Default" lookNFeel="TaharezLook/Spinner" />
|
||||
<FalagardMapping windowType="TaharezLook/Tooltip" targetType="CEGUI/Tooltip" renderer="Core/Tooltip" lookNFeel="TaharezLook/Tooltip" />
|
||||
<FalagardMapping windowType="TaharezLook/StaticImage" targetType="DefaultWindow" renderer="Core/StaticImage" lookNFeel="TaharezLook/StaticImage" />
|
||||
<FalagardMapping windowType="TaharezLook/StaticText" targetType="DefaultWindow" renderer="Core/StaticText" lookNFeel="TaharezLook/StaticText" />
|
||||
<FalagardMapping windowType="TaharezLook/ItemListbox" targetType="CEGUI/ItemListbox" renderer="Core/ItemListbox" lookNFeel="TaharezLook/ItemListbox" />
|
||||
<FalagardMapping windowType="TaharezLook/ListboxItem" targetType="CEGUI/ItemEntry" renderer="Core/ItemEntry" lookNFeel="TaharezLook/ListboxItem" />
|
||||
<FalagardMapping windowType="TaharezLook/GroupBox" targetType="CEGUI/GroupBox" renderer="Core/Default" lookNFeel="TaharezLook/GroupBox" />
|
||||
<FalagardMapping windowType="TaharezLook/Tree" targetType="CEGUI/Tree" renderer="Core/Tree" lookNFeel="TaharezLook/Tree" />
|
||||
</GUIScheme>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" ?>
|
||||
<GUIScheme Name="TaharezLook">
|
||||
<Imageset Filename="TaharezLook.imageset" />
|
||||
<Font Filename="bluehighway-8.font" />
|
||||
<Font Filename="bluehighway-10.font" />
|
||||
<Font Filename="bluehighway-12.font" />
|
||||
<Font Filename="bluehighway-24.font" />
|
||||
<Font Filename="bluehighway-impact.font" />
|
||||
<LookNFeel Filename="TaharezLook.looknfeel" />
|
||||
<WindowRendererSet Filename="CEGUIFalagardWRBase" />
|
||||
<FalagardMapping WindowType="TaharezLook/Button" TargetType="CEGUI/PushButton" Renderer="Falagard/Button" LookNFeel="TaharezLook/Button" />
|
||||
<FalagardMapping WindowType="TaharezLook/Checkbox" TargetType="CEGUI/Checkbox" Renderer="Falagard/ToggleButton" LookNFeel="TaharezLook/Checkbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/ImageButton" TargetType="CEGUI/PushButton" Renderer="Falagard/Button" LookNFeel="TaharezLook/ImageButton" />
|
||||
<FalagardMapping WindowType="TaharezLook/RadioButton" TargetType="CEGUI/RadioButton" Renderer="Falagard/ToggleButton" LookNFeel="TaharezLook/RadioButton" />
|
||||
<FalagardMapping WindowType="TaharezLook/FrameWindow" TargetType="CEGUI/FrameWindow" Renderer="Falagard/FrameWindow" LookNFeel="TaharezLook/FrameWindow" />
|
||||
<FalagardMapping WindowType="TaharezLook/Titlebar" TargetType="CEGUI/Titlebar" Renderer="Falagard/Titlebar" LookNFeel="TaharezLook/Titlebar" />
|
||||
<FalagardMapping WindowType="TaharezLook/SystemButton" TargetType="CEGUI/PushButton" Renderer="Falagard/Button" LookNFeel="TaharezLook/Button" />
|
||||
<FalagardMapping WindowType="TaharezLook/Editbox" TargetType="CEGUI/Editbox" Renderer="Falagard/Editbox" LookNFeel="TaharezLook/Editbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/MultiLineEditbox" TargetType="CEGUI/MultiLineEditbox" Renderer="Falagard/MultiLineEditbox" LookNFeel="TaharezLook/MultiLineEditbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/Menubar" TargetType="CEGUI/Menubar" Renderer="Falagard/Menubar" LookNFeel="TaharezLook/Menubar" />
|
||||
<FalagardMapping WindowType="TaharezLook/PopupMenu" TargetType="CEGUI/PopupMenu" Renderer="Falagard/PopupMenu" LookNFeel="TaharezLook/PopupMenu" />
|
||||
<FalagardMapping WindowType="TaharezLook/MenuItem" TargetType="CEGUI/MenuItem" Renderer="Falagard/MenuItem" LookNFeel="TaharezLook/MenuItem" />
|
||||
<FalagardMapping WindowType="TaharezLook/AlternateProgressBar" TargetType="CEGUI/ProgressBar" Renderer="Falagard/ProgressBar" LookNFeel="TaharezLook/AltProgressBar" />
|
||||
<FalagardMapping WindowType="TaharezLook/ProgressBar" TargetType="CEGUI/ProgressBar" Renderer="Falagard/ProgressBar" LookNFeel="TaharezLook/ProgressBar" />
|
||||
<FalagardMapping WindowType="TaharezLook/VUMeter" TargetType="CEGUI/ProgressBar" Renderer="Falagard/ProgressBar" LookNFeel="TaharezLook/VUMeter" />
|
||||
<FalagardMapping WindowType="TaharezLook/VerticalScrollbar" TargetType="CEGUI/Scrollbar" Renderer="Falagard/Scrollbar" LookNFeel="TaharezLook/VerticalScrollbar" />
|
||||
<FalagardMapping WindowType="TaharezLook/HorizontalScrollbar" TargetType="CEGUI/Scrollbar" Renderer="Falagard/Scrollbar" LookNFeel="TaharezLook/HorizontalScrollbar" />
|
||||
<FalagardMapping WindowType="TaharezLook/VerticalScrollbarThumb" TargetType="CEGUI/Thumb" Renderer="Falagard/Button" LookNFeel="TaharezLook/VerticalScrollbarThumb" />
|
||||
<FalagardMapping WindowType="TaharezLook/HorizontalScrollbarThumb" TargetType="CEGUI/Thumb" Renderer="Falagard/Button" LookNFeel="TaharezLook/HorizontalScrollbarThumb" />
|
||||
<FalagardMapping WindowType="TaharezLook/LargeVerticalScrollbar" TargetType="CEGUI/Scrollbar" Renderer="Falagard/Scrollbar" LookNFeel="TaharezLook/LargeVerticalScrollbar" />
|
||||
<FalagardMapping WindowType="TaharezLook/LargeVerticalScrollbarThumb" TargetType="CEGUI/Thumb" Renderer="Falagard/Button" LookNFeel="TaharezLook/LargeVerticalScrollbarThumb" />
|
||||
<FalagardMapping WindowType="TaharezLook/TabButton" TargetType="CEGUI/TabButton" Renderer="Falagard/TabButton" LookNFeel="TaharezLook/TabButton" />
|
||||
<FalagardMapping WindowType="TaharezLook/TabControl" TargetType="CEGUI/TabControl" Renderer="Falagard/TabControl" LookNFeel="TaharezLook/TabControl" />
|
||||
<FalagardMapping WindowType="TaharezLook/TabContentPane" TargetType="DefaultWindow" Renderer="Falagard/Default" LookNFeel="TaharezLook/TabContentPane" />
|
||||
<FalagardMapping WindowType="TaharezLook/TabButtonPane" TargetType="DefaultWindow" Renderer="Falagard/Default" LookNFeel="TaharezLook/TabButtonPane" />
|
||||
<FalagardMapping WindowType="TaharezLook/ComboDropList" TargetType="CEGUI/ComboDropList" Renderer="Falagard/Listbox" LookNFeel="TaharezLook/ComboDropList" />
|
||||
<FalagardMapping WindowType="TaharezLook/ComboEditbox" TargetType="CEGUI/Editbox" Renderer="Falagard/Editbox" LookNFeel="TaharezLook/ComboEditbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/Combobox" TargetType="CEGUI/Combobox" Renderer="Falagard/Default" LookNFeel="TaharezLook/Combobox" />
|
||||
<FalagardMapping WindowType="TaharezLook/Listbox" TargetType="CEGUI/Listbox" Renderer="Falagard/Listbox" LookNFeel="TaharezLook/Listbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/ListHeader" TargetType="CEGUI/ListHeader" Renderer="Falagard/ListHeader" LookNFeel="TaharezLook/ListHeader" />
|
||||
<FalagardMapping WindowType="TaharezLook/ListHeaderSegment" TargetType="CEGUI/ListHeaderSegment" Renderer="Falagard/ListHeaderSegment" LookNFeel="TaharezLook/ListHeaderSegment" />
|
||||
<FalagardMapping WindowType="TaharezLook/MultiColumnList" TargetType="CEGUI/MultiColumnList" Renderer="Falagard/MultiColumnList" LookNFeel="TaharezLook/MultiColumnList" />
|
||||
<FalagardMapping WindowType="TaharezLook/Slider" TargetType="CEGUI/Slider" Renderer="Falagard/Slider" LookNFeel="TaharezLook/Slider" />
|
||||
<FalagardMapping WindowType="TaharezLook/SliderThumb" TargetType="CEGUI/Thumb" Renderer="Falagard/Button" LookNFeel="TaharezLook/SliderThumb" />
|
||||
<FalagardMapping WindowType="TaharezLook/ScrollablePane" TargetType="CEGUI/ScrollablePane" Renderer="Falagard/ScrollablePane" LookNFeel="TaharezLook/ScrollablePane" />
|
||||
<FalagardMapping WindowType="TaharezLook/Spinner" TargetType="CEGUI/Spinner" Renderer="Falagard/Default" LookNFeel="TaharezLook/Spinner" />
|
||||
<FalagardMapping WindowType="TaharezLook/Tooltip" TargetType="CEGUI/Tooltip" Renderer="Falagard/Tooltip" LookNFeel="TaharezLook/Tooltip" />
|
||||
<FalagardMapping WindowType="TaharezLook/StaticImage" TargetType="DefaultWindow" Renderer="Falagard/StaticImage" LookNFeel="TaharezLook/StaticImage" />
|
||||
<FalagardMapping WindowType="TaharezLook/StaticText" TargetType="DefaultWindow" Renderer="Falagard/StaticText" LookNFeel="TaharezLook/StaticText" />
|
||||
<FalagardMapping WindowType="TaharezLook/ItemListbox" TargetType="CEGUI/ItemListbox" Renderer="Falagard/ItemListbox" LookNFeel="TaharezLook/ItemListbox" />
|
||||
<FalagardMapping WindowType="TaharezLook/ListboxItem" TargetType="CEGUI/ItemEntry" Renderer="Falagard/ItemEntry" LookNFeel="TaharezLook/ListboxItem" />
|
||||
<FalagardMapping WindowType="TaharezLook/GroupBox" TargetType="CEGUI/GroupBox" Renderer="Falagard/Default" LookNFeel="TaharezLook/GroupBox" />
|
||||
<FalagardMapping WindowType="TaharezLook/Tree" TargetType="CEGUI/Tree" Renderer="Falagard/Tree" LookNFeel="TaharezLook/Tree" />
|
||||
</GUIScheme>
|
||||
@@ -0,0 +1,245 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Imageset Name="TaharezLook" Imagefile="TaharezLook.tga" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true">
|
||||
<Image Name="ClientBrush" XPos="2" YPos="2" Width="64" Height="64" />
|
||||
<Image Name="GenericBrush" XPos="9" YPos="71" Width="1" Height="1" />
|
||||
<Image Name="WindowLeftEdge" XPos="6" YPos="95" Width="1" Height="22" XOffset="4" />
|
||||
<Image Name="WindowRightEdge" XPos="34" YPos="95" Width="1" Height="22" XOffset="-5" />
|
||||
<Image Name="WindowTopEdge" XPos="9" YPos="68" Width="23" Height="1" />
|
||||
<Image Name="WindowBottomEdge" XPos="9" YPos="143" Width="23" Height="1" />
|
||||
<Image Name="WindowTopLeft" XPos="2" YPos="68" Width="5" Height="24" />
|
||||
<Image Name="WindowTopRight" XPos="34" YPos="68" Width="5" Height="24" />
|
||||
<Image Name="WindowBottomLeft" XPos="2" YPos="120" Width="5" Height="24" />
|
||||
<Image Name="WindowBottomRight" XPos="34" YPos="120" Width="5" Height="24" />
|
||||
<Image Name="ButtonLeftNormal" XPos="68" YPos="20" Width="12" Height="16" />
|
||||
<Image Name="ButtonMiddleNormal" XPos="82" YPos="20" Width="12" Height="16" />
|
||||
<Image Name="ButtonRightNormal" XPos="96" YPos="20" Width="12" Height="16" />
|
||||
<Image Name="ButtonLeftPushed" XPos="68" YPos="38" Width="12" Height="16" />
|
||||
<Image Name="ButtonMiddlePushed" XPos="82" YPos="38" Width="12" Height="16" />
|
||||
<Image Name="ButtonRightPushed" XPos="96" YPos="38" Width="12" Height="16" />
|
||||
<Image Name="ButtonLeftHighlight" XPos="68" YPos="56" Width="12" Height="16" />
|
||||
<Image Name="ButtonMiddleHighlight" XPos="82" YPos="56" Width="12" Height="16" />
|
||||
<Image Name="ButtonRightHighlight" XPos="96" YPos="56" Width="12" Height="16" />
|
||||
<Image Name="CheckboxNormal" XPos="110" YPos="2" Width="12" Height="12" />
|
||||
<Image Name="CheckboxHover" XPos="110" YPos="30" Width="12" Height="12" />
|
||||
<Image Name="CheckboxMark" XPos="110" YPos="16" Width="12" Height="12" />
|
||||
<Image Name="RadioButtonNormal" XPos="124" YPos="2" Width="12" Height="12" />
|
||||
<Image Name="RadioButtonHover" XPos="124" YPos="30" Width="12" Height="12" />
|
||||
<Image Name="RadioButtonMark" XPos="124" YPos="16" Width="12" Height="12" />
|
||||
<Image Name="TitlebarLeft" XPos="68" YPos="2" Width="8" Height="16" />
|
||||
<Image Name="TitlebarMiddle" XPos="78" YPos="2" Width="8" Height="16" />
|
||||
<Image Name="TitlebarRight" XPos="88" YPos="2" Width="8" Height="16" />
|
||||
<Image Name="NewTitlebarLeft" XPos="61" YPos="127" Width="13" Height="16" />
|
||||
<Image Name="NewTitlebarMiddle" XPos="77" YPos="127" Width="12" Height="16" />
|
||||
<Image Name="NewTitlebarRight" XPos="92" YPos="127" Width="12" Height="16" />
|
||||
<Image Name="SysAreaMiddle" XPos="107" YPos="127" Width="12" Height="16" />
|
||||
<Image Name="SysAreaRight" XPos="122" YPos="127" Width="13" Height="16" />
|
||||
<Image Name="StaticLeft" XPos="41" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="StaticRight" XPos="63" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="StaticTop" XPos="52" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="StaticBottom" XPos="52" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="StaticTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="StaticTopRight" XPos="63" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="StaticBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="StaticBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="StaticBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="ProgressBarLeft" XPos="71" YPos="74" Width="7" Height="12" />
|
||||
<Image Name="ProgressBarMiddle" XPos="80" YPos="74" Width="6" Height="12" />
|
||||
<Image Name="ProgressBarRight" XPos="88" YPos="74" Width="6" Height="12" />
|
||||
<Image Name="ProgressBarDimSegment" XPos="96" YPos="74" Width="8" Height="12" />
|
||||
<Image Name="ProgressBarLitSegment" XPos="106" YPos="74" Width="8" Height="12" />
|
||||
<Image Name="EditBoxLeft" XPos="41" YPos="108" Width="4" Height="18" />
|
||||
<Image Name="EditBoxMiddle" XPos="47" YPos="108" Width="4" Height="18" />
|
||||
<Image Name="EditBoxRight" XPos="53" YPos="108" Width="4" Height="18" />
|
||||
<Image Name="EditBoxCarat" XPos="60" YPos="108" Width="4" Height="18" />
|
||||
<Image Name="SpinnerUpNormal" XPos="68" YPos="110" Width="10" Height="6" />
|
||||
<Image Name="SpinnerDownNormal" XPos="68" YPos="118" Width="10" Height="6" />
|
||||
<Image Name="SpinnerUpHover" XPos="82" YPos="110" Width="10" Height="6" />
|
||||
<Image Name="SpinnerDownHover" XPos="82" YPos="118" Width="10" Height="6" />
|
||||
<Image Name="TextSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
|
||||
<Image Name="VertScrollTop" XPos="182" YPos="2" Width="20" Height="8" />
|
||||
<Image Name="VertScrollMiddle" XPos="182" YPos="12" Width="20" Height="8" />
|
||||
<Image Name="VertScrollBottom" XPos="182" YPos="22" Width="20" Height="8" />
|
||||
<Image Name="VertScrollBarSegment" XPos="206" YPos="2" Width="4" Height="10" />
|
||||
<Image Name="VertScrollThumbNormal" XPos="214" YPos="2" Width="8" Height="24" />
|
||||
<Image Name="VertScrollThumbHover" XPos="224" YPos="2" Width="8" Height="24" />
|
||||
<Image Name="VertScrollUpNormal" XPos="196" YPos="32" Width="12" Height="12" />
|
||||
<Image Name="VertScrollDownNormal" XPos="182" YPos="32" Width="12" Height="12" />
|
||||
<Image Name="VertScrollUpHover" XPos="196" YPos="46" Width="12" Height="12" />
|
||||
<Image Name="VertScrollDownHover" XPos="182" YPos="46" Width="12" Height="12" />
|
||||
<Image Name="MiniVertScrollBarSegment" XPos="207" YPos="60" Width="4" Height="10" />
|
||||
<Image Name="MiniVertScrollThumbNormal" XPos="214" YPos="59" Width="7" Height="22" />
|
||||
<Image Name="MiniVertScrollThumbTopNormal" XPos="214" YPos="59" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbMiddleNormal" XPos="214" YPos="65" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbBottomNormal" XPos="214" YPos="76" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbTopHover" XPos="223" YPos="59" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbMiddleHover" XPos="223" YPos="65" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbBottomHover" XPos="223" YPos="76" Width="7" Height="5" />
|
||||
<Image Name="MiniVertScrollThumbHover" XPos="223" YPos="59" Width="7" Height="22" />
|
||||
<Image Name="MiniVertScrollUpNormal" XPos="194" YPos="60" Width="10" Height="9" />
|
||||
<Image Name="MiniVertScrollDownNormal" XPos="182" YPos="59" Width="10" Height="9" />
|
||||
<Image Name="MiniVertScrollUpHover" XPos="194" YPos="70" Width="10" Height="9" />
|
||||
<Image Name="MiniVertScrollDownHover" XPos="182" YPos="69" Width="10" Height="9" />
|
||||
<Image Name="VertSliderBody" XPos="234" YPos="2" Width="9" Height="48" />
|
||||
<Image Name="VertSliderThumbNormal" XPos="217" YPos="28" Width="15" Height="6" />
|
||||
<Image Name="VertSliderThumbHover" XPos="217" YPos="36" Width="15" Height="6" />
|
||||
<Image Name="MiniHorzScrollBarSegment" XPos="244" YPos="80" Width="10" Height="4" />
|
||||
<Image Name="MiniHorzScrollThumbNormal" XPos="233" YPos="87" Width="22" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbLeftNormal" XPos="233" YPos="87" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbMiddleNormal" XPos="239" YPos="87" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbRightNormal" XPos="250" YPos="87" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbHover" XPos="233" YPos="96" Width="22" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbLeftHover" XPos="233" YPos="96" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbMiddleHover" XPos="239" YPos="96" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollThumbRightHover" XPos="250" YPos="96" Width="5" Height="7" />
|
||||
<Image Name="MiniHorzScrollLeftNormal" XPos="246" YPos="55" Width="9" Height="10" />
|
||||
<Image Name="MiniHorzScrollRightNormal" XPos="245" YPos="67" Width="9" Height="10" />
|
||||
<Image Name="MiniHorzScrollLeftHover" XPos="236" YPos="55" Width="9" Height="10" />
|
||||
<Image Name="MiniHorzScrollRightHover" XPos="235" YPos="67" Width="9" Height="10" />
|
||||
<Image Name="ListboxLeft" XPos="41" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="ListboxRight" XPos="62" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="ListboxTop" XPos="52" YPos="78" Width="6" Height="7" />
|
||||
<Image Name="ListboxBottom" XPos="52" YPos="99" Width="6" Height="7" />
|
||||
<Image Name="ListboxTopLeft" XPos="41" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="ListboxTopRight" XPos="62" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="ListboxBottomLeft" XPos="41" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="ListboxBottomRight" XPos="62" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="ListboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="ListboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
|
||||
<Image Name="ComboboxEditLeft" XPos="138" YPos="2" Width="8" Height="16" />
|
||||
<Image Name="ComboboxEditMiddle" XPos="148" YPos="2" Width="8" Height="16" />
|
||||
<Image Name="ComboboxListButtonNormal" XPos="158" YPos="2" Width="16" Height="16" />
|
||||
<Image Name="ComboboxListButtonHover" XPos="158" YPos="20" Width="16" Height="16" />
|
||||
<Image Name="ComboboxListLeft" XPos="138" YPos="48" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListRight" XPos="158" YPos="48" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListTop" XPos="148" YPos="48" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListBottom" XPos="148" YPos="58" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListTopLeft" XPos="138" YPos="38" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListTopRight" XPos="158" YPos="38" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListBottomLeft" XPos="138" YPos="58" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListBottomRight" XPos="158" YPos="58" Width="8" Height="8" />
|
||||
<Image Name="ComboboxListBackdrop" XPos="148" YPos="48" Width="8" Height="8" />
|
||||
<Image Name="ComboboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
|
||||
<Image Name="ComboboxDividerLeft" XPos="138" YPos="68" Width="14" Height="1" />
|
||||
<Image Name="ComboboxDividerMiddle" XPos="154" YPos="68" Width="8" Height="1" />
|
||||
<Image Name="ComboboxDividerRight" XPos="164" YPos="68" Width="14" Height="1" />
|
||||
<Image Name="HeaderBarBackdropNormal" XPos="230" YPos="163" Width="10" Height="12" />
|
||||
<Image Name="HeaderBarBackdropHover" XPos="230" YPos="163" Width="10" Height="12" />
|
||||
<Image Name="HeaderBarSplitterNormal" XPos="225" YPos="92" Width="3" Height="16" />
|
||||
<Image Name="HeaderBarSplitterHover" XPos="200" YPos="92" Width="3" Height="16" />
|
||||
<Image Name="HeaderBarSortUp" XPos="233" YPos="178" Width="8" Height="8" />
|
||||
<Image Name="HeaderBarSortDown" XPos="244" YPos="178" Width="8" Height="8" />
|
||||
<Image Name="MultiListLeft" XPos="170" YPos="92" Width="7" Height="6" />
|
||||
<Image Name="MultiListRight" XPos="191" YPos="92" Width="7" Height="6" />
|
||||
<Image Name="MultiListTop" XPos="181" YPos="81" Width="6" Height="7" />
|
||||
<Image Name="MultiListBottom" XPos="181" YPos="102" Width="6" Height="7" />
|
||||
<Image Name="MultiListTopLeft" XPos="170" YPos="81" Width="7" Height="7" />
|
||||
<Image Name="MultiListTopRight" XPos="191" YPos="81" Width="7" Height="7" />
|
||||
<Image Name="MultiListBottomLeft" XPos="170" YPos="102" Width="7" Height="7" />
|
||||
<Image Name="MultiListBottomRight" XPos="191" YPos="102" Width="7" Height="7" />
|
||||
<Image Name="MultiListBackdrop" XPos="181" YPos="92" Width="6" Height="6" />
|
||||
<Image Name="MultiListSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
|
||||
<Image Name="AltProgressLeft" XPos="71" YPos="88" Width="8" Height="12" />
|
||||
<Image Name="AltProgressMiddle" XPos="81" YPos="88" Width="8" Height="12" />
|
||||
<Image Name="AltProgressRight" XPos="91" YPos="88" Width="8" Height="12" />
|
||||
<Image Name="AltProgressQuarter" XPos="102" YPos="89" Width="3" Height="4" />
|
||||
<Image Name="AltProgressHalf" XPos="109" YPos="89" Width="4" Height="5" />
|
||||
<Image Name="AltProgressLight1" XPos="100" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight2" XPos="106" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight3" XPos="112" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight4" XPos="118" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight5" XPos="124" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight6" XPos="130" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight7" XPos="136" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight8" XPos="142" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight9" XPos="148" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="AltProgressLight10" XPos="154" YPos="97" Width="4" Height="8" />
|
||||
<Image Name="CloseButtonNormal" XPos="41" YPos="128" Width="16" Height="16" />
|
||||
<Image Name="CloseButtonHover" XPos="41" YPos="146" Width="16" Height="16" />
|
||||
<Image Name="CloseButtonPressed" XPos="41" YPos="164" Width="16" Height="16" />
|
||||
<Image Name="NewCloseButtonNormal" XPos="90" YPos="146" Width="10" Height="10" />
|
||||
<Image Name="NewCloseButtonHover" XPos="90" YPos="146" Width="10" Height="10" />
|
||||
<Image Name="NewCloseButtonPressed" XPos="90" YPos="146" Width="10" Height="10" />
|
||||
<Image Name="MultiLineEditboxLeft" XPos="41" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxRight" XPos="63" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxTop" XPos="52" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxBottom" XPos="52" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxTopRight" XPos="63" YPos="78" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="MultiLineEditboxSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
|
||||
<Image Name="MouseTarget" XPos="182" YPos="127" Width="17" Height="17" XOffset="-8" YOffset="-8" />
|
||||
<Image Name="MouseArrow" XPos="138" YPos="127" Width="31" Height="25" XOffset="0" YOffset="0" />
|
||||
<Image Name="MouseMoveCursor" XPos="201" YPos="127" Width="18" Height="18" XOffset="-8" YOffset="-8" />
|
||||
<Image Name="MouseNoSoCursor" XPos="221" YPos="127" Width="8" Height="18" XOffset="-3" YOffset="-8" />
|
||||
<Image Name="MouseEsWeCursor" XPos="182" YPos="150" Width="18" Height="8" XOffset="-8" YOffset="-3" />
|
||||
<Image Name="MouseNeSwCursor" XPos="201" YPos="147" Width="14" Height="14" XOffset="-7" YOffset="-7" />
|
||||
<Image Name="MouseNwSeCursor" XPos="230" YPos="126" Width="14" Height="14" XOffset="-7" YOffset="-7" />
|
||||
<Image Name="MouseTextBar" XPos="173" YPos="127" Width="7" Height="18" XOffset="-2" YOffset="-9" />
|
||||
<Image Name="TabHorizontalFiller" XPos="197" YPos="201" Width="7" Height="1" />
|
||||
<Image Name="TabContentPaneUpperLeft" XPos="41" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabContentPaneUpper" XPos="52" YPos="78" Width="6" Height="7" />
|
||||
<Image Name="TabContentPaneUpperRight" XPos="62" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabContentPaneLeft" XPos="41" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabContentPaneRight" XPos="62" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabContentPaneLower" XPos="52" YPos="99" Width="6" Height="7" />
|
||||
<Image Name="TabContentPaneLowerLeft" XPos="41" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabContentPaneLowerRight" XPos="62" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabContentPaneMiddle" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="TabButtonScrollLeftNormal" XPos="97" YPos="108" Width="16" Height="17" />
|
||||
<Image Name="TabButtonScrollRightNormal" XPos="112" YPos="108" Width="16" Height="17" />
|
||||
<Image Name="TabButtonScrollLeftHover" XPos="127" YPos="108" Width="16" Height="17" />
|
||||
<Image Name="TabButtonScrollRightHover" XPos="142" YPos="108" Width="16" Height="17" />
|
||||
<Image Name="TabButtonLeftNormal" XPos="41" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabButtonRightNormal" XPos="62" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabButtonUpperNormal" XPos="52" YPos="78" Width="6" Height="7" />
|
||||
<Image Name="TabButtonLowerNormal" XPos="52" YPos="99" Width="6" Height="7" />
|
||||
<Image Name="TabButtonUpperLeftNormal" XPos="41" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabButtonUpperLeft2Normal" XPos="186" YPos="164" Width="7" Height="7" />
|
||||
<Image Name="TabButtonUpperRightNormal" XPos="62" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabButtonLowerLeftNormal" XPos="41" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabButtonLowerRightNormal" XPos="62" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabButtonLowerRight2Normal" XPos="187" YPos="195" Width="7" Height="7" />
|
||||
<Image Name="TabButtonMiddleNormal" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="TabButtonLeftSelected" XPos="41" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabButtonRightSelected" XPos="62" YPos="89" Width="7" Height="6" />
|
||||
<Image Name="TabButtonUpperSelected" XPos="52" YPos="78" Width="6" Height="7" />
|
||||
<Image Name="TabButtonLowerSelected" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="TabButtonUpperLeftSelected" XPos="41" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabButtonUpperRightSelected" XPos="62" YPos="78" Width="7" Height="7" />
|
||||
<Image Name="TabButtonLowerLeftSelected" XPos="41" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabButtonLowerRightSelected" XPos="62" YPos="99" Width="7" Height="7" />
|
||||
<Image Name="TabButtonMiddleSelected" XPos="52" YPos="89" Width="6" Height="6" />
|
||||
<Image Name="TooltipTopLeft" XPos="61" YPos="160" Width="4" Height="4" />
|
||||
<Image Name="TooltipTopRight" XPos="85" YPos="160" Width="5" Height="4" />
|
||||
<Image Name="TooltipBottomLeft" XPos="61" YPos="184" Width="4" Height="5" />
|
||||
<Image Name="TooltipBottomRight" XPos="85" YPos="184" Width="5" Height="5" />
|
||||
<Image Name="TooltipLeftEdge" XPos="61" YPos="171" Width="4" Height="6" />
|
||||
<Image Name="TooltipRightEdge" XPos="85" YPos="171" Width="5" Height="6" />
|
||||
<Image Name="TooltipTopEdge" XPos="72" YPos="160" Width="6" Height="4" />
|
||||
<Image Name="TooltipBottomEdge" XPos="72" YPos="184" Width="6" Height="5" />
|
||||
<Image Name="TooltipMiddle" XPos="72" YPos="171" Width="6" Height="6" />
|
||||
<Image Name="MenuTopLeft" XPos="166" YPos="204" Width="2" Height="2" />
|
||||
<Image Name="MenuTopRight" XPos="175" YPos="204" Width="3" Height="2" />
|
||||
<Image Name="MenuBottomLeft" XPos="166" YPos="213" Width="2" Height="3" />
|
||||
<Image Name="MenuBottomRight" XPos="175" YPos="213" Width="3" Height="3" />
|
||||
<Image Name="MenuLeft" XPos="166" YPos="209" Width="2" Height="1" />
|
||||
<Image Name="MenuRight" XPos="175" YPos="209" Width="3" Height="1" />
|
||||
<Image Name="MenuTop" XPos="171" YPos="204" Width="1" Height="2" />
|
||||
<Image Name="MenuBottom" XPos="171" YPos="213" Width="1" Height="3" />
|
||||
<Image Name="MenuMiddle" XPos="171" YPos="209" Width="1" Height="1" />
|
||||
<Image Name="PopupMenuFrameTopLeft" XPos="186" YPos="204" Width="2" Height="2" />
|
||||
<Image Name="PopupMenuFrameTopRight" XPos="195" YPos="204" Width="4" Height="2" />
|
||||
<Image Name="PopupMenuFrameBottomLeft" XPos="186" YPos="213" Width="2" Height="4" />
|
||||
<Image Name="PopupMenuFrameBottomRight" XPos="195" YPos="213" Width="4" Height="4" />
|
||||
<Image Name="PopupMenuFrameLeft" XPos="186" YPos="209" Width="2" Height="1" />
|
||||
<Image Name="PopupMenuFrameRight" XPos="195" YPos="209" Width="4" Height="1" />
|
||||
<Image Name="PopupMenuFrameTop" XPos="191" YPos="204" Width="1" Height="2" />
|
||||
<Image Name="PopupMenuFrameBottom" XPos="191" YPos="213" Width="1" Height="4" />
|
||||
<Image Name="PopupMenuMiddle" XPos="191" YPos="209" Width="1" Height="1" />
|
||||
<Image Name="PopupMenuArrowRight" XPos="179" YPos="204" Width="5" Height="5" />
|
||||
<Image Name="PopupMenuArrowLeft" XPos="179" YPos="210" Width="5" Height="5" />
|
||||
<Image Name="TreeListClosed" XPos="175" YPos="111" Width="7" Height="11" XOffset="8" YOffset="2" />
|
||||
<Image Name="TreeListOpened" XPos="164" YPos="111" Width="11" Height="7" XOffset="8" YOffset="2"/>
|
||||
</Imageset>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font version="3" name="BlueHighway-10" filename="bluehigh.ttf" type="FreeType" size="10" nativeHorzRes="1024" nativeVertRes="768" autoScaled="false" antiAlias="true" />
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font Name="BlueHighway-10" Filename="bluehigh.ttf" Type="FreeType" Size="12" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="false" AntiAlias="true" />
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font version="3" name="BlueHighway-12" filename="bluehigh.ttf" type="FreeType" size="12" nativeHorzRes="800" nativeVertRes="600" autoScaled="true"/>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font Name="BlueHighway-12" Filename="bluehigh.ttf" Type="FreeType" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font version="3" name="BlueHighway-24" filename="bluehigh.ttf" type="FreeType" size="24" nativeHorzRes="800" nativeVertRes="600" autoScaled="true"/>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font Name="BlueHighway-24" Filename="bluehigh.ttf" Type="FreeType" Size="24" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font version="3" name="BlueHighway-8" filename="bluehigh.ttf" type="FreeType" size="8" nativeHorzRes="1024" nativeVertRes="768" autoScaled="true" antiAlias="true" />
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font Name="BlueHighway-8" Filename="bluehigh.ttf" Type="FreeType" Size="8" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="true" AntiAlias="true" />
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font version="3" name="BlueHighway-impact" filename="bluehigh.ttf" type="FreeType" size="10" nativeHorzRes="800" nativeVertRes="600" autoScaled="true" antiAlias="true" />
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Font Name="BlueHighway-impact" Filename="bluehigh.ttf" Type="FreeType" Size="10" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true" AntiAlias="true" />
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
material v5_texture_vaisseau
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
ambient 0 0 0 1
|
||||
|
||||
texture_unit
|
||||
{
|
||||
texture v5_image_vaisseau05.png
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
material v5_viseur1
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
ambient 0 0 0 1
|
||||
diffuse 1 0 0 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
material feedback_inactive
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
ambient 0 0 0 1
|
||||
diffuse 0.3 0 0 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
material feedback_active
|
||||
{
|
||||
technique
|
||||
{
|
||||
pass
|
||||
{
|
||||
ambient 0 0 0 1
|
||||
diffuse 1 0 0 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,279 @@
|
||||
<scene formatVersion="1.0" upAxis="y" unitsPerMeter="100" unitType="centimeters" minOgreVersion="1.7" ogreMaxVersion="2.3.14" author="OgreMax Scene Exporter (www.ogremax.com)" application="Maya">
|
||||
<environment>
|
||||
<colourAmbient r="0.33" g="0.33" b="0.33" />
|
||||
<colourBackground r="0" g="0" b="0" />
|
||||
<clipping near="0" far="100000" />
|
||||
</environment>
|
||||
<nodes>
|
||||
<node name="battleship">
|
||||
<node name="v5_vaisseau">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_vaisseau" castShadows="true" receiveShadows="true" meshFile="v5_vaisseau.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="v5_texture_vaisseau" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="shipCannon">
|
||||
<node name="v5_ecran_avant1">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_ecran_avant1" castShadows="true" receiveShadows="true" meshFile="v5_ecran_avant1.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_bright" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_ecran_avant2">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_ecran_avant2" castShadows="true" receiveShadows="true" meshFile="v5_ecran_avant2.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_dark" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
</node>
|
||||
<node name="shipLeftWing">
|
||||
<node name="v5_aile_gauche1">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_aile_gauche1" castShadows="true" receiveShadows="true" meshFile="v5_aile_gauche1.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_bright" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_aile_gauche2">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_aile_gauche2" castShadows="true" receiveShadows="true" meshFile="v5_aile_gauche2.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_dark" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
</node>
|
||||
<node name="shipRightWing">
|
||||
<node name="v5_aile_droite1">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_aile_droite1" castShadows="true" receiveShadows="true" meshFile="v5_aile_droite1.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_bright" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_aile_droite2">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_aile_droite2" castShadows="true" receiveShadows="true" meshFile="v5_aile_droite2.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="target_dark" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
</node>
|
||||
<node name="v5_viseur">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_viseur" castShadows="true" receiveShadows="true" meshFile="v5_viseur.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="v5_viseur1" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="feedback">
|
||||
<node name="v5_g1a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g1a" castShadows="true" receiveShadows="true" meshFile="v5_g1a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_g2a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g2a" castShadows="true" receiveShadows="true" meshFile="v5_g2a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_g3a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g3a" castShadows="true" receiveShadows="true" meshFile="v5_g3a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d1a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d1a" castShadows="true" receiveShadows="true" meshFile="v5_d1a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d2a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d2a" castShadows="true" receiveShadows="true" meshFile="v5_d2a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d3a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d3a" castShadows="true" receiveShadows="true" meshFile="v5_d3a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a1a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a1a" castShadows="true" receiveShadows="true" meshFile="v5_a1a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a2a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a2a" castShadows="true" receiveShadows="true" meshFile="v5_a2a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a3a">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a3a" castShadows="true" receiveShadows="true" meshFile="v5_a3a.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_inactive" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_g1b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g1b" castShadows="true" receiveShadows="true" meshFile="v5_g1b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_g2b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g2b" castShadows="true" receiveShadows="true" meshFile="v5_g2b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_g3b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_g3b" castShadows="true" receiveShadows="true" meshFile="v5_g3b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d1b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d1b" castShadows="true" receiveShadows="true" meshFile="v5_d1b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d2b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d2b" castShadows="true" receiveShadows="true" meshFile="v5_d2b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_d3b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_d3b" castShadows="true" receiveShadows="true" meshFile="v5_d3b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a1b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a1b" castShadows="true" receiveShadows="true" meshFile="v5_a1b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a2b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a2b" castShadows="true" receiveShadows="true" meshFile="v5_a2b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
<node name="v5_a3b">
|
||||
<position x="0" y="0" z="0" />
|
||||
<scale x="1" y="1" z="1" />
|
||||
<rotation qx="0" qy="0" qz="0" qw="1" />
|
||||
<entity name="v5_a3b" castShadows="true" receiveShadows="true" meshFile="v5_a3b.mesh">
|
||||
<subentities>
|
||||
<subentity index="0" materialName="feedback_active" />
|
||||
</subentities>
|
||||
</entity>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</nodes>
|
||||
</scene>
|
||||