1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| DO WHILE NOT gnScanKill
nLevel = BASS_ChannelGetLevel(nScanChannel) '// scan peaks
nLP = LO(WORD, nLevel)
nRP = HI(WORD, nLevel)
IF nLpeak < nLP THEN nLpeak = nLP ' set left peak
IF nRpeak < nRP THEN nRpeak = nRP ' set right peak
IF BASS_ChannelIsActive(nScanChannel) = 0 THEN
nX = -1 ' reached the end
ELSE
nX = BASS_ChannelGetPosition(nScanChannel, %BASS_POS_BYTE) / nBpp
END IF
IF nX > nXpos THEN
nL = (nLpeak * nHalfHeight / 32768) - 1
nR = (nRpeak * nHalfHeight / 32768) - 1
FOR nY = 0 TO nL
IF gnScanKill THEN
EXIT FOR
ELSE
PixelArray(nX, nHalfHeight - nY) = zColorARGB(255, LevelColr(rCoef * nY))
END IF
NEXT
FOR nY = 0 TO nR
IF gnScanKill THEN
EXIT FOR
ELSE
PixelArray(nX, nHalfHeight - 1 + nY) = zColorARGB(255, LevelColr(rCoef * nY))
END IF
NEXT
IF nX >= %SCANWIDTH - 1 THEN EXIT DO '// gone off end of display
nXpos = nX
nLpeak = 0: nRpeak = 0
END IF
LOOP |
Partager