DTXC SMFファイルのimport
既にikanickさんが対応なさった模様。お疲れ様でした。
この機能はほとんどデバッグできておらず拍子変更については実装しておりませんが、
それでもよろしければbranchの方に投じてみたいのですがいかがでしょうか。(できるのかな?)
自信がない発言ですが、
1.SMFの解析は完全に独自のやり方なので、SMF解説ページを作られていたyyagiさんからするとかなり稚拙な出来になるかと…。
2.コーディング自体がお粗末で、エラー処理等のやり方がわかっておりません。
svn上でやりたいこと
・エラー処理
・拍子変更対応
・DTXC側にLP LBDのチャンネルを内部的に実装し、対象レーン一覧に表示させたい(ver.k向け譜面対応)
はい、branchに投入いただけると、すごくうれしいです (大歓迎です)。
取り急ぎ、拍子変更への対応程度でしたら、たぶん私の方で比較的容易に修正できると思います。(すぐにはできませんけど。。)
branchを追加し、rev947にて対応しました。
上記URLで公開されている実装そのまま、とりあえず投入しました。
コーディングに素人感が滲み出てるので読みにくいと思いますが_(:3」∠)_
branchへの投入、ありがとうございました。
会社にいますが現実逃避でざっとソースを拝見しました。とりあえず途中でBPMが変わる曲データはアウトのように見えます・・・が、大丈夫なのでしょうか。時間があれば自分で動作確認してみます。
なお、LPやLBDは、こっちのDTXCにも初期設定=非表示で入れちゃってもいいかなと最近は思っています。別チケットのLP/LBD譜面の吸収の話もありますし。
備忘録: TODO (適宜追記修正願います)
すみません、一つ前のコメントは私のものです。
更にもう1点TODO追加: 途中でBPMが変わる曲データへの対応
rev953で、拍子変更に対応しました。時間がおありでしたら、動作確認いただけますと幸いです。
BPMが途中で変わるデータにも対応済みです。
TODOコード修正BPM拍子変化 他諸々ありがとうございます。
BPM拍子変化の件、確認してほんとに細かい箇所をrev954にて修正しました。
test用midiも適当に変化させるものに入れ替えました。
イベントクラスができてすごく綺麗なコードでびっくりしました。。参考にさせていただきます!
rev955で、日英両言語に対応しました。
一つ要望です。HHとCYの裏チャンネルに割り当てができるようにして欲しいです。私は、Hihat Openは、HHの裏チャンネルに割り当てたいですし、Ride CymbalはCYの裏に割り当てたいです。
rev956で暫定的に裏チャンネルに対応しました。
全レーン裏指定できちゃいそうですがこの辺りは大丈夫なのかな?
速攻で裏チャンネルに対応いただき、ありがとうございます。簡単にしか動作確認していませんが、問題なく動作しているようです。全レーン裏指定できちゃうのは、まあ、とりあえず、いいんじゃないでしょうか。(ツッコミが来たら考えましょうww)
rev958で、主にMIDIインポート機能用に、LP/LBDレーンを追加しました。ただし初期設定ではこのレーンが非表示となっています。表示させるためには、ツール - オプション - 使用レーン、で、LPにチェックを入れてください。HHとSDの間に、LPレーンが現れます。表がLP(0x1B)で、裏がLBD(0x1C)です。(チップの色はどなたか適当に修正ください)
LP周りのMIDIインポート機能の動作も簡単に確認済みです。LPレーンが非表示の状態でも、MIDIインポート機能で割り振り先にLPレーンを指定することができ、実行でき、実行後にLPレーンを非表示から表示に切り替えてもちゃんとLPレーン上にチップが乗っているようです。
TODO状況更新:
LPLBDレーン追加お疲れ様です!こちらでも軽くですが確認できました。
裏Chは…元々どのレーン上に配置できるし仕様ですねヾ(:3ノシヾ)ノシ
rev959にて以下変更を行いました。
最後にMIDIファイルを読みだしたフォルダを覚えている機能
機能追加したはしたのですが、現状作業フォルダと意味合いが殆ど同じです。
DTXの保存先と切り分けたいという意図でよろしいでしょうか?
そうなると、作業フォルダをMIDI読込先に変更しない実装でいいの…か…?
rev961-964で、色々と細かい修正を入れました。
「最後にMIDIファイルを読みだしたフォルダを覚えている機能」ですが、私はDAWとかでMIDIデータを作るような方であれば、DTXのデータフォルダとは別に保存フォルダを作られているのではないかなと思いました。それでこの機能を提案したのですが、実際のところ、作業フォルダとイコールの運用をされている方が多いのであれば、元の仕様に戻してしまってよいと思います。
ところで、後はエラー処理と設定保存を入れたら完成(trunkにマージ)でいいんじゃないかなと思いますが、いかがでしょうか。
参考: 私が使っているテストデータです。DAWなどができる前の、HW音源全盛期のデータばかりですが、当時も各種テストに使っていました。tp://27.120.112.29/TESTDATA.zip
お疲れ様です。
rev964で実行したところ、チャンネル一覧のチェックの変更ができなくなっているようです。
任意のチェックボックスの値をOFFからONにして別の行を選択すると、チェックがOFFになってしまいます。(Win7 64)
上記に関連して、現状、チャンネル一覧の値を変更する度MIDIファイルを開きに行く暫定仕様になってしまっていたので(自分で何故こうしたのか…)
変更時には、すでに解析してあるCMIDI.lMIDIイベントのチャンネル等の情報から必要な情報を読みに行くように修正しようと思います。
上記不具合について解ることありますでしょうか?
「最後にMIDIファイルを読みだしたフォルダを覚えている機能」はこちらの勘違いで、
MIDIインポート反映時にstr作業フォルダを移動しないと不安定な動作になるものだと思っておりました。
が問題なさそうなので、MIDI読込時には作業フォルダを変更しない実装に変更致します。
trunkについては開発メンバー側でmidiが読み込めるのであれば、問題ないと思います。
参考アクセスできないのでまた後で確認します!
エンバグすみません。こちらでもご指摘の現象を確認しました。関連するところも、ご指摘の個所だろうと思われます。
参考のIPアドレスは 27.120.112.19でしたすみません。
yyagiです。エンバグの原因ですが、 解析の最後でドラムチャンネルの推測結果で上書きしちゃってるんじゃなかろうか。 ソースでは未確認ですが、自分でやってることなのでこれで間違いないはず。適当に修正下さい。。。
エンバグの件確認できました。ので、チャンネル変更時に必要な情報だけ読みに行く実装で直るはずです。 参考:今度はzipが存在しないみたいです_(:3」∠)_
rev965で以下の通り対応しました。
CMIDIはMIDI、トラックはトラック、イベントはイベントでといったクラス設計がまともにできておらずスパゲッティなので、
次は気をつけたいです…(むずかしい)
ご対応ありがとうございます。
MIDI ChannelListのチェックボックスをON/OFFしても、隣のMIDI AssignのNotesが増減しないようですが、これは想定通りの動作でしょうか。(前のrevではここも変わっていたような・・・)
# Ch10をON/OFFすると簡単に確認できます
参考: 同期タイミングの問題っぽいので、再確認いただけませんか?
すみません、先のコメントは取り消させてください。なぜかDesignerの同期が不十分だったようです。
解決してよかったです!
参考の方DLできましたのでこちらで色々確認してみます。
早速最初のファイル(8pd_sab1.MID)でWAVリストにBPMが大量に並んでるとかいうバグ見つけたので
はやめにプチプチ潰したいところです。
うちでは更に、BPM変更がほとんどチップとして生成されなくなりました。
これはたぶんCMIDIインポートダイアログ.csのL453の条件の問題だと思いますので、合わせて修正いただけますと幸いです。
rev967で以下の対応をしました。
参考ファイルで色々見ていってます。
rev968で重複チップの計算が間違っていたのを修正しました。
rev969で以下に対応しました。
TESTDATA\YUIのDQ2E.MIDでチップが配置されないのを確認したため、
tMIDIイベントリストから小節リストを構成する メソッドを少しだけ変更しました。
拍子変更イベントの絶対時間が、小節外にあれば、必要なだけ小節を追加するのではなく、
いずれかのイベントの絶対時間が、小節外にあれば、必要なだけ小節を追加する。
もし小節内で拍子変更があった場合はそれに従う仕様にしました。
rev970で、小節追加の方法を元に近い方法に戻しました。小節長指定がない場合に問題発生しているように見えますので、小節長指定がない場合は小節長4/4を最後に追加することで、以前のロジックをそのまま使えるようにしました。(全イベントでループさせてもよいのですが、それだと処理時間が非常に長くなりましたので、この方法にしました)
それと、設定保持/復元の仕込みを入れました。普通にMIDIインポート画面を開くと、exeと同じフォルダにtest.xmlができるので、それを修正して設定変更してください。その状態でCapsLockをONにして再度MIDIインポート画面を開くと、設定が取り込まれます。
実際には設定保存/読み込みボタンを追加して、そこからファイル指定のダイアログなんかを出すんだと思いますが、その辺は適当に付けていただけますと幸いです。
小節追加の方法の修正、ありがとうございます!
rev971で以下の対応をしました。
まだまだ穴がありそう…
そろそろ機能的に問題ない内容になってきたと思いましたので、若干のエラー処理を追加して、trunkにマージしました。
以後修正があれば、trunkでどうぞ。
なお、このチケットはexport機能にも言及していましたが、import機能の対応がキリの良いところまで来たと思いますので、このチケットではimportのみを扱うことにして、exportは別チケットにします。(後日チケット発行します)
マージありがとうございます!exportはそれこそちゃんとした知識が必要そうなので見守っております_(:3」∠)_
難易度査定マンが本格的に実装されたら、MIDIをインポートして難易度もつけてくれる!とか、夢のようです。
DTXC Rel032に搭載済み。本チケットはクローズします。お疲れ様でした!
SMFファイルのimport機能を追加する。