トップ 一覧 検索 ヘルプ PDF RSS ログイン

BBS-メイン掲示板/5

 CSM音声合成モードについて - すーぱーたーぼ (2010年10月31日 04時08分08秒)

ご無沙汰しております。CSMの実験を拝見させてもらいました。NRTDRVのMMLで切り込んでくるとは思ってなかったのでちょっと驚きました。CSMは奥が深そうなので研究しがいのあるテーマの一つですね。喋るpianoも知りませんでした。お馬鹿な人はドイツにもいるんですね。

それはそうと、一つ気にかかったことがあるのですが、CSM音声合成モードは全チャネルのKEY OFF/ONをするだけと説明がありますが、全チャネルの音量もKEY ONに同期して更新されるという違いがあります。OPM互換IPを作った時に最初はこれを無視していたのですが、ゼリアードのサンプルにてプチノイズと音質の劣化がありました。楽曲再生と同時発生はできなくなりますが、CSMモードで再生したほうが音質は向上すると思います。nrtdrvの場合は、毎フレームの冒頭で次のフレームの直前あたりにオーバーフローするようにTimerAを設定ればよいのかな?

あ、ついでに私事ですがX1リソースセンターは本日(2101.10.31)で閉鎖というかinfoseekの無料webサービスが終了しちゃうみたいです。継続したけりゃ金払え的な感じがイヤなので、ドメイン取って別の場所に移設する予定でいます。

  • X1リソースセンターはX1センターと改名してhttp://www.x1center.org/へ移設しました。が、前サイトは既に消されちゃったので告知どうしよう〜 - すーぱーたーぼ (2010年11月01日 17時46分54秒)
  • はじめまして。hex125(もしくは293)と申します。NRTDRVでCSM音声合成のテストをやった張本人です。

実は僕自身、今に至るまでCSMモードを使ったことがありません^-^;;; 流れとしては、Timer-Aが0になる→割り込み発生。この間にOPMのレジスタ内容を書き換える→書き換え処理終了。割り込みから復帰→Timer-Aオーバーフローが発生→キーONし書き換えたパラメータを確実に更新した後、キーOFF・・・という風に理解していますが、解説では少しボカして書いてますね^^;

また、とある方から、CSMモード時はキーオンの際に出力波形の位相がリセットされるとご指摘を受けました。CSMモードを使わない場合は、キーONのレジスタ書き換えを自前で行わなければなりませんから、OPM busyの影響をモロに受けてしまい、完全に同じタイミングでの更新はできません。CSMモードで駆動したほうが音質的に良くなるだろうというのは僕も想像がつきます。

ただ、NRTDRVでCSMモードを使うにはどうすればいいのか・・・データを更新する方法が問題なんですよね。。。Timer-Aの値を常に監視してチェックする仕組みを作るか、CTCのタイミングとTimer-Aのタイミングを完全にあわせるかくらいしか方法は思いつきませんが・・・次にやってみる気になった時、挑戦してみたいと思います。ご指摘有難うございました^^

そしてサイト消滅と移設、お疲れ様でした。早速、このサイトからのリンクをX1センターに変更しました。 - hex125 (2010年11月01日 20時10分16秒)

  • はじめまして。スーパーターボ様からご紹介を頂きこちらを伺っておりましたら、hex125様のレスが以前に私的調査した結果(監視の方)と同じでしたので思わず書き込んでしまいました。turboZ実機をもっておりますので、近々NRTDRVを使用させて頂こうと思います。ちなみにスタークルーザー256色対応X1エミュでもCMSヴォイスは聞けるようです(既出でしたらすみません) - Y.S. (2010年11月02日 14時17分48秒)
  • nrtdrvでCSMモードを叩く方法ですが、フレームのインターバル毎の最初にTimer-Aをリセット、インターバル周期よりちょい短かく設定、LOAD、続けて次回のKEY ON時に更新したい音量を設定します。その後一定時間後にTimer-Aがオーバーフローしますから、CTC割り込みからTimer-A開始までの遅延が常に一定であれば、Timer-Aオーバーフローのインターバルも1サンプリング未満になりませんか? ただ、CSMモードのTimerAオーバーフローで同期更新されるのは音量だけなので、周波数も変化させる方法ではCSMモードはかえって邪魔になると思います。 - すーぱーたーぼ (2010年11月06日 16時08分51秒)
  • 2010年11月02日の私の調査結果は間違いであることが再調査の結果判明しました。X1センターの方に経過を書きましたがゼリアードではTimerAオーバーフローフラグは監視していませんでした。BUSYフラグのチェックのみでした。訂正いたします。 - Y.S. (2010年11月09日 02時07分33秒)
  • 某社のCSM音声合成ではTimer-A周期は基本周波数を発声するものでフレーム周期とは無関係でした。2つ上の書き込みは全くの見当違いです。適当な事を書いてすいませんでした。某社のCSM再生データはnrtdrvで普通に再生できそうです。 - すーぱーたーぼ (2010年11月11日 17時07分26秒)
お名前: コメント: