• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

MIDITrail をピカピカにする。鍵盤方向自動切替・多ポート・歌詞対応等


コミットメタ情報

リビジョン7733154dddaca6ae85c53d02f44cde4ea4ad3866 (tree)
日時2019-08-28 01:11:45
作者yoshy <yoshy@user...>
コミッターyoshy

ログメッセージ

[UPGRADE] original 1.2.4

変更サマリ

差分

--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,5 +1,5 @@
11
2-Copyright (c) 2010-2017, WADA Masashi <yknk@users.osdn.me>
2+Copyright (c) 2010-2019, WADA Masashi <yknk@users.osdn.me>
33 All rights reserved.
44
55 Redistribution and use in source and binary forms, with or without
--- a/MIDITrail/MIDITrail.rc
+++ b/MIDITrail/MIDITrail.rc
@@ -77,10 +77,9 @@ BEGIN
7777 MENUITEM "Counter", IDM_ENABLE_COUNTER
7878 MENUITEM "Background Image", IDM_ENABLE_BACKGROUNDIMAGE
7979 MENUITEM SEPARATOR
80- MENUITEM "Auto save viewpoint", 32838
81- MENUITEM SEPARATOR
82- MENUITEM "Reset viewpoint", IDM_RESET_VIEWPOINT
83- MENUITEM "Save viewpoint", IDM_SAVE_VIEWPOINT
80+ MENUITEM "Viewpoint 1\t7", IDM_RESET_VIEWPOINT
81+ MENUITEM "Viewpoint 2\t8", IDM_VIEWPOINT2
82+ MENUITEM "Viewpoint 3\t9", IDM_VIEWPOINT3
8483 MENUITEM SEPARATOR
8584 MENUITEM "Window size...", IDM_WINDOWSIZE
8685 END
--- a/MIDITrail/MIDITrailApp.cpp
+++ b/MIDITrail/MIDITrailApp.cpp
@@ -4,7 +4,7 @@
44 //
55 // MIDITrail アプリケーションクラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -631,14 +631,24 @@ LRESULT MIDITrailApp::_WndProcImpl(
631631 result = _OnMenuAutoSaveViewpoint();
632632 if (result != 0) goto EXIT;
633633 break;
634+ case IDM_SAVE_VIEWPOINT:
635+ //視点保存
636+ result = _OnMenuSaveViewpoint();
637+ if (result != 0) goto EXIT;
638+ break;
634639 case IDM_RESET_VIEWPOINT:
635640 //視点リセット
636641 result = _OnMenuResetViewpoint();
637642 if (result != 0) goto EXIT;
638643 break;
639- case IDM_SAVE_VIEWPOINT:
640- //視点保存
641- result = _OnMenuSaveViewpoint();
644+ case IDM_VIEWPOINT2:
645+ //静的視点2に移動
646+ result = _OnMenuViewpoint(2);
647+ if (result != 0) goto EXIT;
648+ break;
649+ case IDM_VIEWPOINT3:
650+ //静的視点3に移動
651+ result = _OnMenuViewpoint(3);
642652 if (result != 0) goto EXIT;
643653 break;
644654 case IDM_ENABLE_PIANOKEYBOARD:
@@ -1162,6 +1172,24 @@ EXIT:;
11621172 }
11631173
11641174 //******************************************************************************
1175+// メニュー選択:静的視点移動
1176+//******************************************************************************
1177+int MIDITrailApp::_OnMenuViewpoint(
1178+ unsigned long viewpointNo
1179+ )
1180+{
1181+ int result = 0;
1182+
1183+ if (m_PlayStatus == NoData) goto EXIT;
1184+
1185+ //静的視点に移動
1186+ m_pScene->MoveToStaticViewpoint(viewpointNo);
1187+
1188+EXIT:;
1189+ return result;
1190+}
1191+
1192+//******************************************************************************
11651193 // メニュー選択:視点リセット
11661194 //******************************************************************************
11671195 int MIDITrailApp::_OnMenuResetViewpoint()
@@ -1576,6 +1604,24 @@ int MIDITrailApp::_OnKeyDown(
15761604 result = _OnMenuPlaySpeedUp();
15771605 if (result != 0) goto EXIT;
15781606 break;
1607+ case '7':
1608+ case VK_NUMPAD7:
1609+ //視点リセット
1610+ result = _OnMenuResetViewpoint();
1611+ if (result != 0) goto EXIT;
1612+ break;
1613+ case '8':
1614+ case VK_NUMPAD8:
1615+ //静的視点2移動
1616+ result = _OnMenuViewpoint(2);
1617+ if (result != 0) goto EXIT;
1618+ break;
1619+ case '9':
1620+ case VK_NUMPAD9:
1621+ //静的視点3移動
1622+ result = _OnMenuViewpoint(3);
1623+ if (result != 0) goto EXIT;
1624+ break;
15791625 case 'O':
15801626 if (GetKeyState(VK_CONTROL) & 0x8000) {
15811627 //ファイルオープン
@@ -1992,9 +2038,9 @@ int MIDITrailApp::_ChangeMenuStyle()
19922038 IDM_VIEW_2DPIANOROLL,
19932039 IDM_VIEW_PIANOROLLRAIN,
19942040 IDM_VIEW_PIANOROLLRAIN2D,
1995- IDM_AUTO_SAVE_VIEWPOINT,
19962041 IDM_RESET_VIEWPOINT,
1997- IDM_SAVE_VIEWPOINT,
2042+ IDM_VIEWPOINT2,
2043+ IDM_VIEWPOINT3,
19982044 IDM_ENABLE_PIANOKEYBOARD,
19992045 IDM_ENABLE_RIPPLE,
20002046 IDM_ENABLE_PITCHBEND,
@@ -2028,9 +2074,9 @@ int MIDITrailApp::_ChangeMenuStyle()
20282074 { MF_ENABLED, MF_ENABLED, MF_GRAYED, MF_GRAYED, MF_ENABLED, MF_GRAYED }, //IDM_VIEW_2DPIANOROLL
20292075 { MF_ENABLED, MF_ENABLED, MF_GRAYED, MF_GRAYED, MF_ENABLED, MF_GRAYED }, //IDM_VIEW_PIANOROLLRAIN
20302076 { MF_ENABLED, MF_ENABLED, MF_GRAYED, MF_GRAYED, MF_ENABLED, MF_GRAYED }, //IDM_VIEW_PIANOROLLRAIN2D
2031- { MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_AUTO_SAVE_VIEWPOINT
20322077 { MF_GRAYED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_RESET_VIEWPOINT
2033- { MF_GRAYED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_SAVE_VIEWPOINT
2078+ { MF_GRAYED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_VIEWPOINT2
2079+ { MF_GRAYED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_VIEWPOINT3
20342080 { MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_ENABLE_PIANOKEYBOARD
20352081 { MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_ENABLE_RIPPLE
20362082 { MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED, MF_ENABLED }, //IDM_ENABLE_PITCHBEND
@@ -2235,13 +2281,16 @@ int MIDITrailApp::_LoadSceneConf()
22352281 if (result != 0) goto EXIT;
22362282
22372283 //自動視点保存
2238- result = m_ViewConf.GetInt(_T("AutoSaveViewpoint"), &autoSaveViewpoint, 0);
2239- if (result != 0) goto EXIT;
2240-
2241- m_isAutoSaveViewpoint = false;
2242- if (autoSaveViewpoint == 1) {
2243- m_isAutoSaveViewpoint = true;
2244- }
2284+ //result = m_ViewConf.GetInt(_T("AutoSaveViewpoint"), &autoSaveViewpoint, 0);
2285+ //if (result != 0) goto EXIT;
2286+ //
2287+ //m_isAutoSaveViewpoint = false;
2288+ //if (autoSaveViewpoint == 1) {
2289+ // m_isAutoSaveViewpoint = true;
2290+ //}
2291+
2292+ //自動視点保存:常に有効とする
2293+ m_isAutoSaveViewpoint = true;
22452294
22462295 EXIT:;
22472296 return result;
--- a/MIDITrail/MIDITrailApp.h
+++ b/MIDITrail/MIDITrailApp.h
@@ -4,7 +4,7 @@
44 //
55 // MIDITrail アプリケーションクラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2018 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -253,6 +253,7 @@ private:
253253 int _OnMenuStopMonitoring();
254254 int _OnMenuAutoSaveViewpoint();
255255 int _OnMenuResetViewpoint();
256+ int _OnMenuViewpoint(unsigned long viewpointNo);
256257 int _OnMenuSaveViewpoint();
257258 int _OnMenuEnableEffect(MTScene::EffectType type);
258259 int _OnMenuWindowSize();
--- a/MIDITrail/MIDITrailVersion.h
+++ b/MIDITrail/MIDITrailVersion.h
@@ -4,7 +4,7 @@
44 //
55 // MIDITrail バージョン定義
66 //
7-// Copyright (C) 2014-2017 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2014-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -16,10 +16,10 @@
1616 //******************************************************************************
1717
1818 //バージョン文字列
19-#define MIDITRAIL_VERSION_STRING_X86 _T("Version 1.2.3 (32bit)")
20-#define MIDITRAIL_VERSION_STRING_X64 _T("Version 1.2.3 (64bit)")
19+#define MIDITRAIL_VERSION_STRING_X86 _T("Version 1.2.4 (32bit)")
20+#define MIDITRAIL_VERSION_STRING_X64 _T("Version 1.2.4 (64bit)")
2121
2222 //コピーライト
23-#define MIDITRAIL_COPYRIGHT _T("Copyright (C) 2010-2017 WADA Masashi");
23+#define MIDITRAIL_COPYRIGHT _T("Copyright (C) 2010-2019 WADA Masashi");
2424
2525
--- a/MIDITrail/MTScene.cpp
+++ b/MIDITrail/MTScene.cpp
@@ -4,7 +4,7 @@
44 //
55 // MIDITrail シーン基底クラス
66 //
7-// Copyright (C) 2010-2014 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2018 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -160,6 +160,16 @@ void MTScene::SetViewParam(
160160 }
161161
162162 //******************************************************************************
163+// 静的視点移動
164+//******************************************************************************
165+void MTScene::MoveToStaticViewpoint(
166+ unsigned long viewpointNo
167+ )
168+{
169+ return;
170+}
171+
172+//******************************************************************************
163173 // 視点リセット
164174 //******************************************************************************
165175 void MTScene::ResetViewpoint()
--- a/MIDITrail/MTScene.h
+++ b/MIDITrail/MTScene.h
@@ -4,7 +4,7 @@
44 //
55 // MIDITrail シーン基底クラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2018 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -91,6 +91,7 @@ public:
9191 virtual void GetDefaultViewParam(MTViewParamMap* pParamMap);
9292 virtual void GetViewParam(MTViewParamMap* pParamMap);
9393 virtual void SetViewParam(MTViewParamMap* pParamMap);
94+ virtual void MoveToStaticViewpoint(unsigned long viewpointNo);
9495
9596 //視点リセット
9697 virtual void ResetViewpoint();
--- a/MIDITrail/MTScenePianoRoll3D.cpp
+++ b/MIDITrail/MTScenePianoRoll3D.cpp
@@ -4,7 +4,7 @@
44 //
55 // ピアノロール3Dシーン描画クラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -632,6 +632,34 @@ void MTScenePianoRoll3D::SetViewParam(
632632 }
633633
634634 //******************************************************************************
635+// 静的視点移動
636+//******************************************************************************
637+void MTScenePianoRoll3D::MoveToStaticViewpoint(
638+ unsigned long viewpointNo
639+ )
640+{
641+ MTScene::MTViewParamMap::iterator itr;
642+ MTViewParamMap paramMap;
643+
644+ if (viewpointNo == 1) {
645+ GetDefaultViewParam(&paramMap);
646+ SetViewParam(&paramMap);
647+ }
648+ else if (viewpointNo == 2) {
649+ SetViewParam(&m_Viewpoint2);
650+ }
651+ else if (viewpointNo == 3) {
652+ SetViewParam(&m_Viewpoint3);
653+ }
654+ else {
655+ GetDefaultViewParam(&paramMap);
656+ SetViewParam(&paramMap);
657+ }
658+
659+ return;
660+}
661+
662+//******************************************************************************
635663 // 視点リセット
636664 //******************************************************************************
637665 void MTScenePianoRoll3D::ResetViewpoint()
@@ -744,6 +772,70 @@ int MTScenePianoRoll3D::_LoadConf()
744772
745773 SetBGColor(DXColorUtil::MakeColorFromHexRGBA(hexColor));
746774
775+ result = _LoadConfViewpoint(&confFile, 2, &m_Viewpoint2);
776+ if (result != 0) goto EXIT;
777+
778+ result = _LoadConfViewpoint(&confFile, 3, &m_Viewpoint3);
779+ if (result != 0) goto EXIT;
780+
781+EXIT:;
782+ return result;
783+}
784+
785+//******************************************************************************
786+// 設定ファイル読み込み:視点
787+//******************************************************************************
788+int MTScenePianoRoll3D::_LoadConfViewpoint(
789+ MTConfFile* pConfFile,
790+ unsigned long viewpointNo,
791+ MTViewParamMap* pParamMap
792+ )
793+{
794+ int result = 0;
795+ int eresult = 0;
796+ TCHAR sectionStr[32] = {0};
797+ float x, y, z = 0.0f;
798+ float phi, theta = 0.0f;
799+ float manualRollAngle = 0.0f;
800+ float autoRollVelocity = 0.0f;
801+
802+ //セクション名作成
803+ eresult = _stprintf_s(sectionStr, 32, _T("Viewpoint-%d"), viewpointNo);
804+ if (eresult < 0) {
805+ result = YN_SET_ERR("Program error.", viewpointNo, 0);
806+ goto EXIT;
807+ }
808+
809+ //セクション設定
810+ result = pConfFile->SetCurSection(sectionStr);
811+ if (result != 0) goto EXIT;
812+
813+ //パラメータ取得
814+ result = pConfFile->GetFloat(_T("X"), &x, 0.0f);
815+ if (result != 0) goto EXIT;
816+ result = pConfFile->GetFloat(_T("Y"), &y, 0.0f);
817+ if (result != 0) goto EXIT;
818+ result = pConfFile->GetFloat(_T("Z"), &z, 0.0f);
819+ if (result != 0) goto EXIT;
820+ result = pConfFile->GetFloat(_T("Phi"), &phi, 0.0f);
821+ if (result != 0) goto EXIT;
822+ result = pConfFile->GetFloat(_T("Theta"), &theta, 0.0f);
823+ if (result != 0) goto EXIT;
824+ result = pConfFile->GetFloat(_T("ManualRollAngle"), &manualRollAngle, 0.0f);
825+ if (result != 0) goto EXIT;
826+ result = pConfFile->GetFloat(_T("AutoRollVelocity"), &autoRollVelocity, 0.0f);
827+ if (result != 0) goto EXIT;
828+
829+ //マップ登録
830+ pParamMap->clear();
831+ pParamMap->insert(MTViewParamMapPair("X", x));
832+ pParamMap->insert(MTViewParamMapPair("Y", y));
833+ pParamMap->insert(MTViewParamMapPair("Z", z));
834+ pParamMap->insert(MTViewParamMapPair("Phi", phi));
835+ pParamMap->insert(MTViewParamMapPair("Theta", theta));
836+ pParamMap->insert(MTViewParamMapPair("ManualRollAngle", manualRollAngle));
837+ pParamMap->insert(MTViewParamMapPair("AutoRollVelocity", autoRollVelocity));
838+
747839 EXIT:;
748840 return result;
749841 }
--- a/MIDITrail/MTScenePianoRoll3D.h
+++ b/MIDITrail/MTScenePianoRoll3D.h
@@ -4,7 +4,7 @@
44 //
55 // ピアノロール3Dシーン描画クラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -26,6 +26,7 @@
2626 #include "MTTimeIndicator.h"
2727 #include "MTMeshCtrl.h"
2828 #include "MTBackgroundImage.h"
29+#include "MTConfFile.h"
2930 #include "SMIDILib.h"
3031
3132 using namespace SMIDILib;
@@ -87,6 +88,7 @@ public:
8788 void GetDefaultViewParam(MTViewParamMap* pParamMap);
8889 void GetViewParam(MTViewParamMap* pParamMap);
8990 void SetViewParam(MTViewParamMap* pParamMap);
91+ void MoveToStaticViewpoint(unsigned long viewpointNo);
9092
9193 //視点リセット
9294 void ResetViewpoint();
@@ -130,6 +132,8 @@ private:
130132
131133 //視点情報
132134 MTViewParamMap m_ViewParamMap;
135+ MTViewParamMap m_Viewpoint2;
136+ MTViewParamMap m_Viewpoint3;
133137
134138 //ノートデザインオブジェクト
135139 MTNoteDesign m_NoteDesign;
@@ -140,6 +144,7 @@ private:
140144 void _Reset();
141145 void _SetLightColor(DXDirLight* pLight);
142146 int _LoadConf();
147+ int _LoadConfViewpoint(MTConfFile* pConfFile, unsigned long viewpointNo, MTScene::MTViewParamMap* pParamMap);
143148
144149 };
145150
--- a/MIDITrail/MTScenePianoRoll3DLive.cpp
+++ b/MIDITrail/MTScenePianoRoll3DLive.cpp
@@ -4,7 +4,7 @@
44 //
55 // ライブモニタ用ピアノロール3Dシーン描画クラス
66 //
7-// Copyright (C) 2012-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2012-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -612,6 +612,34 @@ void MTScenePianoRoll3DLive::SetViewParam(
612612 }
613613
614614 //******************************************************************************
615+// 静的視点移動
616+//******************************************************************************
617+void MTScenePianoRoll3DLive::MoveToStaticViewpoint(
618+ unsigned long viewpointNo
619+ )
620+{
621+ MTScene::MTViewParamMap::iterator itr;
622+ MTViewParamMap paramMap;
623+
624+ if (viewpointNo == 1) {
625+ GetDefaultViewParam(&paramMap);
626+ SetViewParam(&paramMap);
627+ }
628+ else if (viewpointNo == 2) {
629+ SetViewParam(&m_Viewpoint2);
630+ }
631+ else if (viewpointNo == 3) {
632+ SetViewParam(&m_Viewpoint3);
633+ }
634+ else {
635+ GetDefaultViewParam(&paramMap);
636+ SetViewParam(&paramMap);
637+ }
638+
639+ return;
640+}
641+
642+//******************************************************************************
615643 // 視点リセット
616644 //******************************************************************************
617645 void MTScenePianoRoll3DLive::ResetViewpoint()
@@ -679,6 +707,70 @@ int MTScenePianoRoll3DLive::_LoadConf()
679707
680708 SetBGColor(DXColorUtil::MakeColorFromHexRGBA(hexColor));
681709
710+ result = _LoadConfViewpoint(&confFile, 2, &m_Viewpoint2);
711+ if (result != 0) goto EXIT;
712+
713+ result = _LoadConfViewpoint(&confFile, 3, &m_Viewpoint3);
714+ if (result != 0) goto EXIT;
715+
716+EXIT:;
717+ return result;
718+}
719+
720+//******************************************************************************
721+// 設定ファイル読み込み:視点
722+//******************************************************************************
723+int MTScenePianoRoll3DLive::_LoadConfViewpoint(
724+ MTConfFile* pConfFile,
725+ unsigned long viewpointNo,
726+ MTViewParamMap* pParamMap
727+ )
728+{
729+ int result = 0;
730+ int eresult = 0;
731+ TCHAR sectionStr[32] = {0};
732+ float x, y, z = 0.0f;
733+ float phi, theta = 0.0f;
734+ float manualRollAngle = 0.0f;
735+ float autoRollVelocity = 0.0f;
736+
737+ //セクション名作成
738+ eresult = _stprintf_s(sectionStr, 32, _T("Viewpoint-%d"), viewpointNo);
739+ if (eresult < 0) {
740+ result = YN_SET_ERR("Program error.", viewpointNo, 0);
741+ goto EXIT;
742+ }
743+
744+ //セクション設定
745+ result = pConfFile->SetCurSection(sectionStr);
746+ if (result != 0) goto EXIT;
747+
748+ //パラメータ取得
749+ result = pConfFile->GetFloat(_T("X"), &x, 0.0f);
750+ if (result != 0) goto EXIT;
751+ result = pConfFile->GetFloat(_T("Y"), &y, 0.0f);
752+ if (result != 0) goto EXIT;
753+ result = pConfFile->GetFloat(_T("Z"), &z, 0.0f);
754+ if (result != 0) goto EXIT;
755+ result = pConfFile->GetFloat(_T("Phi"), &phi, 0.0f);
756+ if (result != 0) goto EXIT;
757+ result = pConfFile->GetFloat(_T("Theta"), &theta, 0.0f);
758+ if (result != 0) goto EXIT;
759+ result = pConfFile->GetFloat(_T("ManualRollAngle"), &manualRollAngle, 0.0f);
760+ if (result != 0) goto EXIT;
761+ result = pConfFile->GetFloat(_T("AutoRollVelocity"), &autoRollVelocity, 0.0f);
762+ if (result != 0) goto EXIT;
763+
764+ //マップ登録
765+ pParamMap->clear();
766+ pParamMap->insert(MTViewParamMapPair("X", x));
767+ pParamMap->insert(MTViewParamMapPair("Y", y));
768+ pParamMap->insert(MTViewParamMapPair("Z", z));
769+ pParamMap->insert(MTViewParamMapPair("Phi", phi));
770+ pParamMap->insert(MTViewParamMapPair("Theta", theta));
771+ pParamMap->insert(MTViewParamMapPair("ManualRollAngle", manualRollAngle));
772+ pParamMap->insert(MTViewParamMapPair("AutoRollVelocity", autoRollVelocity));
773+
682774 EXIT:;
683775 return result;
684776 }
--- a/MIDITrail/MTScenePianoRoll3DLive.h
+++ b/MIDITrail/MTScenePianoRoll3DLive.h
@@ -4,7 +4,7 @@
44 //
55 // ライブモニタ用ピアノロール3Dシーン描画クラス
66 //
7-// Copyright (C) 2012-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2012-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -26,6 +26,7 @@
2626 #include "MTTimeIndicator.h"
2727 #include "MTMeshCtrl.h"
2828 #include "MTBackgroundImage.h"
29+#include "MTConfFile.h"
2930 #include "SMIDILib.h"
3031
3132 using namespace SMIDILib;
@@ -87,6 +88,7 @@ public:
8788 void GetDefaultViewParam(MTViewParamMap* pParamMap);
8889 void GetViewParam(MTViewParamMap* pParamMap);
8990 void SetViewParam(MTViewParamMap* pParamMap);
91+ void MoveToStaticViewpoint(unsigned long viewpointNo);
9092
9193 //視点リセット
9294 void ResetViewpoint();
@@ -127,6 +129,8 @@ private:
127129
128130 //視点情報
129131 MTViewParamMap m_ViewParamMap;
132+ MTViewParamMap m_Viewpoint2;
133+ MTViewParamMap m_Viewpoint3;
130134
131135 //ノートデザインオブジェクト
132136 MTNoteDesign m_NoteDesign;
@@ -136,6 +140,7 @@ private:
136140
137141 void _Reset();
138142 int _LoadConf();
143+ int _LoadConfViewpoint(MTConfFile* pConfFile, unsigned long viewpointNo, MTScene::MTViewParamMap* pParamMap);
139144
140145 };
141146
--- a/MIDITrail/MTScenePianoRollRain.cpp
+++ b/MIDITrail/MTScenePianoRollRain.cpp
@@ -4,7 +4,7 @@
44 //
55 // ピアノロールレインシーン描画クラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -459,6 +459,7 @@ void MTScenePianoRollRain::GetDefaultViewParam(
459459 D3DXVECTOR3 viewPointVector;
460460 float phi, theta = 0.0f;
461461
462+ //視点情報作成
462463 viewPointVector.x = 0.0f;
463464 viewPointVector.y = 0.0f;
464465 viewPointVector.z = - (1.5f * 16.0f / 2.0f) - 10.0f;
@@ -588,6 +589,34 @@ void MTScenePianoRollRain::SetViewParam(
588589 }
589590
590591 //******************************************************************************
592+// 静的視点移動
593+//******************************************************************************
594+void MTScenePianoRollRain::MoveToStaticViewpoint(
595+ unsigned long viewpointNo
596+ )
597+{
598+ MTScene::MTViewParamMap::iterator itr;
599+ MTViewParamMap paramMap;
600+
601+ if (viewpointNo == 1) {
602+ GetDefaultViewParam(&paramMap);
603+ SetViewParam(&paramMap);
604+ }
605+ else if (viewpointNo == 2) {
606+ SetViewParam(&m_Viewpoint2);
607+ }
608+ else if (viewpointNo == 3) {
609+ SetViewParam(&m_Viewpoint3);
610+ }
611+ else {
612+ GetDefaultViewParam(&paramMap);
613+ SetViewParam(&paramMap);
614+ }
615+
616+ return;
617+}
618+
619+//******************************************************************************
591620 // 視点リセット
592621 //******************************************************************************
593622 void MTScenePianoRollRain::ResetViewpoint()
@@ -701,6 +730,70 @@ int MTScenePianoRollRain::_LoadConf()
701730
702731 SetBGColor(DXColorUtil::MakeColorFromHexRGBA(hexColor));
703732
733+ result = _LoadConfViewpoint(&confFile, 2, &m_Viewpoint2);
734+ if (result != 0) goto EXIT;
735+
736+ result = _LoadConfViewpoint(&confFile, 3, &m_Viewpoint3);
737+ if (result != 0) goto EXIT;
738+
739+EXIT:;
740+ return result;
741+}
742+
743+//******************************************************************************
744+// 設定ファイル読み込み:視点
745+//******************************************************************************
746+int MTScenePianoRollRain::_LoadConfViewpoint(
747+ MTConfFile* pConfFile,
748+ unsigned long viewpointNo,
749+ MTViewParamMap* pParamMap
750+ )
751+{
752+ int result = 0;
753+ int eresult = 0;
754+ TCHAR sectionStr[32] = {0};
755+ float x, y, z = 0.0f;
756+ float phi, theta = 0.0f;
757+ float manualRollAngle = 0.0f;
758+ float autoRollVelocity = 0.0f;
759+
760+ //セクション名作成
761+ eresult = _stprintf_s(sectionStr, 32, _T("Viewpoint-%d"), viewpointNo);
762+ if (eresult < 0) {
763+ result = YN_SET_ERR("Program error.", viewpointNo, 0);
764+ goto EXIT;
765+ }
766+
767+ //セクション設定
768+ result = pConfFile->SetCurSection(sectionStr);
769+ if (result != 0) goto EXIT;
770+
771+ //パラメータ取得
772+ result = pConfFile->GetFloat(_T("X"), &x, 0.0f);
773+ if (result != 0) goto EXIT;
774+ result = pConfFile->GetFloat(_T("Y"), &y, 0.0f);
775+ if (result != 0) goto EXIT;
776+ result = pConfFile->GetFloat(_T("Z"), &z, 0.0f);
777+ if (result != 0) goto EXIT;
778+ result = pConfFile->GetFloat(_T("Phi"), &phi, 0.0f);
779+ if (result != 0) goto EXIT;
780+ result = pConfFile->GetFloat(_T("Theta"), &theta, 0.0f);
781+ if (result != 0) goto EXIT;
782+ result = pConfFile->GetFloat(_T("ManualRollAngle"), &manualRollAngle, 0.0f);
783+ if (result != 0) goto EXIT;
784+ result = pConfFile->GetFloat(_T("AutoRollVelocity"), &autoRollVelocity, 0.0f);
785+ if (result != 0) goto EXIT;
786+
787+ //マップ登録
788+ pParamMap->clear();
789+ pParamMap->insert(MTViewParamMapPair("X", x));
790+ pParamMap->insert(MTViewParamMapPair("Y", y));
791+ pParamMap->insert(MTViewParamMapPair("Z", z));
792+ pParamMap->insert(MTViewParamMapPair("Phi", phi));
793+ pParamMap->insert(MTViewParamMapPair("Theta", theta));
794+ pParamMap->insert(MTViewParamMapPair("ManualRollAngle", manualRollAngle));
795+ pParamMap->insert(MTViewParamMapPair("AutoRollVelocity", autoRollVelocity));
796+
704797 EXIT:;
705798 return result;
706799 }
--- a/MIDITrail/MTScenePianoRollRain.h
+++ b/MIDITrail/MTScenePianoRollRain.h
@@ -4,7 +4,7 @@
44 //
55 // ピアノロールレインシーン描画クラス
66 //
7-// Copyright (C) 2010-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -22,6 +22,7 @@
2222 #include "MTNotePitchBend.h"
2323 #include "MTMeshCtrl.h"
2424 #include "MTBackgroundImage.h"
25+#include "MTConfFile.h"
2526 #include "SMIDILib.h"
2627
2728 using namespace SMIDILib;
@@ -83,6 +84,7 @@ public:
8384 virtual void GetDefaultViewParam(MTViewParamMap* pParamMap);
8485 void GetViewParam(MTViewParamMap* pParamMap);
8586 void SetViewParam(MTViewParamMap* pParamMap);
87+ void MoveToStaticViewpoint(unsigned long viewpointNo);
8688
8789 //視点リセット
8890 void ResetViewpoint();
@@ -126,6 +128,8 @@ private:
126128
127129 //視点情報
128130 MTViewParamMap m_ViewParamMap;
131+ MTViewParamMap m_Viewpoint2;
132+ MTViewParamMap m_Viewpoint3;
129133
130134 //演奏位置
131135 unsigned long m_CurTickTime;
@@ -136,6 +140,7 @@ private:
136140 void _Reset();
137141 void _SetLightColor(DXDirLight* pLight);
138142 int _LoadConf();
143+ int _LoadConfViewpoint(MTConfFile* pConfFile, unsigned long viewpointNo, MTScene::MTViewParamMap* pParamMap);
139144
140145 };
141146
--- a/MIDITrail/MTScenePianoRollRainLive.cpp
+++ b/MIDITrail/MTScenePianoRollRainLive.cpp
@@ -4,7 +4,7 @@
44 //
55 // ライブモニタ用ピアノロールレインシーン描画クラス
66 //
7-// Copyright (C) 2012-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2012-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -447,7 +447,7 @@ void MTScenePianoRollRainLive::GetDefaultViewParam(
447447 viewPointVector.z = -(1.5f * 16.0f / 2.0f) - 10.0f;
448448 phi = 90.0f; //+Z軸方向
449449 theta = 90.0f; //+Z軸方向
450-
450+
451451 pParamMap->clear();
452452 pParamMap->insert(MTViewParamMapPair("X", viewPointVector.x));
453453 pParamMap->insert(MTViewParamMapPair("Y", viewPointVector.y));
@@ -571,6 +571,34 @@ void MTScenePianoRollRainLive::SetViewParam(
571571 }
572572
573573 //******************************************************************************
574+// 静的視点移動
575+//******************************************************************************
576+void MTScenePianoRollRainLive::MoveToStaticViewpoint(
577+ unsigned long viewpointNo
578+ )
579+{
580+ MTScene::MTViewParamMap::iterator itr;
581+ MTViewParamMap paramMap;
582+
583+ if (viewpointNo == 1) {
584+ GetDefaultViewParam(&paramMap);
585+ SetViewParam(&paramMap);
586+ }
587+ else if (viewpointNo == 2) {
588+ SetViewParam(&m_Viewpoint2);
589+ }
590+ else if (viewpointNo == 3) {
591+ SetViewParam(&m_Viewpoint3);
592+ }
593+ else {
594+ GetDefaultViewParam(&paramMap);
595+ SetViewParam(&paramMap);
596+ }
597+
598+ return;
599+}
600+
601+//******************************************************************************
574602 // 視点リセット
575603 //******************************************************************************
576604 void MTScenePianoRollRainLive::ResetViewpoint()
@@ -639,6 +667,70 @@ int MTScenePianoRollRainLive::_LoadConf()
639667
640668 SetBGColor(DXColorUtil::MakeColorFromHexRGBA(hexColor));
641669
670+ result = _LoadConfViewpoint(&confFile, 2, &m_Viewpoint2);
671+ if (result != 0) goto EXIT;
672+
673+ result = _LoadConfViewpoint(&confFile, 3, &m_Viewpoint3);
674+ if (result != 0) goto EXIT;
675+
676+EXIT:;
677+ return result;
678+}
679+
680+//******************************************************************************
681+// 設定ファイル読み込み:視点
682+//******************************************************************************
683+int MTScenePianoRollRainLive::_LoadConfViewpoint(
684+ MTConfFile* pConfFile,
685+ unsigned long viewpointNo,
686+ MTViewParamMap* pParamMap
687+ )
688+{
689+ int result = 0;
690+ int eresult = 0;
691+ TCHAR sectionStr[32] = {0};
692+ float x, y, z = 0.0f;
693+ float phi, theta = 0.0f;
694+ float manualRollAngle = 0.0f;
695+ float autoRollVelocity = 0.0f;
696+
697+ //セクション名作成
698+ eresult = _stprintf_s(sectionStr, 32, _T("Viewpoint-%d"), viewpointNo);
699+ if (eresult < 0) {
700+ result = YN_SET_ERR("Program error.", viewpointNo, 0);
701+ goto EXIT;
702+ }
703+
704+ //セクション設定
705+ result = pConfFile->SetCurSection(sectionStr);
706+ if (result != 0) goto EXIT;
707+
708+ //パラメータ取得
709+ result = pConfFile->GetFloat(_T("X"), &x, 0.0f);
710+ if (result != 0) goto EXIT;
711+ result = pConfFile->GetFloat(_T("Y"), &y, 0.0f);
712+ if (result != 0) goto EXIT;
713+ result = pConfFile->GetFloat(_T("Z"), &z, 0.0f);
714+ if (result != 0) goto EXIT;
715+ result = pConfFile->GetFloat(_T("Phi"), &phi, 0.0f);
716+ if (result != 0) goto EXIT;
717+ result = pConfFile->GetFloat(_T("Theta"), &theta, 0.0f);
718+ if (result != 0) goto EXIT;
719+ result = pConfFile->GetFloat(_T("ManualRollAngle"), &manualRollAngle, 0.0f);
720+ if (result != 0) goto EXIT;
721+ result = pConfFile->GetFloat(_T("AutoRollVelocity"), &autoRollVelocity, 0.0f);
722+ if (result != 0) goto EXIT;
723+
724+ //マップ登録
725+ pParamMap->clear();
726+ pParamMap->insert(MTViewParamMapPair("X", x));
727+ pParamMap->insert(MTViewParamMapPair("Y", y));
728+ pParamMap->insert(MTViewParamMapPair("Z", z));
729+ pParamMap->insert(MTViewParamMapPair("Phi", phi));
730+ pParamMap->insert(MTViewParamMapPair("Theta", theta));
731+ pParamMap->insert(MTViewParamMapPair("ManualRollAngle", manualRollAngle));
732+ pParamMap->insert(MTViewParamMapPair("AutoRollVelocity", autoRollVelocity));
733+
642734 EXIT:;
643735 return result;
644736 }
--- a/MIDITrail/MTScenePianoRollRainLive.h
+++ b/MIDITrail/MTScenePianoRollRainLive.h
@@ -4,7 +4,7 @@
44 //
55 // ライブモニタ用ピアノロールレインシーン描画クラス
66 //
7-// Copyright (C) 2012-2016 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2012-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -22,6 +22,7 @@
2222 #include "MTNotePitchBend.h"
2323 #include "MTMeshCtrl.h"
2424 #include "MTBackgroundImage.h"
25+#include "MTConfFile.h"
2526 #include "SMIDILib.h"
2627
2728 using namespace SMIDILib;
@@ -86,6 +87,7 @@ public:
8687
8788 //視点リセット
8889 void ResetViewpoint();
90+ void MoveToStaticViewpoint(unsigned long viewpointNo);
8991
9092 //エフェクト設定
9193 void SetEffect(MTScene::EffectType type, bool isEnable);
@@ -123,9 +125,12 @@ private:
123125
124126 //視点情報
125127 MTViewParamMap m_ViewParamMap;
128+ MTViewParamMap m_Viewpoint2;
129+ MTViewParamMap m_Viewpoint3;
126130
127131 void _Reset();
128132 int _LoadConf();
133+ int _LoadConfViewpoint(MTConfFile* pConfFile, unsigned long viewpointNo, MTScene::MTViewParamMap* pParamMap);
129134
130135 };
131136
--- a/MIDITrail/MTTimeIndicator.cpp
+++ b/MIDITrail/MTTimeIndicator.cpp
@@ -4,7 +4,7 @@
44 //
55 // タイムインジケータ描画クラス
66 //
7-// Copyright (C) 2010-2013 WADA Masashi. All Rights Reserved.
7+// Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
88 //
99 //******************************************************************************
1010
@@ -203,6 +203,18 @@ int MTTimeIndicator::Draw(
203203 {
204204 int result = 0;
205205
206+ //テクスチャステージ設定
207+ // カラー演算:引数1を使用 引数1:テクスチャ
208+ pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
209+ pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
210+ // アルファ演算:引数1を使用 引数1:テクスチャ
211+ pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
212+ pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
213+
214+ //テクスチャフィルタ
215+ pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
216+ pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
217+
206218 if (m_isEnableLine) {
207219 result = m_PrimitiveLine.Draw(pD3DDevice);
208220 if (result != 0) goto EXIT;
@@ -239,6 +251,7 @@ int MTTimeIndicator::_CreateVertexOfIndicator(
239251 D3DXVECTOR3 vectorRU;
240252 D3DXVECTOR3 vectorLD;
241253 D3DXVECTOR3 vectorRD;
254+ float delta = 0.0f;
242255
243256 // y x
244257 // 0+----+1 |/
@@ -261,8 +274,12 @@ int MTTimeIndicator::_CreateVertexOfIndicator(
261274 pVertex[2].p = vectorLD;
262275 pVertex[3].p = vectorRD;
263276
264- //再生面の幅がゼロの場合はラインを描画する
265- if (vectorLU.z == vectorRU.z) {
277+ //再生面の幅がゼロに近い場合はラインを描画する
278+ delta = vectorLU.z - vectorRU.z;
279+ if (delta < 0) {
280+ delta = -1.0f * delta;
281+ }
282+ if (delta < 0.1) {
266283 m_isEnableLine = true;
267284 }
268285
--- a/MIDITrail/resource.h
+++ b/MIDITrail/resource.h
@@ -67,6 +67,8 @@
6767 #define IDM_AUTO_SAVE_VIEWPOINT 32838
6868 #define IDM_VIEW_PIANOROLLRAIN2D 32840
6969 #define IDM_ENABLE_BACKGROUNDIMAGE 32842
70+#define IDM_VIEWPOINT2 32843
71+#define IDM_VIEWPOINT3 32844
7072 #define IDC_STATIC -1
7173
7274 // Next default values for new objects
@@ -75,7 +77,7 @@
7577 #ifndef APSTUDIO_READONLY_SYMBOLS
7678 #define _APS_NO_MFC 1
7779 #define _APS_NEXT_RESOURCE_VALUE 134
78-#define _APS_NEXT_COMMAND_VALUE 32843
80+#define _APS_NEXT_COMMAND_VALUE 32848
7981 #define _APS_NEXT_CONTROL_VALUE 1024
8082 #define _APS_NEXT_SYMED_VALUE 110
8183 #endif
--- a/README.en.txt
+++ b/README.en.txt
@@ -1,8 +1,8 @@
11 ******************************************************************************
22
3- MIDITrail source code Ver.1.2.3 for Windows
3+ MIDITrail source code Ver.1.2.4 for Windows
44
5- Copyright (C) 2010-2017 WADA Masashi. All Rights Reserved.
5+ Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
66
77 Web : https://osdn.jp/projects/miditrail/
88 Mail: yknk@users.osdn.me
--- a/README.ja.txt
+++ b/README.ja.txt
@@ -1,8 +1,8 @@
11 ******************************************************************************
22
3- MIDITrail ソースコード Ver.1.2.3 for Windows
3+ MIDITrail ソースコード Ver.1.2.4 for Windows
44
5- Copyright (C) 2010-2017 WADA Masashi. All Rights Reserved.
5+ Copyright (C) 2010-2019 WADA Masashi. All Rights Reserved.
66
77 Web : https://osdn.jp/projects/miditrail/
88 Mail: yknk@users.osdn.me