ADX2LEで楽器音
音を伸ばし続ける
上のスクリーンショットのように3音使います。
第1トラックはアタック部分を再生してすぐ音が消えます。
第2と第3のトラックが交互に現れるため音が途切れないように聞こえます。
これをシーケンスループでくくることで永遠になり続ける音になりました。
実例
SimaVoiceというアプリで使っています。
●Windows/Macアプリ
●iOSアプリ
このアプリの歌声の部分はMMLで表記したピッチと長さで音が鳴ります。
歌唱簡易MMLフォーマット
すごく簡易的なMMLで、小文字英数字がMMLコマンドになります。
(ここでのMMLコマンドとは、音楽表現の音程、長さなどのこと)
文字は全角日本語と半角英字などを解釈します。
"cかdえeるfのeうdたcがー"
文字をコピペしただけでも音がなるように
最後に音程や音長を評価したもので読み上げ音素が変わります。
音素が音色名(キュー名)になっていて ひらがなから音素への変換テーブルを経由してキュー再生しています。
コマンド
- 音程
- cdefgab ドレミファソラシ
- + - 臨時記号 半音変化します
- 長さ
- l2 とか l4とか l(エル)と数字の組み合わせ 1,2,3,4,5,6,7,8,9,12,16
- オクターブ
- o4 とか o(オー)と数字の組み合わせ 2,3,4,5,6
文字
- ひらがな 「あいうえお」 など
- アルファベット大文字 「ABCDEF」 など (えー、びー、しー、でー、いー、ふー)とひらがな1文字化して発音します。
- 句読点 「。、\n\r\tっ.,」など 音が止まります。
- 長音など 「ー―(゚∀)」 など 前の音を伸ばす。
- 感嘆符など 「!・!」ランダムピッチと音の停止。
- 特殊文字 「〜~」 など ランダムピッチと前の音を伸ばす。
工夫した点
長い音、短い音、いろんな長さの音を鳴らせるように
効果音とかだと、長さに限りがって音が止まってしまいます。
楽器アプリに使うような音はノートオン/ノートオフのように任意の長さの音を鳴らす必要があります。
どこかでループバックしてあげればずっと鳴り続ける音ができるのでループ波形を選択するのもあるのですが、
でも、そのループするときの切り替わり部分が綺麗に繋がらないと調整に手間がかかり面倒でくじけてしまいます。
(SimaVoiceではUTAUを参考に声の素材148音素をループ化するという苦行になる。)
ボリュームのフェードを使ってその切り替わりをぼやかしています。
これくらいならリアルタイムにループをさせるプログラムを書いても良いのですが時間管理が面倒になりそうなので、
シーケンスのループ機能で補うことにしました。
ピッチを上げても途切れないようにする
ピッチを変えると音が短くなります。
そこで、波形はループ区間よりも倍以上の余裕のある長さ(2.5秒)にすることで、オクターブを上げた場合でも
波形の最後まで行く前に次のトラックが鳴り始めるので音が途切れないようになります。
さらに高みを目指すなら
この方法だとループ部分の波形は毎回同じ音が鳴るので、範囲が短いと機械っぽいブザー音になりがちです。
再生開始位置とかもランダムにするとかすればより繰り返しが目立たないループとかも作れそうです。
(あとビブラートやエンベロープの設定とか)