AvoidNoiseで公開質問

先日もアップデートしたポップノイズ回避ユーティリティ「 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;

もし、ご存知の方がいらっしゃいましたら、教えていただければ幸いです。

コメント

  1. Kumadigital より:

    今更気がついたんですが、iTunesでもお悩みの同じノイズが出ますね(激汗
    イントロが静かな曲で試すとよくわかります。
    iTunesでもダメってことは、何やってもダメ?

    XCodeの使い方がよく解らないので自分では試せないのですが、
    もしかして、mySndCmd1.cmd = bufferCmd; という「音を出す」
    コマンドではなく、サウンド回路に何らかの問い合わせをするコマンドを
    発行するだけでもサウンド回路がOFFになるのを防げないでしょうか。
    (その前段のドライバ層で戻って来ちゃいますかね…?)

    たとえばmySndCmd1.cmd = bufferCmd;の代わりに、
    getVolumeCmd や getAmpCmd または loadCmd あたりを発行してみるとか。

    それでもダメな場合、動作周期を10秒→20秒にして、ノイズが出る
    機会を減らすしかないかも知れません。

  2. MacBS より:

    Kumadigitalさん、コメントありがとうございます。

    iTunesでもノイズが出ちゃうんですね。
    というと、ソフトウェアの問題というより
    iMacのハードウェア的な問題なのかもしれませんね。

    ちなみに、bufferCmd以外にloadCmdやvolumeCmdなどは
    試してみましたが、それでは実際に発声しないので
    サウンド回路をOn保持する効果がないようです。

    動作周期については、環境設定で変更できるように
    すると良いかもしれませんね。
    とりあえず、もう少し調査をしてみます。

タイトルとURLをコピーしました