既に、記事の右上部分に表示されているカテゴリの表示名では対応していたが、画面上部にバー状態で表示しているカテゴリメニューと、画面左側に「コーナー」としてツリー形式で表示しているカテゴリの表示名も、 'works/software' を「冬星のソフトウェア」、 'works/novel' を「冬星のノベル」と表示できるようにした。

navitools.php を修正し、カテゴリキーをキーにとり、表示名を値に持つ連想配列を利用するようにした。

この記事のリンク元 | 14 | 8 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/software/20190805_002932804640.htm


php で、バッククォートとシングルクォート、ダブルクォートとの違いを知りたくなり、検索してみたのだが、なんと、この3つを比較し紹介しているサイトが一件も存在しなかったので驚いたので、下に紹介しておく。

・シングルクォート…文字列内の変数は展開しない。内部にあるダブルクォートはそのまま表示できる。内部にシングルクォート自身を表示する必要がある場合は '\' を前につける必要がある。

(例)

$foo="bar";

echo ’nakami=$foo’;

とすると、"nakami=$foo"と表示される。

・ダブルクォート…文字列内の変数を展開する。内部にあるシングルクォートはそのまま表示できる。内部にダブルクォート自身を表示する必要がある場合は '\' を前につける必要がある。

(例)

$foo="bar";

echo "nakami=$foo";

とすると、"nakami=bar"と表示される。

・バッククォート…文字列内の変数を展開し、バッククォートで囲まれた文字列をシェルコマンドとして実行し、結果の出力をすべて返す。

(例)

function foo()

{

$addr="xxx.xxx.xxx.xxx";

$ret=`nslookup -timeout=1 -retry=1 $addr`;

if (preg_match('/name = (.*).\n/', $ret, $out)){

return $out[1];

} else{

return $addr;

}

}

とすると、この例では nslookup -timeout=1 -retry=1 xxx.xxx.xxx.xxx の結果の出力が $ret に文字列として返される。結果に name = に続く部分のある行があった場合、その部分を表示し、なければアドレスをそのまま返している。

どのサイトも、ダブルクォートとシングルクォートの違いしか記載されておらず、バッククォートの比較がすっぽり抜けていることに大変驚かされた。それは不十分な解説というものだろう。

この記事のリンク元 | 15 | 11 | 2 | 1 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/software/20190801_153323728309.htm


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

xkanon と wine の2つの方法のうち、 xkanon ( xair ) を使った場合は音が鳴らないので、 wine を使う方法を選んだと前回書いたが、 wine と _inmm で実行した場合、小さなプチプチ音のノイズが乗るので、やっぱり xkanon を使えないかやってみた。

xkanon に実装済みの oss, alsa では正常動作しないので、ソースを眺めながらあれこれいじってみたが、よく分からなかった。そこで、 alsa を使うのはあきらめて、 GStreamer というライブラリを使って音を鳴らすことにして、コードを書き始めた。

GStreamer 用のサンプルコードを試しながら使い方を学習し、 wav ファイルの鳴らし方を理解したので xkanon のソースにコードを組み込み、何度か試して完成させた。 BGM は wav ファイルから鳴らせばよいので CD-DA の実装は行わず、 wav ファイルのみを再生するクラスを作成した。 gst_pipeline_new() でパイプラインを作成し、 filesrc, wavparse, volume, audioconvert, autoaudiosink のエレメントを作成しリンクした。再生中に音量を変化させる方法だけは分からなかったので、 fade out の動作は未実装だ。

今回の作業では GStreamer のもつ柔軟性が感じられた。様々な形式の音源の音をならせられるし、ファイルを読み込んで再生するだけでなく、ネットごしにストリーミング再生もできる。また、音だけでなく動画なども再生する能力を持っている。


なぜかまた急に無性に 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 を選択してみたら鳴らなかった。標準形式では何故音が鳴らないかは分からない。


なぜか急に無性に Key の「 Air 」で遊びたくなり、PC版の初回限定版を取り寄せた。

