前の記事
バージョン
Version 8.1.5(9359645)(64-bit windows)
複数の音を同時に鳴らすには?
前回作ったやつは一度に一つの音しか出せない…。ドの鍵盤を押しながらミの鍵盤を押すと、ドの音が消えてミの音が流れ出す。
Q. 複数の音を鳴らせるシンセサイザーにするにはどうすりゃいいのさ?
A. 音を作る部分を別部品化 そして MIDI鍵を押すたびに音を作る部品を呼び出す !
なんかちょっとオブジェクト指向っぽい。
音を作る部分を別部品化 = クラス
MIDI鍵を押すたびに音を作る部品を呼び出す = インスタンス
っぽいイメージ。
参考サイトさん 簡易的なポリフォニック・シンセサイザーを作る
音を作る部分を別部品化するぞ
別部品化 = 別ファイル。
音を出す部品を『synth_cycle』、部品を呼び出す方を『root』にしてみました。
synth_cycleの中をいじっていきます。
まずは in オブジェクトで引数を設定。
buttonオブジェクトはやめて t オブジェクトを使ってみるぞい!
(tはtriggerの略、引数のbは『bang信号に変えろ』って意味)
out~ オブジェクトで戻り値設定。
thispoly~ オブジェクトでこの部品は音を出して『いるのか』『いないのか』を呼び出し元のpoly~オブジェクトに伝えることができる。
最終的にsynth_cycle君はこんな感じ。
(inとoutには何番目の引数or戻り値なのかを設定する為の引数が必要)
部品を呼び出す側を作る
まずは部品を呼び出す poly~ オブジェクトを追加!
続いて prepend オブジェクトを追加!
こいつの役割がまだぼんやりとしか理解できない…(´・ω・`)
最終的にはこんな感じ。無事和音が鳴らせるようになり申した(๑•᎑•๑)
試しにprepend無しにしてみたら『単音しか出ない状態』になった。
ということはprependは『poly~をマルチに使えるように信号を蓄えるやつ』というのが役割なのかな?
prependの理解については残課題って感じですなぁ…。