【 Making「鼻歌」 】 |
---|
Home | PC-6001mkII | Program | etc |
関連リンク | ●鼻歌 |
---|
更新日:2016/10/05 作成日:2016/07/31 2016年のP6オフ会で公開したネタ「鼻歌」の作成過程を以下少しずつ書き綴っていこうと思います。 |
2016/03/23:HML その5 (&コマンド) |
次に、スラーとタイの処理を実装する。MMLの書式では「&」が一般的なようなので、それに習う。「&」があれば、波形データを最初に戻さずに次の音声を鳴らす、理論上はこれだけでいいはずだ。 この処理を行うために、新たに音継続フラグを追加する。ついでに、「&数字」で前回の音を延長するのもいいかもしれないな。処理を書いたところまでで、この日はタイムアップ。 さて後日、確認を行う。「C&CC」が予定通り「フンーフン」と鳴る。「C&4C」は、まだ数字部分を無視して「フンー」と鳴る。あー、そりゃそうだ。まだ「&数字」の部分は作ってないので。 「&数字」の処理部分を作成し、再度確認。今度はちゃんと「C&4C」が「フンーフン」と鳴った。 これでとりあえず必要なものは揃った...かな? |
2016/03/06:HML その4 (A〜G, Oコマンド) |
変換テーブルもできたので、いよいよ音階の実装開始! まずはオクターブ指定から。2〜6の範囲に制限し、(オクターブ - 2)*12をワーク領域に格納する。まあこれだけ。 続いて、A〜Gコマンド。PLAY n値の相対位置に変換するテーブルを通し、先ほどのオクターブ情報を足し合わせる。これを、Pitch値への変換テーブルで変換する。あとは、Nコマンドの時と同じ処理をすればいい。 いざテスト...特に問題なさげかな。ついでに半音上げ下げも実装する。A〜Gコマンドの直後に「+」「-」があれば、PLAY n値を±1する。...これでOK! なんだかんだで、最初やろうと思っていた事の大半ができていった。 |
2016/03/04〜05:音階変換 その2 |
ここまでのプログラムを、PC-6001mkII実機で試してみる。 なぜか、「フン」の聞こえ具合が違う...。実機の方がノイズ部分の音が大きいようなきがする。あと、以前から思っていたが、特に高音のときに若干実機の方が高い音になる。 以前にkaychang6601さんが調べていた通り、実機とエミュとではPitchが1つずらすと概ね音の高さが合うようだ。音階の変換テーブルは実機をベースにするかな。とすると、Pitch値は1上がるんだっけ、下がるんだっけ?えーい、実機でもう一度調べなおしちゃえ。 再度、拙い音感をもって聞き取ったデータを元に、変換テーブルを作成する。青い点が、近似曲線を元に近い位置をプロットしたものになる。 PLAY文のn値は、オクターブ2(O2)が12〜23、O3が24〜35のように12単位で1オクターブとなる。一応、O2〜O6まで変換テーブルを作成しておくか。 ただ、O2では一部Pitch値の上限(127)を超えているため、実質O2Eくらいが低さの限界かもしれない。O5, O6ではPitchの差が少なすぎるので、目的の音階と全然合わなくなってくる。特にO6ではPitchを1つ下げると音の高さが1〜2音ほど変わる。実質、O6も使えなさそうだな。 うーむ、これって、音声合成ROMのPitch値はO3〜O4の範囲にフォーカスを置いてパラメータ設計をしていたという事かも。 分析もどきはこれくらいにして、変換テーブルを作成する。あとはこれを使うための処理を作成すれば、音階名指定の出力ができるはずだ。 |