Chapter 18:
MSP グローバル情報へのアクセス

ここで述べるルーチンは、DSP 環境のグローバルな状態へのアクセスを提供します。その結果は、オブジェクトの main (初期化)ルーチンでは必ずしも有効でない場合があります。また、オブジェクトのインスタンス生成ルーチンと dsp メソッドの間で変わってしまうこともあります。

sys_getblksize

     
  カレントの DSP ベクタサイズを取得するために、sys_getblksize を使います。
   
  long sys_getblksize(void);

sys_getsr

     
  カレントのサンプリングレートを取得するために、sys_getsr を使います
   
  float sys_getsr(void);
     
 

オブジェクトの DSP メソッド、またはパフォームルーチンの中で、sys_getsr() を使わないで下さい。その代わりに、dsp メソッドに渡されたシグナルベクタの1つのサンプリングレートを使用し、この値をあなたのオブジェクトに保存して、必要な場合にはパフォームルーチンがそれにアクセスできるようにして下さい。これは、あなたのオブジェクトが、 グローバルより高い、または低いサンプリングレートで動作する poly~ pfft~ のようなオブジェクトの内部で使用される可能性があるからです。以下のコード例では、t_signal からサンプリングレートを保存する方法を示しています。

void *myobject_dsp(t_myobject *x, t_signal **sp, short *count) { x->x_sr = sp[0]->s_sr; // サンプリングレートの保存 // その後の処理のコードはここに書かれます。 }


sys_getch

     
  カレントの最大チャンネル数を取得する場合に、sys_getch を使います。
   
  long sys_getch(void);

sys_getdspstate

     
  DSP がアクティブかどうかを見るために、sys_getdspstate を使います。
   
  long sys_getdspstate(void);
     
 

この関数は、DSP がアクティブなら1を返し、そうでない場合は0を返します。次の関数は DSP ネットワークのコンテキスト内でのオブジェクトに関する情報を返します。


dsp_isconnected

     
  2つのシグナルオブジェクトが接続されているかどうかを決定するために、dsp_isconnected を使います。
   
  short dsp_isconnected(t_object *src, t_object *dst, short *index);
     
 

この関数は、あなたの DSP メソッドの中で呼び出した場合に限り、役に立ちます。これにより、src のアウトレットから、dst のインレットへのシグナル接続が存在するかどうかを判定することができます。関数は、接続が存在すれば、0以外の値を、そうでない場合は0を返します。この結果は srcdst の間にあるオブジェクトの数に1を加えたものになります。例えば、dstsrc から直接に接続されている場合、dsp_isconnected は1を返します。dsp_isconnect は、 接続されている dst のインレットナンバ(0から始まる)を index に返します。複数の接続がある場合、最も左の接続に関する情報が返されます。