ソラマメブログ
< 2024年05月 >
S M T W T F S
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Mail

2007年09月09日

スピーカで好きな音をならす

micSpeaker links
スピーカで好きな音をならす

スピーカで好きな音をならす

昨日作ったスピーカにはscript(ソースはエントリーの最後)を使って
ちょっとした仕掛けを入れてあります。


チャットで指令を送ると指定された音が鳴るようにしてみました。

映像のチャットコマンドで打っているのは、これ。
/2 harayoki.speakreq a842ec8d-aafe-7528-9f42-a91592a24dc7
青字がチャンネル番号、緑字がおまじないface03、赤字がサウンドのキー値です。

チャンネル番号は好きな番号に変えられます。
(くわしくは後述。この映像の場合チャンネル2に設定してあります。)

おまじないはscriptで判別する命令名(ちょい長いけど気にしない)で、

サウンドのキーは鳴らしたい好きなサウンド指定します。

サウンドのキー値がわかれば、
スピーカの中にそのサウンドが含まれてなくとも、
自分の持ち物でなくとも、いきなり鳴らす事ができます。
ちょっと便利?


しかしこのスピーカはこうやって使うものではないのです。
次のエントリーに続く。


と、たったこれだけのエントリーを書くのにマシン
(VISTA)とかQuickTimeとかFlashとか色々調子悪くて半日以上かかってしまいました…。
QuickTimeは結局直らず。うーん。

◆パラメータ指定
オブジェクトのdescriptin欄には動作パラメータとして

チャットチャンネル番号(空白でデフォルト86492)
命令を受け付けるチャット送信元オブジェクト/アバタのキー値(空白で指定なし)
再生のづれ時間(解説は次回 空白で0秒)
を、コンマ区切りで指定して設定できます。

例) "2,,0"

本来descriptin欄はオブジェクトの詳細テキスト情報を書く部分ですが
rezしたオブジェクト毎に別の値を指定できるので
自分は動作パラメータを記述する欄としてよく利用しています。


◆ソースコード
integer debug = FALSE;
Trace(string s){
debug = TRUE;
if(debug) llOwnerSay(s);
}
integer initialized = FALSE;
key owner;
Init(){
if(initialized) return;
Trace("Init");
initialized = TRUE;
owner = llGetOwner();
string desc = llGetObjectDesc();
string s;
if(desc!=""){
list l = llParseStringKeepNulls(desc,[","],[]);
Trace("description param : "+llList2CSV(l));
ch = (integer)llList2String(l,0);
s = llList2String(l,1);
if(s!="") listenId = (key)s;
s = llList2String(l,2);
if(s!="") delay = (float)s;
}
llListen(ch,"",listenId,"");
Trace("channel : "+(string)ch+" key : "+(string)listenId+" delay :"+(string)delay);
}
integer ch = 86492;
key listenId = NULL_KEY;
float soundRange = 50.0;
float delay = 0.0;
string BROADCAST_COMMAND = "harayoki.speakreq";
Speak(list l){
Trace("Speak "+llList2CSV(l));
string sound = llList2String(l,1);
float vol = 1.0;
string s = llList2String(l,2);
if(s!="") vol= (float)llList2String(l,2);
llSetSoundRadius(soundRange);
llSleep(delay);
llPlaySound(sound,vol);
//llTriggerSoundLimited(sound, vol, llGetPos() + soundRange/2, llGetPos() - soundRange/2);
}
default{
state_entry(){
Init();
}
on_rez(integer num){
llResetScript();
}
touch_start(integer total_number){
if(llDetectedKey(0)==owner){
llResetScript();
}
}
listen(integer channnel,string name,key id,string mes){
list l = llParseString2List(mes,[" "],[]);
if(llList2String(l,0)==BROADCAST_COMMAND){
Speak(l);
}
}
}




同じカテゴリー(マイク&スピーカセット)の記事画像
改:マイク&スピーカセット
マイク&スピーカセット
複数のスピーカをならす
スピーカも作りました
マイクスタンドも作りました
マイク作りました
同じカテゴリー(マイク&スピーカセット)の記事
 改:マイク&スピーカセット (2007-10-24 11:39)
 マイク&スピーカセット (2007-10-24 07:47)
 複数のスピーカをならす (2007-09-09 04:38)
 スピーカも作りました (2007-09-08 03:57)
 マイクスタンドも作りました (2007-09-08 03:46)
 マイク作りました (2007-09-08 03:00)
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。