Tacton experiments initial import
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Tue, 14 Jun 2011 19:27:51 +0000 (19:27 +0000)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Tue, 14 Jun 2011 19:27:51 +0000 (19:27 +0000)
git-svn-id: svn+ssh://thomaspietrzak.com/var/svn/rep@31 47cf9a05-e0a8-4ed5-9e9b-101a649bc004

35 files changed:
Tactons Experiment.sdf [new file with mode: 0644]
Tactons Experiment.sln [new file with mode: 0644]
Tactons Experiment.suo [new file with mode: 0644]
Tactons Experiment/-Amplitudes-Rest- [new file with mode: 0644]
Tactons Experiment/-Durations-Rest- [new file with mode: 0644]
Tactons Experiment/-Frequencies-Rest- [new file with mode: 0644]
Tactons Experiment/Amplitudes.txt [new file with mode: 0644]
Tactons Experiment/Durations.txt [new file with mode: 0644]
Tactons Experiment/Experiments.txt [new file with mode: 0644]
Tactons Experiment/Frequencies.txt [new file with mode: 0644]
Tactons Experiment/Gestures.txt [new file with mode: 0644]
Tactons Experiment/Locations.txt [new file with mode: 0644]
Tactons Experiment/Tactons Experiment.vcxproj [new file with mode: 0644]
Tactons Experiment/Tactons Experiment.vcxproj.filters [new file with mode: 0644]
Tactons Experiment/answerform.cpp [new file with mode: 0644]
Tactons Experiment/answerform.h [new file with mode: 0644]
Tactons Experiment/answerform.ui [new file with mode: 0644]
Tactons Experiment/answers.ui [new file with mode: 0644]
Tactons Experiment/example.ui [new file with mode: 0644]
Tactons Experiment/main.cpp [new file with mode: 0644]
Tactons Experiment/main.ui [new file with mode: 0644]
Tactons Experiment/tactonsexperiment.cpp [new file with mode: 0644]
Tactons Experiment/tactonsexperiment.h [new file with mode: 0644]
Tactons Experiment/tactonsexperiment.qrc [new file with mode: 0644]
Tactons Experiment/tactonsexperiment.ui [new file with mode: 0644]
Tactons JND/Tactons JND.vcxproj [new file with mode: 0644]
Tactons JND/Tactons JND.vcxproj.filters [new file with mode: 0644]
Tactons JND/answer3AFC.cpp [new file with mode: 0644]
Tactons JND/answer3AFC.h [new file with mode: 0644]
Tactons JND/answer3AFC.ui [new file with mode: 0644]
Tactons JND/main.cpp [new file with mode: 0644]
Tactons JND/tactonsjnd.cpp [new file with mode: 0644]
Tactons JND/tactonsjnd.h [new file with mode: 0644]
Tactons JND/tactonsjnd.qrc [new file with mode: 0644]
Tactons JND/tactonsjnd.ui [new file with mode: 0644]

