if(window.location.href.indexOf("webmidilab.appspot.com/chatchat")>=0){console.log=function(){};loglog=function(){}}else{loglog=function(a){$("#messagelog").prepend("
"+a+"
")};$("#messagelog").css("display","block");window.onerror=function(e,b,c,a,d){$("#messagelog").prepend("
"+e+":F["+b+"]L["+c+"]C["+a+"]e["+d+"]
")}}var sprite0="./image/sprite0.png",sprite1="./image/sprite1.png",speakOnOff=false,recognizedList=[],recognition=null;if(window.webkitSpeechRecognition){console.log("recognition ok");recognition=new webkitSpeechRecognition;recognition.lang="ja-JP";recognition.continuous=false;$("#micRec").css("display","block");$("#div-recognition-continuous").css("display","block")}var recognitionStatus=false,sendFromMic=false,midiout,midiaccess,synthesis;jQuery(document).ready(function(){midiout=document.getElementById("midiOutput");midiaccess=document.getElementById("x-webmidirequestaccess");setTimeout(function(){for(var b=midiout.midiAccess.midi?midiout.midiAccess.midi.outputs:"",a=0,d=b.length;a
eVY1 now !!!
');$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight);break}}},1200);setTimeout(function(){if(midiout.outputIdx&&midiout.outputIdx!="false"&&midiout.midiAccess.midi.outputs[midiout.outputIdx].name.match(/NSX-39/)){$("#portStatus").html("NSX-39").removeClass("portstatus-off");$("#portStatus").html("NSX-39").addClass("portstatus-on");var a=document.getElementById("poke39").convertText2SysEx("ぴぽ");sendSysEx2Device(a);midiout.sendRawMessage([144,"0x"+(69).toString(16),31],0);midiout.sendRawMessage([128,"0x"+(69).toString(16),31],80);midiout.sendRawMessage([144,"0x"+(88).toString(16),31],82);midiout.sendRawMessage([128,"0x"+(88).toString(16),31],200);$("#log").append('
NSX-39 now !!!
')}$("#mdialog").css("display","block").html("どうぞ");jQuery(window).load(function(){$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight)})},1300);utt=null;context=null;mode="dialog";$("#send").on("click",function(){a()});var b=0;$("#inputtext").keydown(function(a){b=a.which});$("#inputtext").keyup(function(c){if(13==c.which&&c.which==b){a();return false}});function a(){text=$("#inputtext").val();if(!text){console.log("入力されていない");return false}text=escapeHTML2(text);$("#inputtext").val("");$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight);$.ajax({type:"GET",dataType:"json",url:baseUrl+"api/chat-docomo-json.php",timeout:8e3,data:{utt:text.replace(/
/,""),context:context,t:"0",mode:mode},success:function(a){var b=a.utt;console.log("対話結果: "+a.utt);b=b.replace(/名前はゼロ/g,"名前はミク");$("#mdialog").html(b);$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight);if(!sendFromMic){$("#inputtext").focus();sendFromMic=false}console.log("▶",a.utt,a.mode,a.yomi,a.context,a.da);context=a.context;mode=a.mode;if(mode=="srtr")if(b.length
接続できません。しばらくたってからお試しください。
');$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight)},complete:function(){}})}$(midiout).on("midioutput-updated:midiOutput",function(){console.log("ドロップダウンで変更された");$("#portStatus").html("NSX-39").removeClass("portstatus-on").addClass("portstatus-off");if(midiout.outputIdx!="false"){console.log("ドロップダウン",midiout.midiAccess.midi.outputs[midiout.outputIdx].name);if(midiout.midiAccess.midi.outputs[midiout.outputIdx].name.match(/NSX-39/)){$("#portStatus").html("NSX-39").removeClass("portstatus-off").addClass("portstatus-on");return false}else if(midiout.midiAccess.midi.outputs[midiout.outputIdx].name.match(/eVY1/)){$("#portStatus").html("eVY1").removeClass("portstatus-off").addClass("portstatus-on");return false}}});window.addEventListener("x-webmidi:output-updated",function(b){console.log(event.detail.port.name,event.detail.port.state,event.detail.port.type);$("#portStatus").html("NSX-39").removeClass("portstatus-on").addClass("portstatus-off");if(b.detail.port.state=="disconnected"&&b.detail.port.name.match(/eVY1|NSX-39/)){console.log("NSX-39でもeVY1でもないよ");return false}if(midiout.outputIdx!="false"&&midiout.midiAccess.midi.outputs[midiout.outputIdx].name.match(/NSX-39/)){$("#portStatus").html("NSX-39").removeClass("portstatus-off");$("#portStatus").html("NSX-39").addClass("portstatus-on");return false}if(b.detail.port.state=="connected"&&b.detail.port.name.match(/eVY1/))for(var c=midiout.midiAccess.midi?midiout.midiAccess.midi.outputs:"",a=0,e=c.length;a";$("#foo").replaceWith($(e));$.cookie("chat",b,{expires:30});console.log("アイコン保存した",b)}).fail(function(b,a){console.log("NG:"+b.status,a.status);$("#mesChangeIcon").text("取得失敗")})}else{$("#mesChangeIcon").text("");console.log(a);var b='";$("#foo").replaceWith($(b));$.cookie("chat",a,{expires:30});console.log("アイコン保存した",a)}}function escapeHTML2(a){return jQuery("
").text(a).html()}function addCSSRule(b,d){var c=document.styleSheets,a=c[c.length-1];if(a.insertRule)a.insertRule(b+"{"+d+"}",a.cssRules.length);else a.addRule&&a.addRule(b,d,-1)}function speak(a){if(!speakOnOff){$("#model").css("background","url("+sprite1+") 0 0 no-repeat");console.log("しゃべる動作");setTimeout(function(){$("#model").css("background","url("+sprite0+") no-repeat")},a.length*300);return}loglog("しゃべるよ、俺");if(!("SpeechSynthesisUtterance"in window)){console.log("ないよ");return false}loglog("Chromeがしゃべるよ",a);setTimeout(function(){$("#model").css("background","url("+sprite0+") no-repeat")},a.length*300);synthesis.text=a;loglog("word"+a);speechSynthesis.speak(synthesis);$("#model").css("background","url("+sprite1+") 0 0 no-repeat")}function lubi_yomitan(b){b=num2kanji(b);var a=b,c=baseUrl+"api/yomitan-json.php";$.ajax({type:"GET",dataType:"json",url:c,timeout:8e3,data:{sentence:b},success:function(b){a=b.utt;a=a.replace(/ー{2,}/g,"ー");console.log("よみたん結果:",a);poke39text(a)},error:function(a){console.log("yomitan error");console.log(a)}})}function lubi_goo(b){b=num2kanji(b);var a=b,c=baseUrl+"api/goo-hiragana-json.php";$.ajax({type:"GET",dataType:"json",url:c,timeout:8e3,data:{sentence:b},success:function(b){a=b.converted;a=a.replace(/ー{2,}/g,"ー");console.log("gooひらがな化結果:",a);poke39text(a)},error:function(a){console.log("goo error");console.log(a)}})}function lubi_goo_morph(b){if(b.match(/^[\u3040-\u309Fー!?。は]+$/)){console.log("ひらがなのみです");b=b.replace(/こんばんは/g,"こんばんわ");b=b.replace(/こんにちは/g,"こんにちわ");poke39text(b);return}var a="",c=baseUrl+"api/goo-morpho-json.php";$.ajax({type:"GET",dataType:"json",url:c,timeout:8e3,data:{sentence:b},success:function(g){for(var e=0,h=g.word_list.length;e('+a+")
");$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight);poke39text(a)},error:function(a){console.log("goo 形態素解析 エラー");console.log(a);console.log(a.statusText);$(".conv-machine:last").append('
Error: ひらがな 取得できませんでした
')}})}function lubi(b){b=num2kanji(b);var a=b;console.log("receive word: "+a);var c=baseUrl+"api/ylubi.php";$.ajax({tyep:"GET",dataType:"json",url:c,data:{sentence:b},success:function(f){for(var c=[],e=[],d=f.Result.WordList.Word,b=0;b0;c-=4)f.push(s.substring(c,c-4));if(f.length>=18)return n[17];for(var o=0,c=0;c0?"":m[a];if(a!=0)b=v+t[j]+b}j++}i=b+n[o++]+i}var d=(w[y]||"")+i;d=d||x;if(p)d=d+u+p;return d}function poke39text(c){if(midiout.outputIdx=="false")return false;var a=c;a=a.replace(/([^うすずちぢつづてでとどふぶ])([ぁぃぅぇぉァィゥェォ])/,function(){return RegExp.$1+RegExp.$2.replace(/ぁ/,"あ").replace(/ぃ/,"い").replace(/ぅ/,"う").replace(/ぇ/,"え").replace(/ぉ/,"お").replace(/ェ/,"え")});if(midiout.midiAccess.midi.outputs[midiout.outputIdx].name=="eVY1 MIDI"){var b=a.replace(/[ー っ、。]/g,"");console.log(b);var d=document.getElementById("evy1").convertText2SysEx(b)}else var d=document.getElementById("poke39").convertText2SysEx(a);sendSysEx2Device(d);a=a.replace(/[。?ゃゅょぁぃぅぇぉ]/g,"");a=a.replace(/.[ーー]/g,"o");a=a.replace(/.っ/g,"t");a=a.replace(/ $/g,"");a=a.replace(/やん$/g,"yn");a=a.replace(/[「」]/g,"");console.log(a,a.length);playToneArranged(a)}function sendSysEx2Device(b){for(var a=0;a