今回は簡易的なモノフォニック(単音)・シンセサイザーを作ってみましょう。
目次
OSCを用意する
波形
今回はこの5つの波形を使います。それぞれの波形の種類は以下の通りになります。
cycle~ | サイン波/正弦波 |
saw~ | ノコギリ波 |
rect~ | 矩形波 |
tri~ | 三角波 |
noise~ | ホワイトノイズ |
波形選択できるようにする
波形を選択できるように[selector~]を使います。
第1インレットの数値を変更すると波形を変更できます。
0 | オフ |
1 | cycle~/サイン波 |
2 | saw~/ノコギリ波 |
3 | rect~/矩形波 |
4 | tri~/三角波 |
5 | noise~/ホワイトノイズ |
ナンバーボックスは分かりにくいので[radiogroup]に変更しました。ボタンをオンにした番号が出力されます。
さらに分かりやすくなるよう[radiogroup]の右に[comment]で波形の種類を書いています。
音を鳴らしてみる
各波形の第1インレットにナンバーボックスを繋ぎ、[selector~]のアウトを[ezdac~]に繋ぎましょう[radiogroup]のボタンをoff以外にすると音が聞こえてきます。
その状態でナンバーボックスの数値も変更してみましょう。今度は音高が変わります。
ちなみに[noise~]は数値を変更しても音が変わりません。特にパラメーターを持たないからです。
エンベロープを作る
現在のままでは音が鳴りっぱなしなので、音量カーブを描けるようにしましょう。
[function]の第1インレットにbangと「clear」メッセージを、第2アウトレットからは[line~]を接続してください。
編集モードを解除すると[function]に点を置くことができます。
クリック | 点を作成 |
Shift + クリック | 点を削除 |
点をドラッグ&ドロップ | 点を移動 |
Mac: Cmd + クリック Win: Ctrl + クリック | サスティン点を作成 |
「clear」メッセージでクリアします。
[line~]のアウトを[number~]に繋ぎます。bangボタンをクリックし[number~]の数値が動けばOKです。
キーボードで演奏できるようにする
[kslider]を用意します。もし手持ちのMIDIキーボードで引きたい場合は[notein]を図の用に接続してください。
[kslider]の第1アウトレットからはノートナンバーが、第2アウトレットからはベロシティが出力されます。
ベロシティは0~127の数値で出力され、1~127はノートオン、0はノートオフを意味します。キーボードをクリックするとノートナンバーと1~127内の数値、クリックを離すとノートナンバーと0の数値が出力されます。
今回のシンセサイザーはオン・オフによって音を鳴らすのではなく、bangを1発送るだけで発音するように作ります。上の場合、オンとオフの情報が同じ音で2度来るので、それを1度だけにするようオブジェクトを追加します。
[stripnote]はノートナンバーとベロシティを監視して、鍵盤を押してもノートオンの情報しか通しません。
繋げる
これまで作ったものと繋げていきます。
左の波形群には周波数のデータ送ります。右のエンベロープには鍵盤を押したデータを使ってbangに変換します。
図のように接続しました。[stripnote]からは[t i b]を繋ぎ、その第1アウトは[mtof]でノートナンバーを周波数に変更しナンバーボックスへ。第2アウトはbangに接続しました。
エンベロープのカーブが機能するように[selector~]と[ezdac~]の間に[*~]を繋げました。[*~]の第2インレットは、エンベロープ側にある[line~]から接続します。
完成
これで完成しました。