<   2014年 02月 ( 5 )   > この月の画像一覧
|
キーボードとカーソルをAppleScriptで自動運転(RAWを別名で保存)
c0070938_10305147.png

写真をRAWデータで受け取ることが時々ある。というか本当はJPEGなのにPhotoshopがどこかのメタデータを読んでRAWだと誤認するっぽい。これを開いて必要な加工(リサイズとかキリヌキとか)を施すまではいいが、それを別名で保存するのがメンドくさい。まずこういう↓ウィンドウが出る。もしかすると通常は出ないのかも知れないが、ウチで使ってる「解像度変更して保存して閉じる」アクションを使うと、こういうウィンドウが出る。
c0070938_10305578.png
これを「IMGP3961_.jpg」という名前で保存したい。必要な手順はこうだ。

1)キーボードの右矢印キーを押してファイル名の選択を解除しカーソルを点滅させる。
2)deleteキーを5回連打して「 のコピー」を消し、代わりにアンダーバーを入力。
3)カーソルを「フォーマット」のところに移動してクリック。
c0070938_1031285.png
4)プルダウンメニューから「JPEG」を選択し、リターン。
c0070938_1031781.png
5)「JPEGオプション」で「12」を入力してリターン。
c0070938_10312035.png
6)最後に command + D を押して「保存しない」。おしまい。

キーボードだけでもマウスだけでも完結せず、両方必要なところがイヤだ。1枚や2枚ならなんてことないけど、この作業を何十回も繰り返すのはつらい。そこでAppleScriptだ。以下のAppleScriptにQuicksilverでキーボードショートカットを割り当てて実行すると、以上の作業が2秒で終わる。よりチューニングを施せば1秒でも可能だと思う。しかしありがたいのは2秒で終わることではなく、その間集中したり考えたり迷ったり判断したりということが一切不要になることだ。

ただしカーソルをAppleScriptで操作するには、Macに「cliclick」というものをインストールしておく必要がある。興味を持たれた方はザリガニさんのところでcliclickについて学んでください。ちなみに画面上の座標を得るには command + shift + 4 を押す。「右矢印のkey codeは124」というようなことは「Key Codes」で調べる。

◉後記:なんでPhotoshopのアクションでやらねーのよ、というツッコミをいただいた。いや、やろうとしたんですよ。でもどうしてもできなかった。そのうちに、もしかしてこのウィンドウいつも決まった位置に出るんじゃないか、だとしたら AppleScript と cliclick でイケるじゃん、と気付いたわけです。これはアクションで試行錯誤してた時とは全く違うアプローチなので、その頭で改めて考えると、アクションでできるのかも。

●サンプルスクリプト
delay 0.3 --0.3秒待て
tell application "System Events"
key code 124 --右矢印キーを押せ
delay 0.02
key code 51 --delete
delay 0.02
key code 51 --delete
delay 0.02
key code 51 --delete
delay 0.02
key code 51 --delete
delay 0.02
key code 51 --delete
delay 0.02
key code 102 --一応英数キーを押してから
key code 94 --アンダーバー
end tell
delay 0.1 --必要かどうかわからんけど習慣的に挟む

do shell script "cliclick -w 50 960 540 960 650"
--座標「960 540」と「960 650」を、50ms(0.05秒)開けて連続クリック
delay 0.1
tell application "System Events"
key code 36 --リターン
end tell

--ウィンドウ名『JPEG オプション』
--「画質」が選択状態にあるので「12」を入力
tell application "System Events"
keystroke "12"
delay 0.1
keystroke return
delay 1
keystroke "d" using command down
end tell
do shell script "afplay /System/Library/Sounds/Purr.aiff"
●このサンプルスクリプトの使い方

1行目の「delay 0.3」は何故必要かというと、これをQuicksilverで例えば「command + option + S」に割り当てた場合、「delay 0.3」がないと、押した瞬間に「command + option + S + 右矢印」を押したことになってしまい、誤動作するから。だから0.3秒以内に指を離す必要がある。
[PR]
by nobiox | 2014-02-19 10:35 | ├バカスクリプト | Comments(0) |
より正しい物語を得た音楽はより幸せである
www.morishitayui.jp/samuragochi-niigaki/‎

