Monthly Archives: 12月 2014

いつの間にかChormeのgetUserMediaの挙動が変わっていた件

Comiket86/87で頒布した「いつもの人発見装置の作成」という本で作った装置は、マイコンとスマホとのデータ通信に、マイコンでDBPSK変調 → オーディオケーブル → スマホ(タブレット)のブラウザ上のJavaScriptで復調という手段をとってます。

で、Comiket86で作った装置を、Comiket87でもデモしようと思って、久しぶりに火を入れてみたら、うまく動かない。

タブレットにオーディオケーブルを指して、しばらくは、うまく通信できているのに、しばらくするとまったく通信できなくなる。

ブラウザ側のJavaScriptは getUserMedia というAPIでオーディオ入力データを取得しているのですが、どうやらComiket 86からComiket 87までの半年間でブラウザとして使っていたChormeのgetUserMediaの挙動が変わったようです。

いつの間にか AGC (Auto Gain Control) やら、エコー除去処理やら、ノイズ除去処理やらがデフォルトで動作するようになった模様。

いつもの人発見装置からブラウザに送り込んでいるオーディオデータは人間が聞くような音ではないので、新たに動くようになった機能によって、次第に、getUserMediaで得られるデータからDBPSKで変調された部分がフィルタで取り除かれてしまったようです。

これらの新機能を動かさないようにするには・・・・
http://d-rissoku.net/WifiDetector/ のデモのソースコード ( http://d-rissoku.net/WifiDetector/WifiDetector.js )でいえば、

  navigator.getUserMedia(
    {audio : true},
    function(s) {
      AudioComm.startReceive(audioCtx, s, WifiDetector.recvByteHandler);
    },
    function(e) {
      console.log(e);
    });

となっているのを、

  navigator.getUserMedia(
    {audio: {
      "mandatory": {
        "googEchoCancellation": false,
        "googAutoGainControl": false,
        "googNoiseSuppression": false,
        "googHighpassFilter": false
        },
      "optional": []
      }},
    function(s) {
      AudioComm.startReceive(audioCtx, s, WifiDetector.recvByteHandler);
    },
    function(e) {
      console.log(e);
    });

な塩梅にすればOKなようです。

コミケお疲れ様でした

コミックマーケット87に参加された方、お疲れ様でした。

おかげさまで、電脳律速のブースで頒布していた本は2冊とも完売できました。買うことができなかった方、申し訳ありませんでした。

次は、新しいネタの本 + これまで一回のイベントごとに売り切りしていた過去のコピー本の内容編集しなおして一冊のオフセットにまとめるということができたらなと。

いつもの人発見装置のソースコードは こちら にございます。参考にしてください。

コミックマーケット87 12/30 火 西い-15b 電脳律速 頒布物確定

またしても、本番前日の告知ですが、明日12/30 コミケット87 3日目 電脳律速(西い-15b)のスペースでは以下を頒布します。

新刊 : 「エンタープライズサーバの技術」 一冊:200円

エンタープライズサーバの技術

エンタープライズサーバってなんぞ? どんなところで使われているのか? エンタープライズサーバのRAS技術(信頼性、可用性、保守性を高めるための技術)について解説した本です。半年前に出そうと思って出せなかった本を今ここに。

新しい電子工作ネタが、思いつかなかったんだよ。

既刊: 「いつもの人発見装置の作成」 一冊:500 → 300円

前回のコミックマーケットで出した本です。在庫処分 & 新刊と合わせてワンコインにということで、300円に値下げしました。