« [iPod touch]WiFiをON/OFFするiPod touch用コマンドラインアプリケーションwifictlとWiFiSwitch.app | Main | [iPod touch]MobileSafariの履歴から選んでhtmlをダウンロードできるダウンローダHistoryDL.app »

2007.12.01

[iPod touch]曲再生の一時停止、再開、状態取得等ができるiPod touch用コマンドラインアプリケーションmmpctl

昨日のwifictlに引き続き、既に野良リポジトリには登録しておいたmmpctlについて解説します。

これはwifictl同様iPod touch / iPhone用コマンドラインアプリケーションで、MobileMusicPlayer Controllerの略でmmpctlです。
ミュージック(MobileMusicPlayer)の再生/一時停止をコマンドラインからコントロールできます。

凝ったことはできません。
再生状態と一時停止状態との遷移、再生状態のレポート、現在再生曲情報の標準出力への書き出しのみできます。

主に、Erica's Utilitiesに収録されているplayaudioのフォローのために作りました。
playaudioは引数に与えた音声ファイルを再生してくれますが、再生前にミュージック(MobileMusicPlayer)を一時停止状態にします。
しかし、その後で再生を再開することができません。だから、コマンドラインからの再生再開の手段が欲しくて作ったのです。

これを作るに当たっては、以下のソースを参考にしました。またLyrics.appでおなじみnoviさんのエントリも参考にしました。

http://thebends.googlecode. com/svn/trunk/iphone-apps/music-player/

インストール

いつもの野良リポジトリからどうぞ。

[iPod touch]野良ビルドのバイナリを置いたiPod touch / iPhone向けInstaller.appリポジトリ

「Utilities > mmpctl」です。

無保証です。

ソースコードは開示請求があれば公開します。

mmpctlの使い方

使い方: mmpctl [オプション]

例) # mmpctl -t

-p 再生。
-s 一時停止。
-t 再生時は一時停止へ、一時停止時は再生状態へ遷移します。
-i 現在再生曲情報を標準出力に書き出します。 (タブ区切り)
-f 現在再生曲のファイルへのパスを標準出力へ書き出します。
-g 再生状態を数値で返します。
-h このヘルプを表示します。

-gオプションの返り値

0 停止中
1 再生中
2 一時停止中

応用例1

flite、Erica's Utilitiesと組み合わせて使うと面白いことができます。
fliteは野良リポジトリの「Utilities > flite」にあります。

以下のスクリプトは、現在時刻を英語で読み上げるものです。
音楽を再生していた場合は一時停止し、読み上げた後で再生を再開します。

#!/bin/sh

PATH=/opt/iphone/bin:\
/var/root/bin:\
/bin:/sbin:/usr/bin:\
/usr/local/bin:/usr/sbin:$PATH

result=`mmpctl -g`

if [ ${result} -eq 0 -o ${result} -eq 2 ]; then
play_flag=0
else
play_flag=1
fi

now=`date +%H:%M`
flite -t "`flite_time ${now}`" -o /tmp/now.wav
playaudio /tmp/now.wav

if [ ${play_flag} -eq 1 ]; then
mmpctl -p
sleep 1
mmpctl -p
fi

これをcronに登録すると、定期的に時刻を読み上げてくれて、とてもアレゲです。
cronへの登録は「crontab -e」でできます。viが立ち上がるので、例えば以下のように登録します。
上記のスクリプトは、「/var/root/bin/jihou.sh」に保存したと仮定します。

*/30     *       *       *       *      /var/root/bin/jihou.sh

30分ごとに実行する設定です。つまり、30分ごとに時刻を読み上げてくれます。

標準状態ではcronが動いていないかもしれません。
Community Sourceをインストールし、Installer.appからUlctlをダウンロードしてきて、「com.apple.cron」をloadしてみてください。

応用例2

「mmpctl -f」で、現在再生中の曲のファイルのパスが取得できます。
以下のようにすれば、現在演奏中のファイルをカレントディレクトリにコピーできます。

cp `mmpctl -f` .

応用例3

「mmpctl -i」で、現在再生中の曲の曲名、アルバム名、アーチスト名が取得できます。
項目間はタブ区切りです。

# mmpctl -i
Magnets	Idealism	Digitalism
# mmpctl -i | awk 'BEGIN{FS="\t"};{printf("%s\n%s\n%s\n", $1, $2, $3)}'
Magnets
Idealism
Digitalism

しかし書き出せたところで、今のところ使い道が無いですかね。
以下のようにすれば、現在演奏中のファイルを、曲名でリネームしながらカレントディレクトリにコピーできますが、ちょっと危ないかも。

# cp `mmpctl -f` `mmpctl -i | awk 'BEGIN{FS="\t"};{print $1}'`.mp3


|

« [iPod touch]WiFiをON/OFFするiPod touch用コマンドラインアプリケーションwifictlとWiFiSwitch.app | Main | [iPod touch]MobileSafariの履歴から選んでhtmlをダウンロードできるダウンローダHistoryDL.app »