2014年3月4日火曜日

FM,リバーブ

FM (Frequency Modulation)とは周波数を変調(変化)させる方式です。
今までは固定した周波数で出力を行っていましたが、その周波数を変調させます。
sin波を別のsin波で変調させます。FMの利点は簡単に基本周波数の倍音を付加でき、様々な音色
が作れることです。式で表すと以下のようになります。

Asin(2πfct+Isin(2πfmt))
A:キャリア波の振幅
I:モジュレータの振幅(変調指数)
fc:キャリア周波数
fm:モジュレータ周波数
t:時間

キャリア波とは送られる信号(搬送波)のことです。

Ifcfmの3つのパラメータを制御することによりFM音出力するパッチを以下に示します。





















tri~、rect~は前回紹介したパッチであり、この写真のパッチを保存したフォルダに保存したtri~,rect~を呼び出しています。

以下のように聴こえの良い音にするためにモジュレータ周波数はキャリア周波数の整数倍に設定します。またリバーブ(残響効果)を与えるオブジェクトを付け加えました。
delwrite~とdelread~を利用します.delwrite~には配列名と配列サイズを指定します。写真では
配列名はdelayline,配列サイズは1000としています.delread~にミリ秒で遅延時間を入力することで、delwrite~で書き込まれたデータが遅れて呼び出されます。delread~によって出力されたデータに
0~1を掛けることによりリバーブのレベルを制御し,入子状に+~オブジェクトから出力されたものを
同じ+~オブジェクトに戻すことによって残響表現をすることが可能になります。
注意
遅延を与えたデータが幾重にも重なるので振幅がとても大きくなることが予想されます。
出力する振幅にできるだけ小さい値を掛けることをお勧めします.写真の例では0.02を振幅に掛けています。


















パッチをいじることによりおもしろい音ができると思うのでためしてください。

紹介パッチ
delwrite~,delread~

2014年3月3日月曜日

オシレータの作成

オシレータとは発振回路、つまり何らかの波を出力するものです。前回はosc~を紹介しましたが、
osc~は正弦波を出力するオシレータです。Pdには他にノコギリ波を出力するphasor~があります。

phasor~は入力された周波数で0から1を出力します。試してみると波形がノコギリのような形になっているのがわかると思います。












他に三角波,矩形波を紹介します。

三角波
Pdには三角波を出力するオブジェクトはないので以下のように作ってください
名前の如く三角の波形を出力します。
















 inlet~、outlet~はこの図のようにパッチを組み保存し、別のパッチをそれと同じ階層のフォルダに保存したときに,信号の入力と出力を持ったパッチを保存した名前で呼び出すことができます。

 exper~は便利なオブジェクトでif文などを書けます.信号を扱う場合は変数を$v1,$v2,$v3のように扱います.写真の例では変数を1つしか扱っていませんが,$v2,$v3のように増やすと新たにインレットが追加されます.$v1は第1インレットに対応し,$v2は第2インレットに対応します.
写真のif文の意味は第1インレットから入力された数値が1より小さいときはそのまま出力し,
そうでないときは入力された$v1に対して1*($v1 - 1 ) + 1という計算をしてかた出力します。
0~2を出力するノコギリ波の対して以上のような計算すると三角波ができあがります。

矩形波
矩形波は0か1つまり,四角形の波形を出力します.矩形波も三角波波同様Pdでは矩形波を出力するオブジェクトはありませんので以下のようにつくります。

















インレットから入力された値が1より小さいときは0を出力し1~2のときは1を出力します。

三角波、矩形波ともに作り方が強引な気がしますが、興味がある方は他にも作り方があるので
調べてみてください。

紹介オブジェクト
inret~,outret~,expr~

正弦波の出力

sin波のピーという音を出力してみましょう。

参考書により、正弦波(sin)、余弦波(cos)など説明が異なりますがここではあえて正弦波として説明します。正弦波と余弦波は半周期ずれるだけで、人間の聴こえには違いはありません。

以下の図のようにパッチを組んでください。















osc~
正弦波がアウトレットから出力されます。
~(チルダ)は信号を扱っているという意味です。1秒間に44100個のデータが流れ、パッチコード(線)が青くなっていることがわかると思います。

注意
osc~の出力の振幅を1を超えないようにします。1を超えると音が割れます。
写真では0.6が振幅に掛けられてます

