2011-05-13 2 views
1

Предполагается, что это возможно в 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. 

Любые предложения были бы весьма полезными.

ответ

0

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

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

Audio Unit Programming Guide

+0

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

Смежные вопросы