, поэтому я хочу правильно масштабировать числа с плавающей точкой в диапазоне от -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)..
работает, сигнал звучит хорошо, но очень тихо. Так я делаю масштабирование неправильно?
Масштабирование на большее число портит сигнал. Не похоже на отсечение, и выходная громкость не становится выше. Я не собираюсь углубленно изучать математику с фиксированной запятой, все, что мне нужно, это однострочный, который приводится в нужный формат.
спасибо!
edit: я использовал другой формат потока, до которого я не мог понять, как правильно использовать стереофонический сигнал. С этой другой настройкой у меня не было проблем с выходной громкостью, поэтому я считаю, что проблема усиления должна быть связана с масштабированием ...