討論區: おーぷんMIDIぷろじぇくとフォーラム (Thread #45890)

拡張子 .midi について (2022-05-18 19:20 by trueroad #89952)

世界樹たいへん便利に使わせていただいております。このようなソフトウェアをオープンソースで公開していただきありがとうございます。

さて、スタンダードMIDIファイルの拡張子は .mid のことが多いようには思いますが、.midi になっている(3文字ではなくて4文字になっている)ものもかなりあるように思います。`foobar.mid` というファイル名ではなくて `foobar.midi` というようなファイル名のことですね。
これを世界樹で読み込もうとすると「拡張子が正しくありません」というメッセージが出て読み込むことができません。拡張子 .midi のファイルもスタンダードMIDIファイルとして読み込めるようにしていただけないでしょうか。

ご検討いただければ幸いです。

回覆 #89952×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-19 19:15 by trueroad #89963)

そういえば Visual Studio Community Edition ならビルドできるのかということに気が付きましたので、自分でパッチ作ってやってみました。これだけではダイアログが .midi に対応できていないなど不十分なところもあるかと思いますが、ビルドしてみたところ、とりあえずは .midi のファイルでも読み込みできるようになりました。

```
--- SekaijuDoc.cpp.org
+++ SekaijuDoc.cpp
@@ -537,6 +537,7 @@
}
// スタンダードMIDIファイル(*.mid)の場合
else if (strExt.CompareNoCase (_T(".mid")) == 0 ||
+ strExt5.CompareNoCase (_T(".midi")) == 0 ||
strExt.CompareNoCase (_T(".vsq")) == 0) {
m_pMIDIData = MIDIData_LoadFromSMF (lpszPathName);
if (m_pMIDIData == NULL) {
@@ -1017,6 +1018,7 @@
BeginWaitCursor ();
CString strPathName (lpszPathName);
CString strExt = strPathName.Right (4);
+ CString strExt5 = strPathName.Right (5);
CString strMsg1;
CString strMsg2;
long lRet = 0;
@@ -1071,6 +1073,7 @@
}
// スタンダードMIDIファイル(*.mid)の場合
else if (strExt.CompareNoCase (_T(".mid")) == 0 ||
+ strExt5.CompareNoCase (_T(".midi")) == 0 ||
strExt.CompareNoCase (_T(".vsq")) == 0) {
// MIDIイベントのチャンネルチェック
long lCount = 0;
```

パッチがうまく貼り付けられないですね。すみません。
回覆: #89952

回覆 #89963×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-19 19:36 by trueroad #89965)

> パッチがうまく貼り付けられないですね。すみません。

一応、パッチをここに置いておきます。
https://gist.github.com/trueroad/2b963111a8662432f9ecf47ae705ed43
回覆: #89963

回覆 #89965×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-19 20:08 by kuzu #89967)

このたびは、世界樹をご利用いただき誠にありがとうございます。
さて、拡張子の.midiは、確かに取り扱えません。
読み込めるようにすることは可能ですが、「開く」と「名前を付けて保存」ダイアログの
整合性について悩んでおり、決着がついておりません。
隠し機能として読み込み・上書き保存のみできるようにするのであれば、ご指摘の通りで問題ありません。
パッチをつけていただきありがとうございます。
パッチの部分は次回リリース時に対応しておきたいと思います。

回覆: #89952

回覆 #89967×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-20 00:12 by trueroad #89979)

先ほどのパッチを次回リリースで取り込んでいただけるとのこと、大変ありがとうございます。
とりあえずダイアログ周りの部分についても対応するパッチを作ってみました。

リソースIDを追加・変更する際のポリシーなどわかっておらず変なことをしているかもしれませんが、
とりあえず一つのご提案という形で出させていただきます。

パッチはここに置きました。
https://gist.github.com/trueroad/32607d0699e8ea8336846ff390a8d45d
回覆: #89967

回覆 #89979×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-22 18:41 by kuzu #90004)

ご提案ありがとうございます。

ダイアログの方は、単純に言えば拡張子midiの行を1行増やせばいいのですが、
今のところ初心者を混乱させないために、midで統一する方針をとっております。
重くならない限り、隠し機能として読み込める分には問題ありません。

今のところ個人的な要望は、オープンソースなので各自対応でお願いしたいと思います。
(または、読み込みダイアログだけ、midと同一の行にmidiを含めるかもしれません)。
(同一フォーマットは1フォーマット1行としている)。
(名前を付けて保存ができないので、まだどうするか決まらず)。

同一フォーマット・異拡張子の扱いは、
Microsoftペイントの表示・挙動(jpg, jpeg等)に合わせるのが一番理想的ですので、
最終的には名前を付けて保存も含めてそれを目指したいと思っておりますが、
会社が忙しく、時間が確保できないので、もう少し睡眠時間と考える時間をください。
回覆: #89952

回覆 #90004×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-22 20:50 by kuzu #90005)

パッチをよく読んだところ、理想的状態を反映しているようなので、
取り急ぎコピペしてテストしたところ、うまくいきましたので、これも採用したいと思います。
あと、ポリシーやコメントの整理、*.smfは廃れているがついでに含めるかどうか考えます。
次回リリース時に反映したいと思います。

VisualC++やMFCやドキュメントビューアーキテクチャーのマルチドキュメントも使い慣れているようで、
素晴らしいパッチのおかげで高速に改良ができました。心から感謝を表したいと思います。

なお、リソースがUTF16になっているのはVS2008の時リソースコンパイラがUTF8だとおかしかったためです。

回覆: #89952

回覆 #90005×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入

Re: 拡張子 .midi について (2022-05-24 19:43 by trueroad #90017)

メッセージ #90004 への返信
> 今のところ個人的な要望は、オープンソースなので各自対応でお願いしたいと思います。

オープンソースなので、というところは仰る通りと思います。
ただ、現在は zip の配布ファイル中にソースを同梱されているような形かと思いますが、
オープンソース的な共同開発みたいにしていくのであれば git リポジトリなどの形にしていただいた方が
よいのではないかなぁとは思います。
ここ osdn でも git リポジトリを扱うことができる思いますし、
github とかでもいいのかもしれません。

ですが、それはそれでかなりのお手間がかかってしまいそうですし、
そうしたからといって貢献してくれる人が増えるかというと何とも言えませんし、
差し出がましいことで申し訳ありません。

メッセージ #90005 への返信
> パッチをよく読んだところ、理想的状態を反映しているようなので、
> 取り急ぎコピペしてテストしたところ、うまくいきましたので、これも採用したいと思います。
> あと、ポリシーやコメントの整理、*.smfは廃れているがついでに含めるかどうか考えます。
> 次回リリース時に反映したいと思います。

採用いただけるとのこと、大変ありがとうございます。

> VisualC++やMFCやドキュメントビューアーキテクチャーのマルチドキュメントも使い慣れているようで、
> 素晴らしいパッチのおかげで高速に改良ができました。心から感謝を表したいと思います。

実のところ MFC はほとんど触ったことがありません。
MFC 抜きの Win32 API ならば触っていたのですが、
Visual Studio Community Edition 登場までは MFC を触りたくても触ることができずでした。

> なお、リソースがUTF16になっているのはVS2008の時リソースコンパイラがUTF8だとおかしかったためです。

なるほど、そういう経緯だったのですね。
ありがとうございます。
回覆: #90005

回覆 #90017×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) 登入