Last active
July 20, 2022 11:09
-
-
Save trueroad/ec1abe8c7a72d21611461a77dc6c3b4a to your computer and use it in GitHub Desktop.
世界樹 7.5 でマルチパケット・システム・エクスクルーシブを入力できるようにするパッチ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 世界樹 7.5 でマルチパケット・システム・エクスクルーシブを | |
| 入力できるようにするパッチ | |
| 世界樹 7.5 では MIDI 1.0 規格書にある | |
| マルチパケット・システム・エクスクルーシブの例が入力できません。 | |
| 本パッチにより入力できるようになります。 | |
| 以下詳細です。 | |
| MIDI 1.0 規格書 PDF 版 | |
| https://amei.or.jp/midistandardcommittee/MIDIspcj.html | |
| の「4. スタンダード MIDI ファイル 1.0」の中にあるページ 4-7 には、 | |
| マルチパケット・システム・エクスクルーシブを | |
| スタンダード MIDI ファイルで表現する例として | |
| F0 03 43 12 00 | |
| 81 48 | |
| F7 06 43 12 00 43 12 00 | |
| 64 | |
| F7 04 43 12 00 F7 | |
| が挙げられています。 | |
| これを世界樹 7.5 のイベントリストで入力するにはイベントの種類として | |
| 最初の F0 で始まる行は「システムエクスクルーシヴ(通常)」 | |
| 3, 5 行目の F7 で始まる行は「システムエクスクルーシヴ(任意)」 | |
| を使うことになり、TPQN 120 で 4/4 拍子だと以下のようにすればよさそうです。 | |
| 小節:拍:ティック イベントの種類 値1 | |
| 00001:01:000 システムエクスクルーシヴ(通常) F0 43 12 00 | |
| 00001:02:080 システムエクスクルーシヴ(任意) 43 12 00 43 12 00 | |
| 00001:03:060 システムエクスクルーシヴ(任意) 43 12 00 F7 | |
| しかし、世界樹 7.5 では | |
| 「システムエクスクルーシヴ(通常)」 | |
| の値 1 に | |
| F0 43 12 00 | |
| を入力すると | |
| 「システムエクスクルーシブデータはF7で終わらなければなりません。」 | |
| という警告メッセージボックスが出て | |
| F0 43 12 F7 | |
| に変わってしまい上記の入力ができません。 | |
| 本パッチはこの警告と自動修正を無くすことにより、 | |
| 上記の入力ができるようにするものです。 | |
| パッチ後の世界樹で上記を入力し、 | |
| スタンダート MIDI ファイルとして保存して、 | |
| バイナリエディタで中身を見たところ、 | |
| 上記の例の通りになっていることが確認できました。 | |
| https://osdn.net/projects/openmidiproject/forums/13724/46208/ | |
| --- Sekaiju7.5/src/EventListIndexPropertyView.cpp.org | |
| +++ Sekaiju7.5/src/EventListIndexPropertyView.cpp | |
| @@ -2190,18 +2190,6 @@ | |
| pSekaijuApp->m_theCriticalSection.Lock (); | |
| pSekaijuDoc->m_theCriticalSection.Lock (); | |
| } | |
| - if (byData[lRet - 1] != 0xF7) { | |
| - byData[lRet - 1] = 0xF7; // 20210106:可能な限り自動修正して正常終了する。 | |
| - pSekaijuDoc->m_theCriticalSection.Unlock (); | |
| - pSekaijuApp->m_theCriticalSection.Unlock (); | |
| - CString strMsg; | |
| - VERIFY (strMsg.LoadString (IDS_SYSEX_DATA_MUST_END_WITH_F7)); | |
| - AfxMessageBox (strMsg, MB_ICONEXCLAMATION | MB_OK); | |
| - pSekaijuApp->m_theCriticalSection.Lock (); | |
| - pSekaijuDoc->m_theCriticalSection.Lock (); | |
| - //m_bSettingCellString = 0; | |
| - //return FALSE; | |
| - } | |
| VERIFY (strHistoryName.LoadString (IDS_MODIFY_SYSEX_NORMAL)); | |
| VERIFY (pSekaijuDoc->AddHistoryUnit (strHistoryName)); | |
| VERIFY (pCurHistoryUnit = pSekaijuDoc->GetCurHistoryUnit ()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment