任天堂おしゃべりフラワーのしゃべりを網羅する?

ChatGPT=Codexを試用してみる プロジェクトファイルまで用意してくれたのはいいんだけどね

これですね。左側に見出しが残っていますね。

Windowsでのmicキャプチャーという一般論からスタートして、色々と追加設定していき、

C++ Builder知ってるんだ。

なぜかWinMMを利用する方向へ行き、TThread::Queueの利用を推奨してくるので、突っ込みましたが、

プロジェクトファイルを提供して と押すと、

なにやら作ってくれました。

注意書きがありますが、”C++ Builderのバージョン差で.cbprojがそのまま開けない場合は…..”云々というケースでした。バージョン差ではないですが、滅多に見ない変なエラー

[致命的エラー] モジュール 'xmlrtl290.bpl' のアドレス 7A090724 でアドレス 00000000 に対する読み取り違反がおきました。

でbuildできません。ありがちなことなので、README.mdに記載の

# MicCaptureCppBuilder

C++Builder / VCL 用のマイクキャプチャ最小サンプルです。

## 内容

- `MicCapture.cpp` - アプリケーション入口
- `MainForm.h`
- `MainForm.cpp`
- `MainForm.dfm`
- `MicCapture.cbproj` - 参考プロジェクトファイル

## 使い方

1. `MicCapture.cbproj` を C++Builder で開きます。
2. ビルドできない場合は、新規 VCL Forms Application を作成し、`MainForm.h/.cpp/.dfm` と `MicCapture.cpp` の内容を取り込んでください。
3. リンカに `winmm.lib` を追加します。

`MainForm.cpp` にも以下を入れています。

```cpp
#pragma comment(lib, "winmm.lib")
```

環境によって効かない場合は、IDE のプロジェクト設定から追加してください。

## 実装メモ

- マイク取得は Windows の `waveIn*` API を使っています。
- `WaveInProc` は UI スレッドではないため、画面更新は `TThread::Queue` 経由です。
- UI更新は 50ms 間隔に間引いています。

このワークアラウンドで対処しました。ま、切り貼りしながらプロジェクト作るより楽かもしれませんね。できたプログラムは以下の動画のように動きました。

プログレスバーの移動がスムースな気がしますね。Chappy君も結構やりますね。blogの更新も任せられたらいいんだけどね。って、失言。(笑)

コメント