dac~
音をスピーカから出力するためのオブジェクトです。
左インレットに入れるとヘッドホンの左耳、右は右耳、つまりステレオで出力可能です。

アレイ
アレイ(配列)の数値が見れます。
写真でのアレイは、名前:waveform、アレイサイズ:441(44100の1/100)に設定しています。
yの表示範囲は-1~1に設定しています。

tabwrite~
配列を書き換えするためのオブジェクトです。引数にwaveform、波形が表示されているグラフと
同じ名前になっていることに注意してください。

metro
ミリ秒で引数として時間を設定し、設定した時間毎にBangを出力します。
写真の例では100ms(0.1秒)に1回でBangを出力します。右インレットで時間を変更できます。
左インレットにBangを送られたとき、または、トグルボタンがonになっているときにBangを出力
します。

loadbang
パッチを開いたときにBangを出力します。

パッチを実行するときはDSPをonにしてください。
チェックを入れると緑になります。
左にチェックを入れると音の出力レベルが見れます。
また、パッチ中央上部にあるトグルボタンとメッセージボックスを組むことによりDSPをonにすることも可能です。



















紹介オブジェクト
osc~,dac~,アレイ,tabwrite~,metro,loadbang

四則演算

最初は基本的な四則演算から入りたいと思います

計算なんておもしろくないと思いますが・・・

以下のようにパッチを組んでみてください
オブジェクトボックスを選び,オブジェクト名(+,*など)を入れることにより、赤い四角では
なくなります。














 また、オブジェクトには引数として初期値を持たせることも可能です。
写真をみると、オブジェクト名の横に数字が入っているもの,入っていないものが
あるのがわかると思います。

 四則演算のオブジェクトに2つの数字の入る左と右のインレットがあることが
わかると思います。四則演算のオブジェクトは右インレットから入ってきた値は保存しておいて、
左インレットに値、またはBangが送られてきたときに計算を実行し、アウトプットから出力を
行います。つまり、右インレットの数字を変えても出力を行いません。

 右インレットの数字を変え出力させたいときに役立つのがトリガーオブジェクト(オブジェクト名:t
またはtrigger)です。引数としてbやfを与えます。写真では左からb、fの順番になっているのが
わかると思います。この意味は,トリガーオブジェクトに数値が入力されたときに右から順番に、
つまり1番始めにf(float型の数値)を第2アウトレット(右のアウトレット)を出力し,次にb(Bang)を
第1アウトレットから出力することを意味します.右から順番に出力するということが重要です。

このようにパッチを組むと右インレットの数字を変えたときでも結果を出力します。

紹介オブジェクト
+,-,*,/,t,trigger

基本操作と基本パッチ(オブジェクト)

Pdを起動したら
[ファイル]→[新規作成]
でエディタが開かれます。

Ctrl+Eで実行モードと編集モードの切り替えが可能です。編集モードでは
マウスポインタが手のマークになります。

基本的なオブジェクト























 編集モードでメニューバーの[配置]より様々なオブジェクトを選択可能です。

ショートカットキー

Ctrl+E パッチの編集・実行モードの切り替え
Ctrl+1 オブジェクトボックスの作成
Ctrl+2 メッセージボックスの作成
Ctrl+3 ナンバーボックスの作成
Ctrl+Shift+B Bangボタンの作成
Ctrl+Shift+T Toggleボタンの作成

Pure Data(Pd)のインストール

以下のURLのページからダウンロード可能です。

http://puredata.info/downloads/pd-extended

windows版なら
Get Pd-extended for Windows (44.7MB)
Windows Installer
をクリックすることでインストーラつきのものをダウンロードできますので
ダウンロードしたらインストーラを起動して、さくさくとインストーラに従って
インストールしましょう。

Pure Dataとは

 Pure Dataとは音響・映像・CGなどリアルタイムに処理することのできるビジュアルプログラミング
言語(パッチと呼ばれるオブジェクトや線を繋ぎながらプログラミング可能)です。テキスト形式でコードを書くことが苦手な人でも直感的にプログラミング可能です。
 
 ミラーパケット氏により開発はれたvanilla版とvanilla版を土台とした有志の開発によるextended版があります。

マルチプラットフォーム(windows,Linux,Mac os)で利用可能です。

 フリーソフトとして使えますので気軽に楽しめると思います。

以下の写真のようにパッチ(箱型のオブジェクト)とパッチコードと呼ばれる線を
繋ぐことによってプログラミングを行います。