市來健吾の日記

プログラマ、(元)物理屋(ナノテク、流体)

WaoN の Win32 バイナリをリリース。


  • 昨日のつづき。

  • gwaon で、 wav ファイルを開くと落ちる問題(2/27/2011)が解決。

    • 詳しく調べていったら(と言っても、結果的には libaoサンプルコード と、一つずつ確認していったら、ってことだけど) 間違いを見つけた、という顛末だったんだけど…。

    • ao_device の初期化部分で、

      /* -- Initialize -- */
      ao_initialize;

      /* -- Setup for default driver -- */
      int default_driver = ao_default_driver_id;

      ao_sample_format format;
      memset(&format, 0, sizeof(format));
      format.bits = 16;
      format.channels = 2;
      format.rate = 44100;
      format.byte_format = AO_FMT_LITTLE;

      /* -- Open driver -- */
      ao_device *device = ao_open_live(default_driver, &format, NULL /* no options */);

      上の memset の1行が、ぼくのコードには入ってなかった…。

    • 分かってみれば「なるほど、それで挙動不審だったのか」と納得するが (多分、初期化されてない部分が問題を起こす時があったのだろう)、 この1行は、最近になって必要になったのだろうか? だって、絶対にオレ、サンプルコードを丸写ししたはずなので、 ここだけ抜かすなんて器用な事、しないと思う…。

    • commit: c6f69f7b1d17cce2eed0f0152624bd3ad10487de

      bug fixed on ao_device initialization.

  • と、スッキリしたところで、 Windows のバイナリをまとめる。

  • 実は、メールのアーカイブを調べてみたら、2010年4月21日に David Millis さんという方から、当時の WaoN (バージョン 0.9) を MinGW でビルドした、とメールを頂いていた。

    • 彼は、 CUIwaon のみビルドしてて、 「curses を使った pvGTK+ を使った gwaon は難しそう」 とのことだった。

    • 親切にも、パッチだけでなくバイナリ(必要な dll 込み)も 送ってもらってたが、 多分バタバタしてたんだろう、結局、見えるところに置く事もしてなかった。

    • ということで、まずは、頂いたパッチを適用しておく。

    • commit: be49359ed053a9c3ff304b5f95747141ea83d863

      import MinGW patch provided by David Millis.

    • 見れば、先週ぼくが自分でやってた porting は、 かなり適当だったことが分かる。 (というのは、 stdout の file descriptor を取得する部分のこと。)

  • この上に、ぼくのやった他の porting を乗せることにする。

    • pv は、(後でメールを確認したときに気づいた事だが、 David が件のメールの中で suggest してくれてた) public domain な実装 pdcurses を使ったら、コードは何も変更なく、リンクすればそれだけでうまくいった。

    • gwaon に関しては、ここしばらく仕事で GTK+ なコードを Windows で 動かすことに挑戦してて、「Building native graphical applications in C for MS Windows, using GTK+ and open-source tools」(Kevin Boone)に従ったら簡単に動いたので、 そのまま gwaon もビルドしたら動いた。 (でも、アイコンをまだ作ってない。 誰か、かっこいいやつ、描いてくれないかなぁ〜)

    • commit: a3e23de7b96bab16ca8be8c27c9996eacb89944c

      MinGW port: add Makefiles for win32 builds.
      見てとのおり、David Millis 氏のパッチのおかげで、ソースは修正なし。

  • web page の方も改訂しておく。

  • ってことなので、これまで WaoN に興味あったけど、 Windows マシンしかなくてビルドできない!と悔しい思いをしていた皆さん、 まだ確認作業などほとんどしてない状態ですが、ダウンロード (waon-0.11-mingw.zip)して、 どんどん遊んでみてください。