「だから森下唯っていう人の書いたその記事を全文読んで欲しいんだけどさ、そんなこと言っても読みゃしないでしょ、だから説明するよ。ある音楽関係者がね、去年のNHKスペシャルをきっかけに全盲の天才作曲家を知り興味を持って、ネットで検索してプロフィールやらを読み、曲の断片を動画で視聴したと。そして強い違和感を感じた、と」

「プロフィールによると、聴覚を失った後に真実の音に目覚め、それまでの楽曲を全て破棄した元ロック・ミュージシャンが、常に轟音の鳴り響く中で霊感の降臨を待って書いた曲、ということになっており。

あの、アマチュアだからこそ出せる不可思議な凄みってあるじゃない。アンリ・ルソーとか山下清とか田中康夫とかスリッツとかダモ鈴木とか。そういうタイプかと思って聞いてみると、ものすごく正統派の音楽教育を受けたことが明らかな、ものすごく王道の、繊細な、丁寧な、知性を感じさせるクラシックなんだって。だからすぐ、あ、これはインチキ野郎だ、商売の為にプロフィール詐称してやがる、売る気満々で書かれた、嘘にまみれた、いやらしい音楽だ、と思ったんだって」

「だけどインチキ野郎にしてはよくできてる、と。「丹精込めて仕上げられた」ものに聞こえると。真摯に音楽に向かわずしてこれが生み出せるとしたら凄い才能だと。悔しいが認めざるを得ないと。その、インチキと真摯のギャップが、不思議だったんだって」

◆◆

「でね、クラシック業界ではまともな人はもう、感動的な交響曲とか書かないんだって。古臭いから。映画やゲームや大河ドラマから「発注」された時以外は。まともな志のある作曲家は全員がいわゆる「現代音楽」なの。今回名乗り出た人もそうなんだって。まともな作曲家はまともな音楽を書かないで実験音楽ばかりやってるという、ちょっと何だかなー、という妙な状況があるんだってさ。ケージ以降。伊東乾は「それが当然だし、それでいい」と思ってるらしいけど、森下唯は「現代のクラシック業界の停滞」と感じてるらしいわけ。なんで小説や漫画や映画はそうなってないのにクラシックだけがそうなるのかは書いてなかったから知らないけど」

「それで今回のニュースを聞いて、ものすごく腑に落ちたと。新垣隆という真摯な作曲家が、時代錯誤な誇大妄想を持つ自己顕示野郎の「発注」で、こう、神秘的な感じでふわーっと始まって、クライマックスではズガガーンと雷が落ちて、余韻を残して終わるみたいなヤツが欲しいんだよ、聴衆を熱狂させるみたいなさあ、そういうのが今の時代にこそ必要なんだよと熱く迫られて、それに本気で応えて書いた曲だったのかと。なるほど、と。「中世宗教音楽的な抽象美の追求」「 上昇してゆく音楽」「祈り(救いを求め)」「啓示(真理への導き)」とかなんとか」

「ジャズミュージシャンがさ、テレビ局の知り合いに頼まれて仕方なく氷川きよしのバックで演奏してみたら意外にもすごく楽しくて達成感があった、みたいな」

「だから、佐村河内守はインチキ野郎かも知れないけど、佐村河内守という人間の暑苦しい思いがなかったら、あれらの曲は決して生まれてないわけで、だから「作曲者」は詐称だったとしても、ある意味で作者なのは間違いない、と」

個人的には、こういうプロデューサーつきのスタイル、現代のクラシック業界の停滞を吹き飛ばすひとつの手段として広まっても良いんではないかとさえ思える。制約があってこそ、その枠内で創意工夫を凝らして良いものができることだってある。

佐村河内氏の誇大妄想的なアイディアを新垣氏が形にするという、この特異な状況下でしか生まれ得なかったあれら一連の楽曲とその魅力を、「全聾の作曲家が轟音の中で」云々よりよほど真実に近いだろうこの(小説より奇なる)物語とともに味わい、よりよく理解し、より正しく評価すること。それが、取りうる最も適切な態度ではないかと思う。

