domino/要望003/58

Last-modified: 2010-07-05 (月) 15:33:58

定義ファイルの切り替えとSMF読み込み

  • ページ: domino/要望
  • 投稿者: yp?
  • 優先順位: 普通
  • 状態: 却下
  • 投稿日: 2010-02-28 (日) 20:23:17

メッセージ

こちらでは初めまして、自滅への道のypです。Domino用の設定ファイルを作成している中で思いついたことを(あんまりまとまってませんが、できる限り)まとめてみました。件数があるので連投になりますが、もしイケそうなものがありましたらご検討ください。

CCマクロのオフセット設定が異なる定義ファイルを読み込むと値が面倒なことになります。たとえばcc:10(pan)を

CCM ID="10" Name="Pan"> <Value Default="64" /> <Memo></Memo> <Data>@CC 10 #VL</Data> </CCM>
と定義しているファイルで「0xBn 0x0A 0x40」(CC10の値に64をセット)が含まれるSMFを開くと、cc:10の値が「0」になります。

期待する動作としては「SMFで同じ値を出力する数値」(上記なら「64」)になるべきではないでしょうか。オフセットがある場合は、設定値 = #VL - オフセットで再計算するのが妥当に思えます。

ついでに、値の定義域が異なる場合は下位ビットを切り捨てるorゼロで埋める仕様だと便利そうです。たとえばPitch Bendが0~127で定義されていたら本来の下位ビットを切り捨てる(もし-64~63で定義されていれば下位ビットを切り捨てた後オフセットの64を引く)などです。


  • 私としては反対です。domino/要望000/70 の方で述べているように、異なる定義ファイルを当てる時には、SMFを通すべきです。そのデータがCCだけなら問題無いかもしれませんが、RPN・NRPN・エクスクルーシブ(・・・というか、#128以上のCCM)を使っている場合は、CCM IDが一致せず、滅茶苦茶なデータになってしまう可能性が高いです。「元の定義ファイルでSMF書き出し → 別の定義ファイルで読み込み&CCMの復元」を行った方が安全です。下手にCCだけ対応して「dmsのままで定義ファイルを変更しても良いんだ」と思わせてしまうと、無用なトラブルを招くことになるのではないかと危惧します。それよりも現状のままで「定義ファイルを変更するにはSMFを通さないと無理なんだ」と思わせておいた方が、トラブルが少なくて済むと考えます。 -- 逃亡者? 2010-02-28 (日) 22:28:21
  • よく見たらdmsではなくてSMFになっていますね (^^; 上記の例の「<Value Default="64" />」は「<Value Offset="64" />」のミスで、この手の処理についての要望でしょうか? 勘違いして、無駄に騒いでしまってすみません。m(_ _)m -- 逃亡者? 2010-02-28 (日) 22:50:40
  • <Value Default="64" />ならSMFの値=64を読み込んだときに、Domino上のイベントの値も64のままのはずです。 現段階で仕様変更はやらないつもりです(既存のものが読めなくなってしまっても嫌ですので)。 -- たかぼー? 2010-03-01 (月) 09:06:11
  • ああ、やっと自分で問題を理解しました。読み込みの問題ではなく切り替えの問題ですね。DominoにSMFを読ませるとポートAの音源用としてまず解釈されますが、ここでの解釈は問題ありません。その後自分が使いたいポートと音源に切り替えると、切り替え前と切り替え後でオフセットが異なる場合に値がおかしくなります。 -- yp? 2010-03-01 (月) 13:05:41
  • ワークアラウンドとして、手元の全定義ファイルでオフセットの値を統一しておくとよさそうです。ハードウェアやプラグインの表示と食い違う可能性はありますが・・・まあ自分で設定したならわかりそうです。定義ファイルを配布する立場だと、現在ウチでもオフセットありなし両方のファイルを配っていますが、ちょっと面倒な気がします。どうでしょう? -- yp? 2010-03-01 (月) 13:12:43
  • 環境設定のSMFページで、読み込ませる先頭ポートを「毎回問い合わせる」にしてもらえれば解決すると思いますよ。 -- たかぼー? 2010-03-01 (月) 13:27:48
  • ありがとうございます。この設定を見落としていました。しかしこれだと特定のトラックだけオフセットが異なる定義ファイルを使う場合にちょっと困るというか、トラックごとにポート設定を聞かれるのも煩わしいですし、やはり「多く流通している定義ファイルと同じオフセット」になるように定義ファイルを書いた方がよさそうに思えます。 -- yp? 2010-03-01 (月) 14:37:27
  • とりあえず上記の方針でやってみることにしたので、自分的には解決です。どうもお騒がせしましたorz。ついでに上の方でちょっと出てる「#128以上のCCM」も「一般的な定義ファイル」に合わせておいた方が無難ですね。 -- yp? 2010-03-01 (月) 14:47:12
  • えーと、では却下とさせていただきますね。 -- たかぼー? 2010-07-05 (月) 15:33:47