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,3 @@
The scenario will record its configuration here.
@@ -0,0 +1,3 @@
The scenario will record its configuration here.
@@ -0,0 +1,9 @@
<OpenViBE-SettingsOverride>
<SettingValue>${Player_ScenarioDirectory}/scripts/configuration-experiment-settings.lua</SettingValue>
<SettingValue>100,0,0</SettingValue>
<SettingValue>10,10,10</SettingValue>
<SettingValue>20;15;12</SettingValue>
<SettingValue>0.5</SettingValue>
<SettingValue>0.1</SettingValue>
<SettingValue>0.250</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,5 @@
<OpenViBE-SettingsOverride>
<SettingValue>${Player_ScenarioDirectory}/scripts/shooter-controller.lua</SettingValue>
<SettingValue>0 3 5 7 2 6 4 1</SettingValue>
<SettingValue>0.01</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,9 @@
<OpenViBE-SettingsOverride>
<SettingValue>${Player_ScenarioDirectory}/scripts/training-acquisition-controller.lua</SettingValue>
<SettingValue>0 2 3 1 2 1 0 3 1 2 3 0 2 0 3 1 0 3 1 2 3 0 1 2 1 3 2 0 3 2 0 1 </SettingValue>
<SettingValue>7.000000</SettingValue>
<SettingValue>4.000000</SettingValue>
<SettingValue>1.000000</SettingValue>
<SettingValue>0.3;0.3</SettingValue>
<SettingValue>(0.0;0.0);(0.0;0.5);(-0.5;0.0);(0.5;0.0)</SettingValue>
</OpenViBE-SettingsOverride>
@@ -0,0 +1,43 @@
flip_count = 0
switched_flip_count = 0
flips = {}
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
flip_count = box:get_input_count()
for i = 1, flip_count do
flips[i] = false
end
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and switched_flip_count < flip_count do
for i = 1, flip_count do
if box:get_stimulation_count(i) > 0 then
box:remove_stimulation(i, 1)
if not flips[i] then
switched_flip_count = switched_flip_count + 1
flips[i] = true
io.write("Flip ", i, " of ", flip_count, " switched\n")
end
end
end
box:sleep()
end
box:send_stimulation(1, OVTK_StimulationId_Label_00, box:get_current_time())
end
@@ -0,0 +1,62 @@
targets = {}
non_targets = {}
sent_stimulation = 0
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
-- read the parameters of the box
s_targets = box:get_setting(2)
for t in s_targets:gmatch("%d+") do
targets[t + 0] = true
end
s_non_targets = box:get_setting(3)
for t in s_non_targets:gmatch("%d+") do
non_targets[t + 0] = true
end
sent_stimulation = _G[box:get_setting(4)]
end
function uninitialize(box)
end
function process(box)
finished = false
while box:keep_processing() and not finished do
time = box:get_current_time()
while box:get_stimulation_count(1) > 0 do
s_code, s_date, s_duration = box:get_stimulation(1, 1)
box:remove_stimulation(1, 1)
if s_code >= OVTK_StimulationId_Label_00 and s_code <= OVTK_StimulationId_Label_1F then
received_stimulation = s_code - OVTK_StimulationId_Label_00
if targets[received_stimulation] ~= nil then
box:send_stimulation(1, sent_stimulation, time)
elseif non_targets[received_stimulation] ~= nil then
box:send_stimulation(2, sent_stimulation, time)
end
elseif s_code == OVTK_StimulationId_ExperimentStop then
finished = true
end
end
box:sleep()
end
end
@@ -0,0 +1,132 @@
stimulation_frequencies = {}
frequency_count = 0
target_light_color = {}
target_dark_color = {}
training_target_size = {}
training_targets_positions = {}
processing_epoch_duration = nil
processing_epoch_interval = nil
processing_frequency_tolerance = nil
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
for value in box:get_setting(2):gmatch("%d+") do
table.insert(target_light_color, value)
end
for value in box:get_setting(3):gmatch("%d+") do
table.insert(target_dark_color, value)
end
for value in box:get_setting(4):gmatch("%d+[.]?%d*") do
table.insert(stimulation_frequencies, value)
frequency_count = frequency_count + 1
end
processing_epoch_duration = box:get_setting(5)
processing_epoch_interval = box:get_setting(6)
processing_frequency_tolerance = box:get_setting(7)
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
box:sleep()
end
box:log("Info", box:get_config("Writing additional configuration to '${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo${CustomConfigurationSuffix${OperatingSystem}}'"))
cfg_file = assert(io.open(box:get_config("${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo${CustomConfigurationSuffix${OperatingSystem}}"), "a"))
success = true
success = success and cfg_file:write("SSVEP_TargetLightColourRed = ", target_light_color[1] / 100, "\n")
success = success and cfg_file:write("SSVEP_TargetLightColourGreen = ", target_light_color[2] / 100, "\n")
success = success and cfg_file:write("SSVEP_TargetLightColourBlue = ", target_light_color[3] / 100, "\n")
success = success and cfg_file:write("SSVEP_TargetDarkColourRed = ", target_dark_color[1] / 100, "\n")
success = success and cfg_file:write("SSVEP_TargetDarkColourGreen = ", target_dark_color[2] / 100, "\n")
success = success and cfg_file:write("SSVEP_TargetDarkColourBlue = ", target_dark_color[3] / 100, "\n")
for i=1,frequency_count do
success = success and cfg_file:write("SSVEP_Frequency_", i, " = ", string.format("%g", stimulation_frequencies[i]), "\n")
end
cfg_file:close()
if (success == false) then
box:log("Error", box:get_config("Write error"))
return false
end
-- create configuration files for temporal filters
scenario_path = box:get_config("${Player_ScenarioDirectory}")
for i=1,frequency_count do
cfg_file_name = scenario_path .. string.format("/configuration/temporal-filter-freq-%d.cfg", i)
box:log("Info", "Writing file '" .. cfg_file_name .. "'")
cfg_file = io.open(cfg_file_name, "w")
if cfg_file == nil then
box:log("Error", "Cannot write to [" .. cfg_file_name .. "]")
box:log("Error", "Please copy the scenario folder to a directory with write access and use from there.")
return false
end
success = true
success = success and cfg_file:write("<OpenViBE-SettingsOverride>\n")
success = success and cfg_file:write("<SettingValue>Butterworth</SettingValue>\n")
success = success and cfg_file:write("<SettingValue>Band pass</SettingValue>\n")
success = success and cfg_file:write("<SettingValue>4</SettingValue>\n")
success = success and cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] - processing_frequency_tolerance))
success = success and cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", stimulation_frequencies[i] + processing_frequency_tolerance))
success = success and cfg_file:write("<SettingValue>0.500000</SettingValue>\n")
success = success and cfg_file:write("</OpenViBE-SettingsOverride>\n")
cfg_file:close()
if (success == false) then
box:log("Error", box:get_config("Write error"))
return false
end
end
-- create configuration file for time based epoching
cfg_file_name = scenario_path .. "/configuration/time-based-epoching.cfg";
box:log("Info", "Writing file '" .. cfg_file_name .. "'")
cfg_file = io.open(cfg_file_name, "w")
if cfg_file == nil then
box:log("Error", "Cannot write to [" .. cfg_file_name .. "]")
box:log("Error", "Please copy the scenario folder to a directory with write access and use from there.")
return false
end
success = true
success = success and cfg_file:write("<OpenViBE-SettingsOverride>\n")
success = success and cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_duration))
success = success and cfg_file:write(string.format("<SettingValue>%g</SettingValue>\n", processing_epoch_interval))
success = success and cfg_file:write("</OpenViBE-SettingsOverride>\n")
cfg_file:close()
if (success == false) then
box:log("Error", box:get_config("Write error"))
return false
end
-- notify the scenario that the configuration process is complete
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
end
@@ -0,0 +1,33 @@
vrpn_host = nil
vrpn_port = nil
screen_refresh_rate = nil
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
screen_refresh_rate = box:get_setting(2)
end
function uninitialize(box)
end
function process(box)
box:log("Info", box:get_config("Generating '${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo${CustomConfigurationSuffix${OperatingSystem}}'"))
cfg_file = assert(io.open(box:get_config("${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo${CustomConfigurationSuffix${OperatingSystem}}"), "w"))
success = true
success = success and cfg_file:write("# This file was automatically generated!\n\n")
success = success and cfg_file:write("# If you want to change the SSVEP configuration\n")
success = success and cfg_file:write("# please use the provided ssvep-configuration scenario.\n")
success = success and cfg_file:write("SSVEP_ScreenRefreshRate = ", screen_refresh_rate, "\n")
if (success == false) then
box:log("Error", box:get_config("Write error"))
end
cfg_file:close()
box:send_stimulation(1, OVTK_StimulationId_TrainCompleted, box:get_current_time() + 0.2, 0)
end
@@ -0,0 +1,35 @@
buffer = {}
function initialize(box)
end
function uninitialize(box)
end
-- This script receives stimulations and lets pass only every other one
-- for each stimulation code
-- Useful to remove "key up" events of keyboard stimulator
function process(box)
while box:keep_processing() do
for index = 1, box:get_stimulation_count(1) do
stimulation = box:get_stimulation(1, index)
if buffer[stimulation] == nil then
box:send_stimulation(1, stimulation, box:get_current_time(), 0)
buffer[stimulation] = 1
else
buffer[stimulation] = nil
end
box:remove_stimulation(1, 1)
end
box:sleep()
end
end
@@ -0,0 +1,46 @@
class_count = 0
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
class_count = box:get_setting(2)
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() do
time = box:get_current_time()
while box:keep_processing() and box:get_stimulation_count(1) > 0 do
local decision = 0
local decided = false
-- check each input
for i = 1, class_count do
-- if the frequency is considered as stimulated
if (box:get_stimulation(i, 1) - OVTK_StimulationId_Label_00 == 1) then
if not decided then
decision = i
decided = true
else
decision = 0
end
end
box:remove_stimulation(i, 1)
end
if decision ~= 0 then
box:send_stimulation(1, OVTK_StimulationId_Label_00 + decision - 1, box:get_current_time() + 0.01, 0)
end
end
box:sleep()
end
end
@@ -0,0 +1,66 @@
sequence = {}
flickeringDelay = nil
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
s_sequence = box:get_setting(2)
angular_speed = box:get_setting(3)
box:log("Info", string.format("Target Sequence : [%s]\n", s_sequence))
for target in s_sequence:gmatch("%d+") do
table.insert(sequence, target)
end
box:log("Info", string.format("Angular Speed : %g\n", angular_speed))
-- create the configuration file for the shooter application
cfg_file = io.open(box:get_config("${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo-shooter${CustomConfigurationSuffix${OperatingSystem}}"), "w")
cfg_file:write("# This file was automatically generated!\n\n")
cfg_file:write("# If you want to change the SSVEP online shooter configuration\n")
cfg_file:write("# please use the box settings in the shooter scenario.\n\n")
cfg_file:write("SSVEP_ShipAngularSpeed = ", angular_speed, "\n")
cfg_file:close()
end
function uninitialize(box)
end
function process(box)
-- while targets are available, send a stimulation with new target
-- position for each request
while box:keep_processing() do
if box:get_stimulation_count(1) > 0 then
identifier, date, duration = box:get_stimulation(1, 1)
if identifier == OVTK_StimulationId_Target then
current_time = box:get_current_time() + 1
-- if no targets are available, quit the game
if # sequence == 0 then
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
break
end
next_target = sequence[1]
table.remove(sequence, 1)
box:send_stimulation(1, OVTK_StimulationId_Label_00 + next_target , current_time, 0)
end
box:remove_stimulation(1, 1)
end
box:sleep()
end
end
@@ -0,0 +1,21 @@
delay = 1
function initialize(box)
s_delay = box:get_setting(2);
io.write(string.format("Delay : [%s]\n", s_delay))
if (s_delay:find("^%d+$") ~= nil) then
delay = tonumber(s_delay)
else
io.write("[ERROR] The parameter should be a numeric value\n")
end
end
function uninitialize(box)
end
function process(box)
box:send_stimulation(1, 0x00008001, delay, 0)
end
@@ -0,0 +1,176 @@
sequence = {}
number_of_cycles = 0
stimulation_duration = nil
break_duration = nil
flickering_delay = nil
target_width = nil
target_height = nil
target_positions = {}
number_of_targets = {}
stimulationLabels = {
0x00008100,
0x00008101,
0x00008102,
0x00008103,
0x00008104,
0x00008105,
0x00008106,
0x00008107
}
function initialize(box)
dofile(box:get_config("${Path_Data}") .. "/plugins/stimulation/lua-stimulator-stim-codes.lua")
-- load the goal sequence
s_sequence = box:get_setting(2)
for target in s_sequence:gmatch("%d+") do
table.insert(sequence, target)
number_of_cycles = number_of_cycles + 1
end
box:log("Info", string.format("Number of goals in sequence: [%d]", number_of_cycles))
-- get the duration of a stimulation sequence
s_stimulation_duration = box:get_setting(3)
if (s_stimulation_duration:find("^%d+[.]?%d*$") ~= nil) then
stimulation_duration = tonumber(s_stimulation_duration)
box:log("Info", string.format("Stimulation Duration : [%g]", stimulation_duration))
else
box:log("Error", "The parameter 'stimulation duration' must be a numeric value\n")
error()
end
-- get the duration of a break between stimulations
s_break_duration = box:get_setting(4)
if (s_break_duration:find("^%d+[.]?%d*$") ~= nil) then
break_duration = tonumber(s_break_duration)
box:log("Info", string.format("Break Duration : [%s]", s_break_duration))
else
box:log("Error", "The parameter 'break duration' must be a numeric value\n")
error()
end
-- get the delay between the appearance of the marker and the start of flickering
s_flickering_delay = box:get_setting(5)
if (s_flickering_delay:find("^%d+[.]?%d*$") ~= nil) then
flickering_delay = tonumber(s_flickering_delay)
box:log("Info", string.format("Flickering Delay : [%s]", s_flickering_delay))
else
box:log("Error", "The parameter 'flickering delay' must be a numeric value\n")
error()
end
-- get the target size
s_targetSize = box:get_setting(6)
s_width, s_height = s_targetSize:match("^(%d+[.]?%d*);(%d+[.]?%d*)$")
target_width = tonumber(s_width)
target_height = tonumber(s_height)
if s_width ~= nil and s_height ~= nil then
box:log("Info", string.format("Target dimensions : width = %g, height = %g", target_width, target_height))
else
box:log("Error", "The parameter 'target size' must be in format float;float")
error()
end
-- get the targets' positions
s_targetPositions = box:get_setting(7)
number_of_targets = 0
for s_target_x, s_target_y in s_targetPositions:gmatch("(-?%d+[.]?%d*);(-?%d+[.]?%d*)") do
box:log("Info", string.format("Target %d : x = %g y = %g", number_of_targets, tonumber(s_target_x), tonumber(s_target_y)))
table.insert(target_positions, {tonumber(s_target_x), tonumber(s_target_y)})
number_of_targets = number_of_targets + 1
end
-- create the configuration file for the stimulation-based-epoching
-- this file is used during classifier training only
cfg_file_name = box:get_config("${Player_ScenarioDirectory}/configuration/stimulation-based-epoching.cfg")
cfg_file = io.open(cfg_file_name, "w")
if cfg_file == nil then
box:log("Error", "Cannot write to [" .. cfg_file_name .. "]")
box:log("Error", "Please copy the scenario folder to a directory with write access and use from there.")
return false
end
cfg_file:write("<OpenViBE-SettingsOverride>\n")
cfg_file:write(" <SettingValue>", stimulation_duration, "</SettingValue>\n")
cfg_file:write(" <SettingValue>", flickering_delay, "</SettingValue>\n")
cfg_file:write(" <SettingValue>OVTK_StimulationId_Target</SettingValue>\n")
cfg_file:write("</OpenViBE-SettingsOverride>\n")
cfg_file:close()
-- create the configuration file for the training program
cfg_file = io.open(box:get_config("${CustomConfigurationPrefix${OperatingSystem}}-ssvep-demo-training${CustomConfigurationSuffix${OperatingSystem}}"), "w")
cfg_file:write("# This file was automatically generated!\n\n")
cfg_file:write("# If you want to change the SSVEP trainer configuration\n")
cfg_file:write("# please use the box settings in the training scenario.\n\n")
cfg_file:write("SSVEP_TargetCount = ", number_of_targets, "\n")
cfg_file:write("SSVEP_TargetWidth = ", target_width, "\n")
cfg_file:write("SSVEP_TargetHeight = ", target_height, "\n")
for target_index, position in ipairs(target_positions) do
cfg_file:write("SSVEP_Target_X_", target_index - 1, " = ", position[1], "\n")
cfg_file:write("SSVEP_Target_Y_", target_index - 1, " = ", position[2], "\n")
end
cfg_file:close()
end
function uninitialize(box)
end
function process(box)
while box:keep_processing() and box:get_stimulation_count(1) == 0 do
box:sleep()
end
current_time = box:get_current_time() + 1
box:send_stimulation(1, OVTK_StimulationId_ExperimentStart, current_time, 0)
current_time = current_time + 2
for i,target in ipairs(sequence) do
box:log("Info", string.format("Goal no %d is %d at %d", i, target, current_time))
-- mark goal
box:send_stimulation(2, OVTK_StimulationId_LabelStart + target, current_time, 0)
-- wait for Flickering_delay seconds
current_time = current_time + flickering_delay
-- start flickering
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStart, current_time, 0)
-- wait for Stimulation_duration seconds
current_time = current_time + stimulation_duration
-- unmark goal and stop flickering
box:send_stimulation(1, OVTK_StimulationId_VisualStimulationStop, current_time, 0)
-- wait for Break_duration seconds
current_time = current_time + break_duration
end
box:send_stimulation(1, OVTK_StimulationId_ExperimentStop, current_time, 0)
box:sleep()
end
@@ -0,0 +1,3 @@
The scenario will record its signals here.
@@ -0,0 +1,852 @@
<OpenViBE-Scenario>
<FormatVersion>1</FormatVersion>
<Creator>OpenVIBE</Creator>
<CreatorVersion>0.1.99</CreatorVersion>
<Settings></Settings>
<Inputs></Inputs>
<Outputs></Outputs>
<Boxes>
<Box>
<Identifier>(0x000003a4, 0x00000114)</Identifier>
<Name>Temporal filter</Name>
<AlgorithmClassIdentifier>(0xb4f9d042, 0x9d79f2e5)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Filtered signal</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2f2c606c, 0x8512ed68)</TypeIdentifier>
<Name>Filter method</Name>
<DefaultValue>Butterworth</DefaultValue>
<Value>Butterworth</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xfa20178e, 0x4cba62e9)</TypeIdentifier>
<Name>Filter type</Name>
<DefaultValue>Band pass</DefaultValue>
<Value>Band pass</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Filter order</Name>
<DefaultValue>4</DefaultValue>
<Value>4</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Low cut frequency (Hz)</Name>
<DefaultValue>29</DefaultValue>
<Value>6.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>High cut frequency (Hz)</Name>
<DefaultValue>40</DefaultValue>
<Value>40.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Pass band ripple (dB)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.500000</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>368</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>864</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x27a4ceec, 0x876d6384)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x02ad4f5c)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>6</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x00000745, 0x000050af)</Identifier>
<Name>Spectral analysis</Name>
<AlgorithmClassIdentifier>(0x84218ff8, 0xa87e7995)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
<Name>Amplitude</Name>
</Output>
<Output>
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
<Name>Phase</Name>
</Output>
<Output>
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
<Name>Real Part</Name>
</Output>
<Output>
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
<Name>Imag Part</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Amplitude</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Phase</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Real Part</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Imaginary Part</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>560</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>864</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x4e5c55a0, 0xe69eb7db)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x018a760d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>4</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000018bc, 0x000002fa)</Identifier>
<Name>Raw</Name>
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Data</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel Units</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
<Name>Display Mode</Name>
<DefaultValue>Scan</DefaultValue>
<Value>Scan</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
<Name>Auto vertical scale</Name>
<DefaultValue>Per channel</DefaultValue>
<Value>Per channel</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Scale refresh interval (secs)</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Scale</Name>
<DefaultValue>100</DefaultValue>
<Value>100</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Offset</Name>
<DefaultValue>0</DefaultValue>
<Value>0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Time Scale</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Horizontal ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Vertical ruler</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Multiview</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>352.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>464.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x0144bb15)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x0000291a, 0x00002562)</Identifier>
<Name>Time based epoching</Name>
<AlgorithmClassIdentifier>(0x00777fa0, 0x5dc3f560)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input signal</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Epoched signal 1</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch 1 duration (in sec)</Name>
<DefaultValue>1</DefaultValue>
<Value>2.000000</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Epoch 1 intervals (in sec)</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.500000</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>432</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>864</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xc5ff41e9, 0xccc59a01)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x011e96bd)</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>(0x00004602, 0x00007a29)</Identifier>
<Name>Identity</Name>
<AlgorithmClassIdentifier>(0x5dffe431, 0x35215c50)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Input stream 1</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Output stream 1</Name>
</Output>
</Outputs>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>64</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>528</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, 0x00ce91c6)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</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>(0x00007112, 0x00006485)</Identifier>
<Name>Acquisition client</Name>
<AlgorithmClassIdentifier>(0x35d225cb, 0x3e6e3a5f)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x403488e7, 0x565d70b6)</TypeIdentifier>
<Name>Experiment information</Name>
</Output>
<Output>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Signal stream</Name>
</Output>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Output>
<Output>
<TypeIdentifier>(0x013df452, 0xa3a8879a)</TypeIdentifier>
<Name>Channel localisation</Name>
</Output>
<Output>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel units</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Acquisition server hostname</Name>
<DefaultValue>${AcquisitionServer_HostName}</DefaultValue>
<Value>${AcquisitionServer_HostName}</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Acquisition server port</Name>
<DefaultValue>1024</DefaultValue>
<Value>1024</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>-48.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>528.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x0d4656c0, 0xc95b1fa8)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01e4a38d)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>5</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x000077dd, 0x000055e4)</Identifier>
<Name>Filtered</Name>
<AlgorithmClassIdentifier>(0x0055be5f, 0x087bdd12)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x5ba36127, 0x195feae1)</TypeIdentifier>
<Name>Data</Name>
</Input>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
<Input>
<TypeIdentifier>(0x6ab26b81, 0x0f8c02f3)</TypeIdentifier>
<Name>Channel Units</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x5de046a6, 0x086340aa)</TypeIdentifier>
<Name>Display Mode</Name>
<DefaultValue>Scan</DefaultValue>
<Value>Scan</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x33a30739, 0x00d5299b)</TypeIdentifier>
<Name>Auto vertical scale</Name>
<DefaultValue>Per channel</DefaultValue>
<Value>Per channel</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Scale refresh interval (secs)</Name>
<DefaultValue>5</DefaultValue>
<Value>5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Scale</Name>
<DefaultValue>100</DefaultValue>
<Value>100</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Vertical Offset</Name>
<DefaultValue>0</DefaultValue>
<Value>0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Time Scale</Name>
<DefaultValue>10</DefaultValue>
<Value>10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Horizontal ruler</Name>
<DefaultValue>true</DefaultValue>
<Value>true</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Vertical ruler</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Multiview</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>464.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>640.000000</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x92c056a7, 0x2dc71aff)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc46b3d00, 0x3e0454e1)</Identifier>
<Value>(0x00000000, 0x01122317)</Value>
</Attribute>
<Attribute>
<Identifier>(0xc73e83ec, 0xf855c5bc)</Identifier>
<Value>false</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>9</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>3</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x338f2b3b, 0x49719bcc)</Identifier>
<Name>Instant Bars</Name>
<AlgorithmClassIdentifier>(0xecb46081, 0x96da0d49)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x1f261c0a, 0x593bf6bd)</TypeIdentifier>
<Name>Matrix</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x330306dd, 0x74a95f98)</TypeIdentifier>
<Name>Channel Localisation</Name>
<DefaultValue>${AdvancedViz_ChannelLocalisation}</DefaultValue>
<Value>${AdvancedViz_ChannelLocalisation}</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x2cdb2f0b, 0x12f231ea)</TypeIdentifier>
<Name>Positive Data Only ?</Name>
<DefaultValue>false</DefaultValue>
<Value>false</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Gain</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Caption</Name>
<DefaultValue></DefaultValue>
<Value></Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Translucency</Name>
<DefaultValue>1</DefaultValue>
<Value>1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x3d3c7c7f, 0xef0e7129)</TypeIdentifier>
<Name>Color</Name>
<DefaultValue>${AdvancedViz_DefaultColorGradient}</DefaultValue>
<Value>${AdvancedViz_DefaultColorGradient}</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>672</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>848</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x6b60e2b2, 0xf4839b7d)</Value>
</Attribute>
<Attribute>
<Identifier>(0x527ad68d, 0x16d746a0)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>6</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x000032b9, 0x00004e09)</Identifier>
<Source>
<BoxIdentifier>(0x00007112, 0x00006485)</BoxIdentifier>
<BoxOutputIndex>1</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00004602, 0x00007a29)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004d15, 0x00007560)</Identifier>
<Source>
<BoxIdentifier>(0x0000291a, 0x00002562)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x00000745, 0x000050af)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00004fd5, 0x0000009d)</Identifier>
<Source>
<BoxIdentifier>(0x00004602, 0x00007a29)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000003a4, 0x00000114)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00006003, 0x00006d3a)</Identifier>
<Source>
<BoxIdentifier>(0x000003a4, 0x00000114)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0000291a, 0x00002562)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00007abb, 0x0000009e)</Identifier>
<Source>
<BoxIdentifier>(0x000003a4, 0x00000114)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000077dd, 0x000055e4)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x00007f52, 0x00002722)</Identifier>
<Source>
<BoxIdentifier>(0x00004602, 0x00007a29)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x000018bc, 0x000002fa)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
<Link>
<Identifier>(0x1792528d, 0x6f582a19)</Identifier>
<Source>
<BoxIdentifier>(0x00000745, 0x000050af)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x338f2b3b, 0x49719bcc)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x00002b05, 0x000047ad)</Identifier>
<Text>&lt;b&gt;&lt;big&gt;Acquisition test&lt;/big&gt;&lt;/b&gt;
Scenario used for testing data acquisition. The signal quality should
always be checked before training.
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>880</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>32</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x00007f52, 0x000053c0)</Identifier>
<Text>You can browse each box' documentation by selecting the box and pressing &lt;b&gt;F1&lt;/b&gt;</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>-112</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":776,"identifier":"(0x00006e4a, 0x000001fd)","name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":753},{"boxIdentifier":"(0x338f2b3b, 0x49719bcc)","childCount":0,"identifier":"(0x5392a425, 0x23169e14)","parentIdentifier":"(0xffffffff, 0xffffffff)","type":3},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x00003980, 0x0000094e)","index":0,"name":"Default tab","parentIdentifier":"(0x00006e4a, 0x000001fd)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":2,"dividerPosition":171,"identifier":"(0x00006c8e, 0x0000570f)","index":0,"maxDividerPosition":731,"name":"Vertical split","parentIdentifier":"(0x00003980, 0x0000094e)","type":4},{"boxIdentifier":"(0x000018bc, 0x000002fa)","childCount":0,"identifier":"(0x00001f89, 0x00001e76)","index":0,"parentIdentifier":"(0x00006c8e, 0x0000570f)","type":3},{"boxIdentifier":"(0x000077dd, 0x000055e4)","childCount":0,"identifier":"(0x0000185e, 0x000017b8)","index":1,"parentIdentifier":"(0x00006c8e, 0x0000570f)","type":3}]</Data>
</Entry>
</Metadata>
<Attributes>
<Attribute>
<Identifier>(0x790d75b8, 0x3bb90c33)</Identifier>
<Value>Jozef Leg&#233;ny</Value>
</Attribute>
<Attribute>
<Identifier>(0x8c1fc55b, 0x7b433dc2)</Identifier>
<Value>1.0</Value>
</Attribute>
<Attribute>
<Identifier>(0x9f5c4075, 0x4a0d3666)</Identifier>
<Value>SSVEP Acquisition Test</Value>
</Attribute>
<Attribute>
<Identifier>(0xf36a1567, 0xd13c53da)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xf6b2e3fa, 0x7bd43926)</Identifier>
<Value>SSVEP</Value>
</Attribute>
<Attribute>
<Identifier>(0xf8034a49, 0x8b3f37cc)</Identifier>
<Value>Inria</Value>
</Attribute>
</Attributes>
</OpenViBE-Scenario>
@@ -0,0 +1,453 @@
<OpenViBE-Scenario>
<FormatVersion>1</FormatVersion>
<Creator>OpenVIBE</Creator>
<CreatorVersion>0.0.2</CreatorVersion>
<Boxes>
<Box>
<Identifier>(0x0de6da7d, 0x3a63884e)</Identifier>
<Name>Player Controller</Name>
<AlgorithmClassIdentifier>(0x5f426dce, 0x08456e13)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Input>
</Inputs>
<Settings>
<Setting>
<TypeIdentifier>(0x2c132d6e, 0x44ab0d97)</TypeIdentifier>
<Name>Stimulation name</Name>
<DefaultValue>OVTK_StimulationId_Label_00</DefaultValue>
<Value>OVTK_StimulationId_TrainCompleted</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0xcc14d8d6, 0xf27ecb73)</TypeIdentifier>
<Name>Action to perform</Name>
<DefaultValue>Pause</DefaultValue>
<Value>Stop</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>528</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>27</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0x568d148e, 0x650792b3)</Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>134</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>2</Value>
</Attribute>
<Attribute>
<Identifier>(0xcfad85b0, 0x7c6d841c)</Identifier>
<Value>1</Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x643a57e6, 0x5db6b5a5)</Identifier>
<Name>Experiment Settings</Name>
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
<Inputs>
<Input>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>New input</Name>
</Input>
</Inputs>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
<Name>Lua Script</Name>
<DefaultValue></DefaultValue>
<Value>${Player_ScenarioDirectory}/scripts/configuration-experiment-settings.lua</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
<Name>Target Light Color</Name>
<DefaultValue>100,0,0</DefaultValue>
<Value>100,0,0</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x7f45a2a9, 0x7db12219)</TypeIdentifier>
<Name>Target Dark Color</Name>
<DefaultValue>0,0,0</DefaultValue>
<Value>10,10,10</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x79a9edeb, 0x245d83fc)</TypeIdentifier>
<Name>Stimulation Frequencies</Name>
<DefaultValue>20;15;12</DefaultValue>
<Value>20;15;12</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Processing Epoch Duration</Name>
<DefaultValue>0.5</DefaultValue>
<Value>0.5</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Processing Epoch Interval</Name>
<DefaultValue>0.1</DefaultValue>
<Value>0.1</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x512a166f, 0x5c3ef83f)</TypeIdentifier>
<Name>Processing Frequency Tolerance</Name>
<DefaultValue>0.250</DefaultValue>
<Value>0.250</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>272</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>57</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
</Attribute>
<Attribute>
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>158</Value>
</Attribute>
<Attribute>
<Identifier>(0xc67a01dc, 0x28ce06c1)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
<Box>
<Identifier>(0x7e8245e4, 0x41dbf359)</Identifier>
<Name>Peripheral Settings</Name>
<AlgorithmClassIdentifier>(0x0b5a2787, 0x02750621)</AlgorithmClassIdentifier>
<Outputs>
<Output>
<TypeIdentifier>(0x6f752dd0, 0x082a321e)</TypeIdentifier>
<Name>Stimulations</Name>
</Output>
</Outputs>
<Settings>
<Setting>
<TypeIdentifier>(0xb0d0db45, 0x49cbc34a)</TypeIdentifier>
<Name>Lua Script</Name>
<DefaultValue></DefaultValue>
<Value>${Player_ScenarioDirectory}/scripts/configuration-peripheral-settings.lua</Value>
<Modifiability>false</Modifiability>
</Setting>
<Setting>
<TypeIdentifier>(0x007deef9, 0x2f3e95c6)</TypeIdentifier>
<Name>Screen Refresh Rate</Name>
<DefaultValue>60</DefaultValue>
<Value>60</Value>
<Modifiability>false</Modifiability>
</Setting>
</Settings>
<Attributes>
<Attribute>
<Identifier>(0x17ee7c08, 0x94c14893)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa7a38f, 0x54edbe0b)</Identifier>
<Value>0</Value>
</Attribute>
<Attribute>
<Identifier>(0x1fa963f5, 0x1a638cd4)</Identifier>
<Value>57</Value>
</Attribute>
<Attribute>
<Identifier>(0x207c9054, 0x3c841b63)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x4e7b798a, 0x183beafb)</Identifier>
<Value>(0xd6e3f48b, 0xbee3523a)</Value>
</Attribute>
<Attribute>
<Identifier>(0x61d11811, 0x71e65362)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xad100179, 0xa3c984ab)</Identifier>
<Value>149</Value>
</Attribute>
<Attribute>
<Identifier>(0xc80ce8af, 0xf699f813)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xce18836a, 0x9c0eb403)</Identifier>
<Value>1</Value>
</Attribute>
<Attribute>
<Identifier>(0xf191c1c8, 0xa0123976)</Identifier>
<Value></Value>
</Attribute>
<Attribute>
<Identifier>(0xfba64161, 0x65304e21)</Identifier>
<Value></Value>
</Attribute>
</Attributes>
</Box>
</Boxes>
<Links>
<Link>
<Identifier>(0x0c266f90, 0x7fc31cc9)</Identifier>
<Source>
<BoxIdentifier>(0x643a57e6, 0x5db6b5a5)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x0de6da7d, 0x3a63884e)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
<Attributes>
<Attribute>
<Identifier>(0x1b32c44c, 0x1905e0e9)</Identifier>
<Value>307</Value>
</Attribute>
<Attribute>
<Identifier>(0x358ae8b5, 0x0f8bacd1)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x3f0a3b27, 0x570913d2)</Identifier>
<Value>510</Value>
</Attribute>
<Attribute>
<Identifier>(0x6267b5c5, 0x676e3e42)</Identifier>
<Value>352</Value>
</Attribute>
</Attributes>
</Link>
<Link>
<Identifier>(0x1e9366aa, 0x1443b0fb)</Identifier>
<Source>
<BoxIdentifier>(0x7e8245e4, 0x41dbf359)</BoxIdentifier>
<BoxOutputIndex>0</BoxOutputIndex>
</Source>
<Target>
<BoxIdentifier>(0x643a57e6, 0x5db6b5a5)</BoxIdentifier>
<BoxInputIndex>0</BoxInputIndex>
</Target>
<Attributes>
<Attribute>
<Identifier>(0x1b32c44c, 0x1905e0e9)</Identifier>
<Value>35</Value>
</Attribute>
<Attribute>
<Identifier>(0x358ae8b5, 0x0f8bacd1)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x3f0a3b27, 0x570913d2)</Identifier>
<Value>239</Value>
</Attribute>
<Attribute>
<Identifier>(0x6267b5c5, 0x676e3e42)</Identifier>
<Value>352</Value>
</Attribute>
</Attributes>
</Link>
</Links>
<Comments>
<Comment>
<Identifier>(0x05488892, 0x66346878)</Identifier>
<Text>&lt;big&gt;&lt;b&gt;Peripheral Settings&lt;/b&gt;&lt;/big&gt;
Settings in this box must match your hardware configuration.
Currently, the only supported setting is the screen refresh rate.
&lt;b&gt;Screen Refresh Rate : &lt;/b&gt; The refresh rate of your screen,
refer to your screen's user manual to find this value.
&lt;span color="red"&gt;Important notice&lt;/span&gt;
Your screen will be able to reproduce only frequencies which
are result of division of your screen refresh rate by an
integer. </Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>-32</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>-48</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x3974ed1f, 0x29aa94c8)</Identifier>
<Text>&lt;big&gt;&lt;b&gt;Scenario description&lt;/b&gt;&lt;/big&gt;
&lt;b&gt;&lt;span color="red"&gt;This scenario must be run at least once before
running any further SSVEP scenarios&lt;/span&gt;&lt;/b&gt;
This is a scenario where you can configure your SSVEP experiment. There
are two boxes containing configuration parameters:
&lt;b&gt;Peripheral Settings&lt;/b&gt;
&lt;b&gt;Experiment Settings&lt;/b&gt;
For more detailed description please refer to the SSVEP
documentation page.</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>-336</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x5604a66d, 0x71c42d00)</Identifier>
<Text> &lt;b&gt;&lt;span color="#2060ff"&gt;Configurable box&lt;/span&gt;&lt;/b&gt;
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>0</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x60f812bd, 0x313894cf)</Identifier>
<Text>&lt;big&gt;&lt;b&gt;Experiment Settings&lt;/b&gt;&lt;/big&gt;
Settings concerning the SSVEP experiment in general.
&lt;b&gt;Target Light Color&lt;/b&gt; and &lt;b&gt;Target Dark Color&lt;/b&gt; represent
the two colors which will be used to generate the flickering of
the targets. The notation Light and Dark is arbitrary, however on
frequencies using odd number of frames will use more frames to
represent the Light color.
&lt;b&gt;Stimulation Frequencies&lt;/b&gt; A comma separated list of
frequencies used for the stimulation. Refer to the documentation
for more details.
&lt;b&gt;Processing Epoch Duration&lt;/b&gt; The length of the slice of the signal
which will be used to find SSVEP response. With longer duration precision
will increase at the detriment of the lag.
&lt;b&gt;Processing Epoch Interval&lt;/b&gt; The speed interval between slices of the
signal.
&lt;b&gt;Processing Frequency Tolerance&lt;/b&gt; The width of the frequency band
around the stimulation frequency used for classification.</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>-32</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>304</Value>
</Attribute>
</Attributes>
</Comment>
<Comment>
<Identifier>(0x6a410d4e, 0x61696337)</Identifier>
<Text> &lt;b&gt;&lt;span color="#2060ff"&gt;Configurable box&lt;/span&gt;&lt;/b&gt;
</Text>
<Attributes>
<Attribute>
<Identifier>(0x473d9a43, 0x97fc0a97)</Identifier>
<Value>352</Value>
</Attribute>
<Attribute>
<Identifier>(0x7234b86b, 0x2b8651a5)</Identifier>
<Value>272</Value>
</Attribute>
</Attributes>
</Comment>
</Comments>
<Metadata>
<Entry>
<Identifier>(0x0000775c, 0x000078ff)</Identifier>
<Type>(0x3bcce5d2, 0x43f2d968)</Type>
<Data>[{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"height":1,"identifier":"(0x48715606, 0x15ba4f24)","index":0,"name":"Default window","parentIdentifier":"(0xffffffff, 0xffffffff)","type":1,"width":1},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":1,"identifier":"(0x3683b3e2, 0x7c4b4806)","index":0,"name":"Default tab","parentIdentifier":"(0x48715606, 0x15ba4f24)","type":2},{"boxIdentifier":"(0xffffffff, 0xffffffff)","childCount":0,"identifier":"(0x1fb42682, 0x45866d35)","index":0,"name":"Empty","parentIdentifier":"(0x3683b3e2, 0x7c4b4806)","type":0}]</Data>
</Entry>
</Metadata>
</OpenViBE-Scenario>