佐村河内氏の詐欺行為は断罪されるべきことだろう。しかし、週刊誌記事などを読む限り、「凄い曲を世の中に出してやろう」という強い意思だけは本物であったのだ、と感じられる。記者会見で新垣氏が述べた言葉が印象に残っている。その言葉だけで、この事件は悪いことばかりではなかったんだと思えた。彼はこう語っていた。

「彼の情熱と私の情熱が、非常に共感しあえた時というのはあったと思っています」

[PR]
by nobiox | 2014-02-07 20:18 | ├自分用メモ | Comments(0) |
都知事選。どうしよう。
右か左か、とか、保守かリベラルか、なんてことよりも、個人的にだいじだと思ってるのは「マッチョ指向かそうでないか」だ。

石原慎太郎都知事のやったことのうち、ムカついたことはいくつかある(例えば五輪誘致の顛末とか)が、実は、さほど大きなことはない。それより、石原慎太郎はマッチョ指向の男だった。屹立したペニスで障子を突き破るオレ、カッコいいでしょ、みたいなノリ。その振る舞いや発言の節々がたまらなくイヤだった。イヤとか好きとかは別にして、有害だったと思う。猪瀬直樹都知事も同じくマッチョ指向の男だった。

その路線の対抗馬として細川護煕、というのはまあ、いいのかも知れないが、それを推したのが小泉純一郎という典型的なマッチョ指向の男らしい。って、どうすりゃいいのよ。
[PR]
by nobiox | 2014-02-05 22:20 | ├自分用メモ | Comments(0) |
AppleScript で音を鳴らす
Mac OS 9 までは、「起動項目」や「終了項目」にサウンドファイルを入れておけば、それだけで音を鳴らしてくれた。OS X では、ログイン項目にサウンドファイルを指定しても、例えば iTunes が起動してしまう。起動して鳴らしてくれるならそれでもいいが、時間をかけて起動した挙句にウィンドウを開くだけで、鳴らすには三角ボタンをクリックする必要があったりとか、いろいろ面倒な仕様になった。

と、思っていた。しかしそれは、無知ゆえのストレスだったのかもしれない。

◆◆

Mac OS X で、Finder で「command +G」を押すと「フォルダへ移動」というダイアログが出てくる(OS X 10.7.5)。
そこに「/System/Library/Sounds/」と入れてリターンキーを押すと、「/System/Library/Sounds/」フォルダが表示される(いきなり「/」で書き出すと、それは「ルートディレクトリ」を意味する)。

「/System/Library/Sounds/」にはデフォルトで、いろんな AIFF ファイルが入っている。これがいわゆる「システムサウンド」だ。どれかひとつを選択してスペ−スキーを押せば、クイックルックで音が聞ける。ここに入ってるサウンドは、システム環境設定の「サウンド」→「サウンドエフェクト」で、警告音として表示される。つまりここにエッチなお姉さんの声を入れておくと、エッチなMacにすることも可能、ということだ。

AppleScript で、この中の好きな音を鳴らすことができる。例えば以下の1行を AppleScript エディタにコピペして実行ボタンを押せば、「Purr.aiff」が鳴る。「afplay」というのが「ユニックスコマンド」であるらしい。まあ、そう言われても何のことかはわからないが、我々バカスクリプターにとっては、使えさえすれば、わからなくてもいいのである。
do shell script "afplay /System/Library/Sounds/Purr.aiff"

別にシステムサウンドである必要はない。例えば自分のホームフォルダ(家のアイコンが付いたフォルダ)に「sound」というフォルダを作り、そこにファイル「OE-new-mail.aiff」を置いてみる。これを鳴らすAppleScriptは
do shell script "afplay ~/sound/OE-new-mail.aiff"
だ。「~/」がホームを意味する。ただし実験の結果、いくつかの制限がある模様。

・「~/sound/OE-new-mail.aiff」みたいなヤツを、ファイルの「パス」と呼ぶ。
 経路という意味。まあ「住所」です。パスの中に半角スペースがあるとダメ。
 例えばファイル名が「OE new mail.aiff」だとエラーになる。
 フォルダ名が「 Sound」とかもダメ。
