This commit is contained in:
2021-10-14 13:47:35 +02:00
commit 6625a8dfaa
4026 changed files with 844291 additions and 0 deletions
@@ -0,0 +1,4 @@
doc/html/*
Doxyfile
.vscode/
test/scenarios-tests/*output*
@@ -0,0 +1,55 @@
PROJECT(openvibe-plugins-artifact)
SET(PROJECT_VERSION_MAJOR ${OV_GLOBAL_VERSION_MAJOR})
SET(PROJECT_VERSION ${OV_GLOBAL_VERSION_STRING})
FILE(GLOB_RECURSE SRC_FILES src/*.cpp src/*.hpp src/*.h src/*.inl src/*.c)
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRC_FILES}
)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER ${PLUGINS_FOLDER}
COMPILE_FLAGS "-DOVP_Exports -DOVP_Shared -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE")
INCLUDE_DIRECTORIES("src")
# OpenViBE Base
INCLUDE("FindOpenViBE")
INCLUDE("FindOpenViBECommon")
INCLUDE("FindOpenViBEToolkit")
# OpenViBE Module
INCLUDE("FindModuleGeometry")
#INCLUDE("FindOpenViBEModuleSystem")
#INCLUDE("FindOpenViBEModuleXML")
# OpenViBE Third Party
INCLUDE("FindThirdPartyEigen")
# ---------------------------------
# Target macros
# Defines target operating system, architecture and compiler
# ---------------------------------
SET_BUILD_PLATFORM()
# -----------------------------
# Install files
# -----------------------------
INSTALL(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION ${DIST_BINDIR}
LIBRARY DESTINATION ${DIST_LIBDIR}
ARCHIVE DESTINATION ${DIST_LIBDIR})
SET(SUB_DIR_NAME artifact)
INSTALL(DIRECTORY box-tutorials/ DESTINATION ${DIST_DATADIR}/openvibe/scenarios/box-tutorials/${SUB_DIR_NAME})
#INSTALL(DIRECTORY bci-examples/ DESTINATION ${DIST_DATADIR}/openvibe/scenarios/bci-examples/${SUB_DIR_NAME})
# ---------------------------------
# Test applications
# ---------------------------------
IF(OV_COMPILE_TESTS)
#ADD_SUBDIRECTORY(test)
ENDIF()
@@ -0,0 +1,832 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings></Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</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</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</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>(0x00006bd5, 0x0000489b)</Identifier>
<Name>ASR Trainer</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xc05f38ff)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Tran-completed Flag</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to save model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Train trigger</Name>
<DefaultValue>OVTK_StimulationId_Train</DefaultValue>
<Value>OVTK_StimulationId_Train</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x5261636b, 0x4d455452)</TypeIdentifier>
<Name>Metric</Name>
<DefaultValue>Euclidian</DefaultValue>
<Value>Euclidian</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Channel ratio to reconstruct</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Rejection limit</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xe02de2aa, 0x821ba183)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00007f96, 0x00002d09)</Identifier>
<Name>Stimulation listener</Name>
<AlgorithmClassIdentifier>(0x65731e1d, 0x47de5276)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulation stream 1</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0xa88b3667, 0x0871638c)</TypeIdentifier>
<Name>Log level to use</Name>
<DefaultValue>Information</DefaultValue>
<Value>Information</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>592</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf451ad91, 0x14c75f86)</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>208</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c649749)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c64974a)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>624</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</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>(0x5045ebd9, 0x67325c0b)</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_EndOfFile</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>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>912</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>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>320</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</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>Low 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>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.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>432</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00000d01, 0x00005533)</Identifier>
<Source>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007f96, 0x00002d09)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000023c3, 0x0000335d)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002996, 0x00001419)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000311a, 0x00000602)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00003869, 0x000048f3)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006db7, 0x00007acd)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>256</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>432</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x05377d7e, 0x41751bb3)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":592,"identifier":"(0x00001f6c, 0x000012a7)","name":"Display","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1348},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00003bf6, 0x000002ba)","index":0,"name":"Default tab","parentIdentifier":"(0x00001f6c, 0x000012a7)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x00002c10, 0x00007fa3)","index":0,"name":"Empty","parentIdentifier":"(0x00003bf6, 0x000002ba)","type":0}]</Data>
</Entry>
</Metadata>
<Attributes>
<Attribute>
<Identifier>(0x079d1f09, 0x667c7871)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4c90d4ad, 0x7a2554ec)</Identifier>
<Value>320</Value>
</Attribute>
<Attribute>
<Identifier>(0x60bc58ab, 0x7a1b4d83)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
<Value>Thibaut Monseigne</Value>
</Attribute>
<Attribute>
<Identifier>(0x7a3a1558, 0xf12c63c2)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x7b814cca, 0x271df6dd)</Identifier>
<Value>475</Value>
</Attribute>
<Attribute>
<Identifier>(0x84009d7c, 0x3c4e763b)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
<Value>1.0</Value>
</Attribute>
<Attribute>
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
<Value>Matrix Classification Training Example</Value>
</Attribute>
<Attribute>
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
<Value>bci-examples</Value>
</Attribute>
<Attribute>
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
<Value>Inria</Value>
</Attribute>
</Attributes>
</OpenViBE-Scenario>
@@ -0,0 +1,457 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>Artefact-Amplitude</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x00000700, 0x00003fcf)</Identifier>
<Name>Time signal</Name>
<AlgorithmClassIdentifier>(0x28a5e7ff, 0x530095de)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Generated signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Sampling frequency</Name>
<DefaultValue>512</DefaultValue>
<Value>512</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Generated epoch sample count</Name>
<DefaultValue>32</DefaultValue>
<Value>32</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>208</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x9e5ca01e, 0x30a4d8c3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00001721, 0x00002728)</Identifier>
<Name>Simple DSP</Name>
<AlgorithmClassIdentifier>(0x00e26fa1, 0x1dbab1b2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input - A</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Equation</Name>
<DefaultValue>x</DefaultValue>
<Value>sin(2*x)</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x21889dc4, 0x1126497e)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000029af, 0x00003a24)</Identifier>
<Name>Artefact Amplitude</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xb68095e4)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Non-artefact signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Max (mV)</Name>
<DefaultValue>100</DefaultValue>
<Value>0.9</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>336</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3dd557b8, 0xa3fba55d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00002b7b, 0x00002df8)</Identifier>
<Name>After</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>None</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>1.5</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>Bottom ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Left 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>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>752</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00002b7b, 0x00002df9)</Identifier>
<Name>Before</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>None</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>1.5</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>Bottom ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Left 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>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>864</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x000011b7, 0x00007822)</Identifier>
<Source>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00002b7b, 0x00002df9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000243f, 0x000014b5)</Identifier>
<Source>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000029af, 0x00003a24)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000027fa, 0x000003f7)</Identifier>
<Source>
<BoxIdentifier>(0x00000700, 0x00003fcf)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00001721, 0x00002728)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000499a, 0x00006eed)</Identifier>
<Source>
<BoxIdentifier>(0x000029af, 0x00003a24)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00002b7b, 0x00002df8)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments></Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":582,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":844},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":2,"dividerPosition":266,"identifier":"(0x000028e6, 0x00005ce6)","index":0,"maxDividerPosition":537,"name":"Vertical split","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":4},{"boxIdentifier":"(0x00002b7b, 0x00002df9)","childCount":0,"identifier":"(0x00005d1e, 0x00006cf8)","index":0,"parentIdentifier":"(0x000028e6, 0x00005ce6)","type":3},{"boxIdentifier":"(0x00002b7b, 0x00002df8)","childCount":0,"identifier":"(0x000023a5, 0x0000366a)","index":1,"parentIdentifier":"(0x000028e6, 0x00005ce6)","type":3}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,62 @@
/**
* \page BoxAlgorithm_ASRProcessor ASR Processor
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Description|
Artifact Subspace Reconstruction (ASR) Trainer (see \ref CASR::process).
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Input1|
The input signal on which the Artifact reconstruction is used.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Output1|
Send \"OVTK_StimulationId_TrainCompleted\" if signal is reconstructed.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Output1|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Output2|
The reconstructed signal if needed, the input signal otherwise.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Output2|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Settings|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Settings|
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Setting1|
ASR model Filename.
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Setting1|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Examples|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRProcessor_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ASRProcessor_Miscellaneous|
*/
@@ -0,0 +1,78 @@
/**
* \page BoxAlgorithm_ASRTrainer ASR Trainer
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Description|
Artifact Subspace Reconstruction (ASR) Trainer (see \ref CASR::train).
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Input1|
Stimulation to start the training.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Input1|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Input1|
The input signal.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Output1|
Send \"OVTK_StimulationId_TrainCompleted\" when training is completed.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Settings|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Settings|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting1|
ASR model Filename.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting1|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting2|
Stimulation that starts the training.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting2|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting3|
The Metric to use : Riemman or Euclidian.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting3|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting4|
The Channel ratio to reconstruct at maximum in [0;1] 0 for no reconstruction, 1 to allow reconstruction of all channels.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting4|
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Setting5|
The Rejection Limit of ASR model.
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Setting5|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Examples|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ASRTrainer_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ASRTrainer_Miscellaneous|
*/
@@ -0,0 +1,58 @@
/**
* \page BoxAlgorithm_ArtifactAmplitude Artifact Amplitude
__________________________________________________________________
Detailed description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Description|
Check if one element is higher than Max setting.\nThe signal is returned if no element exceeds the defined value.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Description|
__________________________________________________________________
Inputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Inputs|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Inputs|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Input1|
The input signal on which the Artifact detection is used.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Input1|
__________________________________________________________________
Outputs description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Outputs|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Outputs|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Output1|
The input signal if there were no artifacts .
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Output1|
__________________________________________________________________
Settings description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Settings|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Settings|
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Setting1|
The amplitude threshold.
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Setting1|
__________________________________________________________________
Examples description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Examples|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Examples|
__________________________________________________________________
Miscellaneous description
__________________________________________________________________
* |OVP_DocBegin_BoxAlgorithm_ArtifactAmplitude_Miscellaneous|
* |OVP_DocEnd_BoxAlgorithm_ArtifactAmplitude_Miscellaneous|
*/
@@ -0,0 +1,101 @@
#include "CBoxAlgorithmASRProcessor.hpp"
//@todo put functions in this file in sdk it's duplication of file in riemann module
#include "utils/misc.hpp" // For conversion Openvibe to Eigen
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::initialize()
{
//***** Codecs *****
m_SignalDecoder.initialize(*this, 0);
m_stimulationEncoder.initialize(*this, 0);
m_signalEncoder.initialize(*this, 1);
m_signalEncoder.getInputSamplingRate().setReferenceTarget(m_SignalDecoder.getOutputSamplingRate()); // Link Sampling
m_signalEncoder.getInputMatrix().setReferenceTarget(m_SignalDecoder.getOutputMatrix()); // Link Matrix
//***** Pointers *****
m_iMatrix = m_SignalDecoder.getOutputMatrix();
m_oStimulation = m_stimulationEncoder.getInputStimulationSet();
m_oMatrix = m_signalEncoder.getInputMatrix();
// Settings
m_filename = CString(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0)).toASCIIString();
OV_ERROR_UNLESS_KRF(!m_filename.empty(), "Invalid empty model filename", Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(m_asr.loadXML(m_filename), "Loading XML Error", Kernel::ErrorType::BadFileRead);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::uninitialize()
{
m_SignalDecoder.uninitialize();
m_stimulationEncoder.uninitialize();
m_signalEncoder.uninitialize();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRProcessor::process()
{
Kernel::IBoxIO& boxCtx = this->getDynamicBoxContext();
for (size_t i = 0; i < boxCtx.getInputChunkCount(0); ++i)
{
m_SignalDecoder.decode(i); // Decode the chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
const uint64_t start = boxCtx.getInputChunkStartTime(0, i), // Time Code Chunk Start
end = boxCtx.getInputChunkEndTime(0, i); // Time Code Chunk End
if (m_SignalDecoder.isHeaderReceived()) // Header received
{
m_signalEncoder.encodeHeader();
m_stimulationEncoder.encodeHeader();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
if (m_SignalDecoder.isBufferReceived()) // Buffer received
{
const bool prevTrivial = m_asr.getTrivial();
Eigen::MatrixXd in, out;
MatrixConvert(*m_iMatrix, in);
OV_ERROR_UNLESS_KRF(m_asr.process(in, out), "ASR Process Error", Kernel::ErrorType::BadProcessing);
MatrixConvert(out, *m_oMatrix);
m_signalEncoder.encodeBuffer();
const bool newTrivial = m_asr.getTrivial();
if (!newTrivial && !prevTrivial) // We have reconstruct signal
{
m_oStimulation->appendStimulation(OVTK_StimulationId_Artifact, start, 0);
m_stimulationEncoder.encodeBuffer();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
}
if (m_SignalDecoder.isEndReceived()) // Buffer received
{
m_signalEncoder.encodeEnd();
m_stimulationEncoder.encodeEnd();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
boxCtx.markOutputAsReadyToSend(1, start, end);
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,88 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmASRProcessor.hpp
/// \brief Classes of the box ASR Processor.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <geometry/artifacts/CASR.hpp>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmASRProcessor describes the box Artifact Subspace Reconstruction (ASR) Processor. </summary>
class CBoxAlgorithmASRProcessor final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_ASR_Processor)
protected:
//***** Codecs *****
Toolkit::TSignalDecoder<CBoxAlgorithmASRProcessor> m_SignalDecoder; ///< Input Signal Decoder
Toolkit::TStimulationEncoder<CBoxAlgorithmASRProcessor> m_stimulationEncoder; ///< Output Stimulation Encoder
Toolkit::TSignalEncoder<CBoxAlgorithmASRProcessor> m_signalEncoder; ///< Output Signal Encoder
//***** Pointers *****
CMatrix *m_iMatrix = nullptr, ///< Input Matrix Pointer
*m_oMatrix = nullptr; ///< Output Matrix Pointer
IStimulationSet* m_oStimulation = nullptr; ///< Output Stimulation Pointer
//***** ASR *****
std::string m_filename; ///< ASR Model Path
Geometry::CASR m_asr; ///< ASR Model
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Subspace Reconstruction (ASR) Processor. </summary>
class CBoxAlgorithmASRProcessorDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "ASR Processor"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Artifact Subspace Reconstruction (ASR) Processor."; }
CString getDetailedDescription() const override { return "Artifact Subspace Reconstruction (ASR) Processor."; }
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "0.1"; }
CString getStockItemName() const override { return "gtk-execute"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_ASR_Processor; }
IPluginObject* create() override { return new CBoxAlgorithmASRProcessor; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Input Signal", OV_TypeId_Signal);
prototype.addOutput("Signal Reconstructed",OV_TypeId_Stimulations);
prototype.addOutput("Output Signal", OV_TypeId_Signal);
prototype.addSetting("Filename to load model", OV_TypeId_Filename, "${Player_ScenarioDirectory}/ASR-model.xml");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_ASR_Processor_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,182 @@
#include "CBoxAlgorithmASRTrainer.hpp"
//@todo put functions in this file in sdk it's duplication of file in riemann module
#include "utils/misc.hpp" // For conversion Openvibe to Eigen
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::initialize()
{
// Stimulations
m_stimulationDecoder.initialize(*this, 0);
m_iStimulation = m_stimulationDecoder.getOutputStimulationSet();
m_stimulationEncoder.initialize(*this, 0);
m_oStimulation = m_stimulationEncoder.getInputStimulationSet();
// Classes
m_signalEncoder.initialize(*this, 1);
m_iMatrix = m_signalEncoder.getOutputMatrix();
// Settings
m_filename = CString(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0)).toASCIIString();
m_stimulationName = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 1);
m_metric = Geometry::EMetric(uint64_t(FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 2)));
m_ratio = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 3);
m_rejection = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 4);
OV_ERROR_UNLESS_KRF(!m_filename.empty(), "Invalid empty model filename", Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(Geometry::InRange(m_ratio, 0, 1), "Channel ratio must be in [0;1], actual : " + std::to_string(m_ratio), Kernel::ErrorType::BadSetting);
OV_ERROR_UNLESS_KRF(m_rejection >= 0, "Rejection limit must be positive, actual : " + std::to_string(m_rejection), Kernel::ErrorType::BadSetting);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::uninitialize()
{
m_stimulationDecoder.uninitialize();
m_signalEncoder.uninitialize();
m_stimulationEncoder.uninitialize();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::process()
{
if (!m_isTrain)
{
Kernel::IBoxIO& boxCtx = this->getDynamicBoxContext();
//***** Stimulations *****
for (size_t i = 0; i < boxCtx.getInputChunkCount(0); ++i)
{
m_stimulationDecoder.decode(i); // Decode the chunk
const uint64_t start = boxCtx.getInputChunkStartTime(0, i), // Time Code Chunk Start
end = boxCtx.getInputChunkEndTime(0, i); // Time Code Chunk End
if (m_stimulationDecoder.isHeaderReceived())
{
m_stimulationEncoder.encodeHeader();
boxCtx.markOutputAsReadyToSend(0, 0, 0);
}
if (m_stimulationDecoder.isBufferReceived()) // Buffer received
{
for (size_t j = 0; j < m_iStimulation->getStimulationCount(); ++j)
{
if (m_iStimulation->getStimulationIdentifier(j) == m_stimulationName)
{
OV_ERROR_UNLESS_KRF(train(), "Train or Save failed", Kernel::ErrorType::BadProcessing);
m_oStimulation->appendStimulation(OVTK_StimulationId_TrainCompleted, m_iStimulation->getStimulationDate(j), 0);
m_isTrain = true;
}
}
m_stimulationEncoder.encodeBuffer();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
if (m_stimulationDecoder.isEndReceived())
{
m_stimulationEncoder.encodeEnd();
boxCtx.markOutputAsReadyToSend(0, start, end);
}
}
//***** Signal *****
for (size_t i = 0; i < boxCtx.getInputChunkCount(1); ++i)
{
m_signalEncoder.decode(i); // Decode the chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
if (m_signalEncoder.isBufferReceived()) // Buffer received
{
Eigen::MatrixXd m;
MatrixConvert(*m_iMatrix, m);
m_dataset.push_back(m);
}
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainer::train()
{
Geometry::CASR asr(m_metric);
asr.setMaxChannel(m_ratio);
this->getLogManager() << Kernel::LogLevel_Info << "Train Beginning...\n";
OV_ERROR_UNLESS_KRF(asr.train(m_dataset, m_rejection), "Train failed", Kernel::ErrorType::BadProcessing);
getLogManager() << Kernel::LogLevel_Info << "Train Finished. Save Beginning...\n";
OV_ERROR_UNLESS_KRF(asr.saveXML(m_filename), "Save failed", Kernel::ErrorType::BadProcessing);
this->getLogManager() << Kernel::LogLevel_Info << "Save Finished.\n";
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmASRTrainerListener::onSettingValueChanged(Kernel::IBox& box, const size_t index)
{
if (index == 2)
{
CString tmp;
box.getSettingValue(index, tmp);
const Geometry::EMetric m = Geometry::StringToMetric(tmp.toASCIIString());
if (m != Geometry::EMetric::Euclidian && m != Geometry::EMetric::Riemann)
{
const std::string s1 = toString(Geometry::EMetric::Euclidian), s2 = toString(Geometry::EMetric::Riemann);
getLogManager() << Kernel::LogLevel_Warning << "Metric must be " << s1 << " or " << s2 << ". Setting is set to " << s1 << "\n";
box.setSettingValue(index, s1.c_str());
}
}
else if (index == 3)
{
CString tmp;
box.getSettingValue(index, tmp);
double ratio = 0.0;
std::stringstream ss(tmp.toASCIIString());
ss >> ratio;
if (ratio < 0.0)
{
getLogManager() << Kernel::LogLevel_Warning <<
"Channel ratio must be in [0;1] (0 for no reconstruction, 1 for no limit). Setting is set to 0. \n";
box.setSettingValue(index, "0");
}
else if (ratio > 1.0)
{
getLogManager() << Kernel::LogLevel_Warning <<
"Channel ratio must be in [0;1] (0 for no reconstruction, 1 for no limit). Setting is set to 1. \n";
box.setSettingValue(index, "1");
}
}
else if (index == 4)
{
CString tmp;
box.getSettingValue(index, tmp);
double rejection = 0.0;
std::stringstream ss(tmp.toASCIIString());
ss >> rejection;
if (rejection < 0.0)
{
getLogManager() << Kernel::LogLevel_Warning << "Rejection limit must be positive. Setting is set to 0. \n";
box.setSettingValue(index, "0");
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,117 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmASRProcessor.hpp
/// \brief Classes of the box ASR Processor.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
#include <geometry/artifacts/CASR.hpp>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmASRTrainer describes the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainer final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_ASR_Trainer)
protected:
//***** Codecs *****
Toolkit::TStimulationDecoder<CBoxAlgorithmASRTrainer> m_stimulationDecoder; ///< Input Stimulation Decoder
Toolkit::TSignalDecoder<CBoxAlgorithmASRTrainer> m_signalEncoder; ///< Input Signal Encoder
Toolkit::TStimulationEncoder<CBoxAlgorithmASRTrainer> m_stimulationEncoder; ///< Output Stimulation Encoder
//***** Pointers *****
CMatrix* m_iMatrix = nullptr; ///< Input Matrix pointer
IStimulationSet *m_iStimulation = nullptr, ///< Stimulation receiver
*m_oStimulation = nullptr; ///< Stimulation sender
//***** Settings *****
std::string m_filename; ///< Filename of ASR Model
uint64_t m_stimulationName = OVTK_StimulationId_Train; ///< Name of stimulation to check for train launch
Geometry::EMetric m_metric = Geometry::EMetric::Euclidian; ///< Metric for ASR
double m_ratio = 1.0; ///< Ratio of channel to reconstruct for ASR
double m_rejection = 5.0; ///< Rejection limit of threshold for ASR
//***** Misc *****
std::vector<Eigen::MatrixXd> m_dataset; ///< Dataset stack
bool m_isTrain = false; ///< <c>True</c> if train is already done, <c>False</c> otherwise
bool train();
};
//-------------------------------------------------------------------------------------------------
/// <summary> Listener of the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainerListener final : public Toolkit::TBoxListener<IBoxListener>
{
public:
bool onSettingValueChanged(Kernel::IBox& box, const size_t index) override;;
_IsDerivedFromClass_Final_(Toolkit::TBoxListener<IBoxListener>, OV_UndefinedIdentifier)
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Subspace Reconstruction (ASR) Trainer. </summary>
class CBoxAlgorithmASRTrainerDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "ASR Trainer"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Artifact Subspace Reconstruction (ASR) Trainer."; }
CString getDetailedDescription() const override { return "Artifact Subspace Reconstruction (ASR) Trainer."; }
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "0.1"; }
CString getStockItemName() const override { return "gtk-execute"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_ASR_Trainer; }
IPluginObject* create() override { return new CBoxAlgorithmASRTrainer; }
IBoxListener* createBoxListener() const override { return new CBoxAlgorithmASRTrainerListener; }
void releaseBoxListener(IBoxListener* listener) const override { delete listener; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Stimulations",OV_TypeId_Stimulations);
prototype.addInput("Input Signal", OV_TypeId_Signal);
prototype.addOutput("Train-completed Flag",OV_TypeId_Stimulations);
prototype.addSetting("Filename to save model", OV_TypeId_Filename, "${Player_ScenarioDirectory}/ASR-model.xml");
prototype.addSetting("Train trigger", OV_TypeId_Stimulation, "OVTK_StimulationId_Train");
prototype.addSetting("Metric", TypeId_Metric, toString(Geometry::EMetric::Euclidian).c_str());
prototype.addSetting("Channel ratio to reconstruct", OV_TypeId_Float, "1");
prototype.addSetting("Rejection limit", OV_TypeId_Float, "5");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_ASR_Trainer_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,92 @@
#include "CBoxAlgorithmArtifactAmplitude.hpp"
#include <cmath> // Floor
#include <sstream>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::initialize()
{
//***** Codecs *****
m_decoder.initialize(*this, 0);
m_iMatrix = m_decoder.getOutputMatrix();
//***** Settings *****
m_max = FSettingValueAutoCast(*this->getBoxAlgorithmContext(), 0);
//***** Assert *****
OV_ERROR_UNLESS_KRF(m_max > 0, "Invalid Maximum [" << m_max << "] (expected value > 0)\n", Kernel::ErrorType::BadSetting);
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::uninitialize()
{
m_decoder.uninitialize();
std::stringstream ss;
ss << m_nArtifact << " artifacts detected in " << m_nSamples << " samples (";
ss.precision(2);
ss << std::fixed << 100.0 * double(m_nArtifact) / double(m_nSamples) << "%)" << std::endl;
this->getLogManager() << Kernel::LogLevel_Info << ss.str();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::processInput(const size_t /*index*/)
{
getBoxAlgorithmContext()->markAlgorithmAsReadyToProcess();
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool CBoxAlgorithmArtifactAmplitude::process()
{
Kernel::IBoxIO& boxContext = this->getDynamicBoxContext();
for (size_t i = 0; i < boxContext.getInputChunkCount(0); ++i)
{
bool artifact = false;
m_decoder.decode(i); // Decode chunk
OV_ERROR_UNLESS_KRF(m_iMatrix->getDimensionCount() == 2, "Invalid Input Signal", Kernel::ErrorType::BadInput);
m_nSamples++;
//if (m_decoder.isHeaderReceived()) {} // Header
if (m_decoder.isBufferReceived()) // Buffer
{
const size_t size = m_iMatrix->getDimensionSize(0) * m_iMatrix->getDimensionSize(1); // get buffer size
const double* iBuffer = m_iMatrix->getBuffer(); // input buffer
for (size_t idx = 0; idx < size; ++idx)
{
if (abs(iBuffer[idx]) >= m_max) // Amplitude comparison
{
this->getLogManager() << Kernel::LogLevel_Trace << "Artifact detected in channel (" << floor(idx / m_iMatrix->getDimensionSize(1)) << ")\n";
artifact = true;
m_nArtifact++;
break;
}
}
}
//if (m_decoder.isEndReceived()) {} // End
// We don't need output codec we copy just the input to the output if there is no amplitude artifact
if (!artifact)
{
uint64_t tStart = 0, tEnd = 0;
size_t size = 0;
const uint8_t* buffer = nullptr;
boxContext.getInputChunk(0, i, tStart, tEnd, size, buffer);
boxContext.appendOutputChunkData(0, buffer, size);
boxContext.markOutputAsReadyToSend(0, tStart, tEnd);
boxContext.markInputAsDeprecated(0, i);
}
}
return true;
}
//---------------------------------------------------------------------------------------------------
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,82 @@
///-------------------------------------------------------------------------------------------------
///
/// \file CBoxAlgorithmArtifactAmplitude.hpp
/// \brief Classes of the box Artifact Amplitude.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 12/08/2019.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include "defines.hpp"
#include <openvibe/ov_all.h>
#include <toolkit/ovtk_all.h>
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
//-------------------------------------------------------------------------------------------------
/// <summary> The class CBoxAlgorithmArtifactAmplitude describes the box Artifact Amplitude. </summary>
class CBoxAlgorithmArtifactAmplitude final : virtual public Toolkit::TBoxAlgorithm<IBoxAlgorithm>
{
public:
void release() override { delete this; }
bool initialize() override;
bool uninitialize() override;
bool processInput(const size_t index) override;
bool process() override;
_IsDerivedFromClass_Final_(Toolkit::TBoxAlgorithm<IBoxAlgorithm>, ClassId_Box_Artifact_Amplitude)
protected:
Toolkit::TSignalDecoder<CBoxAlgorithmArtifactAmplitude> m_decoder; ///< Input Signal decoder
CMatrix* m_iMatrix = nullptr; ///< Input Matrix pointer
double m_max = 0; ///< Amplitude max
size_t m_nSamples = 0, ///< Sample checked
m_nArtifact = 0; ///< Artifact found
};
//-------------------------------------------------------------------------------------------------
/// <summary> Descriptor of the box Artifact Detector. </summary>
class CBoxAlgorithmArtifactAmplitudeDesc final : virtual public IBoxAlgorithmDesc
{
public:
void release() override { }
CString getName() const override { return "Artifact Amplitude"; }
CString getAuthorName() const override { return "Thibaut Monseigne"; }
CString getAuthorCompanyName() const override { return "Inria"; }
CString getShortDescription() const override { return "Simple Artifact Detection"; }
CString getDetailedDescription() const override
{
return "Check if one element is higher than Max setting.\nThe signal is returned if no element exceeds the defined value.";
}
CString getCategory() const override { return "Artifact"; }
CString getVersion() const override { return "1.0"; }
CString getStockItemName() const override { return "gtk-no"; }
CIdentifier getCreatedClass() const override { return ClassId_Box_Artifact_Amplitude; }
IPluginObject* create() override { return new CBoxAlgorithmArtifactAmplitude; }
bool getBoxPrototype(Kernel::IBoxProto& prototype) const override
{
prototype.addInput("Signal",OV_TypeId_Signal);
prototype.addOutput("Non-artifact signal",OV_TypeId_Signal);
prototype.addSetting("Max (mV)",OV_TypeId_Float, "100");
return true;
}
_IsDerivedFromClass_Final_(IBoxAlgorithmDesc, ClassId_Box_Artifact_Amplitude_Desc)
};
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,25 @@
///-------------------------------------------------------------------------------------------------
///
/// \file defines.hpp
/// \brief Defines list for Setting, Shortcut Macro and const.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 08/12/2020.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
// Boxes
//---------------------------------------------------------------------------------------------------
#define ClassId_Box_Artifact_Amplitude OpenViBE::CIdentifier(0x41727469, 0xb68095e4)
#define ClassId_Box_Artifact_Amplitude_Desc OpenViBE::CIdentifier(0x41727469, 0x83596875)
#define ClassId_Box_ASR_Processor OpenViBE::CIdentifier(0x41727469, 0x17f1c6e2)
#define ClassId_Box_ASR_Processor_Desc OpenViBE::CIdentifier(0x41727469, 0x1de22c87)
#define ClassId_Box_ASR_Trainer OpenViBE::CIdentifier(0x41727469, 0xc05f38ff)
#define ClassId_Box_ASR_Trainer_Desc OpenViBE::CIdentifier(0x41727469, 0x966737cb)
#ifndef TypeId_Metric
#define TypeId_Metric OpenViBE::CIdentifier(0x5261636B, 0x4D455452)
#endif
@@ -0,0 +1,37 @@
#include <openvibe/ov_all.h>
#include "defines.hpp"
// Boxes Includes
#include "boxes/CBoxAlgorithmArtifactAmplitude.hpp"
#include "boxes/CBoxAlgorithmASRTrainer.hpp"
#include "boxes/CBoxAlgorithmASRProcessor.hpp"
namespace OpenViBE {
namespace Plugins {
namespace Artifact {
template <typename T>
static void setEnumeration(const Kernel::IPluginModuleContext& context, const CIdentifier& typeID, const std::string& name, const std::vector<T>& enumeration)
{
context.getTypeManager().registerEnumerationType(typeID, name.c_str());
for (const auto& e : enumeration) { context.getTypeManager().registerEnumerationEntry(typeID, toString(e).c_str(), size_t(e)); }
}
OVP_Declare_Begin()
// Register boxes
OVP_Declare_New(CBoxAlgorithmArtifactAmplitudeDesc);
OVP_Declare_New(CBoxAlgorithmASRTrainerDesc);
OVP_Declare_New(CBoxAlgorithmASRProcessorDesc);
// Enumeration Metric
const std::vector<Geometry::EMetric> metrics = {
Geometry::EMetric::Riemann, Geometry::EMetric::Euclidian, Geometry::EMetric::LogEuclidian, Geometry::EMetric::LogDet,
Geometry::EMetric::Kullback, Geometry::EMetric::Harmonic, Geometry::EMetric::Identity
};
setEnumeration(context, TypeId_Metric, "Metric", metrics);
OVP_Declare_End()
} // namespace Artifact
} // namespace Plugins
} // namespace OpenViBE
@@ -0,0 +1,120 @@
#include "utils/misc.hpp"
//*****************************************************
//******************** CONVERSIONS ********************
//*****************************************************
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::MatrixXd& out)
{
if (in.getDimensionCount() != 2) { return false; }
out.resize(in.getDimensionSize(0), in.getDimensionSize(1));
// double loop to avoid the problem of row major and column major storage
size_t idx = 0;
const double* buffer = in.getBuffer();
for (size_t i = 0, nR = out.rows(); i < nR; ++i) { for (size_t j = 0, nC = out.cols(); j < nC; ++j) { out(i, j) = buffer[idx++]; } }
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const Eigen::MatrixXd& in, OpenViBE::CMatrix& out)
{
if (in.rows() == 0 || in.cols() == 0) { return false; }
const size_t nR = in.rows(), nC = in.cols();
MatrixResize(out, nR, nC);
// double loop to avoid the problem of row major and column major storage
size_t idx = 0;
double* buffer = out.getBuffer();
for (size_t i = 0; i < nR; ++i) { for (size_t j = 0; j < nC; ++j) { buffer[idx++] = in(i, j); } }
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const Eigen::RowVectorXd& in, OpenViBE::CMatrix& out)
{
if (in.size() == 0) { return false; }
VectorResize(out, in.size());
//one row system copy doesn't cause problem
memcpy(out.getBuffer(), in.data(), out.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::RowVectorXd& out)
{
if (in.getDimensionCount() != 1) { return false; }
out.resize(in.getDimensionSize(0));
//one row system copy doesn't cause problem
memcpy(out.data(), in.getBuffer(), in.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixConvert(const std::vector<double>& in, OpenViBE::CMatrix& out)
{
if (in.empty()) { return false; }
VectorResize(out, in.size());
//one row system copy doesn't cause problem
memcpy(out.getBuffer(), in.data(), out.getBufferElementCount() * sizeof(double));
return true;
}
//---------------------------------------------------------------------------------------------------
//***********************************************************
//******************** MATRIX MANAGEMENT ********************
//***********************************************************
//---------------------------------------------------------------------------------------------------
bool MatrixInit(OpenViBE::CMatrix& m, const size_t rows, size_t columns)
{
if (columns < 1) { columns = rows; }
MatrixResize(m, rows, columns);
m.resetBuffer(); // Set to 0
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool MatrixResize(OpenViBE::CMatrix& m, const size_t rows, size_t columns)
{
if (columns < 1) { columns = rows; }
if (m.getDimensionCount() != 2 || m.getDimensionSize(0) != rows || m.getDimensionSize(1) != columns)
{
m.setDimensionCount(2);
m.setDimensionSize(0, rows);
m.setDimensionSize(1, columns);
// CHange label to have 1 to N label on row and column (Square Matrix Feature)
for (size_t i = 0; i < rows; ++i) { m.setDimensionLabel(0, i, std::to_string(i + 1).c_str()); }
}
return true;
}
//---------------------------------------------------------------------------------------------------
//***********************************************************
//******************** VECTOR MANAGEMENT ********************
//***********************************************************
//---------------------------------------------------------------------------------------------------
bool VectorInit(OpenViBE::CMatrix& m, const size_t n)
{
VectorResize(m, n);
m.resetBuffer(); // Set to 0
return true;
}
//---------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------
bool VectorResize(OpenViBE::CMatrix& m, const size_t n)
{
if (m.getDimensionCount() != 1 || m.getDimensionSize(0) != n)
{
m.setDimensionCount(1);
m.setDimensionSize(0, n);
}
return true;
}
//---------------------------------------------------------------------------------------------------
@@ -0,0 +1,71 @@
///-------------------------------------------------------------------------------------------------
///
/// \file misc.hpp
/// \brief All functions to Convert OpenViBE::CMatrix and Eigen::MatrixXd, links to Eigen function, manipulate OpenVibe::CMatrix and more.
/// \author Thibaut Monseigne (Inria).
/// \version 1.0.
/// \date 26/10/2018.
/// \copyright <a href="https://choosealicense.com/licenses/agpl-3.0/">GNU Affero General Public License v3.0</a>.
///
///-------------------------------------------------------------------------------------------------
#pragma once
#include <openvibe/ov_all.h>
#include <Eigen/Dense>
//*****************************************************
//******************** Conversions ********************
//*****************************************************
/// <summary> Convert OpenViBE Matrix to Eigen Matrix. </summary>
/// <param name="in"> The Eigen Matrix. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::MatrixXd& out);
/// <summary> Convert Eigen Matrix to OpenViBE Matrix (It doesn't use Memory::copy because of Eigne store in column major by default). </summary>
/// <param name="in"> The Eigen Matrix. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const Eigen::MatrixXd& in, OpenViBE::CMatrix& out);
/// <summary> Convert Eigen Row Vector to OpenViBE Matrix with one dimension. </summary>
/// <param name="in"> The Eigen Row Vector. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const Eigen::RowVectorXd& in, OpenViBE::CMatrix& out);
/// <summary> Convert OpenViBE Matrix with one dimension to Eigen Row Vector. </summary>
/// <param name="in"> The OpenVibe Matrix. </param>
/// <param name="out"> The Eigen Row Vector. </param>
bool MatrixConvert(const OpenViBE::CMatrix& in, Eigen::RowVectorXd& out);
/// <summary> Convertvector double to OpenViBE Matrix with one dimension. </summary>
/// <param name="in"> The Vector of double. </param>
/// <param name="out"> The OpenVibe Matrix. </param>
bool MatrixConvert(const std::vector<double>& in, OpenViBE::CMatrix& out);
//***********************************************************
//******************** Matrix Management ********************
//***********************************************************
/// <summary>Initialize the matrix (do not create objects).</summary>
/// <param name="m">The matrix to initialize.</param>
/// <param name="rows">The number of rows.</param>
/// <param name="columns">The number of columns (if &lt; 1 Init to a Square Matrix) .</param>
bool MatrixInit(OpenViBE::CMatrix& m, size_t rows = 2, size_t columns = 0);
/// <summary>Resize the matrix (do not create objects).</summary>
/// <param name="m">The matrix to resize.</param>
/// <param name="rows">The number of rows.</param>
/// <param name="columns">The number of columns (if &lt; 1 resize to a Square Matrix) .</param>
bool MatrixResize(OpenViBE::CMatrix& m, size_t rows = 2, size_t columns = 0);
//***********************************************************
//******************** Vector Management ********************
//***********************************************************
/// <summary>Initialize the vector (matrix with one dimension) (do not create objects).</summary>
/// <param name="m">The vector to initialize.</param>
/// <param name="n">The number of elements.</param>
bool VectorInit(OpenViBE::CMatrix& m, size_t n = 2);
/// <summary>Resize the vector (matrix with one dimension) (do not create objects).</summary>
/// <param name="m">The vector to resize.</param>
/// <param name="n">The number of elements.</param>
bool VectorResize(OpenViBE::CMatrix& m, size_t n = 2);
@@ -0,0 +1,42 @@
IF(WIN32)
SET(EXT cmd)
SET(OS_FLAGS "--no-pause")
ELSE()
SET(EXT sh)
SET(OS_FLAGS "")
ENDIF()
SET(PATH_TEST scenarios-tests)
############
SET(TEST_NAME Artifact-Amplitude)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/${TEST_NAME}-output.csv")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
ADD_TEST(compare_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_thresholdDataComparison.${EXT}" ${OS_FLAGS} "${PATH_TEST}/${TEST_NAME}-output.csv" "${PATH_TEST}/${TEST_NAME}-ref.csv" 0.0001)
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL "${PATH_TEST}/${TEST_NAME}-output.csv")
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES DEPENDS run_${TEST_NAME})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
############
SET(TEST_NAME ASR-Trainer)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/ASR-model-output.xml")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
# No compare between xml
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
############
SET(TEST_NAME ASR-Processor)
ADD_TEST(clean_${TEST_NAME} "${CMAKE_COMMAND}" "-E" "remove" "-f" "${PATH_TEST}/${TEST_NAME}-output.csv")
ADD_TEST(run_${TEST_NAME} "$ENV{OV_BINARY_PATH}/openvibe-designer.${EXT}" ${OS_FLAGS} "--no-session-management" "--invisible" "--play-fast" "${PATH_TEST}/${TEST_NAME}-test.xml")
ADD_TEST(compare_${TEST_NAME} "$ENV{OV_BINARY_PATH}/test_thresholdDataComparison.${EXT}" ${OS_FLAGS} "${PATH_TEST}/${TEST_NAME}-output.csv" "${PATH_TEST}/${TEST_NAME}-ref.csv" 0.0001)
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL ${OV_CONFIG_SUBDIR})
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES ATTACHED_FILES_ON_FAIL "${PATH_TEST}/${TEST_NAME}-output.csv")
SET_TESTS_PROPERTIES(compare_${TEST_NAME} PROPERTIES DEPENDS run_${TEST_NAME})
SET_TESTS_PROPERTIES(run_${TEST_NAME} PROPERTIES DEPENDS clean_${TEST_NAME})
@@ -0,0 +1,797 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>ASR-Processor</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x00000e25, 0x00003c5e)</Identifier>
<Name>Timeout</Name>
<AlgorithmClassIdentifier>(0x24fcd292, 0x5c8f6aa8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x544a003e, 0x6dcba5f6)</TypeIdentifier>
<Name>Input Stream</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Timeout delay</Name>
<DefaultValue>5</DefaultValue>
<Value>30</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Output Stimulation</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>560</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>944</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x1eaee00e, 0xdb05d34e)</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>(0x00001182, 0x00005e08)</Identifier>
<Name>ASR Processor</Name>
<AlgorithmClassIdentifier>(0x41727469, 0x17f1c6e2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Signal Reconstructed</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output Signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to load model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model-ref.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3c89d3cf, 0x83076356)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000026cd, 0x00007e87)</Identifier>
<Name>Simple DSP</Name>
<AlgorithmClassIdentifier>(0x00e26fa1, 0x1dbab1b2)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input - A</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Equation</Name>
<DefaultValue>x</DefaultValue>
<Value>1.5*x</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>480</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x21889dc4, 0x1126497e)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</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</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>432</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</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>(0x00007dde, 0x00001445)</Identifier>
<Name>CSV File Writer</Name>
<AlgorithmClassIdentifier>(0x428375e8, 0x325f2db9)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input stream</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations stream</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue>record-[$core{date}-$core{time}].csv</DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-output.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Precision</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Append data</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Only last matrix</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xee4b6d30, 0x788aed29)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>4</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>160</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>224</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</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>(0x5045ebd9, 0x67325c0b)</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_Label_00</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>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>944</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>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</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>Low 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>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.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>384</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000017f2, 0x00004d57)</Identifier>
<Source>
<BoxIdentifier>(0x000026cd, 0x00007e87)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000052e6, 0x00006ead)</Identifier>
<Source>
<BoxIdentifier>(0x00000e25, 0x00003c5e)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000060a3, 0x00005f0d)</Identifier>
<Source>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007dde, 0x00001445)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006a9f, 0x00004bba)</Identifier>
<Source>
<BoxIdentifier>(0x00001182, 0x00005e08)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00007dde, 0x00001445)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006d07, 0x00002bf8)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000026cd, 0x00007e87)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>208</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>384</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,801 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>ASR-Trainer</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x000015a8, 0x000079e9)</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>496</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01165f9f)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000586a, 0x00001f44)</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</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>1.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</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>(0x00006bd5, 0x0000489b)</Identifier>
<Name>ASR Trainer</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xc05f38ff)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Tran-completed Flag</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename to save model</Name>
<DefaultValue>${Player_ScenarioDirectory}/ASR-model.xml</DefaultValue>
<Value>${Player_ScenarioDirectory}/ASR-model-output.xml</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Train trigger</Name>
<DefaultValue>OVTK_StimulationId_Train</DefaultValue>
<Value>OVTK_StimulationId_Train</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x5261636b, 0x4d455452)</TypeIdentifier>
<Name>Metric</Name>
<DefaultValue>Euclidian</DefaultValue>
<Value>Euclidian</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Channel ratio to reconstruct</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Rejection limit</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>448</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xe02de2aa, 0x821ba183)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x11a6038b, 0x7157c284)</Identifier>
<Name>Generic stream reader</Name>
<AlgorithmClassIdentifier>(0x6468099f, 0x0370095a)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 2</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 3</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Path_Data}/scenarios/signals/bci-motor-imagery.ov</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>128</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xf37b8e7a, 0x1bc33e4e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x005e1c11)</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c649749)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x1396fde6, 0x1c64974a)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>400</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>608</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa8ffe2a3, 0x27038f03)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0017fc7a)</Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x2b88852d, 0x43d7a773)</Identifier>
<Name>Reference Channel</Name>
<AlgorithmClassIdentifier>(0x444721ad, 0x78342cf5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel</Name>
<DefaultValue>Ref_Nose</DefaultValue>
<Value>Nz</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x7e39891d, 0x32cf5be7)</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>(0x5045ebd9, 0x67325c0b)</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_EndOfFile</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>192</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>896</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>(0x5194b6cb, 0x7e001787)</Identifier>
<Name>C3;C4;FC3;FC4</Name>
<AlgorithmClassIdentifier>(0x361722e8, 0x311574e8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Channel List</Name>
<DefaultValue>-</DefaultValue>
<Value>C3;C4;FC3;FC4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3bcf9e67, 0x0c23994d)</TypeIdentifier>
<Name>Action</Name>
<DefaultValue>Select</DefaultValue>
<Value>Select</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x666f25e9, 0x3e5738d6)</TypeIdentifier>
<Name>Channel Matching Method</Name>
<DefaultValue>Smart</DefaultValue>
<Value>Smart</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x277826e1, 0xa30a3bd0)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>3</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x558c587f, 0x223f3b67)</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>Low 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>8.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>24.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>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x001a79f8)</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000bfd, 0x00000a7c)</Identifier>
<Source>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002161, 0x00005718)</Identifier>
<Source>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000015a8, 0x000079e9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000023c3, 0x0000335d)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002551, 0x0000620c)</Identifier>
<Source>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5194b6cb, 0x7e001787)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00002996, 0x00001419)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>2</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x5045ebd9, 0x67325c0b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000311a, 0x00000602)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00003869, 0x000048f3)</Identifier>
<Source>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00006bd5, 0x0000489b)</BoxIdentifier>
<BoxInputIndex>1</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004034, 0x000058ef)</Identifier>
<Source>
<BoxIdentifier>(0x558c587f, 0x223f3b67)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000586a, 0x00001f44)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x000043f4, 0x0000072e)</Identifier>
<Source>
<BoxIdentifier>(0x11a6038b, 0x7157c284)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x2b88852d, 0x43d7a773)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006db7, 0x00007acd)</Identifier>
<Source>
<BoxIdentifier>(0x1396fde6, 0x1c649749)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x1396fde6, 0x1c64974a)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x000054d7, 0x00005ae2)</Identifier>
<Text>Input Signal
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>176</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x000054d7, 0x00005ae3)</Identifier>
<Text>Signal Processing
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>736</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>352</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>
@@ -0,0 +1,17 @@
<ASR>
<ASR-data metric="Euclidian" nChannel="4" maxChannel="1" trivial="true">
<Median size="4"> 3.64776520261426 1.29023655895292 2.32623534894098 0.971947765103693
1.29023655895292 3.58502947106046 0.935080263836635 2.28024769881738
2.32623534894098 0.935080263836635 3.41566493769342 1.15232554661866
0.971947765103693 2.28024769881738 1.15232554661866 3.46016343202863</Median>
<Threshold size="4">-0.708243887391283 0.667512895061541 0.72870499429868 -0.667988195409754
-1.14363606301638 -1.24139284292518 1.21015772890246 1.29220172963208
3.42229744240393 -3.44412809610297 3.34928062316736 -3.41650295481661
-5.86740559674539 -5.72285798578988 -5.52079337731776 -5.52039255373496</Threshold>
<R size="4">1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1</R>
<Cov size="0"></Cov>
</ASR-data>
</ASR>
@@ -0,0 +1,161 @@
Time:32Hz,Epoch,sinusOsc 1,sinusOsc 2,sinusOsc 3,sinusOsc 4,Event Id,Event Date,Event Duration
0.0000000000,0,0.0000000000,0.0000000000,0.0000000000,0.0000000000,,,
0.0312500000,0,1.3687341120,0.0834505686,1.3965074831,2.3460347303,,,
0.0625000000,0,0.0834505686,3.3460347303,1.6342771847,0.0223674799,,,
0.0937500000,0,1.3965074831,1.6342771847,0.8587778323,0.2862985568,,,
0.1250000000,0,2.3460347303,0.0223674799,0.2862985568,1.2564364343,,,
0.1562500000,0,0.6652579106,1.0605198516,0.7209285523,0.3100244990,,,
0.1875000000,0,1.6342771847,0.2862985568,1.5912609145,0.5189549878,,,
0.2187500000,0,2.0374036140,-0.8460419110,1.6531536145,-1.3302670931,,,
0.2500000000,1,0.0223674799,1.2564364343,0.5189549878,-2.2082337379,,,
0.2812500000,1,0.8587778323,1.5912609145,-0.8135359478,0.7847811254,,,
0.3125000000,1,1.0605198516,0.3100244990,-1.0731867792,-0.2119004478,,,
0.3437500000,1,-0.8527917255,1.3612667999,-0.1597583084,-1.8827722525,,,
0.3750000000,1,0.2862985568,0.5189549878,0.7847811254,0.9814084992,,,
0.4062500000,1,0.6745718556,-2.0249997390,0.7541775274,1.5472144212,,,
0.4375000000,1,-0.8460419110,-1.3302670931,0.0634287720,0.7819705904,,,
0.4687500000,1,0.7209285523,-1.0731867792,-0.0655390377,0.9506913659,,,
0.5000000000,2,1.2564364343,-2.2082337379,0.9814084992,-0.5852777802,,,
0.5312500000,2,-0.0631007468,-0.2987362122,2.4069561396,0.2823791178,,,
0.5625000000,2,1.5912609145,0.7847811254,2.8779488994,0.9030515780,,,
0.5937500000,2,1.8564555014,-0.8355661309,2.0520274556,-2.4793752101,,,
0.6250000000,2,0.3100244990,-0.2119004478,0.9506913659,-1.7310810939,,,
0.6562500000,2,1.6531536145,0.0634287720,0.7412410587,0.9701626979,,,
0.6875000000,2,1.3612667999,-1.8827722525,1.3761889031,-0.4108610506,,,
0.7187500000,2,-3.5404879020,-0.8086493471,1.7027679072,-0.2124145663,,,
0.7500000000,3,0.5189549878,0.9814084992,0.9030515780,0.8068531766,,,
0.7812500000,3,-0.1244988728,0.2724851298,-0.4594717137,0.6869181620,,,
0.8125000000,3,-2.0249997390,1.5472144212,-1.0439874057,2.0694974039,,,
0.8437500000,3,-0.8135359478,2.8779488994,-0.2805237468,0.3641695321,,,
0.8750000000,3,-1.3302670931,0.7819705904,0.9701626979,-1.8389984936,,,
0.9062500000,3,-2.7774418870,0.2993489279,1.4263392704,0.6679934029,,,
0.9375000000,3,-1.0731867792,0.9506913659,0.8667484914,0.1385386313,,,
0.9687500000,3,-1.2560591950,-0.8668315473,0.3301381800,-2.4206456881,,,
1.0000000000,4,-2.2082337379,-0.5852777802,0.8068531766,-0.7723189861,,,
1.0312500000,4,-0.1597583084,1.3761889031,1.9907896528,0.0983659614,,,
1.0625000000,4,-0.2987362122,0.2823791178,2.5877673403,5.4087503374,,,
1.0937500000,4,-1.1495363031,-0.0385524690,1.8235323387,1.3163956500,,,
1.1250000000,4,0.7847811254,0.9030515780,0.3641695321,-0.3034584827,,,
1.1562500000,4,0.2599756842,-1.2879184845,-0.4451458738,0.7048895721,,,
1.1875000000,4,-0.8355661309,-2.4793752101,-0.1234290101,2.5309068373,,,
1.2187500000,4,0.7541775274,-1.0439874057,0.4456384107,-0.8266210987,,,
1.2500000000,5,-0.2119004478,-1.7310810939,0.1385386313,-1.7466375845,,,
1.2812500000,5,-1.4354651966,-1.5706412435,-1.0080375931,0.2727140524,,,
1.3125000000,5,0.0634287720,0.9701626979,-1.7974455953,-0.8262613606,,,
1.3437500000,5,-0.9654362809,0.5424888696,-1.2808655550,-0.9489926046,,,
1.3750000000,5,-1.8827722525,-0.4108610506,0.0983659614,-0.5547380276,,,
1.4062500000,5,-0.0655390377,0.8667484914,0.9871376509,-0.6953344902,,,
1.4375000000,5,-0.8086493471,-0.2124145663,0.6661389185,1.9635447878,,,
1.4687500000,5,-1.1988821934,-1.3394010772,-0.1688100058,1.5699068231,,,
1.5000000000,6,0.9814084992,0.8068531766,-0.3034584827,-1.0425910551,,,
1.5312500000,6,0.4099144509,1.1952068865,0.4983557018,1.1445444315,,,
1.5625000000,6,0.2724851298,0.6869181620,1.1867185475,1.5013198216,,,
1.5937500000,6,2.4069561396,2.5877673403,0.6771519036,-1.2419463750,,,
1.6250000000,6,1.5472144212,2.0694974039,-0.8266210987,-1.0463628150,,,
1.6562500000,6,1.1997027388,-0.1839871598,-2.0168971580,-1.1194784628,,,
1.6875000000,6,2.8779488994,0.3641695321,-1.9643056971,-0.7420012388,,,
1.7187500000,6,1.4563051832,-0.2026887361,-1.1487345134,0.7176546469,,,
1.7500000000,7,0.7819705904,-1.8389984936,-0.8262613606,-1.0909272040,,,
1.7812500000,7,2.0520274556,-0.1234290101,-1.4955637468,-0.3859075051,,,
1.8125000000,7,0.2993489279,0.6679934029,-2.2938779901,2.8650857800,,,
1.8437500000,7,-0.3417921204,-0.7611641008,-2.0424755980,0.8737882447,,,
1.8750000000,7,0.9506913659,0.1385386313,-0.6953344902,-0.6117828212,,,
1.9062500000,7,-0.6688572272,0.0043701116,0.5394431118,0.7816769419,,,
1.9375000000,7,-0.8668315473,-2.4206456881,0.5615308290,-0.1516857685,,,
1.9687500000,7,0.7412410587,-1.7974455953,-0.3822991487,-0.4131300313,,,
2.0000000000,8,-0.5852777802,-0.7723189861,-1.0425910551,-0.9497739372,,,
2.0312500000,8,-0.3568127661,-1.6840958410,-0.6769683658,-2.3559666125,,,
2.0625000000,8,1.3761889031,0.0983659614,0.0737680120,0.4128262271,,,
2.0937500000,8,0.0324007523,1.8606501325,-0.0164610272,1.3211814381,,,
2.1250000000,8,0.2823791178,0.4087503374,-1.2419463750,-1.2291006398,,,
2.1562500000,8,1.7027679072,0.6661389185,-2.5427995283,0.6576534641,,,
2.1875000000,8,-0.0385524690,1.3163956500,-2.6920820881,2.2084155704,,,
2.2187500000,8,-0.0554208172,-0.6897861214,-1.6940570431,0.5039915002,,,
2.2500000000,9,0.9030515780,-0.3034584827,-0.7420012388,0.3243588722,,,
2.2812500000,9,-1.1992994843,1.5710854567,-0.7922659696,-0.7607044707,,,
2.3125000000,9,-1.2879184845,0.7048895721,-1.4509880084,-0.9995277474,,,
2.3437500000,9,-0.4594717137,1.1867185475,-3.4927627539,0.6782850799,,,
2.3750000000,9,-2.4793752101,2.5309068373,-0.3859075051,-1.5904395907,,,
2.4062500000,9,-2.1726756896,0.3807813663,1.0007956907,-2.2268648350,,,
2.4375000000,9,-1.0439874057,-0.8266210987,1.3630557893,1.3784805497,,,
2.4687500000,9,-2.6298261328,-0.1052226362,0.4624831701,0.9541473858,,,
2.5000000000,10,-1.7310810939,-1.7466375845,-0.6117828212,-0.1603763521,,,
2.5312500000,10,-0.2805237468,-1.9643056971,-0.7284838207,1.0964841466,,,
2.5625000000,10,-1.5706412435,0.2727140524,-0.0203749932,0.6291119609,,,
2.5937500000,10,-0.3846152674,-0.2942868426,0.3347196668,1.0644429647,,,
2.6250000000,10,0.9701626979,-0.8262613606,-0.4131300313,0.4825889334,,,
2.6562500000,10,-0.4783392019,0.5368167826,-1.6227881216,-2.4009484456,,,
2.6875000000,10,0.5424888696,-0.9489926046,-1.9662756714,-0.6742923707,,,
2.7187500000,10,1.4263392704,-2.2938779901,-0.9734886565,0.8125103403,,,
2.7500000000,11,-0.4108610506,-0.5547380276,0.4128262271,-1.8494334914,,,
2.7812500000,11,0.3635555387,-0.5968321736,0.9308023856,-0.8971534422,,,
2.8125000000,11,0.8667484914,-0.6953344902,0.4463823054,1.1069949952,,,
2.8437500000,11,-1.1002432968,1.9100213158,0.0426636172,0.7912462530,,,
2.8750000000,11,-0.2124145663,1.9635447878,0.6576534641,1.4702474315,,,
2.9062500000,11,0.3301381800,0.5615308290,1.9028072080,0.2464688260,,,
2.9375000000,11,-1.3394010772,1.5699068231,2.4783674333,-0.4482837744,,,
2.9687500000,11,0.0041022005,0.7251494037,1.6998640384,1.7383508457,,,
3.0000000000,12,0.8068531766,-1.0425910551,0.3243588722,-0.4315280454,,,
3.0312500000,12,-0.4912335635,0.5893078056,-0.3080250331,-2.7643803080,,,
3.0625000000,12,1.1952068865,1.1445444315,0.1958671810,-0.1897743319,,,
3.0937500000,12,1.9907896528,0.0737680120,0.8883208288,0.0114502696,,,
3.1250000000,12,0.6869181620,1.5013198216,0.6782850799,-0.7741952885,,,
3.1562500000,12,2.2564956184,1.3168811607,-0.3157015938,0.2792427283,,,
3.1875000000,12,2.5877673403,-1.2419463750,-0.8753223314,-0.0063782440,,,
3.2187500000,12,0.8953186036,-1.0211462797,-0.1299899339,1.5184145208,,,
3.2500000000,13,2.0694974039,-1.0463628150,1.3784805497,2.2274498842,,,
3.2812500000,13,1.8235323387,-2.6920820881,2.2848351796,-1.0708097558,,,
3.3125000000,13,-0.1839871598,-1.1194784628,1.9524956297,-0.4579413455,,,
3.3437500000,13,0.8200513727,0.4282048889,1.1561678807,1.3246878224,,,
3.3750000000,13,0.3641695321,-0.7420012388,1.0964841466,-1.3229268867,,,
3.4062500000,13,-1.4990336855,0.0949124460,1.9292948033,-1.7358532045,,,
3.4375000000,13,-0.2026887361,0.7176546469,2.5655088240,-0.5956776917,,,
3.4687500000,13,-0.4451458738,-3.4509880084,1.9820311065,-0.5174254152,,,
3.5000000000,14,-1.8389984936,-1.0909272040,0.4825889334,1.1467688435,,,
3.5312500000,14,-0.0912575086,0.4355042258,-0.5981556844,0.3428316999,,,
3.5625000000,14,-0.1234290101,-0.3859075051,-0.4068856788,-0.6407408097,,,
3.5937500000,14,-1.2117474109,0.8702078730,0.4843950700,2.4003691243,,,
3.6250000000,14,0.6679934029,2.8650857800,0.8125103403,1.5387091828,,,
3.6562500000,14,0.4456384107,1.3630557893,0.1532086532,-1.4887291762,,,
3.6875000000,14,-0.7611641008,0.8737882447,-0.5766315153,-0.2453985203,,,
3.7187500000,14,0.8470458326,1.5190458612,-0.2412622290,-0.2134703607,,,
3.7500000000,15,3.1385386313,-0.6117828212,1.1069949952,-1.0133258960,,,
3.7812500000,15,-1.3353997060,-1.0513076674,2.2186267603,-0.5325571084,,,
3.8125000000,15,0.0043701116,0.7816769419,2.0590285388,-1.6244991150,,,
3.8437500000,15,-1.0080375931,-0.0203749932,0.9761195490,0.0997748588,,,
3.8750000000,15,-2.4206456881,-0.1516857685,0.2464688260,2.4269124897,,,
3.9062500000,15,-0.9395340306,1.3451047636,0.5465998956,-0.2036214940,,,
3.9375000000,15,-1.7974455953,-0.4131300313,1.1687187342,-0.1745101669,,,
3.9687500000,15,-2.7180780314,-1.9703264255,0.9097323660,2.1418587490,,,
4.0000000000,16,-0.7723189861,-0.9497739372,-0.4315280454,0.3403443506,,,
4.0312500000,16,-1.2808655550,-1.9662756714,-1.7403637988,-0.7055335942,,,
4.0625000000,16,-1.6840958410,-2.3559666125,-1.8417807445,-0.8776538362,,,
4.0937500000,16,0.5621986200,0.2326467119,-0.8451463680,-1.5934803325,,,
4.1250000000,16,0.0983659614,0.4128262271,0.0114502696,0.3268928833,,,
4.1562500000,16,-0.2036004516,-0.2453224994,-0.1722950538,-0.2224224967,,,
4.1875000000,16,1.8606501325,1.3211814381,-0.9238158916,-1.9913265080,,,
4.2187500000,16,0.9871376509,0.4463823054,-1.0182130516,1.2816197960,,,
4.2500000000,17,0.4087503374,-1.2291006398,-0.0063782440,2.2316009870,,,
4.2812500000,17,2.0306267967,0.3530693071,1.1785364181,-0.1218676333,,,
4.3125000000,17,0.6661389185,0.6576534641,1.2700366680,0.5685098797,,,
4.3437500000,17,-0.0986454486,0.0272639229,0.1363600204,0.5013551605,,,
4.3750000000,17,1.3163956500,2.2084155704,-1.0708097558,-0.0630998880,,,
4.4062500000,17,-0.1688100058,2.4783674333,-1.2623176879,0.2050039337,,,
4.4375000000,17,-0.6897861214,0.5039915002,-0.6561812935,-2.1904913958,,,
4.4687500000,17,0.9355137218,0.9639543981,-0.4500766717,-1.6627065276,,,
4.5000000000,18,-0.3034584827,0.3243588722,-1.3229268867,1.3608217321,,,
4.5312500000,18,-0.3386875992,-1.9062872569,-2.5598552254,-0.4934669717,,,
4.5625000000,18,1.5710854567,-0.7607044707,-2.8525797785,-0.9834341811,,,
4.5937500000,18,0.4983557018,0.1958671810,-1.8324179939,1.6467899274,,,
4.6250000000,18,0.7048895721,-0.9995277474,-0.5174254152,1.2563684948,,,
4.6562500000,18,2.5225353348,0.1897809985,-0.1405557019,0.9485678810,,,
4.6875000000,18,1.1867185475,0.6782850799,-0.7450991679,0.3616207236,,,
4.7187500000,18,1.1942482732,-1.6946984350,-1.2063198145,-3.3141503457,,,
4.7500000000,19,2.5309068373,-1.5904395907,-0.6407408097,0.4598607025,,,
4.7812500000,19,0.6771519036,-0.8753223314,0.4848661573,0.1463891898,,,
4.8125000000,19,0.3807813663,-2.2268648350,0.8733864765,-2.8719383531,,,
4.8437500000,19,1.2989304814,-0.8191135751,-0.0657413107,-0.7095830712,,,
4.8750000000,19,-0.8266210987,1.3784805497,-1.4887291762,1.1618134295,,,
4.9062500000,19,-1.0543215730,0.4731135773,-2.0684361890,-0.1603183729,,,
4.9375000000,19,-0.1052226362,0.9541473858,-1.5028247523,0.6044175730,,,
4.9687500000,19,-2.0168971580,1.9524956297,-0.7998792476,0.6622647617,,,
1 Time:32Hz Epoch sinusOsc 1 sinusOsc 2 sinusOsc 3 sinusOsc 4 Event Id Event Date Event Duration
2 0.0000000000 0 0.0000000000 0.0000000000 0.0000000000 0.0000000000
3 0.0312500000 0 1.3687341120 0.0834505686 1.3965074831 2.3460347303
4 0.0625000000 0 0.0834505686 3.3460347303 1.6342771847 0.0223674799
5 0.0937500000 0 1.3965074831 1.6342771847 0.8587778323 0.2862985568
6 0.1250000000 0 2.3460347303 0.0223674799 0.2862985568 1.2564364343
7 0.1562500000 0 0.6652579106 1.0605198516 0.7209285523 0.3100244990
8 0.1875000000 0 1.6342771847 0.2862985568 1.5912609145 0.5189549878
9 0.2187500000 0 2.0374036140 -0.8460419110 1.6531536145 -1.3302670931
10 0.2500000000 1 0.0223674799 1.2564364343 0.5189549878 -2.2082337379
11 0.2812500000 1 0.8587778323 1.5912609145 -0.8135359478 0.7847811254
12 0.3125000000 1 1.0605198516 0.3100244990 -1.0731867792 -0.2119004478
13 0.3437500000 1 -0.8527917255 1.3612667999 -0.1597583084 -1.8827722525
14 0.3750000000 1 0.2862985568 0.5189549878 0.7847811254 0.9814084992
15 0.4062500000 1 0.6745718556 -2.0249997390 0.7541775274 1.5472144212
16 0.4375000000 1 -0.8460419110 -1.3302670931 0.0634287720 0.7819705904
17 0.4687500000 1 0.7209285523 -1.0731867792 -0.0655390377 0.9506913659
18 0.5000000000 2 1.2564364343 -2.2082337379 0.9814084992 -0.5852777802
19 0.5312500000 2 -0.0631007468 -0.2987362122 2.4069561396 0.2823791178
20 0.5625000000 2 1.5912609145 0.7847811254 2.8779488994 0.9030515780
21 0.5937500000 2 1.8564555014 -0.8355661309 2.0520274556 -2.4793752101
22 0.6250000000 2 0.3100244990 -0.2119004478 0.9506913659 -1.7310810939
23 0.6562500000 2 1.6531536145 0.0634287720 0.7412410587 0.9701626979
24 0.6875000000 2 1.3612667999 -1.8827722525 1.3761889031 -0.4108610506
25 0.7187500000 2 -3.5404879020 -0.8086493471 1.7027679072 -0.2124145663
26 0.7500000000 3 0.5189549878 0.9814084992 0.9030515780 0.8068531766
27 0.7812500000 3 -0.1244988728 0.2724851298 -0.4594717137 0.6869181620
28 0.8125000000 3 -2.0249997390 1.5472144212 -1.0439874057 2.0694974039
29 0.8437500000 3 -0.8135359478 2.8779488994 -0.2805237468 0.3641695321
30 0.8750000000 3 -1.3302670931 0.7819705904 0.9701626979 -1.8389984936
31 0.9062500000 3 -2.7774418870 0.2993489279 1.4263392704 0.6679934029
32 0.9375000000 3 -1.0731867792 0.9506913659 0.8667484914 0.1385386313
33 0.9687500000 3 -1.2560591950 -0.8668315473 0.3301381800 -2.4206456881
34 1.0000000000 4 -2.2082337379 -0.5852777802 0.8068531766 -0.7723189861
35 1.0312500000 4 -0.1597583084 1.3761889031 1.9907896528 0.0983659614
36 1.0625000000 4 -0.2987362122 0.2823791178 2.5877673403 5.4087503374
37 1.0937500000 4 -1.1495363031 -0.0385524690 1.8235323387 1.3163956500
38 1.1250000000 4 0.7847811254 0.9030515780 0.3641695321 -0.3034584827
39 1.1562500000 4 0.2599756842 -1.2879184845 -0.4451458738 0.7048895721
40 1.1875000000 4 -0.8355661309 -2.4793752101 -0.1234290101 2.5309068373
41 1.2187500000 4 0.7541775274 -1.0439874057 0.4456384107 -0.8266210987
42 1.2500000000 5 -0.2119004478 -1.7310810939 0.1385386313 -1.7466375845
43 1.2812500000 5 -1.4354651966 -1.5706412435 -1.0080375931 0.2727140524
44 1.3125000000 5 0.0634287720 0.9701626979 -1.7974455953 -0.8262613606
45 1.3437500000 5 -0.9654362809 0.5424888696 -1.2808655550 -0.9489926046
46 1.3750000000 5 -1.8827722525 -0.4108610506 0.0983659614 -0.5547380276
47 1.4062500000 5 -0.0655390377 0.8667484914 0.9871376509 -0.6953344902
48 1.4375000000 5 -0.8086493471 -0.2124145663 0.6661389185 1.9635447878
49 1.4687500000 5 -1.1988821934 -1.3394010772 -0.1688100058 1.5699068231
50 1.5000000000 6 0.9814084992 0.8068531766 -0.3034584827 -1.0425910551
51 1.5312500000 6 0.4099144509 1.1952068865 0.4983557018 1.1445444315
52 1.5625000000 6 0.2724851298 0.6869181620 1.1867185475 1.5013198216
53 1.5937500000 6 2.4069561396 2.5877673403 0.6771519036 -1.2419463750
54 1.6250000000 6 1.5472144212 2.0694974039 -0.8266210987 -1.0463628150
55 1.6562500000 6 1.1997027388 -0.1839871598 -2.0168971580 -1.1194784628
56 1.6875000000 6 2.8779488994 0.3641695321 -1.9643056971 -0.7420012388
57 1.7187500000 6 1.4563051832 -0.2026887361 -1.1487345134 0.7176546469
58 1.7500000000 7 0.7819705904 -1.8389984936 -0.8262613606 -1.0909272040
59 1.7812500000 7 2.0520274556 -0.1234290101 -1.4955637468 -0.3859075051
60 1.8125000000 7 0.2993489279 0.6679934029 -2.2938779901 2.8650857800
61 1.8437500000 7 -0.3417921204 -0.7611641008 -2.0424755980 0.8737882447
62 1.8750000000 7 0.9506913659 0.1385386313 -0.6953344902 -0.6117828212
63 1.9062500000 7 -0.6688572272 0.0043701116 0.5394431118 0.7816769419
64 1.9375000000 7 -0.8668315473 -2.4206456881 0.5615308290 -0.1516857685
65 1.9687500000 7 0.7412410587 -1.7974455953 -0.3822991487 -0.4131300313
66 2.0000000000 8 -0.5852777802 -0.7723189861 -1.0425910551 -0.9497739372
67 2.0312500000 8 -0.3568127661 -1.6840958410 -0.6769683658 -2.3559666125
68 2.0625000000 8 1.3761889031 0.0983659614 0.0737680120 0.4128262271
69 2.0937500000 8 0.0324007523 1.8606501325 -0.0164610272 1.3211814381
70 2.1250000000 8 0.2823791178 0.4087503374 -1.2419463750 -1.2291006398
71 2.1562500000 8 1.7027679072 0.6661389185 -2.5427995283 0.6576534641
72 2.1875000000 8 -0.0385524690 1.3163956500 -2.6920820881 2.2084155704
73 2.2187500000 8 -0.0554208172 -0.6897861214 -1.6940570431 0.5039915002
74 2.2500000000 9 0.9030515780 -0.3034584827 -0.7420012388 0.3243588722
75 2.2812500000 9 -1.1992994843 1.5710854567 -0.7922659696 -0.7607044707
76 2.3125000000 9 -1.2879184845 0.7048895721 -1.4509880084 -0.9995277474
77 2.3437500000 9 -0.4594717137 1.1867185475 -3.4927627539 0.6782850799
78 2.3750000000 9 -2.4793752101 2.5309068373 -0.3859075051 -1.5904395907
79 2.4062500000 9 -2.1726756896 0.3807813663 1.0007956907 -2.2268648350
80 2.4375000000 9 -1.0439874057 -0.8266210987 1.3630557893 1.3784805497
81 2.4687500000 9 -2.6298261328 -0.1052226362 0.4624831701 0.9541473858
82 2.5000000000 10 -1.7310810939 -1.7466375845 -0.6117828212 -0.1603763521
83 2.5312500000 10 -0.2805237468 -1.9643056971 -0.7284838207 1.0964841466
84 2.5625000000 10 -1.5706412435 0.2727140524 -0.0203749932 0.6291119609
85 2.5937500000 10 -0.3846152674 -0.2942868426 0.3347196668 1.0644429647
86 2.6250000000 10 0.9701626979 -0.8262613606 -0.4131300313 0.4825889334
87 2.6562500000 10 -0.4783392019 0.5368167826 -1.6227881216 -2.4009484456
88 2.6875000000 10 0.5424888696 -0.9489926046 -1.9662756714 -0.6742923707
89 2.7187500000 10 1.4263392704 -2.2938779901 -0.9734886565 0.8125103403
90 2.7500000000 11 -0.4108610506 -0.5547380276 0.4128262271 -1.8494334914
91 2.7812500000 11 0.3635555387 -0.5968321736 0.9308023856 -0.8971534422
92 2.8125000000 11 0.8667484914 -0.6953344902 0.4463823054 1.1069949952
93 2.8437500000 11 -1.1002432968 1.9100213158 0.0426636172 0.7912462530
94 2.8750000000 11 -0.2124145663 1.9635447878 0.6576534641 1.4702474315
95 2.9062500000 11 0.3301381800 0.5615308290 1.9028072080 0.2464688260
96 2.9375000000 11 -1.3394010772 1.5699068231 2.4783674333 -0.4482837744
97 2.9687500000 11 0.0041022005 0.7251494037 1.6998640384 1.7383508457
98 3.0000000000 12 0.8068531766 -1.0425910551 0.3243588722 -0.4315280454
99 3.0312500000 12 -0.4912335635 0.5893078056 -0.3080250331 -2.7643803080
100 3.0625000000 12 1.1952068865 1.1445444315 0.1958671810 -0.1897743319
101 3.0937500000 12 1.9907896528 0.0737680120 0.8883208288 0.0114502696
102 3.1250000000 12 0.6869181620 1.5013198216 0.6782850799 -0.7741952885
103 3.1562500000 12 2.2564956184 1.3168811607 -0.3157015938 0.2792427283
104 3.1875000000 12 2.5877673403 -1.2419463750 -0.8753223314 -0.0063782440
105 3.2187500000 12 0.8953186036 -1.0211462797 -0.1299899339 1.5184145208
106 3.2500000000 13 2.0694974039 -1.0463628150 1.3784805497 2.2274498842
107 3.2812500000 13 1.8235323387 -2.6920820881 2.2848351796 -1.0708097558
108 3.3125000000 13 -0.1839871598 -1.1194784628 1.9524956297 -0.4579413455
109 3.3437500000 13 0.8200513727 0.4282048889 1.1561678807 1.3246878224
110 3.3750000000 13 0.3641695321 -0.7420012388 1.0964841466 -1.3229268867
111 3.4062500000 13 -1.4990336855 0.0949124460 1.9292948033 -1.7358532045
112 3.4375000000 13 -0.2026887361 0.7176546469 2.5655088240 -0.5956776917
113 3.4687500000 13 -0.4451458738 -3.4509880084 1.9820311065 -0.5174254152
114 3.5000000000 14 -1.8389984936 -1.0909272040 0.4825889334 1.1467688435
115 3.5312500000 14 -0.0912575086 0.4355042258 -0.5981556844 0.3428316999
116 3.5625000000 14 -0.1234290101 -0.3859075051 -0.4068856788 -0.6407408097
117 3.5937500000 14 -1.2117474109 0.8702078730 0.4843950700 2.4003691243
118 3.6250000000 14 0.6679934029 2.8650857800 0.8125103403 1.5387091828
119 3.6562500000 14 0.4456384107 1.3630557893 0.1532086532 -1.4887291762
120 3.6875000000 14 -0.7611641008 0.8737882447 -0.5766315153 -0.2453985203
121 3.7187500000 14 0.8470458326 1.5190458612 -0.2412622290 -0.2134703607
122 3.7500000000 15 3.1385386313 -0.6117828212 1.1069949952 -1.0133258960
123 3.7812500000 15 -1.3353997060 -1.0513076674 2.2186267603 -0.5325571084
124 3.8125000000 15 0.0043701116 0.7816769419 2.0590285388 -1.6244991150
125 3.8437500000 15 -1.0080375931 -0.0203749932 0.9761195490 0.0997748588
126 3.8750000000 15 -2.4206456881 -0.1516857685 0.2464688260 2.4269124897
127 3.9062500000 15 -0.9395340306 1.3451047636 0.5465998956 -0.2036214940
128 3.9375000000 15 -1.7974455953 -0.4131300313 1.1687187342 -0.1745101669
129 3.9687500000 15 -2.7180780314 -1.9703264255 0.9097323660 2.1418587490
130 4.0000000000 16 -0.7723189861 -0.9497739372 -0.4315280454 0.3403443506
131 4.0312500000 16 -1.2808655550 -1.9662756714 -1.7403637988 -0.7055335942
132 4.0625000000 16 -1.6840958410 -2.3559666125 -1.8417807445 -0.8776538362
133 4.0937500000 16 0.5621986200 0.2326467119 -0.8451463680 -1.5934803325
134 4.1250000000 16 0.0983659614 0.4128262271 0.0114502696 0.3268928833
135 4.1562500000 16 -0.2036004516 -0.2453224994 -0.1722950538 -0.2224224967
136 4.1875000000 16 1.8606501325 1.3211814381 -0.9238158916 -1.9913265080
137 4.2187500000 16 0.9871376509 0.4463823054 -1.0182130516 1.2816197960
138 4.2500000000 17 0.4087503374 -1.2291006398 -0.0063782440 2.2316009870
139 4.2812500000 17 2.0306267967 0.3530693071 1.1785364181 -0.1218676333
140 4.3125000000 17 0.6661389185 0.6576534641 1.2700366680 0.5685098797
141 4.3437500000 17 -0.0986454486 0.0272639229 0.1363600204 0.5013551605
142 4.3750000000 17 1.3163956500 2.2084155704 -1.0708097558 -0.0630998880
143 4.4062500000 17 -0.1688100058 2.4783674333 -1.2623176879 0.2050039337
144 4.4375000000 17 -0.6897861214 0.5039915002 -0.6561812935 -2.1904913958
145 4.4687500000 17 0.9355137218 0.9639543981 -0.4500766717 -1.6627065276
146 4.5000000000 18 -0.3034584827 0.3243588722 -1.3229268867 1.3608217321
147 4.5312500000 18 -0.3386875992 -1.9062872569 -2.5598552254 -0.4934669717
148 4.5625000000 18 1.5710854567 -0.7607044707 -2.8525797785 -0.9834341811
149 4.5937500000 18 0.4983557018 0.1958671810 -1.8324179939 1.6467899274
150 4.6250000000 18 0.7048895721 -0.9995277474 -0.5174254152 1.2563684948
151 4.6562500000 18 2.5225353348 0.1897809985 -0.1405557019 0.9485678810
152 4.6875000000 18 1.1867185475 0.6782850799 -0.7450991679 0.3616207236
153 4.7187500000 18 1.1942482732 -1.6946984350 -1.2063198145 -3.3141503457
154 4.7500000000 19 2.5309068373 -1.5904395907 -0.6407408097 0.4598607025
155 4.7812500000 19 0.6771519036 -0.8753223314 0.4848661573 0.1463891898
156 4.8125000000 19 0.3807813663 -2.2268648350 0.8733864765 -2.8719383531
157 4.8437500000 19 1.2989304814 -0.8191135751 -0.0657413107 -0.7095830712
158 4.8750000000 19 -0.8266210987 1.3784805497 -1.4887291762 1.1618134295
159 4.9062500000 19 -1.0543215730 0.4731135773 -2.0684361890 -0.1603183729
160 4.9375000000 19 -0.1052226362 0.9541473858 -1.5028247523 0.6044175730
161 4.9687500000 19 -2.0168971580 1.9524956297 -0.7998792476 0.6622647617
@@ -0,0 +1,105 @@
Time:32Hz,Epoch,sinusOsc 1,sinusOsc 2,sinusOsc 3,sinusOsc 4,Event Id,Event Date,Event Duration
0.2500000000,0,0.0223674799,1.2564364343,0.5189549878,-2.2082337379,,,
0.2812500000,0,0.8587778323,1.5912609145,-0.8135359478,0.7847811254,,,
0.3125000000,0,1.0605198516,0.3100244990,-1.0731867792,-0.2119004478,,,
0.3437500000,0,-0.8527917255,1.3612667999,-0.1597583084,-1.8827722525,,,
0.3750000000,0,0.2862985568,0.5189549878,0.7847811254,0.9814084992,,,
0.4062500000,0,0.6745718556,-2.0249997390,0.7541775274,1.5472144212,,,
0.4375000000,0,-0.8460419110,-1.3302670931,0.0634287720,0.7819705904,,,
0.4687500000,0,0.7209285523,-1.0731867792,-0.0655390377,0.9506913659,,,
0.7500000000,1,0.5189549878,0.9814084992,0.9030515780,0.8068531766,,,
0.7812500000,1,-0.1244988728,0.2724851298,-0.4594717137,0.6869181620,,,
0.8125000000,1,-2.0249997390,1.5472144212,-1.0439874057,2.0694974039,,,
0.8437500000,1,-0.8135359478,2.8779488994,-0.2805237468,0.3641695321,,,
0.8750000000,1,-1.3302670931,0.7819705904,0.9701626979,-1.8389984936,,,
0.9062500000,1,-2.7774418870,0.2993489279,1.4263392704,0.6679934029,,,
0.9375000000,1,-1.0731867792,0.9506913659,0.8667484914,0.1385386313,,,
0.9687500000,1,-1.2560591950,-0.8668315473,0.3301381800,-2.4206456881,,,
1.2500000000,2,-0.2119004478,-1.7310810939,0.1385386313,-1.7466375845,,,
1.2812500000,2,-1.4354651966,-1.5706412435,-1.0080375931,0.2727140524,,,
1.3125000000,2,0.0634287720,0.9701626979,-1.7974455953,-0.8262613606,,,
1.3437500000,2,-0.9654362809,0.5424888696,-1.2808655550,-0.9489926046,,,
1.3750000000,2,-1.8827722525,-0.4108610506,0.0983659614,-0.5547380276,,,
1.4062500000,2,-0.0655390377,0.8667484914,0.9871376509,-0.6953344902,,,
1.4375000000,2,-0.8086493471,-0.2124145663,0.6661389185,1.9635447878,,,
1.4687500000,2,-1.1988821934,-1.3394010772,-0.1688100058,1.5699068231,,,
1.5000000000,3,0.9814084992,0.8068531766,-0.3034584827,-1.0425910551,,,
1.5312500000,3,0.4099144509,1.1952068865,0.4983557018,1.1445444315,,,
1.5625000000,3,0.2724851298,0.6869181620,1.1867185475,1.5013198216,,,
1.5937500000,3,2.4069561396,2.5877673403,0.6771519036,-1.2419463750,,,
1.6250000000,3,1.5472144212,2.0694974039,-0.8266210987,-1.0463628150,,,
1.6562500000,3,1.1997027388,-0.1839871598,-2.0168971580,-1.1194784628,,,
1.6875000000,3,2.8779488994,0.3641695321,-1.9643056971,-0.7420012388,,,
1.7187500000,3,1.4563051832,-0.2026887361,-1.1487345134,0.7176546469,,,
1.7500000000,4,0.7819705904,-1.8389984936,-0.8262613606,-1.0909272040,,,
1.7812500000,4,2.0520274556,-0.1234290101,-1.4955637468,-0.3859075051,,,
1.8125000000,4,0.2993489279,0.6679934029,-2.2938779901,2.8650857800,,,
1.8437500000,4,-0.3417921204,-0.7611641008,-2.0424755980,0.8737882447,,,
1.8750000000,4,0.9506913659,0.1385386313,-0.6953344902,-0.6117828212,,,
1.9062500000,4,-0.6688572272,0.0043701116,0.5394431118,0.7816769419,,,
1.9375000000,4,-0.8668315473,-2.4206456881,0.5615308290,-0.1516857685,,,
1.9687500000,4,0.7412410587,-1.7974455953,-0.3822991487,-0.4131300313,,,
2.0000000000,5,-0.5852777802,-0.7723189861,-1.0425910551,-0.9497739372,,,
2.0312500000,5,-0.3568127661,-1.6840958410,-0.6769683658,-2.3559666125,,,
2.0625000000,5,1.3761889031,0.0983659614,0.0737680120,0.4128262271,,,
2.0937500000,5,0.0324007523,1.8606501325,-0.0164610272,1.3211814381,,,
2.1250000000,5,0.2823791178,0.4087503374,-1.2419463750,-1.2291006398,,,
2.1562500000,5,1.7027679072,0.6661389185,-2.5427995283,0.6576534641,,,
2.1875000000,5,-0.0385524690,1.3163956500,-2.6920820881,2.2084155704,,,
2.2187500000,5,-0.0554208172,-0.6897861214,-1.6940570431,0.5039915002,,,
2.5000000000,6,-1.7310810939,-1.7466375845,-0.6117828212,-0.1603763521,,,
2.5312500000,6,-0.2805237468,-1.9643056971,-0.7284838207,1.0964841466,,,
2.5625000000,6,-1.5706412435,0.2727140524,-0.0203749932,0.6291119609,,,
2.5937500000,6,-0.3846152674,-0.2942868426,0.3347196668,1.0644429647,,,
2.6250000000,6,0.9701626979,-0.8262613606,-0.4131300313,0.4825889334,,,
2.6562500000,6,-0.4783392019,0.5368167826,-1.6227881216,-2.4009484456,,,
2.6875000000,6,0.5424888696,-0.9489926046,-1.9662756714,-0.6742923707,,,
2.7187500000,6,1.4263392704,-2.2938779901,-0.9734886565,0.8125103403,,,
2.7500000000,7,-0.4108610506,-0.5547380276,0.4128262271,-1.8494334914,,,
2.7812500000,7,0.3635555387,-0.5968321736,0.9308023856,-0.8971534422,,,
2.8125000000,7,0.8667484914,-0.6953344902,0.4463823054,1.1069949952,,,
2.8437500000,7,-1.1002432968,1.9100213158,0.0426636172,0.7912462530,,,
2.8750000000,7,-0.2124145663,1.9635447878,0.6576534641,1.4702474315,,,
2.9062500000,7,0.3301381800,0.5615308290,1.9028072080,0.2464688260,,,
2.9375000000,7,-1.3394010772,1.5699068231,2.4783674333,-0.4482837744,,,
2.9687500000,7,0.0041022005,0.7251494037,1.6998640384,1.7383508457,,,
3.0000000000,8,0.8068531766,-1.0425910551,0.3243588722,-0.4315280454,,,
3.0312500000,8,-0.4912335635,0.5893078056,-0.3080250331,-2.7643803080,,,
3.0625000000,8,1.1952068865,1.1445444315,0.1958671810,-0.1897743319,,,
3.0937500000,8,1.9907896528,0.0737680120,0.8883208288,0.0114502696,,,
3.1250000000,8,0.6869181620,1.5013198216,0.6782850799,-0.7741952885,,,
3.1562500000,8,2.2564956184,1.3168811607,-0.3157015938,0.2792427283,,,
3.1875000000,8,2.5877673403,-1.2419463750,-0.8753223314,-0.0063782440,,,
3.2187500000,8,0.8953186036,-1.0211462797,-0.1299899339,1.5184145208,,,
3.5000000000,9,-1.8389984936,-1.0909272040,0.4825889334,1.1467688435,,,
3.5312500000,9,-0.0912575086,0.4355042258,-0.5981556844,0.3428316999,,,
3.5625000000,9,-0.1234290101,-0.3859075051,-0.4068856788,-0.6407408097,,,
3.5937500000,9,-1.2117474109,0.8702078730,0.4843950700,2.4003691243,,,
3.6250000000,9,0.6679934029,2.8650857800,0.8125103403,1.5387091828,,,
3.6562500000,9,0.4456384107,1.3630557893,0.1532086532,-1.4887291762,,,
3.6875000000,9,-0.7611641008,0.8737882447,-0.5766315153,-0.2453985203,,,
3.7187500000,9,0.8470458326,1.5190458612,-0.2412622290,-0.2134703607,,,
4.0000000000,10,-0.7723189861,-0.9497739372,-0.4315280454,0.3403443506,,,
4.0312500000,10,-1.2808655550,-1.9662756714,-1.7403637988,-0.7055335942,,,
4.0625000000,10,-1.6840958410,-2.3559666125,-1.8417807445,-0.8776538362,,,
4.0937500000,10,0.5621986200,0.2326467119,-0.8451463680,-1.5934803325,,,
4.1250000000,10,0.0983659614,0.4128262271,0.0114502696,0.3268928833,,,
4.1562500000,10,-0.2036004516,-0.2453224994,-0.1722950538,-0.2224224967,,,
4.1875000000,10,1.8606501325,1.3211814381,-0.9238158916,-1.9913265080,,,
4.2187500000,10,0.9871376509,0.4463823054,-1.0182130516,1.2816197960,,,
4.2500000000,11,0.4087503374,-1.2291006398,-0.0063782440,2.2316009870,,,
4.2812500000,11,2.0306267967,0.3530693071,1.1785364181,-0.1218676333,,,
4.3125000000,11,0.6661389185,0.6576534641,1.2700366680,0.5685098797,,,
4.3437500000,11,-0.0986454486,0.0272639229,0.1363600204,0.5013551605,,,
4.3750000000,11,1.3163956500,2.2084155704,-1.0708097558,-0.0630998880,,,
4.4062500000,11,-0.1688100058,2.4783674333,-1.2623176879,0.2050039337,,,
4.4375000000,11,-0.6897861214,0.5039915002,-0.6561812935,-2.1904913958,,,
4.4687500000,11,0.9355137218,0.9639543981,-0.4500766717,-1.6627065276,,,
4.7500000000,12,2.5309068373,-1.5904395907,-0.6407408097,0.4598607025,,,
4.7812500000,12,0.6771519036,-0.8753223314,0.4848661573,0.1463891898,,,
4.8125000000,12,0.3807813663,-2.2268648350,0.8733864765,-2.8719383531,,,
4.8437500000,12,1.2989304814,-0.8191135751,-0.0657413107,-0.7095830712,,,
4.8750000000,12,-0.8266210987,1.3784805497,-1.4887291762,1.1618134295,,,
4.9062500000,12,-1.0543215730,0.4731135773,-2.0684361890,-0.1603183729,,,
4.9375000000,12,-0.1052226362,0.9541473858,-1.5028247523,0.6044175730,,,
4.9687500000,12,-2.0168971580,1.9524956297,-0.7998792476,0.6622647617,,,
1 Time:32Hz Epoch sinusOsc 1 sinusOsc 2 sinusOsc 3 sinusOsc 4 Event Id Event Date Event Duration
2 0.2500000000 0 0.0223674799 1.2564364343 0.5189549878 -2.2082337379
3 0.2812500000 0 0.8587778323 1.5912609145 -0.8135359478 0.7847811254
4 0.3125000000 0 1.0605198516 0.3100244990 -1.0731867792 -0.2119004478
5 0.3437500000 0 -0.8527917255 1.3612667999 -0.1597583084 -1.8827722525
6 0.3750000000 0 0.2862985568 0.5189549878 0.7847811254 0.9814084992
7 0.4062500000 0 0.6745718556 -2.0249997390 0.7541775274 1.5472144212
8 0.4375000000 0 -0.8460419110 -1.3302670931 0.0634287720 0.7819705904
9 0.4687500000 0 0.7209285523 -1.0731867792 -0.0655390377 0.9506913659
10 0.7500000000 1 0.5189549878 0.9814084992 0.9030515780 0.8068531766
11 0.7812500000 1 -0.1244988728 0.2724851298 -0.4594717137 0.6869181620
12 0.8125000000 1 -2.0249997390 1.5472144212 -1.0439874057 2.0694974039
13 0.8437500000 1 -0.8135359478 2.8779488994 -0.2805237468 0.3641695321
14 0.8750000000 1 -1.3302670931 0.7819705904 0.9701626979 -1.8389984936
15 0.9062500000 1 -2.7774418870 0.2993489279 1.4263392704 0.6679934029
16 0.9375000000 1 -1.0731867792 0.9506913659 0.8667484914 0.1385386313
17 0.9687500000 1 -1.2560591950 -0.8668315473 0.3301381800 -2.4206456881
18 1.2500000000 2 -0.2119004478 -1.7310810939 0.1385386313 -1.7466375845
19 1.2812500000 2 -1.4354651966 -1.5706412435 -1.0080375931 0.2727140524
20 1.3125000000 2 0.0634287720 0.9701626979 -1.7974455953 -0.8262613606
21 1.3437500000 2 -0.9654362809 0.5424888696 -1.2808655550 -0.9489926046
22 1.3750000000 2 -1.8827722525 -0.4108610506 0.0983659614 -0.5547380276
23 1.4062500000 2 -0.0655390377 0.8667484914 0.9871376509 -0.6953344902
24 1.4375000000 2 -0.8086493471 -0.2124145663 0.6661389185 1.9635447878
25 1.4687500000 2 -1.1988821934 -1.3394010772 -0.1688100058 1.5699068231
26 1.5000000000 3 0.9814084992 0.8068531766 -0.3034584827 -1.0425910551
27 1.5312500000 3 0.4099144509 1.1952068865 0.4983557018 1.1445444315
28 1.5625000000 3 0.2724851298 0.6869181620 1.1867185475 1.5013198216
29 1.5937500000 3 2.4069561396 2.5877673403 0.6771519036 -1.2419463750
30 1.6250000000 3 1.5472144212 2.0694974039 -0.8266210987 -1.0463628150
31 1.6562500000 3 1.1997027388 -0.1839871598 -2.0168971580 -1.1194784628
32 1.6875000000 3 2.8779488994 0.3641695321 -1.9643056971 -0.7420012388
33 1.7187500000 3 1.4563051832 -0.2026887361 -1.1487345134 0.7176546469
34 1.7500000000 4 0.7819705904 -1.8389984936 -0.8262613606 -1.0909272040
35 1.7812500000 4 2.0520274556 -0.1234290101 -1.4955637468 -0.3859075051
36 1.8125000000 4 0.2993489279 0.6679934029 -2.2938779901 2.8650857800
37 1.8437500000 4 -0.3417921204 -0.7611641008 -2.0424755980 0.8737882447
38 1.8750000000 4 0.9506913659 0.1385386313 -0.6953344902 -0.6117828212
39 1.9062500000 4 -0.6688572272 0.0043701116 0.5394431118 0.7816769419
40 1.9375000000 4 -0.8668315473 -2.4206456881 0.5615308290 -0.1516857685
41 1.9687500000 4 0.7412410587 -1.7974455953 -0.3822991487 -0.4131300313
42 2.0000000000 5 -0.5852777802 -0.7723189861 -1.0425910551 -0.9497739372
43 2.0312500000 5 -0.3568127661 -1.6840958410 -0.6769683658 -2.3559666125
44 2.0625000000 5 1.3761889031 0.0983659614 0.0737680120 0.4128262271
45 2.0937500000 5 0.0324007523 1.8606501325 -0.0164610272 1.3211814381
46 2.1250000000 5 0.2823791178 0.4087503374 -1.2419463750 -1.2291006398
47 2.1562500000 5 1.7027679072 0.6661389185 -2.5427995283 0.6576534641
48 2.1875000000 5 -0.0385524690 1.3163956500 -2.6920820881 2.2084155704
49 2.2187500000 5 -0.0554208172 -0.6897861214 -1.6940570431 0.5039915002
50 2.5000000000 6 -1.7310810939 -1.7466375845 -0.6117828212 -0.1603763521
51 2.5312500000 6 -0.2805237468 -1.9643056971 -0.7284838207 1.0964841466
52 2.5625000000 6 -1.5706412435 0.2727140524 -0.0203749932 0.6291119609
53 2.5937500000 6 -0.3846152674 -0.2942868426 0.3347196668 1.0644429647
54 2.6250000000 6 0.9701626979 -0.8262613606 -0.4131300313 0.4825889334
55 2.6562500000 6 -0.4783392019 0.5368167826 -1.6227881216 -2.4009484456
56 2.6875000000 6 0.5424888696 -0.9489926046 -1.9662756714 -0.6742923707
57 2.7187500000 6 1.4263392704 -2.2938779901 -0.9734886565 0.8125103403
58 2.7500000000 7 -0.4108610506 -0.5547380276 0.4128262271 -1.8494334914
59 2.7812500000 7 0.3635555387 -0.5968321736 0.9308023856 -0.8971534422
60 2.8125000000 7 0.8667484914 -0.6953344902 0.4463823054 1.1069949952
61 2.8437500000 7 -1.1002432968 1.9100213158 0.0426636172 0.7912462530
62 2.8750000000 7 -0.2124145663 1.9635447878 0.6576534641 1.4702474315
63 2.9062500000 7 0.3301381800 0.5615308290 1.9028072080 0.2464688260
64 2.9375000000 7 -1.3394010772 1.5699068231 2.4783674333 -0.4482837744
65 2.9687500000 7 0.0041022005 0.7251494037 1.6998640384 1.7383508457
66 3.0000000000 8 0.8068531766 -1.0425910551 0.3243588722 -0.4315280454
67 3.0312500000 8 -0.4912335635 0.5893078056 -0.3080250331 -2.7643803080
68 3.0625000000 8 1.1952068865 1.1445444315 0.1958671810 -0.1897743319
69 3.0937500000 8 1.9907896528 0.0737680120 0.8883208288 0.0114502696
70 3.1250000000 8 0.6869181620 1.5013198216 0.6782850799 -0.7741952885
71 3.1562500000 8 2.2564956184 1.3168811607 -0.3157015938 0.2792427283
72 3.1875000000 8 2.5877673403 -1.2419463750 -0.8753223314 -0.0063782440
73 3.2187500000 8 0.8953186036 -1.0211462797 -0.1299899339 1.5184145208
74 3.5000000000 9 -1.8389984936 -1.0909272040 0.4825889334 1.1467688435
75 3.5312500000 9 -0.0912575086 0.4355042258 -0.5981556844 0.3428316999
76 3.5625000000 9 -0.1234290101 -0.3859075051 -0.4068856788 -0.6407408097
77 3.5937500000 9 -1.2117474109 0.8702078730 0.4843950700 2.4003691243
78 3.6250000000 9 0.6679934029 2.8650857800 0.8125103403 1.5387091828
79 3.6562500000 9 0.4456384107 1.3630557893 0.1532086532 -1.4887291762
80 3.6875000000 9 -0.7611641008 0.8737882447 -0.5766315153 -0.2453985203
81 3.7187500000 9 0.8470458326 1.5190458612 -0.2412622290 -0.2134703607
82 4.0000000000 10 -0.7723189861 -0.9497739372 -0.4315280454 0.3403443506
83 4.0312500000 10 -1.2808655550 -1.9662756714 -1.7403637988 -0.7055335942
84 4.0625000000 10 -1.6840958410 -2.3559666125 -1.8417807445 -0.8776538362
85 4.0937500000 10 0.5621986200 0.2326467119 -0.8451463680 -1.5934803325
86 4.1250000000 10 0.0983659614 0.4128262271 0.0114502696 0.3268928833
87 4.1562500000 10 -0.2036004516 -0.2453224994 -0.1722950538 -0.2224224967
88 4.1875000000 10 1.8606501325 1.3211814381 -0.9238158916 -1.9913265080
89 4.2187500000 10 0.9871376509 0.4463823054 -1.0182130516 1.2816197960
90 4.2500000000 11 0.4087503374 -1.2291006398 -0.0063782440 2.2316009870
91 4.2812500000 11 2.0306267967 0.3530693071 1.1785364181 -0.1218676333
92 4.3125000000 11 0.6661389185 0.6576534641 1.2700366680 0.5685098797
93 4.3437500000 11 -0.0986454486 0.0272639229 0.1363600204 0.5013551605
94 4.3750000000 11 1.3163956500 2.2084155704 -1.0708097558 -0.0630998880
95 4.4062500000 11 -0.1688100058 2.4783674333 -1.2623176879 0.2050039337
96 4.4375000000 11 -0.6897861214 0.5039915002 -0.6561812935 -2.1904913958
97 4.4687500000 11 0.9355137218 0.9639543981 -0.4500766717 -1.6627065276
98 4.7500000000 12 2.5309068373 -1.5904395907 -0.6407408097 0.4598607025
99 4.7812500000 12 0.6771519036 -0.8753223314 0.4848661573 0.1463891898
100 4.8125000000 12 0.3807813663 -2.2268648350 0.8733864765 -2.8719383531
101 4.8437500000 12 1.2989304814 -0.8191135751 -0.0657413107 -0.7095830712
102 4.8750000000 12 -0.8266210987 1.3784805497 -1.4887291762 1.1618134295
103 4.9062500000 12 -1.0543215730 0.4731135773 -2.0684361890 -0.1603183729
104 4.9375000000 12 -0.1052226362 0.9541473858 -1.5028247523 0.6044175730
105 4.9687500000 12 -2.0168971580 1.9524956297 -0.7998792476 0.6622647617
@@ -0,0 +1,369 @@
<OpenViBE-Scenario>
<FormatVersion>2</FormatVersion>
<Creator>OpenViBE Designer</Creator>
<CreatorVersion>3.0.0-beta</CreatorVersion>
<Settings>
<Setting>
<Identifier>(0x00425137, 0xf2a30c29)</Identifier>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Test Name</Name>
<DefaultValue>Covariance-Matrix-Calculator</DefaultValue>
<Value>Artifact-Amplitude</Value>
</Setting>
</Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x000015a8, 0x000079e9)</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_Label_00</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>304</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01165f9f)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000029af, 0x00003a23)</Identifier>
<Name>Artefact Amplitude</Name>
<AlgorithmClassIdentifier>(0x41727469, 0xb68095e4)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Non-artefact signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Max (mV)</Name>
<DefaultValue>100</DefaultValue>
<Value>3</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x3dd557b8, 0xa3fba55d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000484f, 0x00003eff)</Identifier>
<Name>CSV File Reader</Name>
<AlgorithmClassIdentifier>(0x336a3d9a, 0x753f1ba4)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output stimulation</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue></DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-input.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>176</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x30a4e5c9, 0x83502953)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xa9cdc629, 0xb153eb33)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00004c39, 0x0000096b)</Identifier>
<Name>CSV File Writer</Name>
<AlgorithmClassIdentifier>(0x428375e8, 0x325f2db9)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input stream</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations stream</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Filename</Name>
<DefaultValue>record-[$core{date}-$core{time}].csv</DefaultValue>
<Value>${Player_ScenarioDirectory}/$var{Test Name}-output.csv</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Precision</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Append data</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Only last matrix</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>304</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>688</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xee4b6d30, 0x788aed29)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>4</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00005b5f, 0x000050b0)</Identifier>
<Name>Timeout</Name>
<AlgorithmClassIdentifier>(0x24fcd292, 0x5c8f6aa8)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x544a003e, 0x6dcba5f6)</TypeIdentifier>
<Name>Input Stream</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Output Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Timeout delay</Name>
<DefaultValue>5</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Output Stimulation</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_Label_00</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>240</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>816</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x1eaee00e, 0xdb05d34e)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x017178bd)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</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>
</Boxes>
<Links>
<Link>
<Identifier>(0x00000492, 0x00005d6b)</Identifier>
<Source>
<BoxIdentifier>(0x000029af, 0x00003a23)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00004c39, 0x0000096b)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00001a66, 0x00001ca2)</Identifier>
<Source>
<BoxIdentifier>(0x00005b5f, 0x000050b0)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000015a8, 0x000079e9)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x0000702c, 0x00002b90)</Identifier>
<Source>
<BoxIdentifier>(0x0000484f, 0x00003eff)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00005b5f, 0x000050b0)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00007556, 0x000015f0)</Identifier>
<Source>
<BoxIdentifier>(0x0000484f, 0x00003eff)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000029af, 0x00003a23)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments></Comments>
<Metadata>
<Entry>
<Identifier>(0x000062ac, 0x00003721)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":320,"identifier":"(0x0000041e, 0x000069b5)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":480},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00004c5d, 0x000021d4)","index":0,"name":"Default tab","parentIdentifier":"(0x0000041e, 0x000069b5)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x0000420e, 0x000074bb)","index":0,"name":"Empty","parentIdentifier":"(0x00004c5d, 0x000021d4)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>