サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
moge32.blogspot.com
オーディオやマルチメディア関連のプログラムを書いていると、手早くノコギリ波や矩形波を生成したいことがある。 そこで、簡単にいろいろな波形を生成する方法をまとめる。 1. ノコギリ波1サンプルごとに少しずつ値を足していくと、直線的に増加していく波形ができる。値が 1.0 を超えた瞬間に 0.0 へ戻すことで、ノコギリ状の周期波形が生成できる。これは、値の小数点以下のみを取り出すことで実装できる。 実装してみる。 以下のコードでは、オーディオ信号として扱いやすいよう出力値の範囲を 0〜1 から -1〜1 へ変換している。 double sawtooth(double 周波数, double サンプルレート) { static double phase = 0.0; // 初期値 phase += 周波数 / サンプルレート; phase -= floor(phase); // 整数部分を引き算
この記事は素人が音声合成で遊んでいるだけの記事です。完全に行き当たりばったりなので、紹介している内容の保証はできません。また、記事の内容を予告なく変更することがあります。 生成した「お」の波形 今回は本題の音声合成に移っていきます。 前回は波形データをWAVファイルに書き出す部分を作ったので、ここからはさっそく母音の合成をしていきます。 ざっくりいうと人間の声は、声帯で基となる音がつくられ、声道で加工されたものです。 今回のプログラムは、この「声帯→声道」という構成を参考にして音声を合成していきます。 まずは、声帯にあたる部分から実装することにします。 声帯が振動すると、周期的な波が発生します。 つまり、なんらかの周期的な波を使えば模倣できそうです。 一般的なシンセサイザーのようにノコギリ波や三角波を使うこともできますが、ここでは声帯振動の波を模倣したRosenberg波とよばれる波形を使
このページを最初にブックマークしてみませんか?
『Division by Zero』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く