• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

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

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

Windows Apps


コミットメタ情報

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

ログメッセージ

set prog change name in play

変更サマリ

差分

--- a/wkeyboard/midilib.c
+++ b/wkeyboard/midilib.c
@@ -1456,7 +1456,10 @@ void PlayData(void *playmod)
14561456 int done;
14571457 int last_cb_tick; /* 最後のcallbackの発生したtick(msec) V0.50-A */
14581458 u_int wk;
1459- u_int ch; /* channel */
1459+ u_int ch; /* channel */
1460+ u_int st; /* cmd1/status byte */
1461+ u_int kk; /* cmd2/key */
1462+ u_int vv; /* cmd3/velocity */
14601463
14611464 dlog("PlayData: start..\n");
14621465
@@ -1483,7 +1486,7 @@ rewind:
14831486 while (1) {
14841487 done = 0;
14851488
1486- /* V0.50-A start */
1489+ /* Play Control V0.50-A start */
14871490 if (playctrl == CMD_REWIND) {
14881491 StopAllNotes();
14891492 playctrl = 0;
@@ -1553,12 +1556,12 @@ rewind:
15531556 }
15541557 /* V0.18-A end */
15551558
1556- wk = playdat[trk][pos[trk]*2+1]; /* midi data */
1557- ch = wk & 0xf;
1559+ wk = playdat[trk][pos[trk]*2+1]; /* midi data 4bytes */
1560+ ch = wk & 0xf; /* channel */
1561+ st = wk & 0xff; /* cmd1/status bytes */
1562+ kk = (wk & 0xff00) >> 8; /* cmd2/key */
1563+ vv = (wk & 0xff0000) >> 16; /* cmd3/velocity */
15581564 if (vf) {
1559- u_int st = wk & 0xff;
1560- u_int kk = (wk & 0xff00) >> 8;
1561- u_int vv = (wk & 0xff0000) >> 16;
15621565 int noteon = 0;
15631566
15641567 if (((st & 0xf0) == 0x90) && vv != 0) {
@@ -1595,17 +1598,20 @@ rewind:
15951598 /* V0.50-C start */
15961599 if (((wk & 0xf0) == 0x90) || ((wk & 0xf0) == 0x80)) {
15971600 /* note on/off */
1598- if (inst_tbl[wk & 0x0f].play) {
1601+ if (inst_tbl[ch].play) {
15991602 WinMidiShortMsg(&minst, wk); /* play & disp */
16001603 if (cb_func) (*cb_func)(wk); /* for update screen */
16011604 last_cb_tick = tick; /* 最後にcallbackしたtick値更新 V0.50-A */
1602- } else if (inst_tbl[wk & 0x0f].disp) {
1605+ } else if (inst_tbl[ch].disp) {
16031606 /* disp only */
16041607 if (cb_func) (*cb_func)(wk); /* for update screen */
16051608 last_cb_tick = tick;
16061609 }
16071610 } else {
1608- /* prog change */
1611+ /* prog change(0xCn) or other */
1612+ if ((wk & 0xf0) == 0xc0) {
1613+ inst_tbl[ch].instno = kk; /* cmd2(instrument) */
1614+ }
16091615 WinMidiShortMsg(&minst, wk);
16101616 last_cb_tick = tick; /* 最後にcallbackしたtick値更新 V0.50-A */
16111617 }