AIFFファイルのループ再生と停止
投稿:2001-07-06
EsounDに関わった皆さん。大勢いらっしゃるので、
/usr/doc/esound-0.2.14/AUTHORS
をご覧ください(この時点でLinuxユーザ限定)。 そして、それらを利用されている方々に感謝を込めて。
/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スクリプトです
再生を停止させるため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}'`
曲名を見ても誰の曲か知らない人は、こっ恥ずかしいのでセンサクしないでください。
すぐ誰かわかった人は、あなたも同じ趣味の人なので、私を指差して笑わないように。(笑)