
Circus Maximus “Nine”

続いては、プログレッシブメタルの新星と言われたノルウェーのCircus Maximusの、5年ぶりの3rdアルバム”Nine”を紹介。
彼らのデビュー(“The 1st Chapter”
)は確かに鮮烈だった。しかしその演奏技術と楽曲のクオリティには素直に感心したものの、当時の自分の好みとは逆の方向性だったためあまり聞き込むことはなかった。ハイトーンヴォイスにはちょっと辟易していたし、エキゾチックなリフやギターとシンセの超絶ユニゾンバトルも聴き飽きていて、ちりばめられたギターやシンセのギミックにもとっちらかった、おちゃらけた印象を抱くばかりだった。総じて言えば、’90年代メタルっぽく感じたのだった。洗練されてはいるがブレークスルーは起こしていない原石。しかし、今聞き込むと様々な要素が詰まっていて、後の真の開花を予感させるには十分なショーケースとなっている。
続く前作(“Isolate”
)ではギミックを抑制し、よりピュアで硬派な作りになり、大いに興味をそそったが、その’80年代メロディアスハードっぽいノスタルジックなプロダクションには気恥ずかしさを覚えるシーンも多い。俺的にはヘッドホン専用。
そして昨年届いた本作、これは紛う事なき’00年代プログレッシブメタルだ!今は’10年代ですけども。ハイトーンのコーラスに頼らず、中低音で落ち着いたヴァースを多く配し、しっとり聴かせるヴォーカル。硬質でミッドテンポの曲群でその味わいは格段に増し、存分に哭き、吠えるギターソロも健在。抜くところは抜き、十分な数のテーマを提示してから次々とたたみかける心地よい変拍子。メリハリの利いた、いかにもプログレらしいこうした曲展開にこそ、ハイトーンコーラスが必殺の冴え、映えを見せるというものだ。
これは良いアルバム。次章も楽しみです。
ふたつ目に紹介するのはドイツはハンブルクの新星、謎の一人バンドGalaktik Cancer Squad。音のスタイルとしてはアトモスフェリックブラックメタルをベースに、メロディアスなスピードメタルを融合させたキャッチーな作り。長い曲が多く、作業用BGMに最適です。
テンポ良いドラム進行、叙情感あふれるトレモロリフとギターメロディ、引き気味のベースと簡潔で抑え気味のデス声に、コズミックな電子音の味付け、緩急自在のプログレ的大作志向、とツボを押さえています。硬軟を織り交ぜ次々と新しいシーンが展開していくので飽きが来ない。
このGCSは2012年だけで3枚もアルバムを出していて、Bandcampで(今のところ付け値で)買えます。気に入った曲をいくつか貼っておくのでどうぞ。

Maurizio Di Tollo
“L’Uomo Trasparente”

気が付けばもう4月も半ばを過ぎてしまいましたが、2012年もいい音楽がいろいろ発表されたので、遅ればせながら挙げていきます。
まずは渋いところから。Maurizio Di Tollo “L’Uomo Trasparente”でどうでしょう。ひさしぶりに刺さったイタリアンプログレ。初めて触れるのに懐かしい情景。
ああ。時はゆっくり流れていいんだ。
やさしいおじさんの、語り聞かせるような歌い声が叙情感を倍加させまくってずるい。何歌ってるかぜんぜんわからないしほんとずるい。
スリルやケレン味はない。ただそこに身をゆだねるだけ。”La curva dei pitosfori”にほろっと来ました。野暮な情報だけど、変拍子はあちこちにあるよ。

