• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

winmm.dllを使って連続音を出す

思ったより簡単にできた。 winmm.dllは32bitを想定して作られているので、対象プラットフォームをx86としてbuildした。

参考になるソースが山ほどネットに上がっているので、必要な情報は苦労しなくても入手できた。

完全に理解できたわけではないけど、まあ、正常に動作しているようなので何か問題が起きた時に深く考えることにする。

600Hzのサイン波を連続的に発生させている。 音を途切れなく出すために、2つのバッファを使って、交互にデータを書き込んでいる。 スタート直後に若干音が途切れる瞬間があるが、その後は連続して音が出る。 ちなみに、停止する方法は今のところ不明。

コメント一覧

重松宏昌2021年7月8日 22:51 / 返信

今日は? コードを拝見させて頂きました。 コピーしてコンパイルしましたはエラーが出ます。 .NET Framework4.8でコンパイルできますか? エラー内容: private WaveFormat WaveFormatOut; //CS0246 型または名前空間の名前 'WaveFormat' が見つかりませんでした //(using ディレクティブまたはアセンブリ参照が指定されていることを確認してください) コメント頂けますと有難いです。

    atliqu2021年7月9日 15:23 / 返信

    重松様 コメントありがとうございます。 WaveFormatクラスの定義が無いためだと思います。 提示してあるコード以外にwinmm.dllにアクセスするためのラッパーコードが必要ですが、 他人様のサイトから借用しているため、このサイトにそのまま公開できません。 ネット上には、winmm.dllをC#で使うための解説サイトがたくさんあると思いますので、 それらを参考にされてWaveFormtクラスやコールバックの為のデリゲート等のコードを作成してください。  Atliqu

nqf2021年7月9日 21:23 / 返信

atliqu様 初心者ですので、基本的なことを質問しています。 了解です。 回答有難う御座います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA