Re: Delay problem
Posted: Thu Dec 10, 2015 3:45 pm
You have to disable the Debugger.
Code: Select all
DelayMicroSeconds(MusArr(i)\pause * 22.676 - 5)Code: Select all
Debug "play"
PlayedTicks.i = 0
PlayedUS.i = 0
CurrentUS.i = 0
StartMS.i = ElapsedMilliseconds()
For i = 0 To ArraySize(MusArr())-1
Select MusArr(i)\type
Case 1
OPN_Write(0, MusArr(i)\reg, MusArr(i)\val)
Case 2
tmp = MusArr(i)\reg+256
OPN_Write(0, tmp, MusArr(i)\val)
Case 3
;COMMENT AND UNCOMMENT HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;infratec
;DelayMicroSeconds(MusArr(i)\pause * 23) ; but need * 22.675 as 0. 000 022 675s
;CELTIC88
;DelayEx(MusArr(i)\pause) ; i even dont know how to use it
;lowest pb value
;Delay(1)
PlayedTicks + MusArr(i)\pause
PlayedUS = PlayedTicks * 22.675
While (CurrentUS < PlayedUS)
Delay(1)
CurrentUS.i = (ElapsedMilliseconds() - StartMS) * 1000
Wend
EndSelect
If stopflag
Break
EndIf
Next
Code: Select all
Procedure usleep(usec)
Define timer, ft.LARGE_INTEGER
ft\QuadPart = -(10 * usec)
timer = CreateWaitableTimer_(0, #True, 0);
SetWaitableTimer_(timer, @ft, 0, 0, 0, 0);
WaitForSingleObject_(timer, #INFINITE);
CloseHandle_(timer);
EndProcedure
Debug ElapsedMilliseconds()
usleep(10000)
Debug ElapsedMilliseconds()
Repeat
usleep(1)
ForEver