τ41 - Keio.ac.jp

音響を制御するミドルウェア構築
B2 suzuk
親:B4 matsu
アウトライン








背景
アプローチ
実験環境
システム構成
API設計
Java API 利用例
サンプルアプリケーション
まとめ
背景
 τ41部屋には複数のスピーカーがある
 スピーカーを独立して制御できる機器がある
ユーザプログラムで利用しずらい
目的
 音響環境を制御するミドルウェア構築
 プログラマがプログラムから利用できるように
使いやすいAPIを提供する
システム概要 –ハードウェアスピーカー
スピーカー
スピーカー
スピーカー
スピーカー
音出力
アンプ
アンプ
Utamaro(Mac X Server)
τ41
pissaro(IBM)
プログラマーのコンピュータ
スピーカー
システム概要 –ハードウェアスピーカー
スピーカー
スピーカー
スピーカー
スピーカー
音出力
アンプ
アンプ
Utamaro(Mac X Server)
τ41
pissaro(IBM)
プログラマーのコンピュータ
スピーカー
システム概要 –ソフトウェアスピーカー出力
音生成エンジン
(SuperCollider)
OSCプロトコル
スピーカー出力コントローラ(Mac)
メッセージ送信
τ41
Webアプリケーション(XML parse)
XML
本システムのAPI
APIを利用
XML送信
アプリケーション
システム概要 –ソフトウェア-
OSC
プロトコル
XML
API設計
 APIの設計
 AudioInterfaceクラス
 統一的な音響操作メソッドを提供
 (ここにAPIの詳細なクラス図をもってくる)
API設計
 利用できるサラウンド効果
SuperColliderで音を操作 (Control)
basic
 スピーカーごとの音量調整(8input, 8output)
 音源の指定
 ファイル
 アンプへのinput
 ストリーム
extended
 音像の定位
 音の移動
 2点間の移動
 ぐるりと回る
SuperCollider自体が音を作る (Make)
 エフェクト
 サウンドジェネレータ
 SuperColliderのRowな機能を使う
(注釈:赤は未実装
API利用例(仮
 音源を指定して曲を流してとめる
public static void main(String argv[]){
AudioInterface audioInterface =
(AudioInterface)new AudioController(
new
AudioServer("utamaro.ht.sfc.keio.ac.jp", 50005));
// play audio file
AudioFile aufile = new AudioFile("demofile.wav");
AudioInterface.play(aufile);
try{ // Sleep 20 sec
Thread.sleep(12000);
}
catch(InterruptedException e){
e.printStackTrace();
}
// stop the audio sound
AudioInterface.stop(aufile);
}
サンプルアプリケーション
 ユーティリティ
 Java
τ41の任意の空間上に
音源を配置
音を回す
 CGI
Webでτの環境を制御
まとめ
τ41の音響空間を制御する操作環境を提供
 プログラマが利用
 ユーザが利用
発展
実装環境
 屋内
 τ41
スピーカー
 10個以上
アンプ
 2台
ライト、ディスプレイなどの制御を管理するサーバ
ソフトウェア補説
 SuperColliderとは
 音声合成ができるソフトウェア
 独自のプログラミング言語で動作を記述
(
SynthDef(“sine”, {
var osc;
osc = SinOsc.ar(800, 0, 0.1); //800Hz sinewave
Out.ar(0, osc);
// output 0 num audio bus
}).writeDefFile;
)
音響システム 利用例
 ビデオ会議
 音響システムとディスプレイを制御
 Notification
 ユーザに危険信号通知
音響空間について
 人が音を聞いて高度な臨場感を感じるには、次の3つの要
素が必要である。
 スピーカーごとの音の強弱
 スピーカーごとの音の到達時間の差
 スピーカーごとの音の位相差の調整
 さらに、音響空間における対象者の次の状態を考慮
する必要がある
 対象者の位置
 対象者の顔の向き