2008 年 10 月の記事一覧です(2 件)

Green Day – Wake Me Up When September Ends

アメリカのパンクバンド Green Day の 名曲 Wake Me Up When September Ends のPVは、とても美しく、哀しく、まるで映画のワンシーンのように作成されていますが、そのPVに日本語字幕を付けてくれた方がいました。感謝。

[youtube:http://jp.youtube.com/watch?v=3g_27bYN4lY]

Summer has come and passed
The innocent can never last
wake me up when september ends
like my father’s come to pass
twenty years has gone so fast
wake me up when september ends
wake me up when september ends
wake me up when september ends

9月の全てが終わった時、僕を起こしてくれ
9月が終わったら僕を起こしてくれ

ラストの訳が、とてもいいと思いました。「9月」はまだ現在進行形であり、「9月」はまだ終わっていないんですね。

グリーン・デイ ¥ 2,520
良いですね!
なーんか・・・
素晴らしい歌詞。
ほほう
ケチのつけようがないすげーアルバム

MacBookのモーションセンサーでテトリスをやってみた

昨年の11月にLet’s Note W5からMacBookにチェンジした時に、最後までMacBookとThinkpadどちらにするか悩んだのですが、Thinkpadいいなあと思ってたのはこちらの記事を以前から読んでいたから。
もちろんMacBookにも緊急モーションセンサーがあるのは知っていて、購入した時から、いつかモーションセンサーを使って何かやってみようと思っていました。で、ようやくやってみたのがこの動画です(ちょっと見難いです><)。




このblogで数回ネタとして書いていますが、このところPythonが楽しくて、今回もぜひPythonでやろうと思い、緊急モーションセンサーの挙動をPythonで取得するものを捜してたら次のサイトにたどり着きました。

MacBookの緊急モーションセンサーの情報を取得するにはAMSTrackerを使用します。インストール等については上記マイコミジャーナルのサイトをご確認下さい。AMSTrackerを次のように実行すると

AMSTracker -u 0.5

このように3つの数字が表示されます。一番左の数字が左右、真ん中の数字が垂直、右の数字が前後と、それぞれの動きを表示しています。MacBookを動かすと、それぞれの数字が動くことがわかります(終了する場合はControl-C)。
amstracker_01

また、次のように -s を付けて実行すると

AMSTracker -u 0.5 -s

0.5秒毎に数値が出力されます(終了する場合はControl-C)。
amstracker_02

この数値をPythonスクリプトで読み取り、AppleScript経由でキーストロークをコントロールしています。

AMSTracker -u 0.3 -s | python  tilt_control_osx.py

このように実行してから、ここにあるフラッシュ版テトリスを操作しています。終了はターミナル上でControl-Cを押します。
作成したコードは、へっぽこですが一応掲載させていただきます(スクリプトは何度も実行して成功しているものですが、実施は自己責任でお願いします)。
実際に実行する場合、気を付けていただきたいことは

  • AMSTracker のセンサー値の取得間隔は0.3秒にしていますが、うまくいかないようでしたら、0.1〜0.5くらいで調整してみて下さい。
  • THRESHOLD(しきい値)の数値30は私の経験に基づく数値で、それ以下にして実行すると敏感になりすぎてMacBookをコントロール出来なくなる可能性があります。
  • DOWNキーはMacBookを手前に引く(AMSTrackerの3番目の数値がプラス値になる)のですが、時々高いマイナス値が出ます。それによってDOWNコントロールをするつもりで逆にUPする場合があります。
  • コードにdebug用キーストロークをコメントアウトしてあります。そちらの挙動をターミナル上で確認してから実行するとわかりやすいかもです。

Geekな方々には、いまさら感のあるネタかもしれませんが、自分でもなんとか出来たのでうれしいです。コードに関してはもっとうまく書けると思うので、もう少し考えてみようと思います。

# coding: utf-8
# thanks Matt Webb: http://interconnected.org/home/2005/03/04/apples_powerbook
# thanks Naoki Tomita: http://e8y.net/blog/2006/10/26/p135.html
# Download AMSTracker from http://www.osxbook.com/software/sms/amstracker/
# Put AMSTracker and tilt_control_osx.py in the same directory. Go to this directory 
# in the Terminal and type:
# ./AMSTracker -u 0.3 -s | python tilt_control_osx.py
# Hit ctrl-c to exit.

THRESHOLD = 30 # lower numbers makes this more sensitive
X_AXCIS = 0 # three dimensions: sideways: 0, vertical: 1, forward/back: 2
Y_AXCIS = 2 # three dimensions: sideways: 0, vertical: 1, forward/back: 2

import sys, os

def run_command(command):
    script = os.popen('osascript', "w")
    script.write('tell application "System Events"\r\n')
    script.write('%s\r\n' % command)
    script.write('end tell\r\n')
    script.close()

while 1:
    try:
        line = sys.stdin.readline()
        x, y = int(line.split()[X_AXCIS]), int(line.split()[Y_AXCIS])
        if abs(x) > THRESHOLD or abs(y) > THRESHOLD:
            if x > 0 and abs(x) > abs(y):
                run_command('keystroke(ASCII character 28)') # move left
                #run_command('keystroke "l"')
            elif x < 0 and abs(x) > abs(y):
                run_command('keystroke(ASCII character 29)') # move right
                #run_command('keystroke "r"')
            elif y > 0 and abs(y) > abs(x):
                #run_command('keystroke "d"')
                run_command('keystroke(ASCII character 31)') # move down
            elif y < 0 and abs(y) > abs(x):
                #run_command('keystroke "u"')
                run_command('keystroke(ASCII character 30)') # move up
    except KeyboardInterrupt:
        sys.exit(0)
    except:
        pass

その他参考させていただいたサイト


PAGE TOP