Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
как midi связано с темпом? Найти похожие ветки
← →
pahan07 (2005-05-16 20:42) [0]Клавиатура копма используется как клавиатура пианино, реализуется это так:
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 69) and not (KeyQAlreadyPressed) then
begin
form2.SpeedButton4.Down:=true;
KeyQAlreadyPressed := True;
midimsg:=$7f3090;
midioutshortmsg(hmidi_out,midimsg);
end;
end;
procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = ord(69)) then
begin
form2.SpeedButton4.Down:=false;
KeyQAlreadyPressed := False;
midimsg:=$7f3080;
midioutshortmsg(hmidi_out,midimsg);
end;
end;
Мне нужно выяснить как долго была нажата клавиша, для того,чтобы записать в Мемо1 ее длительность! Но длительность не в милисекундах ,а музыкальную длительность(1/2, 1/4 и т.д)
Посоветуйте, как это можно реализовать? Как состыковать это с темпом игры ,может быть метроном какой-то сделать или еще чего... Может быть через midi как-то это можно отловить...
Какие будут идеи?
← →
Digitman © (2005-05-17 08:18) [1]в OnKeyDown при условии not KeyQAlreadyPressed :
TimeOn := GetTickCount;
в OnKeyUp :
TimeOff := GetTickCount;
TimeDiff := TimeOff - TimeOn;
в TimeDiff - время удержания клавиши в нажатом состоянии в мс
далее - простой пересчет этого времени в муз.длительность, с учетом заданной тобой муз.размерности и времени одного муз.такта
← →
pahan07 (2005-05-17 09:33) [2]Благодарю! Спасибо за совет :-)
Страницы: 1 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.049 c