【2022.2.8更新】 PSG音源の「\」(¥)コマンドを用いたピッチ調整量が、音の高さに応じて変動する?
MGSDRVに関する既知のバグ情報、バグなのか仕様なのか分からないような未確認情報をまとめました。ご迷惑をおかけします。
バグ情報・不具合情報をお待ちしております。当チーム @nf_ban(主宰) または @goripon_tw(プログラム担当) までお寄せください。
- 未解決・未調査の情報
- バグではなく仕様の情報
- MMLをコンパイルできない場合の確認点
- PSG音源の「\」(¥)コマンドを用いたピッチ調整量が、音の高さに応じて変動する?
- 移調するコマンドは存在しない
- SCCI(スナッチャー付属サウンドカートリッジ)に対応している?
- 音ずれが発生する
- E+ と E が同じ音階になる
- @eエンベロープで音色を切り替えると音がおかしくなる現象
- @コマンドで一度も音色を指定せずに音を鳴らすと最初の1音だけ「ビ〜〜ッ」っという謎の音が入り、以降の音は鳴らなくなる現象
- @コマンドを指定せずに @eコマンドを利用すると演奏結果が不定になる
- 「9音リズムモード」でHチャンネルの音量が全く反映されない
- 半角スペースの入れ方に注意
- MGSCNV: ver.2→ver.3への変換の違いについて
- プライマリのマッパーRAMへしか常駐できない?
- 任意のアドレスへ移動(リロケート)ができない?
- 管理者は見ている
ちなみにMGSDRVの概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp
未解決・未調査の情報
L128を指定するとテンポがずれる?
twitter.comMGSDRVでL128を指定すると、テンポがズレるみたいだなぁ・・・
— ぎゃぶねこ (@gyabuneko) 2021年6月1日
L128はステップ値に換算すると「1.5%」なのだが、この小数点以下の端数がテンポずれの原因?
あと、テンポ76~112で%1を指定してもエラーは出ないのだが、演奏途中で音が鳴らなくなる現象も。
これら原因調査で耳コピが中断してもーた😅
kf→koの切り替え前後に共通したリズム楽器が指定されている場合、そのリズム楽器が発声されない?
詳細不明ですが、回避策はあります。
vbの相対指定を使用すると他のリズム楽器も巻き込まれて音量が変化する?
詳細不明です。
opll_tuneで指定した値によっては音程が意図しない高さになる?
詳細不明ですが、回避策はあります。
machine_id の使い方が不明?違いはあるのか?問題
私(nf_ban)も調査を進めていますが、今のところ machine_id に対応するアプリは MGSEL のみ、machine_id の違いを定義する仕様書の類も存在しない、という状況です。
バグではなく仕様の情報
MMLをコンパイルできない場合の確認点
1行が256文字を超えるとコンパイルに失敗する・演奏されない現象が発生する
確か一行の文字数にコンパイラ都合の上限があるので、複数行に分ければ通るようになると思います😊
— drm (@NudiDrm) 2022年3月16日
MSXが現役だった頃は性能不足によりテキストエディタ側が長い行に対応できないといった都合が多々あり、横80文字程度の長さで改行を入れることがマナーだったりユーザー自身がそうする癖を付けたりしたため、昨今までこのような現象が見逃されていました。
現状は、MSXplayでは適度な長さで改行を入れることで対応してください。よろしくお願いします。
MSXplayのMMLをあえて実機でコンパイルしたときに失敗する際の注意点
#MSXplay でシェアされる #MGSDRV 用MMLをダウンロードしてMSXの実機でMGSC(コンパイラ)に通してもうまくいかないときの確認点
— Takashi Kobayashi (@nf_ban) 2022年1月3日
①MML(テキストデータ)の終端に0x1A(EOFコード)が存在しないと正常動作しない
②MMLに「#no_mgs」が含まれると保存されない
③文字コードをシフトJISにしないと誤動作する pic.twitter.com/HwjfAVX8p9
特にMSXplayでシェアされているMMLデータをあえてMSXの実機でコンパイルしようとした場合につまづくポイントです。Windowsでは特に気にしませんが、テキストファイルの終端を意味するEOFコード(0x1A)がテキストファイルの終端に存在しない場合は意識的に付与する必要があります。
PSG音源の「\」(¥)コマンドを用いたピッチ調整量が、音の高さに応じて変動する?
え・・?
— K.H.(焼飯太郎) (@Yakimeshi_Taroh) 2022年2月7日
MGSDRVにおける、PSG音源の「\(¥)」コマンドを用いたピッチ調整量って、音の高さに応じて変動する???
オクターブ2のドの音を「\」コマンドで半音上げるには「96」必要なんですが、オクターブ3のドでは半分の「48」でした。
オクターブ7のドだと僅か「3」!https://t.co/lxSlYJadSe
PSGの周波数のレジスタ設定値が周波数の逆数に比例するので、高い音ほど音程の精度が甘くなることが原因と推測されます。
— drm (@NudiDrm) 2022年2月7日
SCCはPSGとの相互運用性を重視してか、PSGと同じ周波数の決定法となってますね。
多分、デチューンのパラメータは周波数そのものの補正値ではなく、周波数レジスタ設定値に対する補正値なのではないかと思います。
— drm (@NudiDrm) 2022年2月8日
下記の表6.1がレジスタ設定値の具体例となります。オクターブが上がると設定粒度が粗くなるのが分かります。https://t.co/U8G1EwODRj
これはPSGの仕様ですね
— gary (@keijiro_im) 2022年2月8日
高音域ほど僅かな数値で変化してしまい扱い辛いのです
仕様、とのこと。
移調するコマンドは存在しない
#psg_tune はPSG音源全体の音程の元となるデータを変更する命令で、これを用いれば移調も再現可能ですが、特定のタイムラインや特定のチャンネルだけ移調するようなケースは想定されていません。
SCCI(スナッチャー付属サウンドカートリッジ)に対応している?
コナミの各種ゲームカートリッジに内蔵されていたSCC音源はチャンネル4とチャンネル5を共通の波形でしか利用することができないハードウェア仕様でしたが、「スナッチャー」の付属サウンドカートリッジ(通称:「SCCI」「SCC-I」「SCC+」)はチャンネル4とチャンネル5を独立して利用できるハードウェア仕様となっています。
ですが、MGSDRVではSCC-Iに現状非対応です(SCCと同じ振る舞いを行います)。SCCIのチャンネル4とチャンネル5は共通の波形で動作します。今後対応できるかもしれませんが、開発機材=実物(カートリッジ)の確保が急務。
SCC-I対応を行うにはドライバの新設計が必要との見解です。現状はペンディングです。
音ずれが発生する
E+ と E が同じ音階になる
一般的にMML表記の「E+」は「F」の音階または相当の音階になるようですが、MGSDRV(MGSC)では「E」になります。方言となりますのでご注意ください。
@eエンベロープで音色を切り替えると音がおかしくなる現象
MGSDRVの @e コマンドは「現在の音色にエンベロープをコピー」という意味です。 @ コマンドで一度も音色を指定していない状態で @ e コマンドを使うと、音が出なかったり変な音が出たりします。
特に曲の冒頭で音がおかしくなる場合が目立つのは、キーオンから @e が適用されるまで一瞬だけ別の音色が適用されているから。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。
@コマンドで一度も音色を指定せずに音を鳴らすと最初の1音だけ「ビ〜〜ッ」っという謎の音が入り、以降の音は鳴らなくなる現象
エレキベースの音が一瞬鳴った後、空のユーザー定義音色(すべての音色パラメータが0)に切り替わったことによって出る異音、とのこと。発音前に音色指定を必ず行ってください。
@コマンドを指定せずに @eコマンドを利用すると演奏結果が不定になる
確かに、cpu=1にしたら、正常に鳴りました!Σ(´∀`;)
— ぎゃぶねこ (@gyabuneko) 2021年3月2日
という事は、実機MSXターボRの高速モードでそのMGSデータを実行しても、同じような現象が発生しますか?
今手元に確認できるターボRがないのですが、おそらく発生するのではないかと思います。なので、@ コマンドを @e コマンドの前に記述する対策の方がおすすめです。
— DSA (@ym2413) 2021年3月2日
「9音リズムモード」でHチャンネルの音量が全く反映されない
本来設定できない「9音リズムモード」。特殊な環境なのでバグなのか仕様なのか分かりにくいのですが、OPLLの仕様のようです。
こちらは新バージョンへの要望。
半角スペースの入れ方に注意
twitter@Wiz.さんの報告。「音階と音長の間」の半角スペースは無視される、マクロ種別と数値の間に半角スペースを入れるとエラーになる。バグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。
MGSCNV: ver.2→ver.3への変換の違いについて
変換後のテンポと音調が1/2になるのはバグとも言えるかもしれませんが、ver.3シリーズにおいては仕様となります。
プライマリのマッパーRAMへしか常駐できない?
各種拡張メモリカートリッジをスロットに差すような「マッパーRAMが複数ある状態」の場合でも、MGSDRVではプライマリのマッパーRAMでしか常駐できません。turboR規格の場合は本体内蔵RAMが自動的にプライマリになります(A1ST 256KB、A1GT 512KB)。
任意のアドレスへ移動(リロケート)ができない?
MGSDRV本体はリロケータブルではありません。ただし過去にMGSDRV.RELというファイルがパソコン通信ネットで流通していて、MSX-L80を用いて再構成することで任意のアドレスへ移動が可能だったようです。
当クラブではMGSDRV.RELを入手および管理していません。もし今でも関連ファイル・アーカイブをお持ちの方がいらっしゃいましたらぜひご連絡ください。
管理者は見ている
MGSDRVのトップページ → https://www.gigamix.jp/mgsdrv/