Phantom's Brick Архив

Главная -> Творчество -> LEGO® Самоделки -> Уйма LEGO®

RTTL для NXT от FatRat

FatRat, 2010-02-17 21:36:17 +00:00

Тут кто-то страдал без RTTL в NXT.

По адресу http://datacore1.narod.ru/rttl2c.htm выложен конвертер, преобразующий строку мелодии в формате RTTL в процедуру для RobotC.

Страничка - яваскрипт, никаких внешних файлов не использует. Можно сохранить и пользоваться автономно.

Имперский марш из "Звездных войн", например, выглядит так:

char mus_stop=0;
//--------------------8<--------------
//task Imperial {
void Imperial() {
	mus_stop=0;
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	PlayTone(523,30);wait10Msec(31); if(mus_stop)return; //8c
	wait1Msec(150); //16p
	PlayTone(784,15);wait10Msec(16); if(mus_stop)return; //16g
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	PlayTone(523,30);wait10Msec(31); if(mus_stop)return; //8c
	wait1Msec(150); //16p
	PlayTone(784,15);wait10Msec(16); if(mus_stop)return; //16g
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	wait1Msec(600); //p
	PlayTone(932,60);wait10Msec(61); if(mus_stop)return; //b
	PlayTone(932,60);wait10Msec(61); if(mus_stop)return; //b
	PlayTone(932,60);wait10Msec(61); if(mus_stop)return; //b
	PlayTone(1047,30);wait10Msec(31); if(mus_stop)return; //8c6
	wait1Msec(150); //16p
	PlayTone(784,15);wait10Msec(16); if(mus_stop)return; //16g
	PlayTone(622,60);wait10Msec(61); if(mus_stop)return; //d#
	PlayTone(523,30);wait10Msec(31); if(mus_stop)return; //8c
	wait1Msec(150); //16p
	PlayTone(784,15);wait10Msec(16); if(mus_stop)return; //16g
	PlayTone(659,60);wait10Msec(61); if(mus_stop)return; //e
	wait1Msec(300); //8p
}

FatRat, 2010-02-18 08:47:39 +00:00

По адресу http://datacore1.narod.ru/rttl2c.htm выложен конвертер,

Слегка улучшил. Добавил стакатто и переключатель "процедура/нить".

В режиме "процедура" код, похоже, будет совместим с NXC.