• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

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

javac++androidlinuxc#objective-cqtwindows誰得cocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

Windows Apps


コミットメタ情報

リビジョンd8128dbe54534a8e7e27e8a11f2460945c45b427 (tree)
日時2014-06-20 07:41:47
作者oga <oga@mxg....>
コミッターoga

ログメッセージ

V0.14-13 working

変更サマリ

差分

Binary files a/wkeyboard/Release/wkeyboard.exe and b/wkeyboard/Release/wkeyboard.exe differ
--- a/wkeyboard/ToDo.txt
+++ b/wkeyboard/ToDo.txt
@@ -21,11 +21,11 @@ ToDo
2121 #ボタン移動、 V1.04-11
2222 #チャンネル単位の音有無/鍵盤表示設定機能 6/16 V1.04-12
2323 #Deltaが長いMIDIファイルがある件、原因調査(解析不足?) 6/18 V0.50-10
24+ ギターのエリア表示機能 V1.04-13 (14/06/19-)
2425 ステップ実行(Rew) 1四分音符の時間分戻す?
2526 ステップ実行(Fwd)時の8x,9x,Cx,ff5103tttttt(Tempo)以外無視
2627 Tempoが途中で遅くなると演奏が一時止まる
2728 Tempoが効かないことがある件調査
28- ギターのエリア表示機能
2929 古い鍵盤押下情報の廃止
3030 音声のないチャンネルのPiano1は消す
3131 (8)キーボード和音押し表示対応
--- a/wkeyboard/wkeyboardDlg.cpp
+++ b/wkeyboard/wkeyboardDlg.cpp
@@ -67,6 +67,21 @@ static char THIS_FILE[] = __FILE__;
6767
6868 #define PUSH_COLOR PINK
6969
70+// キーボード描画用
71+#define OFFS_BODY_X 10
72+#define OFFS_BODY_Y 40
73+#define OFFS_KEY_X 20
74+#define OFFS_KEY_Y 48
75+#define SIZE_LED_W (12*3)
76+#define SIZE_LED_H 15
77+
78+// ギター描画用
79+#define OFFS_GT_X 420 // 描画開始左上位置
80+#define OFFS_GT_Y 0 // 描画開始左上位置
81+#define OFFS_GT_W 357 // 指板の幅
82+#define OFFS_GT_H 39 // 指板の高さ
83+
84+
7085 #define DEBUG_POINT 1 // DEBUG
7186 #define MAX_PROG 128 // num of program
7287
@@ -108,6 +123,8 @@ char *note[128] = {
108123 "C9 ","C9#","D9 ","D9#","E9 ","F9 ","F9#","G9 ","G9#","A9 ","A9#","B9 ",
109124 "Ca ","Ca#","Da ","Da#","Ea ","Fa ","Fa#","Ga " };
110125
126+int noteno[6] = {64, 59, 55, 50, 45, 40}; // 開放弦の音階No.
127+
111128 #if 0
112129 /* Program Name (SC-55) */
113130 char *prog_name[MAX_PROG] = {
@@ -382,6 +399,7 @@ BOOL CWkeyboardDlg::OnInitDialog()
382399 mVelo = 127; // Velocity(0-127)
383400 mCurTone = -1; // 現在の音程
384401 mLMouseDown = 0; // Lボタン押下状態
402+ mDragGuitar = 0; // ギターエリア選択状態 V1.04-13-A
385403 mKeyDown = 0; // キー押下状態
386404 mWhite = 0; // 白鍵かどうか
387405 mPushX = 0; // 鍵が押されたX位置
@@ -406,6 +424,8 @@ BOOL CWkeyboardDlg::OnInitDialog()
406424 pbr_red->CreateSolidBrush(RED);
407425 pbr_glay = new CBrush(); // フレットマーク用 V1.01-A
408426 pbr_glay->CreateSolidBrush(GLAY6); // フレットマーク用 V1.01-A
427+ pbr_red2 = new CBrush(); // ギターエリア用 V1.04-13-A
428+ pbr_red2->CreateSolidBrush(RED2); // ギターエリア用 V1.04-13-A
409429
410430 // ペン作成
411431 pen_glay1 = new CPen();
@@ -467,6 +487,16 @@ BOOL CWkeyboardDlg::OnInitDialog()
467487 }
468488 cb->SetCurSel(mNoteNo);
469489
490+ // V1.04-13-A start
491+ int xx = 0;
492+ mposx[0] = OFFS_GT_X+6;
493+ for (i = 1; i <= GT_NFRET; i++) {
494+ // フレット位置
495+ xx += (25*(GT_NFRET-i)/21+10)*(OFFS_GT_W)/495;
496+ mposx[i] = OFFS_GT_X+6+xx; // フレット位置の保存
497+ }
498+ // V1.04-13-A end
499+
470500 // KeyShift値表示
471501 SetDlgItemInt(IDC_EDIT_KS, mKeyShift); // V1.01-A
472502
@@ -491,6 +521,8 @@ BOOL CWkeyboardDlg::OnInitDialog()
491521
492522 // Callback func
493523 MidiSetCallback(MidiCallback);
524+
525+ ClearPushRect2();
494526 // V1.04-A end
495527
496528 // oga end
@@ -531,13 +563,6 @@ void CWkeyboardDlg::DrawLine(CDC *pDC, int x1, int y1, int x2, int y2, int abs)
531563 }
532564 }
533565
534-#define OFFS_BODY_X 10
535-#define OFFS_BODY_Y 40
536-#define OFFS_KEY_X 20
537-#define OFFS_KEY_Y 48
538-#define SIZE_LED_W (12*3)
539-#define SIZE_LED_H 15
540-
541566 //
542567 // キーボードの描画
543568 //
@@ -766,18 +791,12 @@ void CWkeyboardDlg::DrawKeyBoard(CDC *pDC)
766791 //
767792 // ギター指板の描画 (デバッグモードのみ)
768793 //
769-#define OFFS_GT_X 420 // 描画開始左上位置
770-#define OFFS_GT_Y 0 // 描画開始左上位置
771-#define OFFS_GT_W 357 // 指板の幅
772-#define OFFS_GT_H 39 // 指板の高さ
773-#define GT_NFRET 22 // フレットの数
774794 void CWkeyboardDlg::DrawGuitar(CDC *pDC)
775795 {
776796 int i;
777797 int j; // V1.04-A
778798 int xx;
779- int posx[GT_NFRET+1];
780- int noteno[6] = {64, 59, 55, 50, 45, 40}; // 開放弦の音階No.
799+ int posx[GT_NFRET+1]; // 指押さえ位置
781800 CRect Rect;
782801
783802 // CWnd::GetDC()はReleaseDC()が必要なので使いまわす
@@ -867,6 +886,11 @@ void CWkeyboardDlg::DrawGuitar(CDC *pDC)
867886 }
868887 // V1.04-A end
869888 }
889+
890+ // ギターエリア表示
891+ Rect.SetRect(mposx[mGTArea]-3, OFFS_GT_Y+0,
892+ mposx[mGTArea+5]+3, OFFS_GT_Y+OFFS_GT_H-0);
893+ pDC->FrameRect(&Rect, pbr_red2); // エリア枠の表示
870894 }
871895 // V1.01-A end
872896
@@ -1367,6 +1391,11 @@ void CWkeyboardDlg::OnLButtonDown(UINT nFlags, CPoint point)
13671391 MidiSetPosition(pos);
13681392 }
13691393 }
1394+
1395+ if (point.y >= OFFS_GT_Y && point.y <= OFFS_GT_Y+OFFS_GT_H
1396+ && point.x >= OFFS_GT_X && point.x <= OFFS_GT_X+OFFS_GT_W) {
1397+ mDragGuitar = point.x;
1398+ }
13701399 // V1.04-A end
13711400
13721401 // 押された場所の音を取得し鳴らす
@@ -1398,6 +1427,8 @@ void CWkeyboardDlg::OnLButtonUp(UINT nFlags, CPoint point)
13981427 WinMidiShortMsg(&minst, MIDIMSG(0x90+mDR, mCurTone, 0)); // Note Off
13991428 //mCurTone = -1;
14001429 mLMouseDown = 0;
1430+ mDragGuitar = 0; // ギターエリア選択状態 V1.04-13-A
1431+ mGTArea = 0; // ギター演奏エリア(開始点) V1.04-13-A
14011432 mPushRect.SetRect(0, 0, 0, 0); // 押下キー枠初期化
14021433 GetToneNo(point, 0); // 押下キー枠初期化(mPushRect2) V1.04-A
14031434 Invalidate(FALSE);
@@ -1410,6 +1441,8 @@ void CWkeyboardDlg::OnMouseMove(UINT nFlags, CPoint point)
14101441 {
14111442 // TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
14121443 int workTone;
1444+ int i;
1445+
14131446 if (mLMouseDown) {
14141447 // マウスLボタンを押した状態で動かした
14151448 workTone = GetToneNo(point, 1); // V1.04-C
@@ -1425,6 +1458,17 @@ void CWkeyboardDlg::OnMouseMove(UINT nFlags, CPoint point)
14251458 #endif
14261459 }
14271460 }
1461+
1462+ // V1.04-13-A start
1463+ if (mDragGuitar) {
1464+ for (i = 0; i < GT_NFRET-5; i++) {
1465+ if (mposx[i] <= point.x && point.x < mposx[i]) {
1466+ mGTArea = i;
1467+ break;
1468+ }
1469+ }
1470+ }
1471+ // V1.04-13-A end
14281472
14291473 CDialog::OnMouseMove(nFlags, point);
14301474 }
--- a/wkeyboard/wkeyboardDlg.h
+++ b/wkeyboard/wkeyboardDlg.h
@@ -19,6 +19,7 @@
1919 //
2020 #define MIDIMSG(stat, data1, data2) (DWORD)((stat) | ((data1) << 8) | ((data2) << 16))
2121 #define MAX_RECT 20 // max mPushRect2
22+#define GT_NFRET 22 // フレットの数 V1.04-03-M
2223
2324 typedef struct _midiinst {
2425 HMIDIOUT hmo;
@@ -60,6 +61,7 @@ protected:
6061
6162 // 追加 oga
6263 CBrush *pbr_red; // ブラシ
64+ CBrush *pbr_red2; // ブラシ V1.04-13-A
6365 CBrush *pbr_glay; // ブラシ
6466 CPen *pen_glay1; // ペン
6567 CPen *pen_glay2; // ペン
@@ -79,6 +81,8 @@ protected:
7981 int mVelo; // Velocity (≒音量)
8082 int mCurTone; // 現在の音程
8183 int mLMouseDown; // Lボタン押下状態
84+ int mDragGuitar; // ギターエリア選択状態 V1.04-13-A
85+ int mGTArea; // ギター演奏エリア(先頭) V1.04-13-A
8286 int mKeyDown; // キー押下状態
8387 int mDebug; // 1:Debug Mode
8488 int mWhite; // 1:白鍵押下
@@ -95,6 +99,7 @@ protected:
9599 CPoint mCurPoint; // 現在のクリック位置 (for DEBUG)
96100 MidiInst minst; // MIDIインスタンス管理
97101 char mFname[2048]; // MIDIファイル名 V1.04-A
102+ int mposx[GT_NFRET+1]; // ギターフレットの位置 V1.04-13-A
98103
99104 void DrawKeyBoard(CDC *pDC);
100105 void DrawGuitar(CDC *pDC); // V1.01-A