はじめまして。
UTAU の音源を使ったスピーチエンジンみたいなものを作ってみようかと思って、ネットを見ていたところ
こちらを見つけて、「SoundFont による音色設定」というスマートさが気にいって使ってみたのですが、
作ってみたところ、仕様に関して「こうでもいいのかな?」と思う部分がありましたので、ご報告させて
頂きます。プログラム的にはどうにでも対応できる部分ですし、わざわざ違うフォーマットを作って
名乗る必要もないので、正直迷っています。「その仕様は考えたけど、ここがだめだ」という見識が
あったりしましたら、是非教えて下さい。
そもそもの疑問。SampleHeader の OriginalPitch がオリジナルのキーを示さず、ファイル名に記述されること。
OriginalPitch に指定すると、キーボードで発声させたときに「ドレミ」の音程が付いてしまうため、それを避けるために
登録ノートと同じ値を入れているのは理解できますが、楽器の「音源」としてみた場合は「どうかな」と思う部分です。
さらに、ベロシティーでの切り替えも、ピアノロールでの入力を容易にするため、として採用されているのは理解
できますが、「手動での入力が大変である」という事には変わりないので、そこまでこだわる必要もないのかと
思います。
そして、このフォーマットの場合、音程のための別シーケンスが必要になります。
「言葉を選ぶ人と音程をつける人を分けて、リアルタイムに歌うパフォーマンスがしたい」なら有りな方法ですが(笑)
単純に歌わせるフォーマットとしては、やや面倒な気がします。まぁ MIDI ファイルに複数トラック入れるのは
問題ないので、ファイルフォーマットとして困るわけではありませんが。
というわけで、ふと思ったのですが
1. SoundFont の OriginalPitch に音源のピッチを入れる
2. 「あいうえお」は program change で実現する
3. 「きゃ、きゅ、きょ」は bank change で実現する
というのはダメなのでしょうか。そうすれば、音程は通常の楽曲と同じように入力できます。
ピアノロールはそもそも使わない(MIDI はステップ入力派です(笑))のであまりピンとこないのですが、
プログラムチェンジで 1 音づつ切り替えるのは、現行方式に比べてやはり大変なのでしょうか。
あるいは、PC 音源での作業をやらない(というか MIDI は SC-55 の時代に遊んでた世代)ので、最近の事情は
よくわからないのですが、プログラムやバンクチェンジには時間がかかったり、不連続さが発生するものなので
避けるべき、ということなのでしょうか。
なお、program,bank 方式のメリットは、やろうとおもえば音域別データ収録なども可能ということです
(そこまでして音源データを作る人がいるかどうかは別ですが)。また、velRange を使って、velocity 別の
音色を定義すれば、ベロシティーによる感情表現もできるかもしれません。
というわけで、現 Renoid 方式でいくか、program,bank 方式にして、現データからのコンバータを作るか
迷い中です。是非先駆者としてのご意見をお願いします。