MIDIコンつなげる
nanoKONTROL買ったぜ!
もはや楽器とは思えぬ値段で笑ける。凄い時代であります。
というわけで早速つなげてみます。まずnanoKONTROL挿した状態でboot、次に
CCResponder({|src,ch,num,val| [src,ch,num,val].postln });
としますと
MIDI Sources: MIDIEndPoint("nanoKONTROL SLIDER/KNOB", "nanoKONTROL SLIDER/KNOB") . . .
等々と出ましてつながったようです。超簡単。
あとMIDI受け取るには他にもNoteOnResponderとかとかあるのですが、反応ないし、用は足りるということで。
ノブやスライダを動かすと以下のようにずらずらpostされます。
[ 1, 0, 11, 2 ] [ 1, 0, 11, 5 ] [ 1, 0, 11, 7 ] [ 1, 0, 11, 10 ] . . .
素晴らしい。ちなみにCCナンバーとかはKONTROL Editorの方で設定し直した。番号飛び飛びで出荷時状態だとやりにくーっす。
んだば何だか音出してみる
CCResponder.removeAll; //一旦かたす CCResponder({|src,ch,num,val| s.sendMsg("/n_set", 1000, "v"++num, val) }); SynthDef("hoge", { arg v0,v1,v2,v3,v4,v5,v6,v7,v8; var a = Mix(SinOsc.ar( (1..9)*100,0, [v0,v1,v2,v3,v4,v5,v6,v7,v8]/127)); Out.ar(0,a/9!2); }).play;
CCナンバーに"v"くっつけてそのまま引数名にしてみた。ちゃくいぜ。
値は128段階なので127で割ってある。MIDIって粗いんだなー
あとこうした使い方であれば引数にせずともコントロールバスに乗せて
CCResponder.removeAll; CCResponder({|src,ch,num,val| s.sendMsg("/c_set", num, val); }); SynthDef("hoge", { var a = Mix.fill(9, {|n| SinOsc.ar(n+1*100,0,In.kr(n)/127) }); Out.ar(0,a/9!2); }).play;
こうすりゃよかった。
ついでながら再生ボタンと停止ボタンでSynthを出し入れできるようにしてみる。
CCResponder.removeAll; CCResponder({|src,ch,num,val| case( {num==45 && val==0},{s.sendMsg("/s_new", "hoge", 1000); "play".postln}, {num==46 && val==0},{s.sendMsg("/n_free", 1000); "stop".postln}, {num<9},{s.sendMsg("/c_set", num, val)} ) }); SynthDef("hoge", { var a = Mix.fill(9, {|n| SinOsc.ar(n+1*100,0,In.kr(n)/127) }); Out.ar(0,a/9!2); }).send(s);
などと手元で一括できますとイカしたライブなんかもできそうです。