・いくつかと書いたけど、今のところ確認できたのはそれだけか。
 半角ハイフンと半角アンダーバーはオッケー。
 意外なことに日本語は、全角スペースも含めてオッケー。
・AIFF 以外の、例えば MP3 とかでもいけるのかどうか、未検証。

●サンプルスクリプトの使い方

Objective-Cでコマンドの中身を作るまで - ザリガニが見ていた...。
徹底的にソフトウェアで豊かな音を奏でてみよう - ザリガニが見ていた...。
[PR]
by nobiox | 2014-02-05 21:23 | ├バカスクリプト | Comments(0) |
InDesign で PDFとパッケージフォルダを書き出しZIP圧縮し、元ファイルをリネームする
当然もっとエレガントな書き方があるんだろうけど。
--1-PDF見開きのみ
try
tell application "Adobe InDesign CS4"
save document 1
set org_name to (name of document 1) as Unicode text
set doc_name to do shell script "echo '" & org_name & "' | sed -e 's/\\.indd$//;'"
--↑拡張子の削除
set PDF_doc to doc_name & ".pdf"
set Fpath to "snoopy:users:pinkman:Desktop:" & PDF_doc

tell application "Finder"
if exists file PDF_doc of desktop then
delete file PDF_doc of desktop
end if
end tell

export document 1 format PDF type to Fpath using PDF export preset "nobidouble"
save document 1
close document 1
end tell --tell application "Adobe InDesign CS4"
tell application "Preview"
activate
tell application "System Events"
key code 13 using {command down} --W
end tell
end tell
on error
tell application "Finder"
activate
display dialog "エラーです"
end tell
beep 2
end try
--2-パッケージまですべて
try
tell application "Adobe InDesign CS4"
save document 1
set org_name to (name of document 1) as Unicode text
set doc_name to do shell script "echo '" & org_name & "' | sed -e 's/\\.indd$//;'"
--↑拡張子の削除
set doc_name_zip to doc_name & ".zip"
set PDF_doc to doc_name & ".pdf"
set PDF_doc_1p to "1p_" & doc_name & ".pdf"

set Fpath to "snoopy:users:pinkman:Desktop:" & PDF_doc
set Fpath_1p to "snoopy:users:pinkman:Desktop:" & PDF_doc_1p

tell application "Finder"
if exists file PDF_doc of desktop then
delete file PDF_doc of desktop
end if
if exists file PDF_doc_1p of desktop then
delete file PDF_doc_1p of desktop
end if
if exists folder doc_name of desktop then
delete folder doc_name of desktop
end if
if exists folder "zxc_vbnm%x" of desktop then
delete folder "zxc_vbnm%x" of desktop
end if
end tell
tell application "Finder"
try
delete file doc_name_zip of desktop
end try
end tell
--zipファイルはあえて捨てなくとも内容が置き換えられてしまう模様。
--でもそれだと追加日でソートできないのでやっぱり捨てる。何故か下記では機能しない。
--else if exists file doc_name_zip of desktop then
--delete file doc_name_zip of desktop

export document 1 format PDF type to Fpath using PDF export preset "nobidouble"
beep
export document 1 format PDF type to Fpath_1p using PDF export preset "nobisingle"

--▼★★★パッケージしてフォルダ名を doc_name に変更して圧縮
tell application "Finder"
try
(*「デスクトップ」フォルダがすでに開いている場合に備えて*)
select Finder window "デスクトップ"
set toolbar visible of Finder window 1 to true
set current view of Finder window 1 to list view
set visible of column id modification date column of list view options of Finder window 1 to true --変更日
set sort column of list view options of Finder window 1 to modification date column
on error
(*「デスクトップ」ウィンドウが存在しない場合*)
set xdr5 to ((path to home folder) as text) as alias
make new Finder window to folder "Desktop" of folder xdr5
set toolbar visible of Finder window 1 to true
set current view of Finder window 1 to list view
set visible of column id modification date column of list view options of Finder window 1 to true --変更日
set sort column of list view options of Finder window 1 to modification date column
--デスクトップウィンドウは必ずリスト表示(というかコラム表示以外)にしておく。
--圧縮セクションに「set fol_Path to (target of window 1) as alias」という行があり、
--コラム表示だとzipが「zxc_vbnm%x」の中に作られてしまう。
end try
make new folder at desktop with properties {name:"zxc_vbnm%x"}
end tell
tell application "Preview"
activate
tell application "System Events"
key code 13 using {command down} --W
delay 0.2
key code 13 using {command down} --W
end tell
end tell
--↓パッケージ
tell application "Adobe InDesign CS4"
tell document 1
set myFolder to "snoopy:Users:pinkman:Desktop:zxc_vbnm%x:"
set myResult to package to myFolder with copying profiles, copying fonts, copying linked graphics, including hidden layers, creating report, updating graphics and ignore preflight errors
end tell
end tell
--↑パッケージ終わり

