« 2010年1月 | メイン | 2010年3月 »

2010年2月 5日 (金)

iPhoneのマイク入力コネクタ

前回の他のマシンのプレゼン画面を放送したいという目標は達成できたので、次は軽装で済ませたい時にiPhoneからUStream中継をしたりするのに問題となる音声の収録です。プレゼン画面と講演者が入る程度のちょうど良い画角の場所に陣取ると、どうしても音声が遠くなってレベルが低くなってしまいがちです。見る時にヘッドホンをつけてボリューム最大で聞かないといけないってなことになっちゃって困るんですよね。

ということで、ヘッドホンの4極端子に外部マイクつけられないかなぁってのが今回のお題です。30pinコネクタにもラインインがあるというウワサもありますが、充電もしながらじゃないと長時間の収録/放送に堪えないので、30pinコネクタでやるには結構配線数も多くなって嫌なんですよねぇ。前に作ったiPod用コネクタ基板もこの目的には使えませんし、何かと自作の30pinコネクタはトラブルをはらみがちで懲りてるってのもあるので、ヘッドホン端子の方に挑戦です。

とりあえず、手持ちの4極コネクタとiPhoneの付属のヘッドホンを使ってあたりをつけてみると、どうやら先からヘッドホンのL,R,GND,Micとなっているっぽいです。マイク端子には1.5V程度のバイアスがかかっているようです。とりあえずそのままGNDとマイクの端子を2pinの3.5φジャックに繋ぐような変換コネクタを作ってみました。

Sany0006Sany0005

で、早速PC用のコンデンサマイクを繋いで実験してみると音が出ない/めっちゃ遠い状態で全然ダメです。あいたたた、入力インピーダンスがすごく低いのか、マイクアンプがヘッドホン側に入ってるんですねぇ。ってことで、実際に付属ヘッドホンを1.5Vの電源に10kΩでプルアップして波形を見てみると100mVp-pも出て来ます。やっぱしアンプ入りなんだぁ。ってことで、途中にマイクアンプ入れないとダメって事が分かりましたので、基板作んなくっちゃ〜、ってことで今日はオシマイ。

ちなみに、ライン入力をプリアンプでググッとボリューム絞って入れてみたらちゃんとボイスメモで録音できました〜。どうせならレベル調整やライン入力も入れられる基板作るかなぁ。そう言うのだと欲しいって人も出てきますかねぇ?集まるんならちゃんとパターン起こして基板屋さんに頼みますが...

【2010.5.14追記】マイクアンプを作って再挑戦してみました。が、そもそもUstream Broadcasterがヘッドホン端子のマイク入力を使ってくれません。ってことで、この計画はダメっぽいですわぁ。

2010年2月 4日 (木)

Skypeで電話するスクリプト

@himanaiku_kawai さんの「特定の人からメールが着信するとスカイプからケータイに電話かけてくれる機能欲しい。。」というtwittを見て、ちょっと作ってみました。MacならAppleScriptで簡単に実装できんじゃない?と思って調べてみたら、次の1行で済んじゃいました。

tell app "Skype" to send command "CALL echo123" script name "SkypeCall"

echo123のところを目的の電話番号(日本なら+81で始めて最初の0は削除した番号列)に変更すればOKです。あとは、このスクリプトをScript Editorでスクリプトとして保存して、Mail.appなりでフィルタに特定のメールアドレスでAppleScriptが起動するようにルールを設定すれば良いだけですね。が、それだと確かに電話は掛かってくるんですが、無言のイタズラ電話状態なので、なんか寂しいですよねぇ。ってことで、ちゃんと繋がったのを確認して、特定の音声ファイルを再生するようにしてみました。

tell application "Skype"
  copy word 2 of (send command "CALL echo123" script name "SkypeCall") to callid
  repeat
    copy word 4 of (send command "GET CALL " & callid & " STATUS" script name "SkypeCall") to callStatus
    if callStatus is "INPROGRESS" then exit repeat
    if callStatus is in {"REFUSED", "CANCELLED", "FINISHED", "MISSED", "BUSY"} then return
  end repeat
  send command "ALTER CALL " & callid & " SET_INPUT file=" & quote & "/path/to/soundfile.wav" & quote script name "SkypeCall"
 
  tell application "Finder" to delay 30
 
  send command "SET CALL " & callid & " STATUS FINISHED" script name "SkypeCall"