ファームウェア更新にしけて詰んでしまったSony MW1の交換品を受け取ってきた。預けたのは本体だけだったけど、フルパッケージが支給された。ヘッドホンやmicroUSB充電器や4GBのmicroSDHCカードおよびリーダも全部入り。まあ、もう一つもらっても特に使い道はないけど。
良かったのは、今回の個体は銀色のキャップ部がしっかりキュッと締まること。故障したやつは隙間があって抜けやすく扱いづらかったから、地味にうれしい。
しかし、電源を入れてファームウェアバージョンを調べると「0.1.B.0.6」と古い。交換品なんだから開封して更新してくれてもよかったのに…とも思いつつ、再びドキドキの更新タイムを迎えることになった。
今回はPCを使わずに、たまたま持っていたXperia SXから更新してみることにした。というか、ペアリングしたらXperiaがファームウェアを更新するか聞いてきたので、両方とも充電器に差した状態でOKを選択。プログレスバーを不安げに眺めること数十秒、無事「0.1.D.0.6」に更新できた。でも、Bluetooth接続後しばらく音飛びが起きる問題は相変わらず。Bluetoothの音量がiPhone 5側とちゃんと同期するようになったけどそれは前からだったか?
まあ、少なくともリグレッションはないようです。めでたし。
「賢いcd」”z“の俺版fork「knu-z」v2.0をリリースしました(英語版記事)。
オリジナル版をいじっているうちに修正箇所がたくさん見つかり、直しすぎて個別にpull requestすることが困難になり、途中で作者のrupaさんにはforkの存在とそこそこ詳細な変更点リストをメールしたんだけど時すでに遅し。ほかにもforkがたくさんありすぎてうんざりだったかも。とはいえbashの補完は壊れているしzshの補完も古くて(compsys)いまいちだし、というわけでフィードバックについては気にせずにコアのアルゴリズム部以外を大幅に書き直しました。
ついでにcdの補完候補にzのスタック(ディレクトリ移動履歴に基づいてスコアリングされたディレクトリリスト)を含めるようにしたので、「zが使えるホストでだけzを使う」とか、「通常の移動はcd、よく行くところへの移動はz」なんていう悲しい使い分けは不要になりました。普通にcdを使っていれば、zが有効なら補完候補の上位によく行くディレクトリが現れるという空気のような存在です。
ただし、bashでは補完候補の出現順序を制御する方法がないため、cdにおいてはマッチするディレクトリがないときだけzのスタックから補完します。(常に含めてしまうと、辞書順ソートのおかげでうざいことになる)
ていうかzshを使えばいいと思います。
インストールは~/.bashrcや~/.zshrcに一行足すだけなので、READMEを読んで使ってみて。
しばらく愛用していたMW-1だけど、Bluetooth接続から1分くらい通信が安定しないのでファームウェアを更新しようかと思ってアップデートサービスで更新を試みたところ、更新中にエラーが出て筆置きと化してしまった。

Erしか言わないMW1
画面表示が「Er」となり、まったく操作不能。電源を切ることもできない。バッテリー切れを待つのみ。
ということでMW600でしのいでいるんだけど、やっぱりホールドスイッチがないのは厳しい。満員電車での接触でボタンを押されまくって音楽鑑賞どころではない。品川のサービスセンターに預けてきたので近々交換してもらえるはず。でも二度も足を運ぶのは面倒くさい。郵送した方が安いし時間も節約できるのに…。
[続報] 預けて2日目に交換品到着の連絡が来た
すばやい。けど、メール便で送ってほしい…。
LionでSafariを6に上げたら、RSSフィードを扱えなくなっていた。Mountain LionのSafari 6もやはり同じだった。RSSのURLを開くと、それなりのスタイルを当ててブラウザ内に表示してくれるのが便利だったんだけど、外部アプリケーションが呼び出されてしまう。そして、大方のフィードハンドラアプリは「購読」するかを聞いてきてうっとうしい。その場でフィードの中身を見たいだけなのに。
さらにうっとうしいのは、私の環境の場合はなぜかThunderbirdが起動されることだった。というのも、Thunderbirdは確かにフィードリーダ機能を持つはずなんだが、Safariから起動されても何も起きないのだ。
というわけでフィードリーダを変更する必要があるのだが、Safariの環境設定画面からはRSS タブが消えていて、フィードリーダを選択することができない。困った!
そこでRCDefaultApp(MacUpdate, CNET Download)ですよ。こいつは各種ファイルタイプ、URLスキーム、MIMEタイプなどに対応するアプリケーションを個別選択できるシステム環境変数ペインで、こいつでRSSハンドラを変更すればOK。
とりあえず安定のFirefoxにした。Firefoxはフィードの内容を表示しつつ、そこから一発で他のアプリやGoogle Readerなどのサービスで「購読」できるようになっていて完璧だ。

