можно ли изменить высоту тона воспроизведения аудиоочереди

Предполагается, что это возможно в Mac OS X путем перезаписи частоты дискретизации в AudioStreamBasicDescription, а затем создания новой очереди вывода.

Мне удалось восстановить частоту дискретизации по умолчанию и записать новую (т.е. заменить 44100 на 48000), но это не привело к изменению высоты тона выходного сигнала.

err = AudioFileGetProperty(mAudioFile, kAudioFilePropertyDataFormat, &size, &mDataFormat);
        if (err != noErr)
            NSLog(@"Couldn't determine the audio file format");
        Float64 mySampleRate = mDataFormat.mSampleRate; //the initial rate
        if (inRate != 1) {
//write a new value
            mDataFormat.mSampleRate = inRate;
            //then 
err = AudioQueueNewOutput etc.

Любые предложения будут ценны.


person Robert Carroll    schedule 13.05.2011    source источник


Ответы (1)


Изменение частоты дискретизации не меняет высоту звука. Вы можете заметить, что что-то, воспроизводимое быстрее, имеет более высокий тон. Однако это восприятие, а не реальность.

Чтобы изменить высоту тона, вам необходимо обработать аудиоданные с помощью библиотеки цифровой обработки сигналов (DSP). В качестве альтернативы попробуйте запустить его через AudioUnit:

Руководство по программированию аудиоблока

person Max MacLeod    schedule 18.01.2012
comment
Изменение частоты дискретизации действительно меняет высоту звука. Он одновременно меняет высоту тона и темп. Это не просто восприятие. Вы, конечно, правы в том, что можно изменить только высоту тона, не меняя темпа. - person Todd Lehman; 19.05.2014