• 306月

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

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

    Filed under: Mac
    2007/06/30 8:27 am | 2 Comments

2 Responses

WP_Lime_Slice
  • Kumadigital Says:

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

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

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

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

  • MacBS Says:

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

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

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

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