Форум 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=139539)

RAlfDog 04.05.2010 13:36

Изменение частоты звука
 
Подскажите, пожалуйста, можно ли какими-нибудь средствами as3 менять частоту воспроизводимого звука?

P.S. может как-то через ByteArray можно, или классы уже кем-то написаны?

gloomyBrain 04.05.2010 14:00

Цитата:

может как-то через ByteArray можно
Можно, более того - пример есть в хелпе в разделе Sound

RAlfDog 04.05.2010 14:23

Да, спасибо большое, уже нашел.
И статью интересную - http://www.noinimod.ru/60/

Добавлено через 4 часа 43 минуты
Как динамически менять тональность разобрался :)

Но почему она меняется скачками, плавно нельзя???

Код:

var blocs:uint = 4096;

//
function soundUpdate(event:SampleDataEvent):void
{
        //trace('sample data - ');
        var ba:ByteArray = new ByteArray();
        sound.extract(ba, blocs);
        ba.position = 0;
        if (ba.length < blocs * 8) {
                sound.extract(ba, blocs, 0);
        }
        var freq:Number = stage.mouseY / stage.stageHeight * 3;
        if (freq < 0) {
                freq = 0;
        }
        if (freq > 4) {
                freq = 4;
        }
        event.data.writeBytes(soundRate(ba, freq, 1));
        //event.data.writeBytes(ba);
}
function soundRate(bytes:ByteArray, freq:Number=0, vol:Number=1)
{
        var returnBytes:ByteArray = new ByteArray();
        var step:Number = Math.round(uint(freq)<<2);
        trace(freq+' - '+step);
    bytes.position = 0;
    while(bytes.bytesAvailable > 0)
    {               
                //trace(bytes.position);
        returnBytes.writeFloat(vol * bytes.readFloat());
        returnBytes.writeFloat(vol * bytes.readFloat());
                bytes.position += step;
    }
    return returnBytes;
}
//
var sound:Sound = new idle_engine();
var sound2:Sound = new Sound();
sound2.addEventListener('sampleData',soundUpdate);
sound2.play();

Т.е. при таком коде всё работает только при значениях переменной step = 0; 4; 8;
А как можно поплавнее менять частоту воспроизводимого звука?
Что-то я не совсем понимаю зависимость тональности от считываемой позиции массива bytes :(

Вообще, я хочу сделать плавное изменение частоты звука работающего двигателя автомобиля, при прибавлении/убавлении оборотов двигателя. Т.е. нажал на "газ" - звук двигателя повысился в тональности, нажал "тормоз" - звук понизился в тональности, ПЛАВНО.

djyamato 23.10.2010 00:40

вот без скачков почти http://www.audiostretch.com/ А вот статья http://gerrybeauregard.wordpress.com...an-fft-in-as3/


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

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