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