![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Подскажите, пожалуйста, как у распакованнного методом extract звука Sound, узнать громкость(от 0 до 1) 4 раза в секунду и записать значения в ByteArray?
Вот код, который я написал. private function generate():void { // samples - распакованный звук samples.position = 0; step = samples.length / 4096; do { step--; } while (step % 4); var left:Number; var right:Number; var mono:Number; for (var c:int = 0; c < 4096; c++) { left = Math.abs(samples.readFloat()); right = Math.abs(samples.readFloat()); mono = Math.abs(Math.max(left, right)) + Math.abs(Math.min(left, right)); samples.position = c * step; _results_bytes.writeFloat(mono); // _results_bytes - ByteArray с массивом громкостей. } } Вот полный код, если надо: https://gist.github.com/subdan/5402384 Там громкость рисуется в Bitmap. |
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
так в чем проблема
и будет вызываться 4 раза в секунду |
|
|||||
|
chamele0n, я не про это. У меня звук к примеру 60 секунд. Мне надо 60*4=240 значений громкости в виде массива.
|
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
а посмотрел тот код, так измени значение step
например вместо 4096 попробуй прописать 1024 |
|
|||||
|
Сам разобрался.
while (samples.bytesAvailable > 88200) { for (var i:uint = 0; i < 11025; i++) { var leftChannel:Number = Math.abs(samples.readFloat()); var rightChannel:Number = Math.abs(samples.readFloat()); var monoChannel:Number = Math.abs(Math.max(leftChannel, rightChannel)) + Math.abs(Math.min(leftChannel, rightChannel)); } _results_bytes.push(monoChannel); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|