kuma4649 / mml2vgm

GNU General Public License v3.0
105 stars 10 forks source link

extended HuC6280 PCM #122

Closed musicalman closed 2 years ago

musicalman commented 2 years ago

こんにちは。 HuC6280のpcm機能を拡張するためのアイデアをいくつか考えてみました。 再生速度は@p定義で自由に設定できます。しかし、ノートデータは音に影響を与えず、すべてのノートが同じ音になります。そこで、@p定義でo4cのレートを指定すると、他の音もそれに合わせて調整され、メロディを奏でることができるように変更できないかと考えています。 また、サンプルループにも対応できないかと思っています。 ただ、HuC6280のpcm機能では限界があるのかもしれませんね。私にはわかりません。 だから、無理なら無理でいいんです。

kuma4649 commented 2 years ago

PCM map機能使えませんか?

musicalman commented 2 years ago

そうですね、pcm Mapなら大丈夫でしょう。私はこのようにしています。 http://www.fileconvoy.com/dfl.php?id=g802b0d2097526edd10003777817d2aa0c0ee63a519 問題は重複が多いことで、サンプルのレートやピッチを変更できないため、同じサンプルが8回コピーされます。 これは、HuC6280の限界でしょうか?

kuma4649 commented 2 years ago

HuC6280の限界がどこまでなのかわからないので、今のところ8kHz固定にしています。 PCEのmusicドライバの作り方によっては、可変周波数もある程度サポートできるかもしれませんが そういうものを知らないので、とりあえず今はこの8kHz固定を基準にしています。

musicalman commented 2 years ago

ああ、わかりました。 不思議なのは、mml2vgmの中では、好きなレートが使えるんです。レートは無制限のようです。 もしかしたら、それはエミュレーションなどの副作用かもしれません。

kuma4649 commented 2 years ago

??

具体的な説明をお願いできますか?

musicalman commented 2 years ago

以前のコメントの中で、gwiのデータ例を掲載しました。リンクはこちらです。 http://www.fileconvoy.com/dfl.php?id=g802b0d2097526edd10003777817d2aa0c0ee63a519 このファイルでは、1つのサンプルでどのようにメロディーを演奏するかを示しています。 そのためには、各音ごとに別々のサンプルをロードする必要があります。 説明になっていますか?

kuma4649 commented 2 years ago

あぁなるほど。 恐らく、この場合は指定された周波数固定で再生するようにコンパイルされますね。 vgmのストリームの機能が利用されていると思います。

そうか、HuCの場合は8kHzではなく、ユーザーが指定した周波数でさいせいするようにしてたんですねぇ。失礼しました。

多分、実際に実機で鳴らすことが可能な周波数がわからなかったからだと思います。。。

kuma4649 commented 2 years ago

これはこのままで問題ないと思います。 確かにメロディを演奏するには、音階違いのPCMを用意することになります。

実際のPCEで演奏するケースを考えると、可変する周波数の仕組みを実装することは難しいと考えます。 よって、周波数を固定すると思うのですが、mml2vgmはその固定するという縛りをユーザーに委ねているということになります。

musicalman commented 2 years ago

ああ、それなら納得です。それならば、問題ありません。 このままでいいと思いますよ。他のサンプリングレートを選択できる可能性があるのはいいですね :)