PC版の「 Air 」は、音声無しなのだが、音声を鳴らしたかったので、音声化してくれるパッチを使った。いくつかのパッチが存在したが、DC(ドリームキャスト)版の音声データを用いるものは、DCのメディアがPCでは読み取れないため、DC版の「 Air 」に加え、DC本体とBBA(ブロードバンドアダプタ)が必要になってくるので断念し、PS2版の「 Air 」の音声データを用いるパッチを使った。

また、PC版の「 Air 」は、BGM再生が「月姫」同様に CD-DA なので、Windows10 ではループ再生出来ず止まってしまうので、 wave ファイルを再生するようにした。

古いゲームの話なので今頃遊ぶ人もあまりいないと思うが一応やり方を書いておく。

以下がその手順。

・PC版「 Air 」をインストールする。

・Key のサイトから、初回限定版に対するアップデータ airup_20010719.lzh をダウンロードし、アップデートする。

・ avg3217d.exe をどこかから見つけてきて、PC版「 Air 」のインストールフォルダにコピーする。

・artext_10.zip をダウンロードして中身の artext.exe を実行し、PCのドライブにPS2版「 Air 」のディスクを入れ、PS2版「 Air 」の音声データをPC版「 Air 」のインストールフォルダの下の DAT フォルダに wav ファイルに変換して保存させる。

・vpatchPS2_010b.zip をダウンロードして中身の voicepat_18.txt を voicepat.txt にリネームして、PC版「 Air 」のインストールフォルダの下の DAT フォルダにコピーする。

・vpatchPS2_010b.zip の中身の vairPS2_renamer.exe を実行し、「ミキサー無し版⇒ミキサー版」を選んで「AIRインストール先」を指定してリネームを実行する。

・vpatchPS2_010b.zip の中身の vpatchPS2.exe を実行し、「ミキサー版」を選んで「AIRインストール先」を指定してパッチを実行する。

・ _inmm238-installer.zip をダウンロードし、 _inmm238.exe を実行して inmm をインストールする。

・ _inmmcnf.exe を実行し、「パッチ」タブを選択すると、 inmm にプリインストールされているゲームの一覧から Key の Air を選んでBGMをwavから鳴らすためのパッチを当てることができるが、これでパッチを当てられるのはPC版「 Air 」インストール時に初めからインストールされる avg3217m.exe なので、音声を鳴らすために用意した avg3217d.exe にはパッチが当たらないためこの方法ではだめ。

・代わりに、 _inmmcnf.ini をテキストエディタで開き、’[AIR]’のブロックを検索し、そこの ‘File=AVG3217M.EXE’ を ‘ImportTablePatch=AVG3217D.EXE’ に変更して保存する。( ‘FIle=’だと AVG3217D.EXE の場合パッチ当てに失敗するため。)

・_inmmcnf.ini を編集したら、 _inmmcnf.exe を実行し、「パッチ」タブを選択し、 inmm にプリインストールされているゲームの一覧から Key の Air を選んでBGMをwavから鳴らすためのパッチを当てる。

以上の手順で、PC版の初回限定版「 Air 」を音声化しつつ、BGMもCD-DAからwav再生に変更できる。

ちなみに、 Windows10 64bit 版で「 Air 」で遊ぶ場合、 avg3217d.exe のプロパティの「互換性」タブを選び、「互換モードでこのプログラムを実行する」のチェックを入れ ‘Windows XP(Service Pack 2)’ を選択し、同時に、「管理者としてこのプログラムを実行する」にもチェックを入れておくと吉だと思われる。

あと素朴な疑問だが、PC版の「メモリアルエディション全年齢対象版」は Windows7 にも対応しているようだが、これもBGM再生は CD-DA なのだろうか?対応OSや発売が2010年であることを考えると、さすがにwav再生になっていないとまずい気がするのだが・・・。

[コメントの受付は終了しています ]
この記事のリンク元 | 1 |

キーワード: ゲーム Key Air CD-DA 音声化