堕天使の煉獄
2016-05
15
03:33:11
新旧いりまじり
難儀やのう……smfフォーマットって。
相変わらずちまちま(ちょっとさぼりぎみ)レコポンライクなmidiシーケンサ作り中。
んで、以前組んであったsmfファイルの読み込み部分を組み直ししてるのですが、キチンと対応しようとすると、ほんと面倒なフォーマットだなぁ……と。
フォーマットに関する資料がちょっとググればいくらでも出てくるので、そういう意味では大変に恵まれてはいるのですが、いかんせん、その情報の精度が……。
インターネット以前のパソ通時代からある様なフォーマットなので、同じフォーマットでも時代によっていろいろと変遷している部分があるんですよね。
そんで、以前はこういう用途だったけど、現在ではこういう用途で使われるのが一般的。
みたいなのが結構ある。
で、ググってぽこぽこでてくるフォーマットに関する情報のってるサイトが、その「以前はこういう用途だったけど」の方の情報が普通に載ってたりすることがあるので、情報の確度を調べるために、複数の情報サイトで一致してるかを確認する必要があったりするんですよね。
それでも、ほんとにそれが正しいのか……という不安がつきまとうぽ。
たとえばフォーマット1でも、
トラック=ポートと見立てて、トラックデータ毎にフォーマット0の形式のデータが入ることで(1トラックマルチチャンネル)、マルチポート用データとする。
と言う形式と
1トラックデータ毎にトラックデータとして入っていて、(1トラック1チャンネル)メタイベントでポート番号を指定する形式。
という2種類があったりする。
最近では後者の方が一般的。と書かれているんだけども、どこまで一般的なのかという情報は見あたらない。前者のほうは、かなり古い形式らしいのだけども……いまだに採用しているデータがどの程度あるのか。無視して良いのか。読み込み設定で切り替えられるようにしてサポートするべきなのか。
その辺の判断がつかないぽ。
んでも、レコンポーザがはき出すsmfでは、後者のメタイベントでのポート指定が必ずトラック先頭についてたりするので、レコポン自体、パソ通時代、dos版時代の頃からあるようなソフトなので、そのソフトが後者の物を使っている所を見ると、もはや前者の形式はとっくの昔に死滅したフォーマット形式……とみてよい様な気もするんですけどね。
それ以前にこのメタイベントってのも、イベントのステータスコードは0xFFから始まるのですが、もともとは0xFFは音源のフルリセット(電源投入時の状態にリセットする)というイベントと定義されていたりする。
が、現在ではその用途では使われず、0xFFの後にメタイベントの種類、データと続くイベントとして使う様になっている。
んでもって、メタイベントでポート設定を行うのが一般的ということは、フルリセットの用途は完全に現在では使われないと見て良いと思われる。(バイナリだけ見てメタイベントなのか、フルリセットなのか見分ける術は無いので)
でも意外にフォーマットの情報サイトでは0xFFはリセットだよーと書かれている所がおおかったりして。
おそらく古いsmfフォーマットの仕様文書をそのまま移してるだけなんだろうな。
その辺でも混乱があったりして。(リセットの0xFFとメタイベントの0xFFて別の位置ででてくるデータをさしてて、何か仕様見落としてるのかと迷った)
今のところ、データフォーマットとして0xFFはメタイベントとして扱うけど、音源にたいして0xFFを送信するとリセットになる……という感じなのかな。
メタイベント自体は、曲名とか初期テンポとか、実際には音源などに送らないデータで、シーケンサで読み込む用途のデータばかりなので。
それをあえて送った場合、リセットとして働く、という理解でよいのか。うーむ。
そんなかんじで、何が最新? なにが現時点での一般的?
と言うところで結構情報が交錯していてめんどくさい……。
ほんと、この手のやつで、フォーマットの情報が全くなくてフォーマットの解析から始まるみたいなのに比べれば、かなり恵まれてる方なんですけども……情報が大量にあるのに偽情報てと語弊があるけど、現状に即してない情報もかなり混じってるってのも、これはこれで厄介だなぁ……と。
そんなとき、参考資料としてURLが記載されてる所があって、見てみると日本工業標準調査会と言うところで、JIS規格のpdfが閲覧出来る模様。
おお、これなら、おそらく最新版っぽい規格がわかるのでわ?
とか思ったのですが…。
まずfirefoxだと見れない……DLすると見れない保護ついてるPDFだからなのか、入れたくもないadobe acrobatなんかも入れてみたけど見れない。
結局何年ぶり? ってぐらいに久々にIE立ち上げてみたらようやく見れるw
が、メタイベントに関しては一切触れられていない。
規格名称:電子楽器ディジタルインタフェース(MIDI)
……ふむう。
どうやらコレはmidiの規格で、midiをつかったデータの送受信を行う機器を作る人とかのための物っぽい。
んでもってメタイベントは、ソフト側で読み取る情報であって、midi機器に送る情報ではないものな。
そうなると、やっぱり0xFFてのは、midi機器に送信する場合はリセットになるけど、ソフトでsmf読み込んだ時は、メタイベント扱い。
んで、基本的には0xFFでのリセットイベントは存在するけど使わないのが規格的にも普通らしい。
機器によって何をリセット対象とするのかは任意だったりするらしいので、送信側から特定の効果を期待して送れるものではないっぽい。送信側と受信側が同じメーカー製とかで、連携してリセットの効果が既定のものであると確定している時なんかに使うかんじなのかな?
てな感じで、midi規格の説明ページとsmfのフォーマットの説明のページがごちゃ混ぜにしちゃってるから問題だったんだなとか今頃気づいたりw
なんにせよ、めんどっちぃ……。
でも規格書みていろいろと気づくこともあったので、よしとするか……。
たとえばランニングステータスは、smf読み込みのときは邪魔くさい仕様なんだけども、単にsmfのデータ量を圧縮する以外にも、midi機器に大量のイベントを送る際に、データ転送量の圧縮にも使われてるんだなと。同時発音数いくらあっても、midiケーブルの転送量の限界はわりと一杯一杯なので、ソフト側からmidi機器に送る際にもランニングステータスを使うべきなのね。
とか思ったけど……でもmidi機器にデータ送るのってapi任せなので、ランニングステータスあたりはapiの中で勝手にやってくれるのかしらん?
んでもって、最近のmidi機器はmidiケーブルじゃなくてusb接続が主流なので、転送量は問題にならない感じになってる気もするし。
この辺、ソフトウェアで考慮する必要のない情報なのかもしれない。
ここでもmidi規格とsmfフォーマットの話が混じっちゃってるなw
なんかがーっとコーディングしちゃえばいいのに、なんか知的好奇心が勝って、回り道ばかりしてるからちっとも進まないのかもしれない……。
相変わらずちまちま(ちょっとさぼりぎみ)レコポンライクなmidiシーケンサ作り中。
んで、以前組んであったsmfファイルの読み込み部分を組み直ししてるのですが、キチンと対応しようとすると、ほんと面倒なフォーマットだなぁ……と。
フォーマットに関する資料がちょっとググればいくらでも出てくるので、そういう意味では大変に恵まれてはいるのですが、いかんせん、その情報の精度が……。
インターネット以前のパソ通時代からある様なフォーマットなので、同じフォーマットでも時代によっていろいろと変遷している部分があるんですよね。
そんで、以前はこういう用途だったけど、現在ではこういう用途で使われるのが一般的。
みたいなのが結構ある。
で、ググってぽこぽこでてくるフォーマットに関する情報のってるサイトが、その「以前はこういう用途だったけど」の方の情報が普通に載ってたりすることがあるので、情報の確度を調べるために、複数の情報サイトで一致してるかを確認する必要があったりするんですよね。
それでも、ほんとにそれが正しいのか……という不安がつきまとうぽ。
たとえばフォーマット1でも、
トラック=ポートと見立てて、トラックデータ毎にフォーマット0の形式のデータが入ることで(1トラックマルチチャンネル)、マルチポート用データとする。
と言う形式と
1トラックデータ毎にトラックデータとして入っていて、(1トラック1チャンネル)メタイベントでポート番号を指定する形式。
という2種類があったりする。
最近では後者の方が一般的。と書かれているんだけども、どこまで一般的なのかという情報は見あたらない。前者のほうは、かなり古い形式らしいのだけども……いまだに採用しているデータがどの程度あるのか。無視して良いのか。読み込み設定で切り替えられるようにしてサポートするべきなのか。
その辺の判断がつかないぽ。
んでも、レコンポーザがはき出すsmfでは、後者のメタイベントでのポート指定が必ずトラック先頭についてたりするので、レコポン自体、パソ通時代、dos版時代の頃からあるようなソフトなので、そのソフトが後者の物を使っている所を見ると、もはや前者の形式はとっくの昔に死滅したフォーマット形式……とみてよい様な気もするんですけどね。
それ以前にこのメタイベントってのも、イベントのステータスコードは0xFFから始まるのですが、もともとは0xFFは音源のフルリセット(電源投入時の状態にリセットする)というイベントと定義されていたりする。
が、現在ではその用途では使われず、0xFFの後にメタイベントの種類、データと続くイベントとして使う様になっている。
んでもって、メタイベントでポート設定を行うのが一般的ということは、フルリセットの用途は完全に現在では使われないと見て良いと思われる。(バイナリだけ見てメタイベントなのか、フルリセットなのか見分ける術は無いので)
でも意外にフォーマットの情報サイトでは0xFFはリセットだよーと書かれている所がおおかったりして。
おそらく古いsmfフォーマットの仕様文書をそのまま移してるだけなんだろうな。
その辺でも混乱があったりして。(リセットの0xFFとメタイベントの0xFFて別の位置ででてくるデータをさしてて、何か仕様見落としてるのかと迷った)
今のところ、データフォーマットとして0xFFはメタイベントとして扱うけど、音源にたいして0xFFを送信するとリセットになる……という感じなのかな。
メタイベント自体は、曲名とか初期テンポとか、実際には音源などに送らないデータで、シーケンサで読み込む用途のデータばかりなので。
それをあえて送った場合、リセットとして働く、という理解でよいのか。うーむ。
そんなかんじで、何が最新? なにが現時点での一般的?
と言うところで結構情報が交錯していてめんどくさい……。
ほんと、この手のやつで、フォーマットの情報が全くなくてフォーマットの解析から始まるみたいなのに比べれば、かなり恵まれてる方なんですけども……情報が大量にあるのに偽情報てと語弊があるけど、現状に即してない情報もかなり混じってるってのも、これはこれで厄介だなぁ……と。
そんなとき、参考資料としてURLが記載されてる所があって、見てみると日本工業標準調査会と言うところで、JIS規格のpdfが閲覧出来る模様。
おお、これなら、おそらく最新版っぽい規格がわかるのでわ?
とか思ったのですが…。
まずfirefoxだと見れない……DLすると見れない保護ついてるPDFだからなのか、入れたくもないadobe acrobatなんかも入れてみたけど見れない。
結局何年ぶり? ってぐらいに久々にIE立ち上げてみたらようやく見れるw
が、メタイベントに関しては一切触れられていない。
規格名称:電子楽器ディジタルインタフェース(MIDI)
……ふむう。
どうやらコレはmidiの規格で、midiをつかったデータの送受信を行う機器を作る人とかのための物っぽい。
んでもってメタイベントは、ソフト側で読み取る情報であって、midi機器に送る情報ではないものな。
そうなると、やっぱり0xFFてのは、midi機器に送信する場合はリセットになるけど、ソフトでsmf読み込んだ時は、メタイベント扱い。
んで、基本的には0xFFでのリセットイベントは存在するけど使わないのが規格的にも普通らしい。
機器によって何をリセット対象とするのかは任意だったりするらしいので、送信側から特定の効果を期待して送れるものではないっぽい。送信側と受信側が同じメーカー製とかで、連携してリセットの効果が既定のものであると確定している時なんかに使うかんじなのかな?
てな感じで、midi規格の説明ページとsmfのフォーマットの説明のページがごちゃ混ぜにしちゃってるから問題だったんだなとか今頃気づいたりw
なんにせよ、めんどっちぃ……。
でも規格書みていろいろと気づくこともあったので、よしとするか……。
たとえばランニングステータスは、smf読み込みのときは邪魔くさい仕様なんだけども、単にsmfのデータ量を圧縮する以外にも、midi機器に大量のイベントを送る際に、データ転送量の圧縮にも使われてるんだなと。同時発音数いくらあっても、midiケーブルの転送量の限界はわりと一杯一杯なので、ソフト側からmidi機器に送る際にもランニングステータスを使うべきなのね。
とか思ったけど……でもmidi機器にデータ送るのってapi任せなので、ランニングステータスあたりはapiの中で勝手にやってくれるのかしらん?
んでもって、最近のmidi機器はmidiケーブルじゃなくてusb接続が主流なので、転送量は問題にならない感じになってる気もするし。
この辺、ソフトウェアで考慮する必要のない情報なのかもしれない。
ここでもmidi規格とsmfフォーマットの話が混じっちゃってるなw
なんかがーっとコーディングしちゃえばいいのに、なんか知的好奇心が勝って、回り道ばかりしてるからちっとも進まないのかもしれない……。
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
03
■
■
漫画関係
[憲法記念日]
[憲法記念日]
04
[みどりの日]
05
[こどもの日]
06
07
08
09
10
11
12
■
■
用事はまとめて
13
14
■
■
これはひどい……
15
■
■
新旧いりまじり
16
17
18
19
20
21
22
23
■
■
打ち切りか……
24
25
26
27
28
■
■
よくわからんかんじ
29
30
31
total:2076726 t:238 y:396
■記事タイトル■
■年度別リスト■
2024年
2024年12月(0)2024年11月(0)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp