NetWalkerでTimidityを使うためのスクリプトのその後

4月24日付の記事「NetWalkerでMidiを演奏するのに苦労しました」にて、

ターミナルから対話的に曲の入っているフォルダ(私の場合は /media/disk/data/music/midi/の下)を指定し、そのフォルダの中の.midファイルを全部演奏するようなスクリプトを書きました。

「NetWalkerでMidiを演奏するのに苦労しました」より

と書いた上でNetWalkerでTimidityを使うための簡単なシェルスクリプトを紹介しましたが、現在該当スクリプトは以下のような形になっております。

#!/bin/bash
CURRENTDIR=\$PWD
while :
 do
  echo '演奏するディレクトリを以下のリストから選んで入力してください。'
  ls /media/disk/data/music/midi/
  echo -n '>'
  read PLAYDIR
  if [ -e /media/disk/data/music/midi/\$PLAYDIR ]
   then
    cd /media/disk/data/music/midi/\$PLAYDIR
   else
    echo '/media/disk/data/music/midi/'\${PLAYDIR}'は存在しません。'
    continue
  fi
  echo 'このディレクトリ/media/disk/data/music/midi/'\${PLAYDIR}'には次のファイルがあります。'
  declare -i INDEX
  INDEX=0
  for FILE in *.mid
   do
    INDEX=\$INDEX+1
    printf "%3d %s %s\\n" \$INDEX '.' \$FILE
   done
  echo -n '何番目のファイルから演奏しますか? '
  declare -i STARTPT
  read STARTPT
  INDEX=0
  for FILE in *.mid
   do
    INDEX=\$INDEX+1
    if [ \$INDEX -lt $STARTPT ]
     then
      continue
     else
      echo '次のファイル'\${FILE}'を演奏します。'
      timidity -OsS -A21,30a \$FILE
    fi
   done
  echo -n '終了しますか? (y/n) '
  read KEY
  if [ "\$KEY" = "y" ]
   then
    break
  fi
 done
cd \$CURRENTDIR

簡単に使い方を解説すると、

  1. ターミナルからスクリプトを起動する。
  2. ディレクトリの一覧から演奏したいディレクトリを選んで入力。
  3. ファイルの一覧が番号付きリストで出力される。
  4. 開始したいファイルを番号で選んで入力。
  5. 入力した番号のファイルから順番に演奏される。
  6. 最後のファイルの演奏が終了したらこれで終了するかどうかを入力。

シェルスクリプトをほとんど知らないところからいろいろ調べて書くのはちょっとした手間でしたが、こんなものでもNetWalkerでMidiを演奏するという目的には一応使えております。