Показать сообщение отдельно
Старый 04.05.2010, 14:23
RAlfDog вне форума Посмотреть профиль Отправить личное сообщение для RAlfDog Найти все сообщения от RAlfDog
  № 3  
Ответить с цитированием
RAlfDog
 
Аватар для RAlfDog

Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
Да, спасибо большое, уже нашел.
И статью интересную - 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

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


Последний раз редактировалось RAlfDog; 04.05.2010 в 19:20.