なぜかまた急に無性に Key の「 Air 」を ubuntu で遊びたくなり、やってみた。

方法は2つあって、1つ目は JAGARL さんの xkanon ( xair ) を使う方法で、2つ目は wine を使う方法だ。

xkanon を使った場合、 ubuntu 18.04 LTS では音を鳴らすことができなかった。 xkanon は音を鳴らす方法を OSS, ALSA 等から選択できるように作られているのだが、まず OSS は古いものなので今の ubuntu では使用できないため、 ubuntu の kernel をカスタマイズして OSS を組み込んでみたが、 /dev/dsp がそもそも作られなかった。そこで osspd を使用してみたが、 /dev/dsp は作られたものの、音は一切鳴らなかった。そこで、 ubuntu が現在使用している ALSA を使うようにしてみたが、やはり音は鳴らずエラーが出て異常終了してしまう。 xkanon の場合は、音無しでならプレイできるという結果になった。ちなみに、 xkanon の作者の JAGARL さんは配布サイトを閉鎖したようで、現在は作者の配布サイトからソースをダウンロードしたり質問したりすることは出来ない。

そこで、次に wine を使う方法を試してみた。 BGM は CD-DA ではなく _inmm を使い wav ファイルを鳴らすように変更することにした。こちらも最初は音が一切鳴らなかったが、Install GStreamer on Ubuntu or Debian

を見ながら必要なプラグインパッケージなどを全てインストールしたところ、起動時の波の音(効果音)と本編中のセリフ音声は出るようになった。だが、BGMは鳴らず、下の様なエラーメッセージが出続けた。

0031:fixme:ntdll:EtwEventEnabled (deadbeef, 0x76021b48): stub

0047:fixme:gstreamer:event_src 0x7c104e00 (61441) stub

0047:err:gstreamer:unknown_type Could not find a filter for caps: "audio/x-wav"

0031:err:gstreamer:GST_Connect GStreamer failed to play stream

0048:err:gstreamer:watch_bus decodebin67484: GStreamer はプラグインを見つけることができません

0048:err:gstreamer:watch_bus gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstBin:bin67484/GstDecodeBin:decodebin67484:

no suitable plugins found:

Missing decoder: WAV (audio/x-wav)

どうやら、 'audio/x-wav' というメディアタイプに対応する GStreamer のプラグインが見つからないというのだが、理由が分からない。効果音も wav ファイルなのだ。 _inmm 経由で音が再生されるのは BGM だけなので、 _inmm が再生出来ずにいるということしか分からない。

試行錯誤して、やっと解決した方法は、 _inmm.ini ファイルを標準形式ではなく拡張形式で記述し、 [Players] セクションに wav ファイルのプレイヤーを 'MCI = *.wav' という風に MCI を明示することで音がなるようになった。ちなみに、プレイヤーとしては MCI、DirectShow、Winamp、SCMPX、Lilith、Silent(再生しない)から選択できるそうだが、 DirectShow を選択してみたら鳴らなかった。標準形式では何故音が鳴らないかは分からない。