Дело было вечером, делать было нечего ))))
Вот это вот должно играть “Во саду ли в огороде”. Но почему-то таймер работает не как я ожидаю. Цикл пробегает весь без задержки таймера.
Мне нужно, что бы между buzzer/enable = true и = false была задержка указанной длины:
Получается мелодия то играет, но без задержки. Т.е. у нот нет длительности.
var nC = 261.7;
var nC$ = 277.2;
var nD = 293.7;
var nD$ = 311.1;
var nE = 329.6;
var nF = 349.2;
var nF$ = 370.0;
var nG = 392.0;
var nG$ = 415.3;
var nA = 440.0;
var nA$ = 466.2;
var nB = 493.9;
var Tempo = 120;
var VoSadu = [nF, 4, nF, 4, nE, 4, nE, 4,
nE, 4, nE, 4, nE, 4, nF, 4,
nF, 4, nF, 4, nE, 4, nE, 4,
nE, 2, nE, 2
];
defineVirtualDevice("Music",
{
title: "Музыка",
cells: {
Play: {
title: "Играть",
type: "pushbutton",
value: false,
}
}
}
);
function PlayM(nnNote, nnLength){
var nLen = 4000/nnLength;
log(CurrentNote, nnNote, nLen);
dev["buzzer/frequency"] = nnNote;
dev["buzzer/enabled"] = true;
setTimeout(function () {
dev["buzzer/enabled"] = false;
}, nLen);
}
defineRule("PlayMusic", {
whenChanged: "Music/Play",
then: function (newValue, devName, cellName) {
log("Pressed. Length = {}",VoSadu.length);
for(CurrentNote = 0; CurrentNote < VoSadu.length; CurrentNote += 2){
PlayM(VoSadu[CurrentNote], VoSadu[CurrentNote + 1])
}
},
});