if(window.location.href.indexOf("webmidilab.appspot.com/chat/")>=0){console.log=function(){};loglog=function(){}}else{loglog=function(a){$("#messagelog").prepend("
"+a+"
")};$("#messagelog").css("display","block")}var 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;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 !!!
')}$("#log").append('
どうぞ
');jQuery(window).load(function(){$("#logOuter").scrollTop($("#logOuter")[0].scrollHeight)})},1300);utt=null;context=null;mode="dialog";$("#send").on("click",function(){b()});var c=0;$("#inputtext").keydown(function(a){c=a.which});$("#inputtext").keyup(function(a){if(13==a.which&&a.which==c){b();return false}});function b(){text=$("#inputtext").val();if(!text){console.log("入力されていない");return false}text=escapeHTML2(text);$("#log").append('
'+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,mode:mode},success:function(a){var b=a.utt;console.log("対話結果: "+a.utt);b=b.replace(/桜子/g,"ミク");$("#log").append('
'+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;a420){var e=document.querySelector("meta[name=viewport]");if(e){var g=document.getElementsByTagName("head")[0];g.removeChild(e)}setTimeout(function(){var b=document.getElementsByTagName("head")[0],a=document.createElement("meta");a.setAttribute("name","viewport");a.setAttribute("content","width=device-width, initial-scale=1.0");b.appendChild(a)},100)}$("#btnChangeIcon").on("click",function(){var a=$("#inputChangeIcon").val();if(!a)return false;changeIconYQL(a)});$("#btnChangeIconRemove").on("click",function(){console.log("忘れるよ!");var a='';$("#foo").replaceWith($(a));$("#inputChangeIcon").val("");$.removeCookie("chat")});if($.cookie("chat")){var d=$.cookie("chat");console.log("アイコン用クッキー: ",d);changeIconYQL(d)}for(var f=[],a=0,h=$(".menu-target").length;a";$("#foo").replaceWith($(b))}function changeIconYQL(a){if(!a.match(/^http/)&&a!=="./image/nobody.gif"){a=a.replace(/@/,"");$.getJSON("https://query.yahooapis.com/v1/public/yql?callback=?",{q:'select * from html where url="https://twitter.com/'+a+'" and xpath="//img[@class=\'ProfileAvatar-image \']"',format:"json"}).done(function(c){console.log(c);if(!c.query.results){console.log("拾ったけどなかったよ");$("#mesChangeIcon").text("そのIDはない模様");return false}$("#mesChangeIcon").text("成功");var d=c.query.results.img.src,b=d.replace(/_400x400/,"_normal");console.log(a);var e='";$("#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(b){console.log("speak");if(!("SpeechSynthesisUtterance"in window)){console.log("ないよ");return false}loglog("Chromeがしゃべるよ",b);var a=new SpeechSynthesisUtterance;a.volume=1;a.rate=1;a.pitch=1;a.text=b;a.lang="ja-JP";speechSynthesis.speak(a)}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