Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   запись звуков без микрофона (http://www.flasher.ru/forum/showthread.php?t=212446)

Dezar 13.02.2016 20:52

запись звуков без микрофона
 
Здравствуйте.
возникла проблема.
пытаюсь записать в 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 конкретного трека, а многих треков играющих единовременно.

undefined 13.02.2016 21:23

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

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

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

Dezar 13.02.2016 22:14

вопрос 1
Цитата:

По хорошему его надо считывать непрерывно и непрерывно же декодировать.
я ведь могу дослушать какафонию всех звуков записав это через спектр, а потом произвести манипуляции по окончании воспроизведения?

вопрос 2
Цитата:

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

undefined 13.02.2016 22:27

Цитата:

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

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

Dezar 13.02.2016 23:53

спасибо. я попробую по вашему совету и отпишусь получилось ли :)

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


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

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