diff --git a/Tactons Experiment.sdf b/Tactons Experiment.sdf
new file mode 100644 (file)
index 0000000..f82932c
Binary files /dev/null and b/Tactons Experiment.sdf differ
diff --git a/Tactons Experiment.sln b/Tactons Experiment.sln
new file mode 100644 (file)
index 0000000..4f417b4
--- /dev/null
@@ -0,0 +1,32 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactons Experiment", "Tactons Experiment\Tactons Experiment.vcxproj", "{06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tactons JND", "Tactons JND\Tactons JND.vcxproj", "{454A6651-24D2-4DBA-A579-FDACD5CAC68C}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TactonPlayer", "TactonPlayer\TactonPlayer.vcxproj", "{6D5C62C0-562D-4B2A-9AAC-806372810CBF}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Release|Win32 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Debug|Win32.Build.0 = Debug|Win32\r
+               {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Release|Win32.ActiveCfg = Release|Win32\r
+               {06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}.Release|Win32.Build.0 = Release|Win32\r
+               {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Debug|Win32.Build.0 = Debug|Win32\r
+               {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Release|Win32.ActiveCfg = Release|Win32\r
+               {454A6651-24D2-4DBA-A579-FDACD5CAC68C}.Release|Win32.Build.0 = Release|Win32\r
+               {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {6D5C62C0-562D-4B2A-9AAC-806372810CBF}.Release|Win32.Build.0 = Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/Tactons Experiment.suo b/Tactons Experiment.suo
new file mode 100644 (file)
index 0000000..a4343e8
Binary files /dev/null and b/Tactons Experiment.suo differ
diff --git a/Tactons Experiment/-Amplitudes-Rest- b/Tactons Experiment/-Amplitudes-Rest-
new file mode 100644 (file)
index 0000000..3082a14
--- /dev/null
@@ -0,0 +1,15 @@
+2,4,1\r
+0,2,1\r
+1,1,1\r
+1,3,1\r
+0,0,1\r
+2,2,1\r
+0,1,1\r
+3,4,1\r
+0,3,1\r
+0,4,1\r
+2,3,1\r
+3,3,1\r
+1,4,1\r
+4,4,1\r
+1,2,1\r
diff --git a/Tactons Experiment/-Durations-Rest- b/Tactons Experiment/-Durations-Rest-
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Tactons Experiment/-Frequencies-Rest- b/Tactons Experiment/-Frequencies-Rest-
new file mode 100644 (file)
index 0000000..0a02f74
--- /dev/null
@@ -0,0 +1,20 @@
+1,3,1\r
+1,4,1\r
+1,2,1\r
+2,5,1\r
+3,5,1\r
+0,2,1\r
+0,3,1\r
+0,1,1\r
+0,5,1\r
+1,1,1\r
+3,4,1\r
+4,5,1\r
+2,2,1\r
+0,4,1\r
+0,0,1\r
+2,4,1\r
+2,3,1\r
+4,4,1\r
+1,5,1\r
+3,3,1\r
diff --git a/Tactons Experiment/Amplitudes.txt b/Tactons Experiment/Amplitudes.txt
new file mode 100644 (file)
index 0000000..0ece0ac
--- /dev/null
@@ -0,0 +1,5 @@
+1;1111;200;250;20\r
+1;1111;200;250;40\r
+1;1111;200;250;60\r
+1;1111;200;250;80\r
+1;1111;200;250;100
\ No newline at end of file
diff --git a/Tactons Experiment/Durations.txt b/Tactons Experiment/Durations.txt
new file mode 100644 (file)
index 0000000..ffe28c8
--- /dev/null
@@ -0,0 +1,8 @@
+1;1111;50;250;100\r
+1;1111;100;250;100\r
+1;1111;150;250;100\r
+1;1111;200;250;100\r
+1;1111;250;250;100\r
+1;1111;300;250;100\r
+1;1111;350;250;100\r
+1;1111;400;250;100\r
diff --git a/Tactons Experiment/Experiments.txt b/Tactons Experiment/Experiments.txt
new file mode 100644 (file)
index 0000000..48e8098
--- /dev/null
@@ -0,0 +1,5 @@
+Frequencies\r
+Amplitudes\r
+Locations\r
+Durations\r
+All
\ No newline at end of file
diff --git a/Tactons Experiment/Frequencies.txt b/Tactons Experiment/Frequencies.txt
new file mode 100644 (file)
index 0000000..b5b045f
--- /dev/null
@@ -0,0 +1,6 @@
+1;1111;200;50;100\r
+1;1111;200;100;100\r
+1;1111;200;150;100\r
+1;1111;200;200;100\r
+1;1111;200;250;100\r
+1;1111;200;300;100\r
diff --git a/Tactons Experiment/Gestures.txt b/Tactons Experiment/Gestures.txt
new file mode 100644 (file)
index 0000000..9664aa6
--- /dev/null
@@ -0,0 +1,7 @@
+Rest\r
+Arm up\r
+Arm right\r
+Arm left\r
+Arm down\r
+Circle side\r
+Circle front
\ No newline at end of file
diff --git a/Tactons Experiment/Locations.txt b/Tactons Experiment/Locations.txt
new file mode 100644 (file)
index 0000000..3004e75
--- /dev/null
@@ -0,0 +1,15 @@
+1;0001;200;250;100\r
+1;0010;200;250;100\r
+1;0011;200;250;100\r
+1;0100;200;250;100\r
+1;0101;200;250;100\r
+1;0110;200;250;100\r
+1;0111;200;250;100\r
+1;1000;200;250;100\r
+1;1001;200;250;100\r
+1;1010;200;250;100\r
+1;1011;200;250;100\r
+1;1100;200;250;100\r
+1;1101;200;250;100\r
+1;1110;200;250;100\r
+1;1111;200;250;100\r
diff --git a/Tactons Experiment/Tactons Experiment.vcxproj b/Tactons Experiment/Tactons Experiment.vcxproj
new file mode 100644 (file)
index 0000000..e26b635
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{06E5475F-42FF-4D43-84C8-1C2DE2D8AE5E}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IncludePath)</IncludePath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(LibraryPath)</LibraryPath>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies);TactonPlayer.lib</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies);TactonPlayer.lib</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="answerform.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_answerform.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_tactonsexperiment.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_answerform.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_tactonsexperiment.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="tactonsexperiment.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsexperiment.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsexperiment.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsexperiment.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="answerform.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="answerform.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+    </CustomBuild>\r
+    <ClInclude Include="GeneratedFiles\ui_answerform.h" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/Tactons Experiment/Tactons Experiment.vcxproj.filters b/Tactons Experiment/Tactons Experiment.vcxproj.filters
new file mode 100644 (file)
index 0000000..dc0bb60
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;cxx;c;def</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Form Files">\r
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+      <Extensions>ui</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+      <Extensions>qrc;*</Extensions>\r
+      <ParseFiles>false</ParseFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files">\r
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+      <Extensions>moc;h;cpp</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Debug">\r
+      <UniqueIdentifier>{4be88096-af23-4867-b021-d81a3fab99b9}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Release">\r
+      <UniqueIdentifier>{772e3daf-faf0-4cd0-bb45-9c36d2fcf77a}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="tactonsexperiment.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_tactonsexperiment.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_tactonsexperiment.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_answerform.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_answerform.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="answerform.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsexperiment.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="tactonsexperiment.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="tactonsexperiment.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="answerform.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="answerform.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_answerform.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/Tactons Experiment/answerform.cpp b/Tactons Experiment/answerform.cpp
new file mode 100644 (file)
index 0000000..36bcb57
--- /dev/null
@@ -0,0 +1,131 @@
+#include "answerform.h"\r
+\r
+#include <QTimer>\r
+ #include <QDebug>\r
+\r
+AnswerForm::AnswerForm(QWidget *parent, Qt::WFlags flags)\r
+       : QDialog(parent, flags), _logfile(NULL), _tactonPlayer("COM3"), _current(0)\r
+{\r
+       //init the window\r
+       setupUi(this);\r
+       this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+       //init buttons\r
+       QObject::connect(buttonSame, SIGNAL(clicked()), this, SLOT(pressSame()));\r
+       QObject::connect(buttonDifferent, SIGNAL(clicked()), this, SLOT(pressDifferent()));\r
+\r
+}\r
+\r
+AnswerForm::~AnswerForm()\r
+{\r
+       if (_logfile)\r
+               fclose(_logfile);\r
+       //reset the wristband\r
+       _tactonPlayer.stop();\r
+}\r
+\r
+void AnswerForm::init(QString user, int repetitions, QString experiment, QString gesture)\r
+{\r
+       _user = user;\r
+       _repetitions = repetitions;\r
+       _experiment = experiment;\r
+       _gesture = gesture;\r
+\r
+       //create log file\r
+       QString logfilename = user + "-" + experiment + "-" + gesture + "-";\r
+       _logfile = fopen(logfilename.toStdString().c_str(), "w");\r
+\r
+       //load icons\r
+       _nbtactons = _tactonPlayer.registFile((experiment + ".txt").toAscii().data());\r
+\r
+       //init the wristband\r
+       //_tactonPlayer.start();\r
+\r
+       //generate the block\r
+       for (int i = 0 ; i < _repetitions ; i++)\r
+       {\r
+               QList<QPair<int, int> > temp;\r
+               //generate the block\r
+               for (int j = 0 ; j < _nbtactons ; j++)\r
+                       for (int k = j ; k < _nbtactons ; k++)\r
+                               temp.push_back(QPair<int,int>(j, k));\r
+               //shuffle\r
+               for (int j = 0; j < temp.count(); j++)\r
+                       temp.swap(j, (rand() % (temp.count() - j)) + j);\r
+               //add the block to the trial\r
+               _trials.append(temp);\r
+       }\r
+\r
+       //run first trial\r
+       runTrial();\r
+}\r
+\r
+void AnswerForm::setLabel()\r
+{\r
+       if (_current >= _trials.count())\r
+               label->setText("Finished!");\r
+       else\r
+               label->setText(QString::number(_current + 1) + "/" + QString::number(_trials.count()));\r
+}\r
+\r
+void AnswerForm::pressSame()\r
+{\r
+       setAnswer(true);\r
+}\r
+\r
+void AnswerForm::pressDifferent()\r
+{\r
+       setAnswer(false);\r
+}\r
+\r
+void AnswerForm::setAnswer(bool same)\r
+{\r
+       //write answer in the log file\r
+       log(same);\r
+\r
+       _current++;\r
+\r
+       //run next trial\r
+       runTrial();\r
+}\r
+\r
+void AnswerForm::runTrial()\r
+{\r
+       //change label with progress\r
+       setLabel();\r
+       \r
+       //disable buttons\r
+       toggleButtons();\r
+\r
+       if (_current >= _trials.count())\r
+               return;\r
+\r
+       //play next tacton 1\r
+       _tactonPlayer.play(_trials.at(_current).first);\r
+\r
+       //pause\r
+       //play next tacton 2\r
+       QTimer::singleShot(1000, this, SLOT(playSecond()));\r
+\r
+       //pause\r
+       //enable buttons\r
+       QTimer::singleShot(2000, this, SLOT(toggleButtons()));\r
+}\r
+\r
+void AnswerForm::playSecond()\r
+{\r
+       _tactonPlayer.play(_trials.at(_current).second);\r
+}\r
+\r
+void AnswerForm::toggleButtons()\r
+{\r
+       buttonDifferent->setEnabled(!buttonDifferent->isEnabled());\r
+       buttonSame->setEnabled(!buttonSame->isEnabled());\r
+}\r
+\r
+void AnswerForm::log(bool answer)\r
+{\r
+       if (_logfile == NULL)\r
+               return;\r
+       fprintf(_logfile, "%d,%d,%d\n", _trials.at(_current).first, _trials.at(_current).second, answer);\r
+}\r
diff --git a/Tactons Experiment/answerform.h b/Tactons Experiment/answerform.h
new file mode 100644 (file)
index 0000000..e35772f
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _ANSWERFORM_\r
+#define _ANSWERFORM_\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+#include <QtGui/QDialog>\r
+#include "ui_answerform.h"\r
+\r
+\r
+class AnswerForm : public QDialog, Ui::AnswerFormClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       AnswerForm(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~AnswerForm();\r
+\r
+       void init(QString user, int repetitions, QString experiment, QString gesture);\r
+\r
+       void setAnswer(bool same);\r
+\r
+private:\r
+       void setLabel();\r
+       void log(bool answer);\r
+       void runTrial();\r
+\r
+       FILE *_logfile;\r
+       TactonPlayer _tactonPlayer;\r
+       QString _user;\r
+       int _repetitions;\r
+       QString _experiment;\r
+       QString _gesture;\r
+       unsigned int _nbtactons;\r
+       QList<QPair<int, int> > _trials; \r
+       int _current;\r
+private slots:\r
+       void pressSame();\r
+       void pressDifferent();\r
+       void toggleButtons();\r
+       void playSecond();\r
+};\r
+\r
+#endif\r
diff --git a/Tactons Experiment/answerform.ui b/Tactons Experiment/answerform.ui
new file mode 100644 (file)
index 0000000..d783973
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>AnswerFormClass</class>\r
+ <widget class="QDialog" name="AnswerFormClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>420</width>\r
+    <height>107</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tactons Experiment</string>\r
+  </property>\r
+  <layout class="QGridLayout" name="gridLayout_2">\r
+   <item row="0" column="0">\r
+    <layout class="QGridLayout" name="gridLayout">\r
+     <item row="0" column="0" colspan="2">\r
+      <widget class="QLabel" name="label">\r
+       <property name="minimumSize">\r
+        <size>\r
+         <width>400</width>\r
+         <height>40</height>\r
+        </size>\r
+       </property>\r
+       <property name="font">\r
+        <font>\r
+         <pointsize>20</pointsize>\r
+        </font>\r
+       </property>\r
+       <property name="styleSheet">\r
+        <string notr="true"/>\r
+       </property>\r
+       <property name="text">\r
+        <string/>\r
+       </property>\r
+       <property name="alignment">\r
+        <set>Qt::AlignCenter</set>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="1" column="0">\r
+      <widget class="QPushButton" name="buttonSame">\r
+       <property name="enabled">\r
+        <bool>true</bool>\r
+       </property>\r
+       <property name="font">\r
+        <font>\r
+         <pointsize>20</pointsize>\r
+        </font>\r
+       </property>\r
+       <property name="text">\r
+        <string>Same</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+     <item row="1" column="1">\r
+      <widget class="QPushButton" name="buttonDifferent">\r
+       <property name="font">\r
+        <font>\r
+         <pointsize>20</pointsize>\r
+        </font>\r
+       </property>\r
+       <property name="text">\r
+        <string>Different</string>\r
+       </property>\r
+      </widget>\r
+     </item>\r
+    </layout>\r
+   </item>\r
+  </layout>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/Tactons Experiment/answers.ui b/Tactons Experiment/answers.ui
new file mode 100644 (file)
index 0000000..c788afd
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>AnswerWindow</class>\r
+ <widget class="QMainWindow" name="AnswerWindow">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>373</width>\r
+    <height>98</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tacton Study</string>\r
+  </property>\r
+  <property name="locale">\r
+   <locale language="English" country="Canada"/>\r
+  </property>\r
+  <widget class="QWidget" name="centralwidget">\r
+   <layout class="QGridLayout" name="gridLayout">\r
+    <item row="0" column="0" colspan="2">\r
+     <widget class="QLabel" name="label">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>20</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="styleSheet">\r
+       <string notr="true"/>\r
+      </property>\r
+      <property name="text">\r
+       <string>TextLabel</string>\r
+      </property>\r
+      <property name="alignment">\r
+       <set>Qt::AlignCenter</set>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="1" column="0">\r
+     <widget class="QPushButton" name="buttonSame">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>20</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="text">\r
+       <string>Same</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="1" column="1">\r
+     <widget class="QPushButton" name="buttonDifferent">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>20</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="text">\r
+       <string>Different</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/Tactons Experiment/example.ui b/Tactons Experiment/example.ui
new file mode 100644 (file)
index 0000000..d7e4572
--- /dev/null
@@ -0,0 +1,100 @@
+<ui version="4.0" >\r
+ <author></author>\r
+ <comment></comment>\r
+ <exportmacro></exportmacro>\r
+ <class>Dialog</class>\r
+ <widget class="QDialog" name="Dialog" >\r
+  <property name="geometry" >\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>400</width>\r
+    <height>300</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle" >\r
+   <string>Dialog</string>\r
+  </property>\r
+  <widget class="QWidget" name="layoutWidget" >\r
+   <property name="geometry" >\r
+    <rect>\r
+     <x>20</x>\r
+     <y>250</y>\r
+     <width>351</width>\r
+     <height>33</height>\r
+    </rect>\r
+   </property>\r
+   <layout class="QHBoxLayout" >\r
+    <property name="margin" >\r
+     <number>0</number>\r
+    </property>\r
+    <property name="spacing" >\r
+     <number>6</number>\r
+    </property>\r
+    <item>\r
+     <spacer>\r
+      <property name="orientation" >\r
+       <enum>Qt::Horizontal</enum>\r
+      </property>\r
+      <property name="sizeHint" >\r
+       <size>\r
+        <width>131</width>\r
+        <height>31</height>\r
+       </size>\r
+      </property>\r
+     </spacer>\r
+    </item>\r
+    <item>\r
+     <widget class="QPushButton" name="okButton" >\r
+      <property name="text" >\r
+       <string>OK</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item>\r
+     <widget class="QPushButton" name="cancelButton" >\r
+      <property name="text" >\r
+       <string>Cancel</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <pixmapfunction></pixmapfunction>\r
+ <resources/>\r
+ <connections>\r
+  <connection>\r
+   <sender>okButton</sender>\r
+   <signal>clicked()</signal>\r
+   <receiver>Dialog</receiver>\r
+   <slot>accept()</slot>\r
+   <hints>\r
+    <hint type="sourcelabel" >\r
+     <x>278</x>\r
+     <y>253</y>\r
+    </hint>\r
+    <hint type="destinationlabel" >\r
+     <x>96</x>\r
+     <y>254</y>\r
+    </hint>\r
+   </hints>\r
+  </connection>\r
+  <connection>\r
+   <sender>cancelButton</sender>\r
+   <signal>clicked()</signal>\r
+   <receiver>Dialog</receiver>\r
+   <slot>reject()</slot>\r
+   <hints>\r
+    <hint type="sourcelabel" >\r
+     <x>369</x>\r
+     <y>253</y>\r
+    </hint>\r
+    <hint type="destinationlabel" >\r
+     <x>179</x>\r
+     <y>282</y>\r
+    </hint>\r
+   </hints>\r
+  </connection>\r
+ </connections>\r
+</ui>\r
diff --git a/Tactons Experiment/main.cpp b/Tactons Experiment/main.cpp
new file mode 100644 (file)
index 0000000..3f7b12b
--- /dev/null
@@ -0,0 +1,10 @@
+#include "tactonsexperiment.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       TactonsExperiment w;\r
+       w.show();\r
+       return a.exec();\r
+}\r
diff --git a/Tactons Experiment/main.ui b/Tactons Experiment/main.ui
new file mode 100644 (file)
index 0000000..14efe0b
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>MainWindow</class>\r
+ <widget class="QMainWindow" name="MainWindow">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>384</width>\r
+    <height>226</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tacton Study</string>\r
+  </property>\r
+  <widget class="QWidget" name="centralwidget">\r
+   <layout class="QGridLayout" name="gridLayout">\r
+    <item row="0" column="0">\r
+     <widget class="QLabel" name="labeluser">\r
+      <property name="text">\r
+       <string>User:</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="1" column="0">\r
+     <widget class="QLabel" name="labelrepetitions">\r
+      <property name="text">\r
+       <string>Repetitions:</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="2" column="0">\r
+     <widget class="QLabel" name="labelexperiment">\r
+      <property name="text">\r
+       <string>Experiment:</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="0" column="1">\r
+     <widget class="QLineEdit" name="username"/>\r
+    </item>\r
+    <item row="1" column="1">\r
+     <widget class="QSpinBox" name="spinBox">\r
+      <property name="minimum">\r
+       <number>1</number>\r
+      </property>\r
+      <property name="maximum">\r
+       <number>100</number>\r
+      </property>\r
+      <property name="value">\r
+       <number>1</number>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="2" column="1">\r
+     <widget class="QComboBox" name="experiment"/>\r
+    </item>\r
+    <item row="3" column="1">\r
+     <widget class="QPushButton" name="buttonstart">\r
+      <property name="text">\r
+       <string>Start experiment</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/Tactons Experiment/tactonsexperiment.cpp b/Tactons Experiment/tactonsexperiment.cpp
new file mode 100644 (file)
index 0000000..879bc41
--- /dev/null
@@ -0,0 +1,50 @@
+#include "tactonsexperiment.h"\r
+\r
+TactonsExperiment::TactonsExperiment(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags)\r
+{\r
+       setupUi(this);\r
+\r
+       this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+       FILE *f = fopen("Experiments.txt", "r");\r
+       if (f)\r
+       {\r
+               char buffer[256];\r
+               while ((fgets(buffer, 256, f)) != NULL)\r
+               {\r
+                       while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+                               buffer[strlen(buffer) - 1] = '\0';\r
+                       experiment->addItem(buffer);\r
+               }\r
+               fclose(f);\r
+       }\r
+\r
+       f = fopen("Gestures.txt", "r");\r
+       if (f)\r
+       {\r
+               char buffer[256];\r
+               while ((fgets(buffer, 256, f)) != NULL)\r
+               {\r
+                       while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+                               buffer[strlen(buffer) - 1] = '\0';\r
+                       gesture->addItem(buffer);\r
+               }\r
+               fclose(f);\r
+       }\r
+\r
+       QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+TactonsExperiment::~TactonsExperiment()\r
+{\r
+\r
+}\r
+\r
+void TactonsExperiment::runBlock(void)\r
+{\r
+       this->hide();\r
+       w.init(username->text(), repetitions->value(), experiment->currentText(), gesture->currentText());\r
+       w.show();\r
+}\r
+\r
diff --git a/Tactons Experiment/tactonsexperiment.h b/Tactons Experiment/tactonsexperiment.h
new file mode 100644 (file)
index 0000000..8ef50ac
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef TACTONSEXPERIMENT_H\r
+#define TACTONSEXPERIMENT_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_tactonsexperiment.h"\r
+\r
+#include "answerform.h"\r
+\r
+class TactonsExperiment : public QMainWindow, Ui::TactonsExperimentClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       TactonsExperiment(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~TactonsExperiment();\r
+\r
+private:\r
+       AnswerForm w;\r
+\r
+private slots:\r
+     void runBlock(void);\r
+};\r
+\r
+#endif // TACTONSEXPERIMENT_H\r
diff --git a/Tactons Experiment/tactonsexperiment.qrc b/Tactons Experiment/tactonsexperiment.qrc
new file mode 100644 (file)
index 0000000..8c70707
--- /dev/null
@@ -0,0 +1,4 @@
+<RCC>\r
+    <qresource prefix="TactonsExperiment">\r
+    </qresource>\r
+</RCC>\r
diff --git a/Tactons Experiment/tactonsexperiment.ui b/Tactons Experiment/tactonsexperiment.ui
new file mode 100644 (file)
index 0000000..ba21a39
--- /dev/null
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TactonsExperimentClass</class>\r
+ <widget class="QMainWindow" name="TactonsExperimentClass">\r
+  <property name="windowModality">\r
+   <enum>Qt::NonModal</enum>\r
+  </property>\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>324</width>\r
+    <height>180</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tactons Experiment</string>\r
+  </property>\r
+  <property name="locale">\r
+   <locale language="English" country="Canada"/>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <layout class="QGridLayout" name="gridLayout_2">\r
+    <item row="0" column="0">\r
+     <layout class="QGridLayout" name="gridLayout">\r
+      <item row="0" column="0">\r
+       <widget class="QLabel" name="labeluser">\r
+        <property name="text">\r
+         <string>User:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="0" column="1">\r
+       <widget class="QLineEdit" name="username"/>\r
+      </item>\r
+      <item row="1" column="0">\r
+       <widget class="QLabel" name="labelrepetitions">\r
+        <property name="text">\r
+         <string>Repetitions:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="1" column="1">\r
+       <widget class="QSpinBox" name="repetitions">\r
+        <property name="minimum">\r
+         <number>1</number>\r
+        </property>\r
+        <property name="maximum">\r
+         <number>100</number>\r
+        </property>\r
+        <property name="value">\r
+         <number>1</number>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="2" column="0">\r
+       <widget class="QLabel" name="labelexperiment">\r
+        <property name="text">\r
+         <string>Experiment:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="2" column="1">\r
+       <widget class="QComboBox" name="experiment"/>\r
+      </item>\r
+      <item row="3" column="0">\r
+       <widget class="QLabel" name="labelGesture">\r
+        <property name="text">\r
+         <string>Gesture:</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+      <item row="3" column="1">\r
+       <widget class="QComboBox" name="gesture"/>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+    <item row="1" column="0">\r
+     <widget class="QPushButton" name="buttonstart">\r
+      <property name="locale">\r
+       <locale language="English" country="Canada"/>\r
+      </property>\r
+      <property name="text">\r
+       <string>Start experiment</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="tactonsexperiment.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r
diff --git a/Tactons JND/Tactons JND.vcxproj b/Tactons JND/Tactons JND.vcxproj
new file mode 100644 (file)
index 0000000..83c587d
--- /dev/null
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Debug|Win32">\r
+      <Configuration>Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Release|Win32">\r
+      <Configuration>Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{454A6651-24D2-4DBA-A579-FDACD5CAC68C}</ProjectGuid>\r
+    <Keyword>Qt4VSv1.0</Keyword>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />\r
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>\r
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(ConfigurationName)</OutDir>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <Optimization>Disabled</Optimization>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <AdditionalDependencies>TactonPlayer.lib;qtmaind.lib;QtCored4.lib;QtGuid4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+    <ClCompile>\r
+      <PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories>.\GeneratedFiles;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\qtmain;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <DebugInformationFormat>\r
+      </DebugInformationFormat>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>\r
+    </ClCompile>\r
+    <Link>\r
+      <SubSystem>Windows</SubSystem>\r
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>\r
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+      <AdditionalDependencies>TactonPlayer.lib;qtmain.lib;QtCore4.lib;QtGui4.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="answer3AFC.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_answer3AFC.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_tactonsjnd.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_tactonsjnd.cpp">\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+      </PrecompiledHeader>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_answer3AFC.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_tactonsjnd.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="main.cpp" />\r
+    <ClCompile Include="tactonsjnd.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsjnd.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsjnd.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"   -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB  "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I." "tactonsjnd.h" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsjnd.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="answer3AFC.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB "-I." "-I.\GeneratedFiles" "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\qtmain" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I." "-I." "-I." "-I."</Command>\r
+    </CustomBuild>\r
+    <ClInclude Include="GeneratedFiles\ui_answer3AFC.h" />\r
+    <ClInclude Include="GeneratedFiles\ui_tactonsjnd.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsjnd.qrc">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(FullPath);%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Rcc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\qrc_%(Filename).cpp;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="answer3AFC.ui">\r
+      <FileType>Document</FileType>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <UserProperties UicDir=".\GeneratedFiles" MocDir=".\GeneratedFiles\$(ConfigurationName)" MocOptions="" RccDir=".\GeneratedFiles" lupdateOnBuild="0" lupdateOptions="" lreleaseOptions="" QtVersion_x0020_Win32="4.7.3" />\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/Tactons JND/Tactons JND.vcxproj.filters b/Tactons JND/Tactons JND.vcxproj.filters
new file mode 100644 (file)
index 0000000..3725302
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\r
+      <Extensions>cpp;cxx;c;def</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\r
+      <Extensions>h</Extensions>\r
+    </Filter>\r
+    <Filter Include="Form Files">\r
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>\r
+      <Extensions>ui</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>\r
+      <Extensions>qrc;*</Extensions>\r
+      <ParseFiles>false</ParseFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files">\r
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>\r
+      <Extensions>moc;h;cpp</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Debug">\r
+      <UniqueIdentifier>{46d85dc4-0c7e-48d5-bd55-7a10b0960449}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+    <Filter Include="Generated Files\Release">\r
+      <UniqueIdentifier>{12076a94-7630-4742-8658-e16a03d8f379}</UniqueIdentifier>\r
+      <Extensions>cpp;moc</Extensions>\r
+      <SourceControlFiles>False</SourceControlFiles>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="main.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="tactonsjnd.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_tactonsjnd.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_tactonsjnd.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\qrc_tactonsjnd.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_answer3AFC.cpp">\r
+      <Filter>Generated Files\Debug</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_answer3AFC.cpp">\r
+      <Filter>Generated Files\Release</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="answer3AFC.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuild Include="tactonsjnd.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="tactonsjnd.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="tactonsjnd.qrc">\r
+      <Filter>Resource Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="answer3AFC.ui">\r
+      <Filter>Form Files</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="answer3AFC.h">\r
+      <Filter>Header Files</Filter>\r
+    </CustomBuild>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="GeneratedFiles\ui_tactonsjnd.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="GeneratedFiles\ui_answer3AFC.h">\r
+      <Filter>Generated Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+</Project>
\ No newline at end of file
diff --git a/Tactons JND/answer3AFC.cpp b/Tactons JND/answer3AFC.cpp
new file mode 100644 (file)
index 0000000..58ea3b1
--- /dev/null
@@ -0,0 +1,58 @@
+#include "answer3AFC.h"\r
+\r
+#include <QTimer>\r
+ #include <QDebug>\r
+\r
+Answer3AFC::Answer3AFC(QWidget *parent, Qt::WFlags flags)\r
+       : QDialog(parent, flags), _logfile(NULL), _tactonPlayer("COM3"), _current(0)\r
+{\r
+       //init the window\r
+       setupUi(this);\r
+       this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+       //init buttons\r
+       QObject::connect(play1, SIGNAL(clicked()), this, SLOT(play(1)));\r
+       QObject::connect(play2, SIGNAL(clicked()), this, SLOT(play(2)));\r
+       QObject::connect(play3, SIGNAL(clicked()), this, SLOT(play(3)));\r
+       QObject::connect(answer1, SIGNAL(clicked()), this, SLOT(answer(1)));\r
+       QObject::connect(answer2, SIGNAL(clicked()), this, SLOT(answer(2)));\r
+       QObject::connect(answer3, SIGNAL(clicked()), this, SLOT(answer(3)));\r
+}\r
+\r
+void Answer3AFC::toggleButtons()\r
+{\r
+       bool ok = _tplayed[0] && _tplayed[1] && _tplayed[2];\r
+       play1->setEnabled(ok);\r
+       play2->setEnabled(ok);\r
+       play3->setEnabled(ok);\r
+}\r
+\r
+void Answer3AFC::play(int tacton)\r
+{\r
+       if (tacton == _goodanswer)\r
+       _tactonPlayer.play(Tacton(\r
+       \r
+       (...[tacton]);\r
+       _tplayed[tacton]++;\r
+       toggleButtons();\r
+}\r
+\r
+void Answer3AFC::answer(int rep)\r
+{\r
+       log(rep);\r
+       _tplayed[0] = _tplayed[1] = _tplayed[2] = 0;\r
+       toggleButtons();\r
+\r
+       runTrial();\r
+}\r
+\r
+void Answer3AFC::log(bool answer)\r
+{\r
+       if (_logfile == NULL)\r
+               return;\r
+       fprintf(_logfile, "%d,%d,%d,%d,%d,%d,%d\n", _currentval, _currenttest, _goodanswer, answer, _tplayed[0], _tplayed[1], _tplayed[2]);\r
+}\r
+       \r
+void Answer3AFC::runTrial()\r
+{\r
+}
\ No newline at end of file
diff --git a/Tactons JND/answer3AFC.h b/Tactons JND/answer3AFC.h
new file mode 100644 (file)
index 0000000..58ffd2a
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ANSWER3AFC_\r
+#define _ANSWER3AFC_\r
+\r
+#include <TactonPlayer/TactonPlayer.hpp>\r
+\r
+#include <QtGui/QDialog>\r
+#include "ui_answer3AFC.h"\r
+\r
+\r
+class Answer3AFC : public QDialog, Ui::Answer3AFCClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       Answer3AFC(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~Answer3AFC();\r
+\r
+       void init(QString user, int repetitions, QString experiment, QString gesture);\r
+\r
+       void setAnswer(bool same);\r
+\r
+private:\r
+       void log(bool answer);\r
+       void runTrial();\r
+\r
+       FILE *_logfile;\r
+       TactonPlayer _tactonPlayer;\r
+       QString _user;\r
+       int _reversals, tseries, _fseries;\r
+       double _tinc, _finc;\r
+       QString _experiment;\r
+       QString _gesture;\r
+\r
+       int _currentval, _currenttest, _goodanswer;\r
+       \r
+       int _tplayed[3];\r
+\r
+private slots:\r
+       void toggleButtons();\r
+       void play(int tacton);\r
+       void answer(int rep);\r
+};\r
+\r
+#endif\r
diff --git a/Tactons JND/answer3AFC.ui b/Tactons JND/answer3AFC.ui
new file mode 100644 (file)
index 0000000..177f8c5
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>Answer3AFCClass</class>\r
+ <widget class="QDialog" name="Answer3AFCClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>392</width>\r
+    <height>122</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tactons JND experiment</string>\r
+  </property>\r
+  <widget class="QWidget" name="gridLayoutWidget">\r
+   <property name="geometry">\r
+    <rect>\r
+     <x>0</x>\r
+     <y>0</y>\r
+     <width>391</width>\r
+     <height>121</height>\r
+    </rect>\r
+   </property>\r
+   <layout class="QGridLayout" name="gridLayout">\r
+    <property name="leftMargin">\r
+     <number>10</number>\r
+    </property>\r
+    <property name="rightMargin">\r
+     <number>10</number>\r
+    </property>\r
+    <property name="horizontalSpacing">\r
+     <number>20</number>\r
+    </property>\r
+    <property name="verticalSpacing">\r
+     <number>10</number>\r
+    </property>\r
+    <item row="2" column="0">\r
+     <widget class="QPushButton" name="play1">\r
+      <property name="text">\r
+       <string>Play</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="2" column="1">\r
+     <widget class="QPushButton" name="play2">\r
+      <property name="text">\r
+       <string>Play</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="2" column="2">\r
+     <widget class="QPushButton" name="play3">\r
+      <property name="text">\r
+       <string>Play</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="1" column="0" colspan="3">\r
+     <widget class="QLabel" name="label">\r
+      <property name="font">\r
+       <font>\r
+        <pointsize>20</pointsize>\r
+       </font>\r
+      </property>\r
+      <property name="locale">\r
+       <locale language="English" country="Canada"/>\r
+      </property>\r
+      <property name="text">\r
+       <string>Which one is different?</string>\r
+      </property>\r
+      <property name="alignment">\r
+       <set>Qt::AlignCenter</set>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="3" column="0">\r
+     <widget class="QPushButton" name="answer1">\r
+      <property name="enabled">\r
+       <bool>false</bool>\r
+      </property>\r
+      <property name="text">\r
+       <string>This one</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="3" column="1">\r
+     <widget class="QPushButton" name="answer2">\r
+      <property name="enabled">\r
+       <bool>false</bool>\r
+      </property>\r
+      <property name="text">\r
+       <string>This one</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+    <item row="3" column="2">\r
+     <widget class="QPushButton" name="answer3">\r
+      <property name="enabled">\r
+       <bool>false</bool>\r
+      </property>\r
+      <property name="text">\r
+       <string>This one</string>\r
+      </property>\r
+     </widget>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <resources/>\r
+ <connections/>\r
+</ui>\r
diff --git a/Tactons JND/main.cpp b/Tactons JND/main.cpp
new file mode 100644 (file)
index 0000000..d0c1492
--- /dev/null
@@ -0,0 +1,10 @@
+#include "tactonsjnd.h"\r
+#include <QtGui/QApplication>\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+       QApplication a(argc, argv);\r
+       TactonsJND w;\r
+       w.show();\r
+       return a.exec();\r
+}\r
diff --git a/Tactons JND/tactonsjnd.cpp b/Tactons JND/tactonsjnd.cpp
new file mode 100644 (file)
index 0000000..6fedb8c
--- /dev/null
@@ -0,0 +1,42 @@
+#include "tactonsjnd.h"\r
+\r
+TactonsJND::TactonsJND(QWidget *parent, Qt::WFlags flags)\r
+       : QMainWindow(parent, flags)\r
+{\r
+       setupUi(this);\r
+\r
+       this->layout()->setSizeConstraint(QLayout::SetFixedSize);\r
+\r
+       FILE *f = fopen("Experiments.txt", "r");\r
+       if (f)\r
+       {\r
+               char buffer[256];\r
+               while ((fgets(buffer, 256, f)) != NULL)\r
+               {\r
+                       while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+                               buffer[strlen(buffer) - 1] = '\0';\r
+                       experiment->addItem(buffer);\r
+               }\r
+               fclose(f);\r
+       }\r
+\r
+       f = fopen("Gestures.txt", "r");\r
+       if (f)\r
+       {\r
+               char buffer[256];\r
+               while ((fgets(buffer, 256, f)) != NULL)\r
+               {\r
+                       while((buffer[strlen(buffer) - 1] == '\r') || (buffer[strlen(buffer) - 1] == '\n'))\r
+                               buffer[strlen(buffer) - 1] = '\0';\r
+                       gesture->addItem(buffer);\r
+               }\r
+               fclose(f);\r
+       }\r
+\r
+       QObject::connect(buttonstart, SIGNAL(clicked()), this, SLOT(runBlock()));\r
+}\r
+\r
+TactonsJND::~TactonsJND()\r
+{\r
+\r
+}\r
diff --git a/Tactons JND/tactonsjnd.h b/Tactons JND/tactonsjnd.h
new file mode 100644 (file)
index 0000000..1d26d4d
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef TACTONSJND_H\r
+#define TACTONSJND_H\r
+\r
+#include <QtGui/QMainWindow>\r
+#include "ui_tactonsjnd.h"\r
+\r
+#include "Answer3AFC.h"\r
+\r
+class TactonsJND : public QMainWindow, Ui::TactonsJNDClass\r
+{\r
+       Q_OBJECT\r
+\r
+public:\r
+       TactonsJND(QWidget *parent = 0, Qt::WFlags flags = 0);\r
+       ~TactonsJND();\r
+\r
+private:\r
+       Answer3AFC w;\r
+\r
+private slots:\r
+     void runBlock(void);\r
+};\r
+\r
+#endif // TACTONSJND_H\r
diff --git a/Tactons JND/tactonsjnd.qrc b/Tactons JND/tactonsjnd.qrc
new file mode 100644 (file)
index 0000000..0bd2350
--- /dev/null
@@ -0,0 +1,4 @@
+<RCC>\r
+    <qresource prefix="TactonsJND">\r
+    </qresource>\r
+</RCC>\r
diff --git a/Tactons JND/tactonsjnd.ui b/Tactons JND/tactonsjnd.ui
new file mode 100644 (file)
index 0000000..35226d9
--- /dev/null
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<ui version="4.0">\r
+ <class>TactonsJNDClass</class>\r
+ <widget class="QMainWindow" name="TactonsJNDClass">\r
+  <property name="geometry">\r
+   <rect>\r
+    <x>0</x>\r
+    <y>0</y>\r
+    <width>461</width>\r
+    <height>270</height>\r
+   </rect>\r
+  </property>\r
+  <property name="windowTitle">\r
+   <string>Tactons JND experiment</string>\r
+  </property>\r
+  <property name="locale">\r
+   <locale language="English" country="Canada"/>\r
+  </property>\r
+  <widget class="QWidget" name="centralWidget">\r
+   <layout class="QGridLayout" name="gridLayout_3">\r
+    <item row="0" column="0">\r
+     <layout class="QGridLayout" name="gridLayout_2">\r
+      <item row="0" column="0">\r
+       <layout class="QGridLayout" name="gridLayout">\r
+        <item row="0" column="0">\r
+         <widget class="QLabel" name="labeluser">\r
+          <property name="text">\r
+           <string>User:</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="0" column="1">\r
+         <widget class="QLineEdit" name="username"/>\r
+        </item>\r
+        <item row="1" column="0">\r
+         <widget class="QLabel" name="labelrepetitions">\r
+          <property name="text">\r
+           <string>Reversals:</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="1" column="1">\r
+         <widget class="QSpinBox" name="reversals">\r
+          <property name="minimum">\r
+           <number>2</number>\r
+          </property>\r
+          <property name="maximum">\r
+           <number>20</number>\r
+          </property>\r
+          <property name="value">\r
+           <number>5</number>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="6" column="0">\r
+         <widget class="QLabel" name="labelexperiment">\r
+          <property name="text">\r
+           <string>Experiment:</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="6" column="1">\r
+         <widget class="QComboBox" name="experiment"/>\r
+        </item>\r
+        <item row="7" column="0">\r
+         <widget class="QLabel" name="labelGesture">\r
+          <property name="text">\r
+           <string>Gesture:</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="7" column="1">\r
+         <widget class="QComboBox" name="gesture"/>\r
+        </item>\r
+        <item row="2" column="0">\r
+         <widget class="QLabel" name="tinclabel">\r
+          <property name="text">\r
+           <string>T Inc</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="3" column="0">\r
+         <widget class="QLabel" name="finclabel">\r
+          <property name="text">\r
+           <string>F Inc</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="4" column="0">\r
+         <widget class="QLabel" name="tserieslabel">\r
+          <property name="text">\r
+           <string>T Series</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="5" column="0">\r
+         <widget class="QLabel" name="fserieslabel">\r
+          <property name="text">\r
+           <string>F Series</string>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="4" column="1">\r
+         <widget class="QSpinBox" name="tseries">\r
+          <property name="minimum">\r
+           <number>1</number>\r
+          </property>\r
+          <property name="maximum">\r
+           <number>20</number>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="5" column="1">\r
+         <widget class="QSpinBox" name="fseries">\r
+          <property name="minimum">\r
+           <number>1</number>\r
+          </property>\r
+          <property name="maximum">\r
+           <number>20</number>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="2" column="1">\r
+         <widget class="QDoubleSpinBox" name="tinc">\r
+          <property name="maximum">\r
+           <double>10.000000000000000</double>\r
+          </property>\r
+          <property name="singleStep">\r
+           <double>0.250000000000000</double>\r
+          </property>\r
+          <property name="value">\r
+           <double>1.000000000000000</double>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+        <item row="3" column="1">\r
+         <widget class="QDoubleSpinBox" name="finc">\r
+          <property name="minimum">\r
+           <double>0.000000000000000</double>\r
+          </property>\r
+          <property name="maximum">\r
+           <double>10.000000000000000</double>\r
+          </property>\r
+          <property name="singleStep">\r
+           <double>0.250000000000000</double>\r
+          </property>\r
+          <property name="value">\r
+           <double>1.000000000000000</double>\r
+          </property>\r
+         </widget>\r
+        </item>\r
+       </layout>\r
+      </item>\r
+      <item row="1" column="0">\r
+       <widget class="QPushButton" name="buttonstart">\r
+        <property name="locale">\r
+         <locale language="English" country="Canada"/>\r
+        </property>\r
+        <property name="text">\r
+         <string>Start experiment</string>\r
+        </property>\r
+       </widget>\r
+      </item>\r
+     </layout>\r
+    </item>\r
+   </layout>\r
+  </widget>\r
+ </widget>\r
+ <layoutdefault spacing="6" margin="11"/>\r
+ <resources>\r
+  <include location="tactonsjnd.qrc"/>\r
+ </resources>\r
+ <connections/>\r
+</ui>\r