この連載ではノウハウ0の状態からMax9で音に関するソフトウェアの自作を目指します!
試行錯誤をしながら一緒に無限の可能性を探っていきましょう。
こんにちは。梅田店スタッフ、タムラです。睡眠には528Hzが良いらしいですよ。さて、今回は前回作成した人体に何にも影響を与えない「1000Hzが鳴り続けるプログラム」にMIDI入力を反映させて音程を制御したいと思います。
特定の音程を出したい場合はその音程を周波数として指定してあげれば良いです。例えばA4であれば440Hz、オクターブ上のA5であれば880Hzです。やり方は簡単で「cycle~」の第一イントレットにNumberを接続します
これで440Hz(A4)が鳴りました。いい感じです。
シンセサイザーを作りたいのでMIDIの入力を受けられるようにします。調べた限りいくつか方法はあるみたいですが今回は「notein」オブジェクトを使います
midiを受け取れるオブジェクト。入力されたMIDIをMIDIノート番号とベロシティに分けて出力します
これはA4をマンキンで入力した時のパッチャー画面です。A4のノート番号が第一アウトトレットから、ベロシティ情報が第二アウトレットから出力されます。ちなみに第三アウトレットからはMIDIチャンネル番号が出力されます。
あとは「notein」パッチと「cycle~」パッチを繋げたら完成では?って感じですがここで少し問題発生です。MIDIノート番号は「cycle~」に入れられません。つまり前段階で周波数数値に変換しておく必要があります。真っ先に思いついたのは条件式を書く方法です。(if x = 69 , cout >> 440 的な) ただこの方法だと全てのノートナンバーの対して条件式を書く必要があるので全く現実的ではないです。
うーん….
・
・
・
🫰
いました。超ベリーナイスなオブジェクトが。
入力されたノートナンバーを対応する周波数に変換します
つまりですね…
こんな感じです。実際にパッチしますと..
こんな感じになりました。これで無事音階で制御できます。しかし鍵盤を離しても音が切れません。
to be continue….
少し話がそれますが、私がMax9習得において頼っているのがAIツールです。私も最初は無難にchat GPTを使っておりましたが、プログラマーのお客様が来店いただいた際におすすめされた『Notebook LM』があまりに使い勝手が良いので紹介させてください。
ざっくり説明するとマニュアルを代わりに読んでくれて質問に答えてくれます。
こんな感じであまりにも膨大すぎるmax9のマニュアルpdfを読んでくれまして質問に答えてくれます。ソースを音響機材のマニュアルにしても良さげです。マニュアルの言語も問わないのでめちゃくちゃ便利です。ソースに基づいて回答できないものに関しては『答えられない』としっかりリターンされます。
無料で使えますので一度試してみてはいかがでしょうか?