Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2016, 20:52
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 1  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Smile запись звуков без микрофона

Здравствуйте.
возникла проблема.
пытаюсь записать в 1 трек несколько играющих треков.
пытаюсь это сделать через SoundMixer.computeSpectrum
но записывается только шум.

логика такая
Код AS3:
SoundMixer.computeSpectrum(spectrum);//извлекаем байты звуков в реальном времени
 
...
//после разбираем spectrum
while(spectrum.bytesAvailable > 0)
{
  bts.writeFloat(spectrum.readFloat());
  bts.writeFloat(spectrum.readFloat());
}
...
///полеченные данные записываем
rec.writeBytes(bts);
bts и rec ByteArray

я явно что-то не так делаю.
кто подскажет что именно.

и есть ли возможность вообще записать звуки без микрофона в реальном времени?
причем не 1 конкретного трека, а многих треков играющих единовременно.

Старый 13.02.2016, 21:23
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
SoundMixer.computeSpectrum вычисляет спектр играющего в данный момент звука/ов.Чтоб из этого получить назад звук нужно произвести back fourier transform(обратное преобразование Фурье) как-то так называется.

Добавлено через 3 минуты
но это все гиблое дело, т.к. SoundMixer.computeSpectrum возвращает мгновенный спектр.По хорошему его надо считывать непрерывно и непрерывно же декодировать.

Добавлено через 11 минут
правильнее было бы получить доступ к ByteArray'ям играющих звуков и складывать их с некими весами.


Последний раз редактировалось undefined; 13.02.2016 в 21:36.
Старый 13.02.2016, 22:14
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 3  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
вопрос 1
Цитата:
По хорошему его надо считывать непрерывно и непрерывно же декодировать.
я ведь могу дослушать какафонию всех звуков записав это через спектр, а потом произвести манипуляции по окончании воспроизведения?

вопрос 2
Цитата:
правильнее было бы получить доступ к ByteArray'ям играющих звуков и складывать их с некими весами.
у меня была такая идея.но я в упор не поимаю как это вообще должно делаться.
у меня есть данные полученные через extract по каждому играющему звуку.но как их вообще склеить в 1?

Старый 13.02.2016, 22:27
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
я ведь могу дослушать какафонию всех звуков записав это через спектр, а потом произвести манипуляции по окончании воспроизведения?
В теории можно,но это не лучший вариант т.к. точно не подберешь частоты по которым computeSpectrum раскладывает звук+учитывая что это дискретное преобразование, обратное преобразование внесет помехи в звук.
Цитата:
у меня есть данные полученные через extract по каждому играющему звуку.но как их вообще склеить в 1?
Допустим у тебя 4 звука: берешь первый байт первого звука умножаешь на 0.25(1/4), прибавляешь к этому первые байты от всех остальных звуков, тоже умноженных на 0.25.Пишешь результат в выходной ByteArray.Повторяешь для всех остальных байтов.Если в каком-то канале кончились байты - прибавляешь 0.Это будет суммирование с весом 0.25.Ну и еще надо следить чтоб значение за 255 не вылезло.
ПС: естественно всю арифметику проводить в типе Number и в конце только приводить его к uint.

Старый 13.02.2016, 23:53
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 5  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
спасибо. я попробую по вашему совету и отпишусь получилось ли

Добавлено через 55 часов 7 минут
к сожалению пока не получилось.
будем искать выход

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:07.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:07.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.