SafariからRSS対応が削られたのは、「通知」への移行を見ているんだろうけども、Lionは通知センターがないので中途半端で困るよなあ。
git mergetoolに使えるツールとして、デフォルトで"emerge"というのが用意されており、Emacs使いはこれを使えばEmergeでマージが行えるわけだが、難点もある。ひとつは、新たなEmacsインスタンスを起動してしまうということだ。起動に無駄な時間が掛かるし、マージにあたって既存のセッションで開いているファイルをその場で参照できないのは不便だろう。もっとも、これはemacsclientを使うようにして、Emergeの呼び出し方を少し直せば済む。もうひとつは、EmergeではなくよりモダンなEdiffを使いたいということだが、これは思ったほど簡単ではないのでわざわざこうして記事を書くことになった。
というのも、Emergeにはemerge-files-with-ancestor-commandという便利なものがあり、「マージが終わったらマージ結果を保存して即終了」ということが一発で出来てしまうのだが、Ediffの方にはそういうものがない。こいつはマージを終了してもろくに片付けもせず、全部ほったらかしという行儀の悪さだ。
そういうわけで、まずはEdiffのediff-merge-{files,buffers}が終わったら起動前のウィンドウ設定を復元するようにしてみる。これは比較的簡単。[2013-01-23改訂:フックにappendフラグを指定]
(eval-after-load "ediff"
'(progn
; save and restore window configuration
(defvar my-ediff-saved-window-configuration nil "Saved window configuration for ediff")
(defun my-ediff-save-window-configuration ()
(setq my-ediff-saved-window-configuration (current-window-configuration)))
(add-hook 'ediff-before-setup-hook 'my-ediff-save-window-configuration)
(defun my-ediff-restore-window-configuration ()
(set-window-configuration my-ediff-saved-window-configuration))
(add-hook 'ediff-suspend-hook 'my-ediff-restore-window-configuration t)
(add-hook 'ediff-quit-hook 'my-ediff-restore-window-configuration t))) |
次に、Ediffが新たに開いたファイルのバッファをマージ終了時に自動的に閉じる、および、マージ終了時に自動的にセーブしつつEmacsフレームを閉じる「バッチ版ediff-merge-files-with-ancestor」を加える。[2013-01-23改訂:ediff-filesに影響を与えるなどおかしかったので大幅修正; 続きはGitHubで]
(eval-after-load "ediff"
'(progn
; batch mode (for use from git mergetool etc.)
(ediff-defvar-local my-ediff-batch-mode-p nil "True if in batch mode")
(ediff-defvar-local my-ediff-close-on-quit nil "True if the buffer should be closed on quit.")
(defun my-ediff-batch-mode (&optional mode)
(ediff-with-current-buffer ediff-buffer-A
(case mode
(set
(setq my-ediff-batch-mode-p t))
(unset
(prog1 my-ediff-batch-mode-p
(setq my-ediff-batch-mode-p nil)))
(t
my-ediff-batch-mode-p))))
(defadvice ediff-find-file (around
mark-newly-opened-buffers
(file-var buffer-name &optional last-dir hooks-var)
activate)
(let* ((file (symbol-value file-var))
(existing-p (and find-file-existing-other-name
(find-buffer-visiting file))))
ad-do-it
(or existing-p
(ediff-with-current-buffer (symbol-value buffer-name)
(setq my-ediff-close-on-quit t)))))
(defun my-ediff-save-merge ()
(if (my-ediff-batch-mode)
(let ((file ediff-merge-store-file))
(if file
(ediff-with-current-buffer ediff-buffer-C
(set-visited-file-name file t)
(save-buffer))))
(ediff-maybe-save-and-delete-merge)))
(remove-hook 'ediff-quit-merge-hook 'ediff-maybe-save-and-delete-merge)
(add-hook 'ediff-quit-merge-hook 'my-ediff-save-merge)
(defadvice ediff-cleanup-mess (around
support-batch-mode
()
activate)
(let ((batch-p (my-ediff-batch-mode 'unset))
(buffers (list ediff-buffer-A ediff-buffer-B ediff-ancestor-buffer))
(buffer-C ediff-buffer-C))
ad-do-it
(dolist (buffer buffers)
(ediff-with-current-buffer buffer
(and my-ediff-close-on-quit (kill-buffer))))
(when batch-p
(ediff-kill-buffer-carefully buffer-C)
(delete-frame))))
(defun ediff-merge-files-with-ancestor-in-batch-mode
(file-A file-B file-ancestor &optional startup-hooks merge-buffer-file)
(ediff-merge-files-with-ancestor
file-A file-B file-ancestor
(cons (function (lambda () (my-ediff-batch-mode 'set))) startup-hooks)
merge-buffer-file))))
(autoload 'ediff-merge-files-with-ancestor-in-batch-mode "ediff") |
これで、~/.gitconfigにこんな風に書けばgit mergetoolで瞬時にEdiffが起動し、マージが済んだらq, yで即コマンドラインに帰ってくる。既存Emacsセッションにゴミバッファも残らない。
[merge]
tool = ediff
[mergetool "ediff"]
cmd = emacsclient -a \"\" -t -e \"(ediff-merge-files-with-ancestor-in-batch-mode \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\")\" |
あとは、たとえばラッパースクリプトを用意して、「<<<<<<<」などの行が残っていたらマージ失敗とするとか、好きに改良すると良い。
参考記事
Sony Ericsson MW600から二年余、Sony Mobile Communicationsから待望の新BluetoothレシーバMW1が国内発売となったのでさっそく入手した。
開封してみると、付属品がやたら多い。MW1の充電I/FはMW600と同じmicroUSBだが、AC電源アダプタに加えてUSBケーブルも入っている。また、microSDプレーヤ機能があるらしく、4GBのmicroSDHCカードとmicroSDカードリーダライタが付属する。さらに、きしめんケーブルの密閉型ステレオイヤホンとそれ用のクリップ、スペアイヤパッド3種。正直レシーバ本体だけで安く売ってほしいが、Sonyは高価格帯で勝負するしかないんだろう。
A2DPの対応コーデックはSBCのみと明記されており、最近対応機器が増えてきているAACやapt-Xには非対応。ただ、ファームウェア書き換え機能があるので将来機能追加されることもあるのかもしれない。
国内版ということもあってFMラジオは日本の周波数帯をカバーしており、日本語の曲名表示も問題ない。AT-PHA05BTと違ってちゃんとコバイヤ語やドイツ語が表示できる。なお液晶は二行表示で、特に日本語フォントはあまり見やすくはないが、設定で天地を切り替えられるのは気が利いている。
サイズについては、体積的にも重さ的にも薄さ・長さ的にもAT-PHA05BTよりコンパクト。見た目もスマートで好印象だ。MW1は単体でMP3プレーヤーとして機能することもあって、「これなに?」と訊かれづらい、あるいは訊かれても答えやすいのは利点と言える。
さて、MW600の不満点として反応の悪い静電式ボリュームスライダーがあったが、MW1ではカーブの付いた押しボタンになっており、ふつうに使いやすい。REW/PLAY/FFボタンも凹凸がはっきりしていて、指先の感覚で容易に識別でき、快適に操作できる。なお、ホールドスイッチがないのは相変わらずだが、各ボタンを指で押したときのクリック感から分かるように、適度な遊びと抵抗により鞄と少し擦れたくらいでは誤作動しない。これならホールド機能は不要かもしれない。
MW600のもう一つの不満点といえば、挟む気があるのか分からないへなちょこクリップだった。しかし、これもMW1では大きく改善されている。見た目は薄くスマートだが、幅が広く、バネも強く、挟み込み部も十分に凹凸が設けられているため、点で支えるがためにそこから回転して外れてしまうということがない。太い線(つまり面)で支えて、本体とクリップの一体感が保たれる構造だ。欠点としては、バネのつまみのちょうど反対側にアクションボタンが配置されているため、クリップを開く際に誤って押してしまいがちでやや煩わしい。もっともこれは慣れで解消するか。
音の面では、低音の迫力・臨場感ではやはりAT-PHA05BTに劣るが、主なソースはiPhone 4で雑踏での利用が多いので、率直に言って大差はない。それより、ホワイトノイズが少ないことに感心した。音飛びについても、使った限りではMW600よりは少なく、安定していると思う。
細かいところをいくつか。まず、MW600やAT-PHA05BTと違い充電しながらでも使える。電源が確保できる場所ではうれしいかもしれない。また、ペアリングできるのが2台のみになった。これはちょっと少ないと思うが、きっと3台以上も持ち歩くジャンキーは悔い改めるべきなのだろう。通話端末は常時ペアリングするとして、その日視聴に使いたい端末を選んでペアリングして出かけると。さらに、時計が付いたのは少しうれしい。消灯状態からも「戻る」ボタンで点灯する。また、この「戻る」ボタンのおかげでメニュー操作が(MW600と比べて)だいぶ楽になった。
総じて見ると、これはバランスの良い製品だと思う。デザインと使い勝手が洗練されているので、いつも持ち歩きたくなる。望んだらきりはないが、機能的に不足に思う点は少なく、既存製品から完全に乗り替えられる。
ところで、Sony Mobileのサイトには7月21日発売とあるが、すでに量販店はじめ販売店には出荷されていて購入できる。自分は
い〜でじ!!で即日出荷してもらい翌日午前中に受け取りました。今見たらAmazonも入荷しているみたい。
Android連携についてはまた改めて。
Emacsのcua-modeを使っていない、あるいはそもそも知らない人が結構いるようなので紹介しておく。cua-modeは、Emacsの範囲選択にまつわるUIを改善し、Windows、Mac、GTK+/Qtなどにおけるテキスト編集操作との互換性も高めてくれるグローバルマイナーモードで、以下のような機能を提供する。
Shift+矢印による範囲選択
- 範囲選択状態で
BS/DELを押すと選択範囲をまるごと消去
- 範囲選択状態でキー入力やペーストを行うと選択範囲まるごと上書きされる
- 視覚化された矩形範囲選択モード(
C-w, M-w, C-yなど通常の範囲選択と同様の操作性)
- 矩形範囲選択モードでの複数行同時操作(文字入力、文字削除、連番挿入等)
- Windows互換の
Ctrl+Z,X,C,V(※)
Emacs 22.1.1から標準添付されているので、試したければ何も設定せずにM-x cua-modeで使える。上記のうち最後の機能は率直に言って邪魔なのだが、これはWindowsから来た人をターゲットに据えた本モードの目玉機能のようで、デフォルトでオンになっている。ために、Emacsに慣れた人ほど、少し触ったところで戸惑いを感じて敬遠しがちなのが残念なところ。
このcua-modeを起動時から有効化するには、M-x customize-group RET cua RETとしてcustomize画面に入り、”Cua Mode”を”on”にする。私のように上記※が不要だと思う人は”Cua Enable Cua Keys”を”Disabled”にして、”Set for current session”を押す。これでcua-modeが(一時的に)有効な状態になるので、他のバッファで挙動を確認してみよう。満足したら、customizeバッファに戻って”Save for future sessions”を押せば恒久保存される。
さて、Shift+矢印による範囲選択を試してみただろうか。GUI上のEmacsで動くのは当然として、xterm互換ターミナル上のEmacsでも動くのには軽い感動を覚えたかもしれない。ただし、Emacsのバグで、S-left, S-right, S-downは動くのになぜかS-upだけは期待通り動作せず、selectキーとして認識されてしまう。これは以下のようなコードで期待通り動くようになる。(ついでにendキーがおかしいのも直している)
(defadvice terminal-init-xterm (after fix-some-keys activate)
(define-key input-decode-map "\e[1;2A" [S-up])
(define-key input-decode-map "\e[4~" [end])) |
ところで、矩形選択モードのトグルキーはデフォルトではC-RETだが、私はcua-toggle-global-markの方に割り当てられているC-S-SPCに変更している。これは、先のカスタマイズ画面で”Cua Rectangle Mark Key”をC-S-SPCに設定(入力欄でC-qを押してから設定したいキーコンボを押すのが楽)して保存すれば済むはずだが、cuaの初期化フローがおかしいため、以下のコードも必要のようだ。
(define-key cua-global-keymap cua-rectangle-mark-key 'cua-set-rectangle-mark) |
cua-toggle-global-markの方は、カスタマイズ変数がないので以下のようにコードを書いてC->に設定している。
(define-key cua-global-keymap (kbd "C->") 'cua-toggle-global-mark) |
なお、C-RET, C-S-SPC, C->などの特殊キーコンボをターミナル上で使うためにはターミナルエミュレータの設定が必要なので、こちらの記事を参考にされたい。
というわけでおしまい、でもいいのだけれど、矩形選択モードで単語単位の移動ができないのはちょっと不便だと思う私はこんな設定を施している。
(eval-after-load "cua-rect"
'(progn
(defun cua-resize-rectangle-move-bol ()
"Resize rectangle to the BOL."
(interactive)
(while (not (bolp)) (backward-char)))
(defun cua-resize-rectangle-move-eol ()
"Resize rectangle to the EOL."
(interactive)
(while (not (eolp)) (forward-char)))
(defun cua-resize-rectangle-right-word (n)
"Resize rectangle to the right word."
(interactive "p")
(if (< n 0)
(let ((pos (save-excursion (backward-word (- n)) (point))))
(while (< pos (point)) (backward-char)))
(let ((pos (save-excursion (forward-word n) (point))))
(while (< (point) pos) (forward-char)))))
(defun cua-resize-rectangle-left-word (n)
"Resize rectangle to the left word."
(interactive "p")
(cua-resize-rectangle-right-word (- n)))
(defadvice cua--init-rectangles
(after custom-key-bindings () activate)
(define-key cua--rectangle-keymap [remap move-end-of-line] 'cua-resize-rectangle-move-eol)
(define-key cua--rectangle-keymap [remap move-beginning-of-line] 'cua-resize-rectangle-move-bol)
(define-key cua--rectangle-keymap [remap forward-word] 'cua-resize-rectangle-right-word)
(define-key cua--rectangle-keymap [remap backward-word] 'cua-resize-rectangle-left-word)
(cua--rect-M/H-key ?B 'cua-blank-rectangle)
(cua--rect-M/H-key ?b 'cua-resize-rectangle-left-word)
(cua--rect-M/H-key ?F 'cua-fill-char-rectangle)
(cua--rect-M/H-key ?f 'cua-resize-rectangle-right-word)))) |
癖のあるモジュールだけど、がんばって飼い慣らして使いましょう。