ついでと言っては何ですが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 件のコメント:
コメントを投稿