6.7.4 HarkParamsDynReconf

6.7.4.1 ノードの概要

LocalizeMUSIC , SourceTracker , HRLE の パラメータをネットワークの実行中に変更できるように ネットワーク通信を介してパラメータを受信し,それらのノードに渡す.

6.7.4.2 必要なファイル

無し.

6.7.4.3 使用方法

どんなときに使うのか

LocalizeMUSIC , SourceTracker , HRLE のパラメータを ネットワークを実行しながら変更したい時に使う.

典型的な接続例

6.80に典型的な接続例を示す.

\includegraphics{fig/modules/HarkParamsDynReconf}
Figure 6.81: HarkParamsDynReconf の接続例

6.81LocalizeMUSIC , SourceTracker , HRLE には,デフォルトでは非表示の PARAMS 入力端子が追加されている. 非表示入力の追加方法を図6.81に示す.

\includegraphics[width=\linewidth ]{fig/modules/HarkParamsDynReconf_input1}
Step 1: ノードを右クリックし,Add Input をクリック
\includegraphics[width=\linewidth ]{fig/modules/HarkParamsDynReconf_input2}
Step 2: Name の入力フォームに PARAMS を記入し,Add をクリック
\includegraphics[width=\linewidth ]{fig/modules/HarkParamsDynReconf_input3}
Step 3: ノードに PARAMS 入力端子が追加される
Figure 6.82: 非表示入力の追加 : PARAMS 入力端子の表示

6.7.4.4 ノードの入出力とプロパティ

入力

無し.

出力

LocalizeMUSIC

: Vector<ObjectRef> 型. LocalizeMUSIC のパラメータを出力する.LocalizeMUSIC の PARAMS 入力端子に接続する.

SourceTracker

: Vector<ObjectRef> 型. SourceTracker のパラメータを出力する.SourceTracker の PARAMS 入力端子に接続する.

HRLE

: Vector<ObjectRef> 型. HRLE のパラメータを出力する.HRLE の PARAMS 入力端子に接続する.

パラメータ

Table 6.69: HarkParamsDynReconf のパラメータ表

パラメータ名

デフォルト値

単位

説明

PORT

int 

   

ソケット通信のポート番号

ENABLE_DEBUG

bool 

false

 

デバッグ出力の ON/OFF

PORT

: int 型. ソケット通信のポート番号を指定する.

ENABLE_DEBUG

: bool 型. デバッグ出力の ON/OFF を指定する.

6.7.4.5 ノードの詳細

本ノードがソケット通信のサーバーとなり,クライアントプログラムから LocalizeMUSIC , SourceTracker , HRLE のパラメータをノンブロッキングで受信して,それらのノードに渡す.

受信データは float 型で長さ12の配列(以下,buff[12]とする)である必要があり, 受信したフレームではパラメータを更新し, 受信しなかったフレームでは前回のパラメータを保持する.

buff[12]は以下のようにデコードされて次段ノードに送信される.

本ノードはクライアントプログラムの再接続に対応している.

以下,クライアントプログラムの例を示す(python).

#!/usr/bin/python
import socket
import struct

HOST = ’localhost’    # The remote host
PORT = 9999           # The same port as used by the server

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
buff = [2.0, -180.0, 180.0, 500.0, 2800.0, 30.0, 800.0, 20.0, 6.0, 0.0, 0.85, 16000.0]
msg = struct.pack("f"*len(buff), *buff)
sock.send(msg)

sock.close()