あなたの天然記念物
ホーム更新雑談Perl鉄ゲタランドナーコースガイド自転車Linuxリンク経歴連絡先
AIFFファイルのループ再生と停止 (2001.07.06)


          感謝

EsounDに関わった皆さん。大勢いらっしゃるので、
/usr/doc/esound-0.2.14/AUTHORS
をご覧ください(この時点でLinuxユーザ限定)。
そして、それらを利用されている方々に感謝を込めて。


          まえおき

たぶん、もっと簡単な方法があると思うのですが、
「やりたい」と思ってから、実際にできるまでの時間を最短にしています。
下記の中で「〜できない」は「私は〜する方法を知らない」と読んでください。
もし、都合の悪いことがあれば、エンリョなく連絡ください。
なお、一部の表現がAmigaに偏っているのは、私の趣味です。


AmigaでCDを聴いていたのですが、負荷が思っきり掛かるときに備えて、
隣のLinuxで再生したところ、1曲だけの繰返し再生ができません。

LinuxでCDからAIFFを取得できなかったので、
AmigaにCDを入れてAIFFをLinuxにコピーしました。
(AmigaのCD-ROMドライバAsimCDFSは、音楽CDを入れると仮想AIFFファイルを用意します。)
ファイルサイズは50MBですが、空きが5GBもあるので気にしません。
ファイル名を「shanhai no kaze.aiff」にしてダブルクリックしたところ
画面はないまま再生しました。
フォルダの「コマンド|MIME形式の編集...」から、AIFFファイルを再生したのは
esdplayと判明しました。画面はないのでコマンドラインに違いなく、
ktermから「esdplay "shanhai no kaze.aiff"」としても再生できました。
「esdplay --help」で、オプションの一覧を表示しましたがループはないので、
CGIでおなじみのPerlスクリプトでループしました。

再生を停止させるためCtrl+Cを入力すると曲の頭から再生をします。
esdplayの実行が止まっても、Perlスクリプトの実行に影響ないようです。
Perlの本を読んで、Ctrl+CのときにPerlスクリプトも終了するよう改善しました。

デスクトップにアイコンを用意して、ダブルクリックでPerlスクリプトを実行にしたら、
ktermがないのでCtrl+Cを入力できません。(爆笑)
(再生するまで気がつきませんでした。久しぶりのヒットです。)
「ps -A | grep esd」としたら「esd」「esdplay」の2個が見つかり
プロセスIDから「esd」のほうが若いとわかったので、
これをkillしてみると、曲の頭から再生しました。
次にesdplayをkillしてみると、今度は沈黙しました。
この作業もスクリプトにして、アイコンを用意しました。

これで、デスクトップのアイコンでループ再生、停止ができるようになりました。
下記に作成したファイルの内容を紹介します。


shanhai no kaze.aiff

CDからコピーした曲です。
著作権者が損しないようにCDを持ったままです。
それに全身の写真も入っているし(^_^)


.gnome-desktop/shanhai no kaze
ループ再生をするPerlスクリプトです

#!/usr/bin/perl

$aifffile = '/home/public/music/shanhai no kaze.aiff';
while(1)
{
    $rc = system("esdplay '$aifffile'");
    if (0 != $rc)
    {
        last;
    }
}


.gnome-desktop/stop esdplay
再生を止めるshスクリプトです

#!/bin/sh

kill `ps -A | grep esdplay | awk '{print $1}'`


おまけ

曲名を見ても誰の曲か知らない人は、こっ恥ずかしいのでセンサクしないでください。
すぐ誰かわかった人は、あなたも同じ趣味の人なので、私を指差して笑わないように。(笑)