2009/12/14

再掲:Emacs文字起しの味方、mpg123-remote.el

ついでと言っては何ですがmpg123.el がらみでもう1本。
これがあれば、手元でmp3(oggも可)を「ちょっと巻き戻し」などしながら、
文字起しの作業ができてしまう、mpg123-remote.el をご紹介します。

実はこのエントリーは、前のサーバーの時代に書いたものですが、
ブログとしては消滅してしまったので、こちらにそのまま再掲します。


---------------------------------
(2009年4月)
前回の続きです。
mpg123.elは大変便利なのですが、
それをさらに便利にしてくれるのがmpg123-remote.elです。
これは、Emacs上でgnuservというものを立ち上げておけば、

1) mpg123のバッファ以外からもmpg123の操作が可能
2) さらにあろうことか、設定次第でEmacsの外からも操作可能

というものです。
私の文字起しで使うのははEmacsだけとは限らないので、
こういう機能を探しておりました。

# というか、この機能が使えるのでmpg123.elの導入を決めたのですが。

さて、インストールですが、
まずgnuservをインストールします。端末から以下のコマンドを実行します。
これをインストールしないと動きません。

$ sudo apt-get install gnuserv

次にここからmpg123-remote.elをもらって、
site-lispディレクトリにコピーします。

# 私のUbuntuの場合は次の場所です。
/usr/share/emacs-snapshot/site-lisp/mpg123-el/

.emacs.el には以下のように書いておきます。

(gnuserv-start)
(load "mpg123-remote")

;お好みで以下のように書いておけば、M-o で再生と停止がトグルできます。
(global-set-key "\M-o" 'remote-mpg123-pause) ;mpg123 Pause/play toggle

Emacsの外のコマンドラインから操作する場合は、
以下のコマンドを実行すれば再生と停止をコントロールできます。

$ gnuclient -batch -f "remote-mpg123-pause"

すごいです。すごいですよね!

さて、私の目的は文字起しなので、
書き取れなかった所は音声を「巻き戻す」必要があります。
mpg123.el には mpg123-backward-10 という関数が準備されているので、
mpg123-remote.el の関数を加工して
「10秒巻き戻しを外部から行う関数」を作りました。以下です。

(defun remote-mpg123-backward-10 ()
  "Backard 10 sec"
  (interactive)
  (if (mpg123-active-p)
      (save-excursion
        (set-buffer mpg123*buffer)
        (mpg123-backward-10 1)))) ;←ここ変えただけ

これは.emacs の中でも、mpg123-remote.elの中でも、
どこにでも書いておけばいいみたいです。
この関数を適当なキーにバインドしてやれば、
mpg123のバッファ以外から操作ができました。
私のパソコンはF6のキーが空いていたので、そこに登録しました。
.emacsに以下のように書きました。

(global-set-key [f6] 'remote-mpg123-backward-10)

でも、原因が分からないのですが、
これをEmacsの外から実行しようとして、
以下のコマンドを端末から入力すると、
肝心要のgnuserveが落ちてしまいます。
これが落ちると、もうmpg123-remote.elは機能しません。

$ gnuclient -batch -f "remote-mpg123-backward-10"

いろいろと試行錯誤したあげく、
gnuservと同時にemacsserverも起動して、

*再生/停止の remote-mpg123-pause はgnuclientから
*巻き戻しの remote-mpg123-backward-10 はemacsclientから

という(面倒な)方法に落ち着きました。
こんな感じです。

*再生/停止
$ gnuclient -batch -f "remote-mpg123-pause"
*巻き戻し
$ emacsclient -e "(remote-mpg123-backward-10)"

これを Ubuntu Tweak (Ubuntu の便利設定GUIツール)で、
キーボードショートカットとして登録してやれば、
うまく機能しました。めでたしめでたし。

0 件のコメント:

コメントを投稿