end tell

右がちょっと切れてますので、ソースはScript Editorにペーストしてコンパイルしてからゆっくり眺めてください。

同じく、echo123は適宜電話番号に置き換えてください。さらに/path/to/soundfile.wavを再生する音声ファイルにして、その音声ファイルの長さに合わせてdelayコマンドのパラメータの30秒の部分を修正してください。Skypeが対応している音声ファイルは16k sample/sec、16bitのWavファイルだけしか受け付けてくれないようです。

script nameパラメータは何でも良いんですが、スクリプト内で一貫させておいてください。あと、最初に実行した時にSkypeの方でコマンドを受け付けても良いか聞かれるので、許可してあげてください。

はたしてニーズがあるのかどうか分かりませんけど、せっかく作ったんで公開しておきます。なかなかSkypeのスクリプトも色んな事出来そうなのが分かったので、今後もなんか作るかもしれませんし、興味を持って調べて何かもっと使い手のあるものでも作ってもらえると嬉しいかなと思います。ライセンスはBSDってことで、ご自由にお使いください〜!!

UStream Producerで別のMacの画面を放送

UStream ProducerがPro版とFree版が出て不安定なFlash君無しで中継が出来るのは嬉しいところです。11月からTMUGのUStream録画(中継は回線が不安なので、ブツ切れしないように録画にしている)をやっていて、色々と改善したい点があったりするわけですが、その一つがプレゼン画面をカメラで写さないで、直接スクリーンキャプチャから持ってこれないか?ってところでした。それが出来ると、プレゼン画面やアプリの操作画面をメインにして、プレゼンターの姿を小さくPicture in Pictureで表示できるわけで、とってもリッチで嬉しいわけです。

Pro版を買うほどの事もないので、まずはFree版での実験をして無事成功したので、手順を公開します。

Screencastを選ぶと、Desktop Presenterというソフトが別に立ち上がります。これが鍵ですね。このアプリの本体はUStream Producer.appのパッケージを開くと、Contents/Resourcesの中に入っています。

31 2

予想した通りUStream ProducerとはTCP/IPの7272番ポートで接続するような仕様みたいです。netstatで見てやると*.7272でLISTENしています。

ということで、若干の実験を経てLocalで立ち上がってるDesktop Presenterと区別がつかなければOKなんじゃないかと予想を立てて、別のMacでDesktop Presenterを立ち上げて、さらにsshでport fowardをかけてみたところバッチリ繋がりました。

最初は放送側のMacからssh -Lでプレゼン側のMacに繋いだんですが、これだといちいちプレゼンする人にsshで入れるアカウントを用意してもらわないといけなかったりとややこしい事になるので、ssh -Rでプレゼン側のMacから放送側のMacにport forwardすることに変更しました。これでもtcp的な見た目は同じ事なので無事繋がります。

