![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 32
|
byteArray получает массивы намберов по 256 значений на левый и правый каналы последовательно.
Доставать их от туда примерно так: private var _spectrumLeft : Vector<Number> = new Vector<Number>( 256, true ); private var _spectrumRight : Vector<Number> = new Vector<Number>( 256, true ); private var _spectrumBytes : ByteArray = new ByteArray(); public function computeSpectrum():void { var i : int; _spectrumBytes.clear(); SoundMixer.computeSpectrum( _spectrumBytes, true ); for( i = 0; i < 256; ++i ) _spectrumLeft[i] = _spectrumBytes.readFloat(); for( i = 0; i < 256; ++i ) _spectrumRight[i] = _spectrumBytes.readFloat(); } Если вторым параметром задать false, то вместо амплитуд гармоник спектра будет срез самих звуковых волн в диапазоне от -1 до 1. Третий параметр по идее должен просто прореживать волны. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 32
|
Эм. Частота гармоники с индексом i будет 22050 * i / 256 при stretchFactor = 0. А может 44100 * i / 256.
Раз уж речь зашла об этом, сейчас выясню точно. |
|
|||||
|
Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
|
судя по доке при stretchFactor = 0 будет как раз 44100, или я не правильно понял?
Цитата:
__________________
Коллекционирую чужие ActionScript Блоги |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 32
|
Экспериментальным путем выяснил, что при stretchFactor = 0 спектр вычисляется от 0 до 11025 Гц.
В мануале описано для FFTMode = false, когда спектр не вычисляется вообще и под этими "образцами" имеются в виду срезы волн, не гармоники. Короче, для SoundMixer.computeSpectrum( _spectrumBytes, true ) частота гармоники будет = 11025*i/256 Гц. Где i - ее индекс. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|