その他のバグ情報

resample.c:pre_resample() で interger が桁溢れを起こしてしまうバグ
pre_resample() の以下の行で int32 が桁溢れを起す可能性があります。
newlen = sp->data_length / a;
対処:resample.c:pre_resample() を以下のように修正します。
=============== 修正前 ===============
  a = ((double) (sp->sample_rate) * freq_table[(int) (sp->note_to_use)]) /
    ((double) (sp->root_freq) * play_mode->rate);
  newlen = sp->data_length / a;
  dest = newdata = safe_malloc(newlen >> (FRACTION_BITS - 1));
======================================

=============== 修正後 ===============
  a = ((double) (sp->sample_rate) * freq_table[(int) (sp->note_to_use)]) /
    ((double) (sp->root_freq) * play_mode->rate);
  if(sp->data_length / a >= 0x7fffffffL)
  {
      /* Too large to compute */
      ctl->cmsg(CMSG_INFO, VERB_DEBUG, " *** Can't pre-resampling for note %d",
		sp->note_to_use);
      return;
  }
  newlen = (int32)(sp->data_length / a);
======================================
linux_a.c を用いる場合、最初の約1秒のみ普通に演奏されて後は超早送り 演奏になるという現象があるそうです。
原因:サウンドドライバのバグらしいです。
対処:linux_a.c を以下のように修正します。
=============== 修正箇所その 1 ===============
open_output() 関数の

  /* Open the audio device */
  fd=open(dpm.name, O_RDWR | O_NDELAY);
  if (fd<0)
    {
      ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: %s",
	   dpm.name, sys_errlist[errno]);
      return -1;
    }

というところの直後に以下の行を追加:
    fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NDELAY);


=============== 修正箇所その 2 ===============
output_data() 関数で

ssize_t rc;

と変数 rc を用意し、write しているところを以下のように修正:

      /* Write the data out. Linux likes to give an EINTR if you suspend
       a program while waiting on a write, so we may need to retry. */

      do 
      {
        rc = write(dpm.fd, buf, count * 2);
      }
      while ((rc == 0) || ((rc == -1) && (errno==EINTR)));
    }
  else
    {
      /* Convert to 8-bit unsigned and write out. */
      s32tou8(buf, count);
      
      do 
      {
        rc = write(dpm.fd, buf, count);
      }
      while ((rc == 0) || ((rc == -1) && (errno==EINTR)));
    }
}
エラーのある MIDI ファイルの前のファイルへ Back できないバグ
-in インターフェースで MIDI ファイルを複数 指定して実行したとき,途中の MIDI ファイルが壊れてて,読み込みエラー を起こすと,エラーのあったファイルから Back できなくなります。 例えば、
timidity -in a.mid b.mid c.mid
と起動した場合,b.mid にエラーがあると c.mid から Back できなく なってしまい,a.mid が演奏できなくなります.
ピッチベンドセンシティッブに関するバグ
RPN 0x7f/0x7f (RPN Reset) でピッチベンドセンシティッブが初期化されて しまいます。RPN Reset は初期化するのではなく、この命令以降 RPN 値の変更 を無効化すると意味です。そのために、一部の MIDI ファイルではピッチが おかしくなることがあるようです。
改良版の timidity-0.2i+Y19 以前も同様のバグがあります。このバグは timidity-0.2i+Z1 以降で FIX されました。
...と思ったら、まだバグが残ってて、timidity-0.2i+AB1 で FIX されました。