diff --git a/.editorconfig b/.editorconfig
index 775f9bb..046874f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,19 +1,46 @@
-root = true
+root = true
[*]
end_of_line = lf
insert_final_newline = true
-charset=utf-8
-trim_trailing_whitespace=true
-
-[*.{cs,xaml}]
-indent_style=space
-indent_size=4
+charset = utf-8
+trim_trailing_whitespace = true
+indent_style = space
[*.{manifest,csproj,sln}]
-indent_style=space
-indent_size=4
+indent_size = 4
[*.yml]
-indent_style=space
-indent_size=2
+indent_size = 2
+
+# https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
+
+[*.cs,*.vb]
+indent_size = 4
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+
+[*.cs]
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
+csharp_style_expression_bodied_methods = false:none
+csharp_style_expression_bodied_constructors = false:none
+csharp_style_expression_bodied_operators = false:none
+csharp_style_expression_bodied_properties = false:none
+csharp_style_expression_bodied_indexers = false:none
+csharp_style_expression_bodied_accessors = false:none
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = false:suggestion
diff --git a/DereTore.sln b/DereTore.sln
index ed6203d..36ceaa0 100644
--- a/DereTore.sln
+++ b/DereTore.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.26228.9
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{9203B750-3E22-4048-A379-2147B3C9C7BF}"
ProjectSection(SolutionItems) = preProject
@@ -11,9 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{9203B750-3
CONTRIBUTING.md = CONTRIBUTING.md
CONTRIBUTORS.md = CONTRIBUTORS.md
LICENSE.md = LICENSE.md
- Notes.md = Notes.md
README.md = README.md
- TODO.md = TODO.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{E0D80C7F-D908-48D3-8E0B-E9E4CDDAEC40}"
@@ -70,186 +68,239 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DereTore.Apps.MusicToolchai
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DereTore.Apps.ScoreViewer", "Apps\ScoreViewer\DereTore.Apps.ScoreViewer.csproj", "{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{6FE6FC74-EAB2-493C-893B-6650E1DA105B}"
+ ProjectSection(SolutionItems) = preProject
+ docs\Notes.md = docs\Notes.md
+ docs\Projects.md = docs\Projects.md
+ docs\TODO.md = docs\TODO.md
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Debug|Any CPU.ActiveCfg = Debug|x86
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Debug|x64.ActiveCfg = Debug|x64
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Debug|x64.Build.0 = Debug|x64
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Debug|x86.ActiveCfg = Debug|x86
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Debug|x86.Build.0 = Debug|x86
+ {DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Release|Any CPU.ActiveCfg = Release|x86
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Release|x64.ActiveCfg = Release|x64
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Release|x64.Build.0 = Release|x64
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Release|x86.ActiveCfg = Release|x86
{DBD0DA4A-0057-4D04-AD69-0E7267D72793}.Release|x86.Build.0 = Release|x86
+ {ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Debug|Any CPU.ActiveCfg = Debug|x86
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Debug|x64.ActiveCfg = Debug|x64
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Debug|x64.Build.0 = Debug|x64
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Debug|x86.ActiveCfg = Debug|x86
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Debug|x86.Build.0 = Debug|x86
+ {ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Release|Any CPU.ActiveCfg = Release|x86
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Release|x64.ActiveCfg = Release|x64
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Release|x64.Build.0 = Release|x64
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Release|x86.ActiveCfg = Release|x86
{ABD7F1B5-C4E3-4200-8E44-98B183DFEE2C}.Release|x86.Build.0 = Release|x86
+ {BEA07A30-C611-4D1C-9632-6CC103722BAA}.Debug|Any CPU.ActiveCfg = Debug|x86
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Debug|x64.ActiveCfg = Debug|x64
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Debug|x64.Build.0 = Debug|x64
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Debug|x86.ActiveCfg = Debug|x86
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Debug|x86.Build.0 = Debug|x86
+ {BEA07A30-C611-4D1C-9632-6CC103722BAA}.Release|Any CPU.ActiveCfg = Release|x86
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Release|x64.ActiveCfg = Release|x64
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Release|x64.Build.0 = Release|x64
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Release|x86.ActiveCfg = Release|x86
{BEA07A30-C611-4D1C-9632-6CC103722BAA}.Release|x86.Build.0 = Release|x86
+ {EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Debug|Any CPU.ActiveCfg = Debug|x86
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Debug|x64.ActiveCfg = Debug|x64
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Debug|x64.Build.0 = Debug|x64
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Debug|x86.ActiveCfg = Debug|x86
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Debug|x86.Build.0 = Debug|x86
+ {EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Release|Any CPU.ActiveCfg = Release|x86
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Release|x64.ActiveCfg = Release|x64
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Release|x64.Build.0 = Release|x64
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Release|x86.ActiveCfg = Release|x86
{EECF4BAA-9C9E-4687-A616-0F5C65C5F14B}.Release|x86.Build.0 = Release|x86
+ {7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Debug|Any CPU.ActiveCfg = Debug|x86
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Debug|x64.ActiveCfg = Debug|x64
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Debug|x64.Build.0 = Debug|x64
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Debug|x86.ActiveCfg = Debug|x86
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Debug|x86.Build.0 = Debug|x86
+ {7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Release|Any CPU.ActiveCfg = Release|x86
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Release|x64.ActiveCfg = Release|x64
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Release|x64.Build.0 = Release|x64
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Release|x86.ActiveCfg = Release|x86
{7C6FADD7-A0BB-4BF3-8992-3D89ACE1CC69}.Release|x86.Build.0 = Release|x86
+ {D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Debug|Any CPU.ActiveCfg = Debug|x86
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Debug|x64.ActiveCfg = Debug|x64
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Debug|x64.Build.0 = Debug|x64
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Debug|x86.ActiveCfg = Debug|x86
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Debug|x86.Build.0 = Debug|x86
+ {D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Release|Any CPU.ActiveCfg = Release|x86
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Release|x64.ActiveCfg = Release|x64
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Release|x64.Build.0 = Release|x64
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Release|x86.ActiveCfg = Release|x86
{D0D328E6-2D3D-4B55-9CEC-88552CD332EB}.Release|x86.Build.0 = Release|x86
+ {CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Debug|Any CPU.ActiveCfg = Debug|Win32
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Debug|x64.ActiveCfg = Debug|x64
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Debug|x64.Build.0 = Debug|x64
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Debug|x86.ActiveCfg = Debug|Win32
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Debug|x86.Build.0 = Debug|Win32
+ {CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Release|Any CPU.ActiveCfg = Release|Win32
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Release|x64.ActiveCfg = Release|x64
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Release|x64.Build.0 = Release|x64
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Release|x86.ActiveCfg = Release|Win32
{CA0E4E2F-65E6-43E2-9F81-FCF0F0402EC5}.Release|x86.Build.0 = Release|Win32
+ {3A0D1281-A503-4E5D-9765-D7BF56F89266}.Debug|Any CPU.ActiveCfg = Debug|x86
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Debug|x64.ActiveCfg = Debug|x64
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Debug|x64.Build.0 = Debug|x64
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Debug|x86.ActiveCfg = Debug|x86
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Debug|x86.Build.0 = Debug|x86
+ {3A0D1281-A503-4E5D-9765-D7BF56F89266}.Release|Any CPU.ActiveCfg = Release|x86
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Release|x64.ActiveCfg = Release|x64
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Release|x64.Build.0 = Release|x64
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Release|x86.ActiveCfg = Release|x86
{3A0D1281-A503-4E5D-9765-D7BF56F89266}.Release|x86.Build.0 = Release|x86
+ {4F31A3B6-D304-4D38-9D2B-3794281CB787}.Debug|Any CPU.ActiveCfg = Debug|Win32
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Debug|x64.ActiveCfg = Debug|x64
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Debug|x64.Build.0 = Debug|x64
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Debug|x86.ActiveCfg = Debug|Win32
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Debug|x86.Build.0 = Debug|Win32
+ {4F31A3B6-D304-4D38-9D2B-3794281CB787}.Release|Any CPU.ActiveCfg = Release|Win32
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Release|x64.ActiveCfg = Release|x64
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Release|x64.Build.0 = Release|x64
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Release|x86.ActiveCfg = Release|Win32
{4F31A3B6-D304-4D38-9D2B-3794281CB787}.Release|x86.Build.0 = Release|Win32
+ {EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Debug|Any CPU.ActiveCfg = Debug|x86
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Debug|x64.ActiveCfg = Debug|x64
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Debug|x64.Build.0 = Debug|x64
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Debug|x86.ActiveCfg = Debug|x86
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Debug|x86.Build.0 = Debug|x86
+ {EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Release|Any CPU.ActiveCfg = Release|x86
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Release|x64.ActiveCfg = Release|x64
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Release|x64.Build.0 = Release|x64
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Release|x86.ActiveCfg = Release|x86
{EA6039D9-CFDA-44B5-BE32-F1256A649E18}.Release|x86.Build.0 = Release|x86
+ {7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Debug|Any CPU.ActiveCfg = Debug|x86
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Debug|x64.ActiveCfg = Debug|x64
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Debug|x64.Build.0 = Debug|x64
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Debug|x86.ActiveCfg = Debug|x86
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Debug|x86.Build.0 = Debug|x86
+ {7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Release|Any CPU.ActiveCfg = Release|x86
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Release|x64.ActiveCfg = Release|x64
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Release|x64.Build.0 = Release|x64
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Release|x86.ActiveCfg = Release|x86
{7FB2A631-88C4-4C6B-9E8B-8EEEB40575D0}.Release|x86.Build.0 = Release|x86
+ {D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Debug|Any CPU.ActiveCfg = Debug|x86
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Debug|x64.ActiveCfg = Debug|x64
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Debug|x64.Build.0 = Debug|x64
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Debug|x86.ActiveCfg = Debug|x86
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Debug|x86.Build.0 = Debug|x86
+ {D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Release|Any CPU.ActiveCfg = Release|x86
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Release|x64.ActiveCfg = Release|x64
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Release|x64.Build.0 = Release|x64
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Release|x86.ActiveCfg = Release|x86
{D78A4080-34F4-45EC-A8EF-87F95815E3BD}.Release|x86.Build.0 = Release|x86
+ {3ECDD0BB-215A-4437-B162-FC9D9285303D}.Debug|Any CPU.ActiveCfg = Debug|x86
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Debug|x64.ActiveCfg = Debug|x64
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Debug|x64.Build.0 = Debug|x64
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Debug|x86.ActiveCfg = Debug|x86
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Debug|x86.Build.0 = Debug|x86
+ {3ECDD0BB-215A-4437-B162-FC9D9285303D}.Release|Any CPU.ActiveCfg = Release|x86
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Release|x64.ActiveCfg = Release|x64
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Release|x64.Build.0 = Release|x64
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Release|x86.ActiveCfg = Release|x86
{3ECDD0BB-215A-4437-B162-FC9D9285303D}.Release|x86.Build.0 = Release|x86
+ {7516898D-66CC-4084-A218-29F19A503673}.Debug|Any CPU.ActiveCfg = Debug|x86
{7516898D-66CC-4084-A218-29F19A503673}.Debug|x64.ActiveCfg = Debug|x64
{7516898D-66CC-4084-A218-29F19A503673}.Debug|x64.Build.0 = Debug|x64
{7516898D-66CC-4084-A218-29F19A503673}.Debug|x86.ActiveCfg = Debug|x86
{7516898D-66CC-4084-A218-29F19A503673}.Debug|x86.Build.0 = Debug|x86
+ {7516898D-66CC-4084-A218-29F19A503673}.Release|Any CPU.ActiveCfg = Release|x86
{7516898D-66CC-4084-A218-29F19A503673}.Release|x64.ActiveCfg = Release|x64
{7516898D-66CC-4084-A218-29F19A503673}.Release|x64.Build.0 = Release|x64
{7516898D-66CC-4084-A218-29F19A503673}.Release|x86.ActiveCfg = Release|x86
{7516898D-66CC-4084-A218-29F19A503673}.Release|x86.Build.0 = Release|x86
+ {D8F919A6-AC4D-4B22-A214-8258B241F507}.Debug|Any CPU.ActiveCfg = Debug|x86
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Debug|x64.ActiveCfg = Debug|x64
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Debug|x64.Build.0 = Debug|x64
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Debug|x86.ActiveCfg = Debug|x86
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Debug|x86.Build.0 = Debug|x86
+ {D8F919A6-AC4D-4B22-A214-8258B241F507}.Release|Any CPU.ActiveCfg = Release|x86
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Release|x64.ActiveCfg = Release|x64
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Release|x64.Build.0 = Release|x64
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Release|x86.ActiveCfg = Release|x86
{D8F919A6-AC4D-4B22-A214-8258B241F507}.Release|x86.Build.0 = Release|x86
+ {87D41A40-A33F-499F-8635-22C6D99475A6}.Debug|Any CPU.ActiveCfg = Debug|x86
{87D41A40-A33F-499F-8635-22C6D99475A6}.Debug|x64.ActiveCfg = Debug|x64
{87D41A40-A33F-499F-8635-22C6D99475A6}.Debug|x64.Build.0 = Debug|x64
{87D41A40-A33F-499F-8635-22C6D99475A6}.Debug|x86.ActiveCfg = Debug|x86
{87D41A40-A33F-499F-8635-22C6D99475A6}.Debug|x86.Build.0 = Debug|x86
+ {87D41A40-A33F-499F-8635-22C6D99475A6}.Release|Any CPU.ActiveCfg = Release|x86
{87D41A40-A33F-499F-8635-22C6D99475A6}.Release|x64.ActiveCfg = Release|x64
{87D41A40-A33F-499F-8635-22C6D99475A6}.Release|x64.Build.0 = Release|x64
{87D41A40-A33F-499F-8635-22C6D99475A6}.Release|x86.ActiveCfg = Release|x86
{87D41A40-A33F-499F-8635-22C6D99475A6}.Release|x86.Build.0 = Release|x86
+ {22DA9276-BAE2-4328-9B74-522D5333E09C}.Debug|Any CPU.ActiveCfg = Debug|x86
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Debug|x64.ActiveCfg = Debug|x64
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Debug|x64.Build.0 = Debug|x64
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Debug|x86.ActiveCfg = Debug|x86
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Debug|x86.Build.0 = Debug|x86
+ {22DA9276-BAE2-4328-9B74-522D5333E09C}.Release|Any CPU.ActiveCfg = Release|x86
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Release|x64.ActiveCfg = Release|x64
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Release|x64.Build.0 = Release|x64
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Release|x86.ActiveCfg = Release|x86
{22DA9276-BAE2-4328-9B74-522D5333E09C}.Release|x86.Build.0 = Release|x86
+ {5B8FCABB-7663-4047-997C-BD14C06EF301}.Debug|Any CPU.ActiveCfg = Debug|x86
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Debug|x64.ActiveCfg = Debug|x64
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Debug|x64.Build.0 = Debug|x64
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Debug|x86.ActiveCfg = Debug|x86
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Debug|x86.Build.0 = Debug|x86
+ {5B8FCABB-7663-4047-997C-BD14C06EF301}.Release|Any CPU.ActiveCfg = Release|x86
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Release|x64.ActiveCfg = Release|x64
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Release|x64.Build.0 = Release|x64
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Release|x86.ActiveCfg = Release|x86
{5B8FCABB-7663-4047-997C-BD14C06EF301}.Release|x86.Build.0 = Release|x86
+ {BE31825C-8163-43FC-B0FD-996A9C19714B}.Debug|Any CPU.ActiveCfg = Debug|x86
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Debug|x64.ActiveCfg = Debug|x64
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Debug|x64.Build.0 = Debug|x64
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Debug|x86.ActiveCfg = Debug|x86
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Debug|x86.Build.0 = Debug|x86
+ {BE31825C-8163-43FC-B0FD-996A9C19714B}.Release|Any CPU.ActiveCfg = Release|x86
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Release|x64.ActiveCfg = Release|x64
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Release|x64.Build.0 = Release|x64
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Release|x86.ActiveCfg = Release|x86
{BE31825C-8163-43FC-B0FD-996A9C19714B}.Release|x86.Build.0 = Release|x86
+ {C6BC3FE0-8333-4DFF-8284-07431E151B44}.Debug|Any CPU.ActiveCfg = Debug|x86
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Debug|x64.ActiveCfg = Debug|x64
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Debug|x64.Build.0 = Debug|x64
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Debug|x86.ActiveCfg = Debug|x86
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Debug|x86.Build.0 = Debug|x86
+ {C6BC3FE0-8333-4DFF-8284-07431E151B44}.Release|Any CPU.ActiveCfg = Release|x86
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Release|x64.ActiveCfg = Release|x64
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Release|x64.Build.0 = Release|x64
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Release|x86.ActiveCfg = Release|x86
{C6BC3FE0-8333-4DFF-8284-07431E151B44}.Release|x86.Build.0 = Release|x86
+ {1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Debug|Any CPU.ActiveCfg = Debug|x86
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Debug|x64.ActiveCfg = Debug|x64
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Debug|x64.Build.0 = Debug|x64
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Debug|x86.ActiveCfg = Debug|x86
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Debug|x86.Build.0 = Debug|x86
+ {1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Release|Any CPU.ActiveCfg = Release|x86
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Release|x64.ActiveCfg = Release|x64
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Release|x64.Build.0 = Release|x64
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Release|x86.ActiveCfg = Release|x86
{1D5FB1F1-D4C9-4B4D-9225-73F4C459B875}.Release|x86.Build.0 = Release|x86
+ {31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Debug|Any CPU.ActiveCfg = Debug|x86
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Debug|x64.ActiveCfg = Debug|x64
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Debug|x64.Build.0 = Debug|x64
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Debug|x86.ActiveCfg = Debug|x86
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Debug|x86.Build.0 = Debug|x86
+ {31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Release|Any CPU.ActiveCfg = Release|x86
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Release|x64.ActiveCfg = Release|x64
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Release|x64.Build.0 = Release|x64
{31E86FB4-68DE-4DD6-8F03-D8E2DAAE07FA}.Release|x86.ActiveCfg = Release|x86
diff --git a/README.md b/README.md
index fb45d0e..1ad7c83 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# DereTore
+# DereTore
[![AppVeyor](https://img.shields.io/appveyor/ci/hozuki/deretore-avoh8.svg)](https://ci.appveyor.com/project/hozuki/deretore-avoh8)
[![GitHub contributors](https://img.shields.io/github/contributors/OpenCGSS/DereTore.svg)](https://github.com/OpenCGSS/DereTore/graphs/contributors)
@@ -6,122 +6,55 @@
[![Github All Releases](https://img.shields.io/github/downloads/OpenCGSS/DereTore/total.svg)](https://github.com/OpenCGSS/DereTore/releases)
The goal of DereTore is to improve gaming experience in [Idolmaster Cinderella Girls: Starlight Stage](http://www.project-imas.com/wiki/THE_iDOLM@STER_Cinderella_Girls%3A_Starlight_Stage)
-(CGSS/DereSute), or even to customize it a little bit.
+(CGSS/DereSute), and even to customize it a little bit.
**Downloads:**
- [Nightly build](https://ci.appveyor.com/api/projects/hozuki/deretore-avoh8/artifacts/deretore-toolkit-x86.zip?job=Platform%3A+x86) (Windows, x86)
- [Releases](https://github.com/OpenCGSS/DereTore/releases)
-Wonder [how this name comes from](Notes.md#the-name)?
+Wonder [how this name comes from](docs/Notes.md#the-name)?
+
+## What can it do?
+
+Create beatmaps, convert music - which are playable in vanilla CGSS. You can also unpack and decode resources from the game.
+
+There are several [projects](docs/Projects.md) in DereTore. Each of them provides a unique function.
## Usage
-Requirements:
+[中文使用说明](StarlightDirector/StarlightDirector/docs/user-guide_zh-CN.md)
+
+**Basic requirements:**
+
+- Windows 7 or later
+- [.NET Framework 4.5](https://www.microsoft.com/en-us/download/details.aspx?id=42642)
+
+**Optional requirements:**
-- Windows 7 or later (though some tools should be able to run on Mono)
-- [.NET Framework 4.0](https://www.microsoft.com/en-us/download/details.aspx?id=17718)
-- [Visual C++ Redistributable Packages for Visual Studio 2013](https://www.microsoft.com/en-us/download/details.aspx?id=40784) (*)
-- [DirectX 9.0c](https://www.microsoft.com/en-us/download/details.aspx?id=8109) (*)
+If you want to build custom CD jackets:
-_* Only needed when you want to build custom CD jackets._
+- [Visual C++ Redistributable Packages for Visual Studio 2013](https://www.microsoft.com/en-us/download/details.aspx?id=40784)
+- [DirectX 9.0c](https://www.microsoft.com/en-us/download/details.aspx?id=8109)
-**For licensing reasons, newer releases do not include a necessary library `hcaenc_lite.dll`.** However, you can:
+To use Starlight Director your system has to support Direct2D.
+
+**For licensing reasons, newer releases do not include an essential library `hcaenc_lite.dll`.** However, you can:
1. download `hcaenc_lite.dll` from [here](https://mega.nz/#!QxQjnZRB!85k5O6K5oMMM1W9ux7ZpkzXQFgV4EoYplZsW1ZOWZnM), or
2. download ADX2LE from its [download page](http://www.adx2le.com/download/index.html), and put `tools\hcaenc_lite.dll` to DereTore's application directory.
If you encounter regional problems, you know there is a way to solve it.
-There is a simple [user guide](StarlightDirector/StarlightDirector/docs/user-guide_zh-CN.md) for Chinese users. Versions in other languages are in progress.
-
## Building
1. Clone from [GitHub](https://github.com/OpenCGSS/DereTore.git): `git clone https://github.com/OpenCGSS/DereTore.git`;
2. Install missing NuGet packages: `nuget restore DereTore.sln` (or use NuGet Package Manager in Visual Studio);
-3. Open `DereTore.sln` in Visual Studio (VS2010 SP1 or later is required);
+3. Open `DereTore.sln` in Visual Studio (Visual Studio 2015 or later is required for supporting C# 6 syntax);
4. Build the solution.
## TODO List
-[TODO List](TODO.md)
-
-## Projects
-
-### Core Libraries
-
-[**StarlightStage**](Common/DereTore.Common.StarlightStage)
-
-You know what it is.
-
-[**HCA Audio**](Exchange/DereTore.Exchange.Audio.HCA)
-
-The pure C# implementation of CRI HCA v2.0 decoder, based on [kawashima](https://github.com/hozuki/kawashima).
-Here is its [readme](Exchange/DereTore.Exchange.Audio.HCA/README.md).
-
-[**ACB Archive**](Exchange/DereTore.Exchange.Archive.ACB)
-
-CRI ACB/AWB package manipulation library. Only necessary parts are implemented. Here is its [readme](Exchange/DereTore.Exchange.Archive.ACB/README.md).
-
-### Applications
-
-Applications can be found in [`Apps`](Apps).
-
-[**Starlight Director**](StarlightDirector/StarlightDirector)
-
-The new score composer (still in alpha phase), the successor of ScoreEditor. Detailed readme and user manual will be written
-in the future. Let's celebrate its alpha release!
-
-[**Score Viewer**](Apps/ScoreViewer)
-
-Viewing scores (beatmaps) of live music. Here is its [readme](Apps/ScoreViewer/README.md).
-
-[**hcacc**](Apps/Hcacc)
-
-The C# version of HCA cipher conversion utility. See **hcacc** in [hcatools](https://github.com/hozuki/libcgss).
-
-[**hcaenc**](Apps/Hcaenc)
-
-The C# version of HCA encoding utility. See **hcaenc** in [hcatools](https://github.com/hozuki/libcgss).
-
-[**hca2wav**](Apps/Hca2Wav)
-
-A console appilcation that converts HCA audio to wave audio. It can be used as a demo to integrate
-*DereTore.HCA*.
-
-[**ACB Maker**](Apps/AcbMaker)
-
-A tool for creating CGSS-compatible ACB archives. Here is its [readme](Apps/AcbMaker/README.md).
-
-[**Music Toolchain**](Apps/MusicToolchain)
-
-A GUI program that integrates **hcaenc**, **hcacc** and **ACB Maker** into a streamline. Here
-is its [readme](Apps/MusicToolchain/README.md).
-
-[**ACB Unzip**](Apps/AcbUnzip)
-
-An application for unpacking ACB archives.
-
-[**Jacket Creator**](Apps/JacketCreator)
-
-A utility for creating CD jackets. Used with score and music makers.
-
-### Other
-
-**LZ4**
-
-An LZ4 compression utility for compressing game data. It is designed for IdolProxy.
-
-**PVRTexLib Interop**
-
-An interop library of [PVRTexLib](https://community.imgtec.com/developers/powervr/graphics-sdk/), for generating PVR textures.
-
-**D3DX9 Interop**
-
-An interop library using D3DX9 to generate DDS textures.
-
-**Unity Engine Asset IO**
-
-An library which provides functions to generate CGSS-compatible (for specific Unity version) asset bundles.
+[TODO List](docs/TODO.md)
## License
@@ -129,4 +62,4 @@ This solution uses MIT License. See [LICENSE.md](LICENSE.md).
## Notes
-See [here](Notes.md).
+See [here](docs/Notes.md).
diff --git a/Notes.md b/docs/Notes.md
similarity index 100%
rename from Notes.md
rename to docs/Notes.md
diff --git a/docs/Projects.md b/docs/Projects.md
new file mode 100644
index 0000000..485693d
--- /dev/null
+++ b/docs/Projects.md
@@ -0,0 +1,77 @@
+# Projects
+
+## Core Libraries
+
+[**StarlightStage**](../Common/DereTore.Common.StarlightStage)
+
+You know what it is.
+
+[**HCA Audio**](../Exchange/DereTore.Exchange.Audio.HCA)
+
+The pure C# implementation of CRI HCA v2.0 decoder, based on [kawashima](https://github.com/hozuki/kawashima).
+Here is its [readme](../Exchange/DereTore.Exchange.Audio.HCA/README.md).
+
+[**ACB Archive**](../Exchange/DereTore.Exchange.Archive.ACB)
+
+CRI ACB/AWB package manipulation library. Only necessary parts are implemented. Here is its [readme](../Exchange/DereTore.Exchange.Archive.ACB/README.md).
+
+## Applications
+
+Applications can be found in [`Apps`](Apps).
+
+[**Starlight Director**](../StarlightDirector/StarlightDirector)
+
+The new score composer (still in alpha phase), the successor of ScoreEditor. Detailed readme and user manual will be written
+in the future. Let's celebrate its alpha release!
+
+[**Score Viewer**](../Apps/ScoreViewer)
+
+Viewing scores (beatmaps) of live music. Here is its [readme](../Apps/ScoreViewer/README.md).
+
+[**hcacc**](../Apps/Hcacc)
+
+The C# version of HCA cipher conversion utility. See **hcacc** in [libcgss](https://github.com/hozuki/libcgss).
+
+[**hcaenc**](../Apps/Hcaenc)
+
+The C# version of HCA encoding utility. See **hcaenc** in [libcgss](https://github.com/hozuki/libcgss).
+
+[**hca2wav**](../Apps/Hca2Wav)
+
+A console appilcation that converts HCA audio to wave audio. It can be used as a demo to integrate
+*DereTore.HCA*.
+
+[**ACB Maker**](../Apps/AcbMaker)
+
+A tool for creating CGSS-compatible ACB archives. Here is its [readme](../Apps/AcbMaker/README.md).
+
+[**Music Toolchain**](Apps/MusicToolchain)
+
+A GUI program that integrates **hcaenc**, **hcacc** and **ACB Maker** into a streamline. Here
+is its [readme](../Apps/MusicToolchain/README.md).
+
+[**ACB Unzip**](../Apps/AcbUnzip)
+
+An application for unpacking ACB archives.
+
+[**Jacket Creator**](../Apps/JacketCreator)
+
+A utility for creating CD jackets. Used with score and music makers.
+
+## Other
+
+**LZ4**
+
+An LZ4 compression utility for compressing game data. It is designed for IdolProxy.
+
+**PVRTexLib Interop**
+
+An interop library of [PVRTexLib](https://community.imgtec.com/developers/powervr/graphics-sdk/), for generating PVR textures.
+
+**D3DX9 Interop**
+
+An interop library using D3DX9 to generate DDS textures.
+
+**Unity Engine Asset IO**
+
+An library which provides functions to generate CGSS-compatible (for specific Unity version) asset bundles.
diff --git a/TODO.md b/docs/TODO.md
similarity index 100%
rename from TODO.md
rename to docs/TODO.md