|
Option Explicit
Public Declare Function osQueryPerformanceCounter Lib _
"kernel32.dll" Alias "QueryPerformanceCounter" _
(lpPerformanceCount As Currency) As Long
Public Declare Function osQueryPerformanceFrequency Lib _
"kernel32.dll" Alias "QueryPerformanceFrequency" _
(lpFrequency As Currency) As Long
Public freq As Currency, Count As Currency
Public DX7 As New DirectX7
Public DS As DirectSound
Public DSB(1) As DirectSoundBuffer
Public dsbd As DSBUFFERDESC, PCM As WAVEFORMATEX
Public O1SBuffer(360) As Byte, O2SBuffer(360) As Byte
Public Osc1Samp As Single, Osc2Samp As Single
Public Osc1FCutoff As Integer, Osc2FCutoff As Integer
Public Osc1Amp As Integer, Osc2Amp As Integer, O2F As Integer
Public AM_Speed As Integer, AM2_Speed As Integer
Public FM_Speed As Integer
Public fm As Long
Public i As Integer, f As Integer
Public n As Single, f2 As Single
Public Temp1 As Integer, Temp2 As Integer
Public Const pi = 3.14159265358979
Function Init_DX7(Hwnd As Long) As Boolean
On Error GoTo InitErrorOut1
PCM.nFormatTag = WAVE_FORMAT_PCM
PCM.nChannels = 1
PCM.lSamplesPerSec = 11050
PCM.nBitsPerSample = 8
PCM.nBlockAlign = 1
PCM.lAvgBytesPerSec = PCM.lSamplesPerSec * PCM.nBlockAlign
PCM.nSize = 0
dsbd.lFlags = DSBCAPS_STATIC
dsbd.lBufferBytes = 360
Set DS = DX7.DirectSoundCreate("")
DS.SetCooperativeLevel Hwnd, DSSCL_NORMAL
On Error GoTo InitErrorOut2
Set DSB(0) = DS.CreateSoundBuffer(dsbd, PCM)
Set DSB(1) = DS.CreateSoundBuffer(dsbd, PCM)
Init_DX7 = True
Exit Function
InitErrorOut2:
Set DSB(0) = Nothing
Set DSB(1) = Nothing
Set DS = Nothing
InitErrorOut1:
Init_DX7 = False
End Function
Sub Term_DX7()
Set DSB(0) = Nothing
Set DSB(1) = Nothing
Set DS = Nothing
End Sub
Sub DSBWRITE(Num As Integer, ByRef Buffer() As Byte)
DSB(Num).WriteBuffer 0, 0, Buffer(0), DSBLOCK_ENTIREBUFFER
End Sub
Sub DrawVU(Value As Integer, PB As PictureBox)
If Value < 75 Then PB.Line (0, 0)-(Value, 0), vbGreen
If Value > 75 And Value <= 95 Then _
PB.Line (0, 0)-(Value, 0), vbYellow
If Value > 95 Then PB.Line (0, 0)-(Value, 0), vbRed
End Sub
Sub DrawPOINT(dI As Integer, dSamp As Single, PB As PictureBox)
PB.PSet (dI, dSamp + 125), vbGreen
End Sub
Public Function Timer() As Single
osQueryPerformanceFrequency freq
osQueryPerformanceCounter Count
Let Timer = Count / freq
End Function
|
|