【Max】モノフォニック・シンセサイザーを作る

記事をシェアする:

今回は簡易的なモノフォニック(単音)・シンセサイザーを作ってみましょう。

OSCを用意する

波形

今回はこの5つの波形を使います。それぞれの波形の種類は以下の通りになります。

cycle~サイン波/正弦波
saw~ノコギリ波
rect~矩形波
tri~三角波
noise~ホワイトノイズ

波形選択できるようにする

波形を選択できるように[selector~]を使います。

第1インレットの数値を変更すると波形を変更できます。

0オフ
1cycle~/サイン波
2saw~/ノコギリ波
3rect~/矩形波
4tri~/三角波
5noise~/ホワイトノイズ

ナンバーボックスは分かりにくいので[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~]から接続します。

完成

これで完成しました。

記事をシェアする: