• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

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

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

Windows Apps


コミットメタ情報

リビジョン0217e3da9493172ac9f76ce532917c8ed33abc1e (tree)
日時2014-06-21 17:47:49
作者oga <hyperoga@gmai...>
コミッターoga

ログメッセージ

2014/06/21 midilib V0.50-11, wkeyboard V1.04-13

変更サマリ

差分

Binary files a/wkeyboard/Release/wkeyboard.exe and b/wkeyboard/Release/wkeyboard.exe differ
--- a/wkeyboard/ToDo.txt
+++ b/wkeyboard/ToDo.txt
@@ -20,12 +20,13 @@ ToDo
2020 #再生秒表示機能 V1.04-10
2121 #ボタン移動、 V1.04-11
2222 #チャンネル単位の音有無/鍵盤表示設定機能 6/16 V1.04-12
23- #Deltaが長いMIDIファイルがある件、原因調査(解析不足?) 6/18 V0.50-10
24- ギターのエリア表示機能 V1.04-13 (14/06/19-)
23+ #Deltaが長いMIDIファイルがある件、原因調査(解析不足?) 6/18 V0.50-10
24+ #ステップ実行(Fwd)で表示対象以外のchのデータはスキップ 6/21 V0.50-11
25+ #ステップ実行(Fwd)時の9x(vv>0),Cx,ff5103tttttt(Tempo)以外無視 6/21 V0.50-11
26+ #ギターのエリア表示機能 V1.04-13 (14/06/19-14/06/21)
2527 ステップ実行(Rew) 1四分音符の時間分戻す?
26- ステップ実行(Fwd)時の8x,9x,Cx,ff5103tttttt(Tempo)以外無視
27- Tempoが途中で遅くなると演奏が一時止まる
28- Tempoが効かないことがある件調査
28+ Tempoが途中で遅くなると演奏が一時止まる(tsubame)。早くなると演奏が飛ぶ(dspirit.mid)
29+ Tempoが効かないことがある件調査(Exメッセージ処理不正対策で解決?)
2930 古い鍵盤押下情報の廃止
3031 音声のないチャンネルのPiano1は消す
3132 (8)キーボード和音押し表示対応
--- a/wkeyboard/midilib.c
+++ b/wkeyboard/midilib.c
@@ -1367,6 +1367,7 @@ void FwdPlay(int *ptick)
13671367 int trk;
13681368 int cur_delta;
13691369 int found = 0;
1370+ int wk, st, ch, vv;
13701371
13711372 dlog1("FwdPlay() start. tick=%d\n", *ptick);
13721373
@@ -1377,12 +1378,31 @@ void FwdPlay(int *ptick)
13771378 }
13781379 cur_delta = MS2DELTA(*ptick);
13791380 for (trk = 0; trk < trkno; trk++) {
1380- /* DeltaTime 再生対象が見つかったらリターン */
1381- if (playdat[trk][pos[trk]*2] <= MS2DELTA(*ptick)) /* delta sum */
1381+ while (playdat[trk][pos[trk]*2] <= MS2DELTA(*ptick)) /* delta sum V0.50-11-C */
13821382 {
1383- found = 1;
1384- break;
1383+ /* DeltaTime にデータが見つかった */
1384+ /* V0.50-11-A start */
1385+ wk = playdat[trk][pos[trk]*2+1]; /* midi msg */
1386+ st = wk & 0xf0; /* status */
1387+ ch = wk & 0x0f; /* status(ch) */
1388+ vv = (wk & 0xff0000) >> 16; /* cmd3/velocity */
1389+ /* 対象となるnote on, prog.chg, tempo か確認 */
1390+ if ((st == 0x90 && vv > 0 && inst_tbl[ch].disp)
1391+ || (st == 0xc0) || (st == 0xf0)) {
1392+ /* 表示対象の次データを発見 */
1393+ /* V0.50-11-A end */
1394+ found = 1;
1395+ break;
1396+ /* V0.50-11-A start */
1397+ }
1398+ if ((st == 0x80 || (st == 0x90 && vv == 0)) && inst_tbl[ch].disp) {
1399+ WinMidiShortMsg(&minst, wk);
1400+ if (cb_func) (*cb_func)(wk); /* for update screen (note off) */
1401+ }
1402+ ++pos[trk]; /* 再生対象でなければデータを1個すすめる */
13851403 }
1404+ if (found) break;
1405+ /* V0.50-11-A end */
13861406 }
13871407 if (found) break;
13881408 (*ptick) += TICK;
@@ -1477,6 +1497,7 @@ rewind:
14771497 playctrl = 0;
14781498 tick = 0;
14791499 last_cb_tick = 0;
1500+ gmeasure = 0;
14801501
14811502 memset(pos, 0, sizeof(pos));
14821503 tempo = 500000; /* Tempoのデフォルト値μs(4分♪=120:0.5sec) */
--- a/wkeyboard/wkeyboard.clw
+++ b/wkeyboard/wkeyboard.clw
@@ -13,9 +13,9 @@ Class2=CWkeyboardDlg
1313 Class3=CAboutDlg
1414
1515 ResourceCount=4
16-Resource1=IDD_ABOUTBOX
16+Resource1=IDD_WKEYBOARD_DIALOG
1717 Resource2=IDR_MAINFRAME
18-Resource3=IDD_WKEYBOARD_DIALOG
18+Resource3=IDD_ABOUTBOX
1919 Class4=CSelectInst
2020 Resource4=IDD_SELINST_DLG
2121
--- a/wkeyboard/wkeyboard.rc
+++ b/wkeyboard/wkeyboard.rc
@@ -105,13 +105,13 @@ BEGIN
105105 WS_TABSTOP
106106 PUSHBUTTON "GT",IDC_BTN_GT,102,13,15,12
107107 PUSHBUTTON "DR",IDC_BTN_DR,117,13,15,12
108- PUSHBUTTON "■",IDC_BTN_STOP,162,8,10,12
109- PUSHBUTTON "||",IDC_BTN_PAUSE,173,8,10,12
110- PUSHBUTTON ">",IDC_BTN_PLAY,184,8,10,12
111- PUSHBUTTON "<||",IDC_BTN_REV_ONESTEP,195,8,10,12
112- PUSHBUTTON "||>",IDC_BTN_FW_ONESTEP,206,8,10,12
113- PUSHBUTTON "Inst",IDC_BTN_SELINST,217,8,16,12
114- GROUPBOX "MIDI",IDC_STATIC,159,0,80,24
108+ PUSHBUTTON "■",IDC_BTN_STOP,162,9,10,12
109+ PUSHBUTTON "||",IDC_BTN_PAUSE,173,9,10,12
110+ PUSHBUTTON ">",IDC_BTN_PLAY,184,9,10,12
111+ PUSHBUTTON "<||",IDC_BTN_REV_ONESTEP,195,9,10,12
112+ PUSHBUTTON "||>",IDC_BTN_FW_ONESTEP,206,9,10,12
113+ PUSHBUTTON "Inst",IDC_BTN_SELINST,217,9,16,12
114+ GROUPBOX "MIDI",IDC_STATIC,158,0,80,25
115115 END
116116
117117 IDD_SELINST_DLG DIALOG DISCARDABLE 0, 0, 131, 197
--- a/wkeyboard/wkeyboardDlg.cpp
+++ b/wkeyboard/wkeyboardDlg.cpp
@@ -61,7 +61,8 @@ static char THIS_FILE[] = __FILE__;
6161 #define WHITE2 RGB( 232, 237, 243) // 白鍵
6262 //#define RED2 RGB( 124, 40, 53) // 赤い布
6363 #define RED2 RGB( 186, 101, 104) // 赤い布
64-#define PINK RGB(0xff,0x88,0x88) // 薄赤
64+#define DARKRED RGB(0xaa, 0, 0) // 暗赤
65+#define PINK RGB(0xff,0x88,0x88) // 薄赤(押下鍵盤)
6566
6667 #define BROWN RGB(0x44,0x11, 0) // 茶色 指板
6768
@@ -400,6 +401,7 @@ BOOL CWkeyboardDlg::OnInitDialog()
400401 mCurTone = -1; // 現在の音程
401402 mLMouseDown = 0; // Lボタン押下状態
402403 mDragGuitar = 0; // ギターエリア選択状態 V1.04-13-A
404+ mGTArea = 0; // ギター演奏エリア(開始点index) V1.04-13-A
403405 mKeyDown = 0; // キー押下状態
404406 mWhite = 0; // 白鍵かどうか
405407 mPushX = 0; // 鍵が押されたX位置
@@ -424,8 +426,10 @@ BOOL CWkeyboardDlg::OnInitDialog()
424426 pbr_red->CreateSolidBrush(RED);
425427 pbr_glay = new CBrush(); // フレットマーク用 V1.01-A
426428 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
429+ pbr_red2 = new CBrush(); // ギターエリア枠用 V1.04-13-A
430+ pbr_red2->CreateSolidBrush(RED2); // ギターエリア枠用 V1.04-13-A
431+ pbr_red3 = new CBrush(); // ギターエリア外 V1.04-13-A
432+ pbr_red3->CreateSolidBrush(DARKRED);// ギターエリア外 V1.04-13-A
429433
430434 // ペン作成
431435 pen_glay1 = new CPen();
@@ -434,8 +438,9 @@ BOOL CWkeyboardDlg::OnInitDialog()
434438 pen_glay4 = new CPen();
435439 pen_glay5 = new CPen();
436440 pen_glay6 = new CPen();
437- pen_red2 = new CPen();
438441 pen_red = new CPen(); // V1.01-A
442+ pen_red2 = new CPen(); // V1.04-13-A
443+ pen_red3 = new CPen(); // V1.04-13-A
439444
440445 pen_glay1->CreatePen(PS_SOLID, 1, GLAY1);
441446 pen_glay2->CreatePen(PS_SOLID, 1, GLAY2);
@@ -443,8 +448,9 @@ BOOL CWkeyboardDlg::OnInitDialog()
443448 pen_glay4->CreatePen(PS_SOLID, 1, GLAY4);
444449 pen_glay5->CreatePen(PS_SOLID, 1, GLAY5);
445450 pen_glay6->CreatePen(PS_SOLID, 1, GLAY6);
446- pen_red2->CreatePen(PS_SOLID, 1, RED2 );
447451 pen_red->CreatePen(PS_SOLID, 1, RED ); // V1.01-A
452+ pen_red2->CreatePen(PS_SOLID, 1, RED2 ); // V1.04-13-A
453+ pen_red3->CreatePen(PS_SOLID, 1, DARKRED); // V1.04-13-A
448454
449455 // Font
450456 // Font for LED
@@ -796,6 +802,7 @@ void CWkeyboardDlg::DrawGuitar(CDC *pDC)
796802 int i;
797803 int j; // V1.04-A
798804 int xx;
805+ int wkpos; // V1.04-13-A
799806 int posx[GT_NFRET+1]; // 指押さえ位置
800807 CRect Rect;
801808
@@ -866,9 +873,18 @@ void CWkeyboardDlg::DrawGuitar(CDC *pDC)
866873 DrawLine(pDC, OFFS_GT_X, OFFS_GT_Y+(OFFS_GT_H-1)*i/6+3, OFFS_GT_W, 0, 0);
867874
868875 // 現在の音程の弦押さえ位置を表示
869- pDC->SelectObject(pen_red);
870- pDC->SelectObject(pbr_red);
871876 if (noteno[i] <= mCurTone && mCurTone <= noteno[i]+GT_NFRET) {
877+ // V1.04-13-A start
878+ wkpos = OFFS_GT_X+posx[mCurTone-noteno[i]];
879+ if (mposx[mGTArea] <= wkpos && wkpos <= mposx[mGTArea+5]) {
880+ // ギター演奏候補エリア内なら明赤
881+ pDC->SelectObject(pen_red); // 赤
882+ pDC->SelectObject(pbr_red); // 赤
883+ } else {
884+ pDC->SelectObject(pen_red3); // 暗赤
885+ pDC->SelectObject(pbr_red3); // 暗赤
886+ }
887+ // V1.04-13-A end
872888 pDC->Ellipse(OFFS_GT_X+posx[mCurTone-noteno[i]] - 3,
873889 OFFS_GT_Y+(OFFS_GT_H-1)*i/6+4 - 3,
874890 OFFS_GT_X+posx[mCurTone-noteno[i]] + 3,
@@ -878,6 +894,17 @@ void CWkeyboardDlg::DrawGuitar(CDC *pDC)
878894 // V1.04-A start
879895 for (j = 0; j < MAX_RECT; j++) {
880896 if (noteno[i] <= mPushRect2[j].tone && mPushRect2[j].tone <= noteno[i]+GT_NFRET) {
897+ // V1.04-13-A start
898+ wkpos = OFFS_GT_X+posx[mPushRect2[j].tone-noteno[i]];
899+ if (mposx[mGTArea] <= wkpos && wkpos <= mposx[mGTArea+5]) {
900+ // ギター演奏候補エリア内なら明赤
901+ pDC->SelectObject(pen_red); // 赤
902+ pDC->SelectObject(pbr_red); // 赤
903+ } else {
904+ pDC->SelectObject(pen_red3); // 暗赤
905+ pDC->SelectObject(pbr_red3); // 暗赤
906+ }
907+ // V1.04-13-A end
881908 pDC->Ellipse(OFFS_GT_X+posx[mPushRect2[j].tone-noteno[i]] - 3,
882909 OFFS_GT_Y+(OFFS_GT_H-1)*i/6+4 - 3,
883910 OFFS_GT_X+posx[mPushRect2[j].tone-noteno[i]] + 3,
@@ -1391,12 +1418,14 @@ void CWkeyboardDlg::OnLButtonDown(UINT nFlags, CPoint point)
13911418 MidiSetPosition(pos);
13921419 }
13931420 }
1421+ // V1.04-A end
13941422
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) {
1423+ // V1.04-13-A start
1424+ if (OFFS_GT_Y <= point.y && point.y <= OFFS_GT_Y+OFFS_GT_H
1425+ && OFFS_GT_X <= point.x && point.x <= OFFS_GT_X+OFFS_GT_W) {
13971426 mDragGuitar = point.x;
13981427 }
1399- // V1.04-A end
1428+ // V1.04-13-A end
14001429
14011430 // 押された場所の音を取得し鳴らす
14021431 workTone = GetToneNo(point, 1); // V1.04-C
@@ -1428,7 +1457,6 @@ void CWkeyboardDlg::OnLButtonUp(UINT nFlags, CPoint point)
14281457 //mCurTone = -1;
14291458 mLMouseDown = 0;
14301459 mDragGuitar = 0; // ギターエリア選択状態 V1.04-13-A
1431- mGTArea = 0; // ギター演奏エリア(開始点) V1.04-13-A
14321460 mPushRect.SetRect(0, 0, 0, 0); // 押下キー枠初期化
14331461 GetToneNo(point, 0); // 押下キー枠初期化(mPushRect2) V1.04-A
14341462 Invalidate(FALSE);
@@ -1461,9 +1489,10 @@ void CWkeyboardDlg::OnMouseMove(UINT nFlags, CPoint point)
14611489
14621490 // V1.04-13-A start
14631491 if (mDragGuitar) {
1464- for (i = 0; i < GT_NFRET-5; i++) {
1465- if (mposx[i] <= point.x && point.x < mposx[i]) {
1492+ for (i = 0; i < GT_NFRET-4; i++) {
1493+ if (mposx[i] <= point.x && point.x < ((i < GT_NFRET-5)?mposx[i+1]:9999)) {
14661494 mGTArea = i;
1495+ Invalidate(FALSE);
14671496 break;
14681497 }
14691498 }
--- a/wkeyboard/wkeyboardDlg.h
+++ b/wkeyboard/wkeyboardDlg.h
@@ -62,6 +62,7 @@ protected:
6262 // 追加 oga
6363 CBrush *pbr_red; // ブラシ
6464 CBrush *pbr_red2; // ブラシ V1.04-13-A
65+ CBrush *pbr_red3; // ブラシ V1.04-13-A
6566 CBrush *pbr_glay; // ブラシ
6667 CPen *pen_glay1; // ペン
6768 CPen *pen_glay2; // ペン
@@ -69,8 +70,9 @@ protected:
6970 CPen *pen_glay4; // ペン
7071 CPen *pen_glay5; // ペン
7172 CPen *pen_glay6; // ペン
72- CPen *pen_red2; // ペン
7373 CPen *pen_red; // ペン
74+ CPen *pen_red2; // ペン V1.04-13-A
75+ CPen *pen_red3; // ペン V1.04-13-A
7476 CFont fontLED; // Font LED
7577 CFont fontString; // Font Note String
7678 CDC *pdc;