Тема: ByteArray to Sound
Показать сообщение отдельно
Старый 08.09.2012, 22:28
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 13  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Как видно из примера звук надо записывать в bytearray ( семплы идут в виде числа с дробной частью в диапазоне от -1 до 1, то есть тип float ), для воспроизведения, потом, нужно записать в объект data события SampleEvent требуемое кол-во float-ов, при этом надо учитывать что ожидается на входе двухканальный звук, а с микрофона идет моно, т.е. одноканальный, поэтому каждое записываемое значение надо дублировать, записывать два раза. Если семплирование звука с микрофона производится с отличной от 44100Гц ( значение rate 44 ) надо пересчитывать подачу ( я просто добивал нулями нужное кол-во ). В примере жестко задан размер буфера 8192, это в общем так и есть, но немного неправильный подход, размер буфера возможно не одинаков на разных системах, или может измениться в будущем. Поэтому хорошо бы устанавливать его размер "на лету".

Добавлено через 8 минут
Цитата:
Сообщение от themir Посмотреть сообщение
Звук я записывал классом MicRecorder
Я знаю этот класс, он делает примерно то же что и приведенный код + кодирует звук в wav-e, посмотрите код внимательно, кодирование в wav-e это очень не сложная задача. Вы его можете организовать самостоятельно ( после прослушивания и/или перед сохранением).