では、細かい手順を説明して行きましょう。まずはUStream Producerも何も立ち上げない状態から始めます。

  1. まずは放送側のMacにリモートログイン出来るように設定します。システム環境設定の共有でリモートログインのチェックをオンにしてやります。
    3
  2. 次に、放送側とプレゼン側の2台のMacのIPアドレスのうち同じネットワークにあるIPアドレスを調べます。両者が無線LANの同じ基地局で繋がっているのであれば、無線LANのポートに付いているアドレスですね。放送側のアドレスだけで大丈夫です。プレゼン側は繋がらないなどの現象があった場合にトラブルシューティングとして調べればOKです。同じくシステム環境設定のネットワークを選んでEthernetならば左のリストからEtherを選べばアドレスも表示されますが、AirMacの場合は詳細...ボタンを押して更にTCP/IPタブを選んでください。この例の場合は192.168.10.125になります。
    4
  3. さて、次はプレゼン側に移ります。アプリケーションフォルダのユーティリティフォルダに入っているTerminalを立ち上げます。ここに以下のようなコマンドを打ちます。
    ssh -N -R 7272:127.0.0.1:7272 test@192.168.10.125
    ここで、testの部分は放送側のMacにログイン出来るログイン名に適宜置き換えてください。すると、こんな風にPasswordを要求してきますので、放送側のMacのログインパスワードを入力します。この時にキーインしても何も表示されませんので、確実に一気に入力してください。間違えた場合は再度パスワードを要求されます。パスワードの前にAuthenticationがどうのこうのと言ってくる場合もあるかもしれませんが、その場合にはyesと入力してください。
    5
  4. これで、無事繋がっているハズですので、Terminalは放置して、Desktop Presenter.appをプレゼン側のMacにコピーして立ち上げます。プレゼン側のMacのIPアドレスがこの場合は192.168.10.12になっています。
    6
  5. さて、ここでやっとUStream Producerを立ち上げます。適宜ログインを済ませてScreencastボタンからAdd New Screen Recording Shotを選ぶと下にScreencastの選択肢が出てくるはずです。で、その画面はプレゼン側のMacの画面になっているはずです。

ということでいかがでしょう?無事繋がりましたか?あとはUStream Producerの使いこなしの話しになってしまうので、それは他の方にお任せしま〜す。

ちなみに、こうやって一度設定してあげると、sshのコネクションを切っても再接続すれば大丈夫です。ということで、プレゼンする人が変わる時には、再度そちらのマシンからsshコマンドを打ってあげれば良い事になります。もちろん元のプレゼンターからの接続は先に切っておかないといけませんので、前のプレゼンが終わったら固まっているように見えるTerminalでCtrlキーを押しながらcのキーを押します。それでプロンプトが戻ってくるはずですので、切断に成功した事になります。

<2010.2.5追記>Windowsでのプレゼンも放送できた方が嬉しいと思うので、Windowsからもやってみました。同様にssh -Rでの接続(sshはCygwinで入れました)で無事放送できました。他にもPort forward用のソフトはあったと思うので、Cygwinにsshをインストールしてない場合もそう言ったソフトを入れれば良いんじゃないでしょうか。ちなみに、Desktop Presenter.exeはC:\Program Files\Ustream\Ustream Producer\rsrc\に入ってました。

2010年2月 1日 (月)

初見の方に

今日(2010/1/31)は初めてお会いする人も多かったので、私のブログも初めてと言う方も多いかなぁということで、見所を並べておきます。

  • Printwitts 最近の作品ですが、Twitterをレシートプリンターにダラダラ出しちゃうってもんです。21世紀メディアを紙テープ風1970年SFテレビ番組テイストで読めるギャップが楽しい。その後タイムラインプリンターとして商品化されています。業務用機器という位置づけなので売価は5万円+消費税です。販売元は株式会社ヒマナイヌ川井さんです。
  • Scootech 去年の3月に買った電動の原付関連の話題。実機の写真は一番下です。まだ書いてませんが実はLiPoバッテリで動かす改造なんかも実施済です。が、インバータを開けたら若干ヤバい事が解って自粛中。ラジコン用の18.5V2200mAhのバッテリ3本で3.5km走りました。自作インバータ化も鋭意計画中です。
  • 仕事ネタ はあんまり載せてないんですが、昔お手伝いさせてもらったワーキングモックアップです。他にもコレとかコレとかも中身を作るお手伝いをさせてもらいました。
  • 小型スピーカー 今日の豚組でも終了後に披露させてもらった小型のスピーカーとアンプのセットです。熱を持たないし、図体の割に良い音鳴らします。
  • UStream Producerで他のMacの画面を放送 なんか反響が大きかったので、こちらにもリンクしておきます。
  • 2010/2/6のGadget 1でのプレゼン資料です。 Keynote版(オリジナル)、PowertPoint版
  • <2011.2.5 追記>:レンズ交換できるWeb cam「ManualCam」の情報はこちら

最近のトラックバック

オヤマ日記飴

jun's Blog in English

Powered by Six Apart

nobi.com (JP)