先日もアップデートしたポップノイズ回避ユーティリティ「 AvoidNoise 」ですが、
ノイズを回避するソフトで、ノイズ問題が発生しています。(^^;
私ではどうも解決の糸口が見えないので、ここで公開質問してみようかと。
実際の処理は以下のようにしていて、SndDoCommand()を実行した前後で
パルスノイズが発生します。
mySndCmd1.cmd = bufferCmd;
mySndCmd1.param1=0;
mySndCmd1.param2=(long)(Shead);
aOSerr=SndDoCommand(mySndChan,&mySndCmd1,true);
波形の指定は正弦波でも無音でも、長さ0の音声でもノイズは出ます。
SndDoCommand()を実行しなければノイズはもちろん出なくなりますが、
肝心の音声回路の切断を回避することができなくなります。
SndDoCommand()を別手法に変えれば解決するのでしょうか?
それともSoundHeaderの指定がまずいのかな?
ちなみにSoundHeaderの指定は長さ0の音声だと、以下のような感じです。
Shead->samplePtr = nil;
Shead->length = 0;
Shead->sampleRate = 0xAC440000;
Shead->loopStart = 0;
Shead->loopEnd = 0;
Shead->encode = 0;
Shead->baseFrequency = 60;
Shead->sampleArea[0]=0;
もし、ご存知の方がいらっしゃいましたら、教えていただければ幸いです。
(当サイトでは、Amazonアソシエイトをはじめとした第三者配信のアフィリエイトプログラムにより商品をご紹介致しております。)
2 Responses
6月 30th, 2007 at 10:29 AM
今更気がついたんですが、iTunesでもお悩みの同じノイズが出ますね(激汗
イントロが静かな曲で試すとよくわかります。
iTunesでもダメってことは、何やってもダメ?
XCodeの使い方がよく解らないので自分では試せないのですが、
もしかして、mySndCmd1.cmd = bufferCmd; という「音を出す」
コマンドではなく、サウンド回路に何らかの問い合わせをするコマンドを
発行するだけでもサウンド回路がOFFになるのを防げないでしょうか。
(その前段のドライバ層で戻って来ちゃいますかね…?)
たとえばmySndCmd1.cmd = bufferCmd;の代わりに、
getVolumeCmd や getAmpCmd または loadCmd あたりを発行してみるとか。
それでもダメな場合、動作周期を10秒→20秒にして、ノイズが出る
機会を減らすしかないかも知れません。
6月 30th, 2007 at 3:11 PM
Kumadigitalさん、コメントありがとうございます。
iTunesでもノイズが出ちゃうんですね。
というと、ソフトウェアの問題というより
iMacのハードウェア的な問題なのかもしれませんね。
ちなみに、bufferCmd以外にloadCmdやvolumeCmdなどは
試してみましたが、それでは実際に発声しないので
サウンド回路をOn保持する効果がないようです。
動作周期については、環境設定で変更できるように
すると良いかもしれませんね。
とりあえず、もう少し調査をしてみます。