したがって、-1から+1の範囲のフロートを、次のように設定されたストリーム形式のAUGraphで期待される形式に適切にスケーリングしたいと思います。
size_t bytesPerSample = sizeof (AudioUnitSampleType); // is 4 bytes
stereoStreamFormat.mFormatID = kAudioFormatLinearPCM;
stereoStreamFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical;
stereoStreamFormat.mBytesPerPacket = bytesPerSample;
stereoStreamFormat.mFramesPerPacket = 1;
stereoStreamFormat.mBytesPerFrame = bytesPerSample;
stereoStreamFormat.mChannelsPerFrame = 2;
stereoStreamFormat.mBitsPerChannel = 8 * bytesPerSample;
stereoStreamFormat.mSampleRate = graphSampleRate; // 44.1k
この質問はグラフの設定に役立ちましたが、次のようにフロートをキャストすると、次のようになります。
sampleValueLeft = (Fixed) (floatVal * 32767.0f);
// there doesn't seem to be any difference whether i cast into
// SInt16 or SInt32 (which the Fixed type is defined to be)..
それは機能し、信号は良い音に聞こえますが、非常に静かです。だから私はスケーリングを間違っていますか?より大きな数でスケーリングすると、信号が台無しになります。クリッピングのように聞こえず、出力音量が高くなりません。固定小数点演算を深く研究するつもりはありません。必要なのは、適切な形式にキャストするワンライナーだけです。
ありがとう!
編集:私は別のストリーム形式を使用していましたが、それ以前はステレオ信号で適切に使用する方法を理解できませんでした。この異なる設定では、出力ボリュームに問題はありませんでした。したがって、ゲインの問題はスケーリングに関係しているに違いないと思います...