tell application "Finder"
activate
select Finder window "デスクトップ"
select folder "zxc_vbnm%x" of window 1
set tmp to selection
set name of item 1 of tmp to doc_name
--↑フォルダ名を doc_name に

--↓圧縮
set i to 0
set fol_Path to (target of window 1) as alias
repeat with select_item in (selection as list)
set file_path to select_item as alias
set fil_name to name of file_path as text
set source to quoted form of POSIX path of (file_path as text)
set dest to quoted form of POSIX path of (fol_Path & fil_name & ".zip" as text)
do shell script "ditto -ck " & source & " " & dest
delay 1
set i to i + 1
end repeat
--↑圧縮終わり
--[AppleScript] Finderで複数選択している項目を1つずつzipで圧縮 | How2すいとー
--http://www.hw2-suito.com/archives/410
end tell
--▲★★★パッケージしてフォルダ名を doc_name にして圧縮
save document 1
close document 1
end tell --tell application "Adobe InDesign CS4"
tell application "Finder"
--↓元のInDesignファイル名アタマに「XXX」を付加
set addStr to "XXX"
if exists file org_name of window 1 then
select window 1
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 2 then
select window 2
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 3 then
select window 3
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 4 then
select window 4
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 5 then
select window 5
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 6 then
select window 6
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 7 then
select window 7
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 8 then
select window 8
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 9 then
select window 9
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if exists file org_name of window 10 then
select window 10
select file org_name of window 1
try
set FinderSelection to selection as alias list
on error
set FinderSelection to selection
end try
repeat with aFile in FinderSelection
set oldName to name of aFile
set newName to addStr & oldName
set name of aFile to newName
end repeat
else if not (exists file org_name of window 10) then
display dialog "ファイルが見つかりません" with icon caution
end if
end tell
on error
tell application "Finder"
activate
display dialog "エラーです"
end tell
beep 2
end try
以下、
3-PDFのみ両方.scpt
4-パッケージのみ.scpt
5-パッケージと見開きPDF.scpt
6-パッケージと片頁PDF.scpt
7-PDF片頁のみ.scpt
とあるけど省略。その7本を
--http://kb2.adobe.com/jp/cps/511/511636.html
--http://blog.goo.ne.jp/vallie/e/91b2448c09eeba217f82099e6715d2c9
--http://e-deep.org/iblog/C535725699/E20080108155938/index.html

tell application "Quicksilver" to activate
--Quicksilver でこのスクリプトを使うには1行目にこれが必要みたい。理由は不明。
set instruction to item 1 of (choose from list {"PDF 見開きのみ", "パッケージまですべて", "PDFのみ両方", "パッケージのみ", "パッケージと片頁PDF", "パッケージと見開きPDF", "PDF 片頁のみ", " "} default items "パッケージまですべて")

--◉1
if instruction is "PDF 見開きのみ" then
end if

--◉2
if instruction is "パッケージまですべて" then
end if

--◉3
if instruction is "PDFのみ両方" then
end if

--◉4
if instruction is "パッケージのみ" then
end if

--◉5
if instruction is "パッケージと片頁PDF" then
end if

--◉6
if instruction is "パッケージと見開きPDF" then
end if

--◉7
if instruction is "PDF 片頁のみ" then
end if
の各「if」行と「end if」行の間にコピペして完成。
[PR]
by nobiox | 2014-02-04 11:26 | ├DTP | Comments(0) |
|