2015-07-03 4 views
2

Я создаю приложение, которое записывает звук. Я могу записать и сохранить звук, но мне нужно изменить высоту записанного звука с помощью слайдера. Как я могу это сделать? Я воспроизвожу записанный звук через элемент мультимедиа. Вот функция, чтобы сохранить временный аудиофайл:Как изменить высоту записанного звука?

private void SaveTempAudio(MemoryStream buffer) 
    { 
     // Be defensive ... trust no one & nothing 
     if (buffer == null) 
      throw new ArgumentNullException("Attempting to save an empty sound buffer."); 

     // Clean out the AudioPlayer's hold on our audioStream 
     if (_audioStream != null) 
     { 
      AudioPlayer.Stop(); 
      AudioPlayer.Source = null; 

      _audioStream.Dispose(); 
     } 

     using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 

      if (isoStore.FileExists(_tempFileName)) 
       isoStore.DeleteFile(_tempFileName); 

      _tempFileName = string.Format("{0}.wav", DateTime.Now.ToFileTime()); 

      var bytes = buffer.GetWavAsByteArray(_recorder.SampleRate); 

      _audioStream = isoStore.CreateFile(_tempFileName); 
      _audioStream.Write(bytes, 0, bytes.Length); 

      AudioPlayer.SetSource(_audioStream); 
     } 
    } 

    private void PlayAudioClick(object sender, RoutedEventArgs e) 
    { 
     AudioPlayer.Play(); 
    } 
+2

Вы должны показать часть своего кода, как вы временно храните звук? – Envil

+0

Я отредактировал мой вопрос @envil –

ответ

0

Если вы не найдете библиотеку с возможностью встроенный, вы должны будете получить доступ к отдельным звуковых байтов, конвертировать их в кадрах, и курсор через кадров со скоростью, соответствующей желаемому значению. Например, если вы хотите воспроизвести со скоростью 150%, вы должны использовать линейную интерполяцию для перемещения курсора по данным и предоставить новые значения. Пример: четыре кадра со значениями 0, 0.2, 0.4, 0.6. Курсор на 150% означает, что вы получите первый (0), затем вычисляете половину между вторым и третьим (0,3), затем получаете четвертый (0,6) и т. Д. Затем вы берете данные этого кадра и конвертируете это обратно в аудиобайты.

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