PDA

Просмотр полной версии : Изменение частоты звука


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/2010/08/03/an-fft-in-as3/