home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 16
/
CD_ASCQ_16_0994.iso
/
news
/
4611
/
fw16d.ins
/
SAMPLES
/
MIDI.PRG
< prev
next >
Wrap
Text File
|
1994-06-07
|
8KB
|
189 lines
#include "FiveWin.ch"
Function Sequencer()
Local cPrompt // Declared to avoid array range error. See FOR loop
Local oDlg,lMute,lLeft,lRight,lOpen
Local oPLay,oStop,oAvTrack,oReTrack,oOpenClose,oSalir
Local oT1,oT2,oT3,oT4,oT5,oT6,oT7,oT8,oT9,oT10
Local oL1,oL2,oL3,oL4,oL5,oL6,oL7,oL8,oN9,oN10,l1,l2,l3,l4,l5,l6,l7,l8,n9,n10
Local cBuffer:=Space(200),oSBRight,oSBLeft,nVolR:=0,nVolL:=0
Local oTextLV,oTextRV
Local oTimer,oTracks[25]
Local aoStat[18],acStat[18]
Local cFile:=Space(30)
Local nA,oFile,oType,oFind
DEFINE DIALOG oDlg RESOURCE "SEQUENCER"
mciSendStr("OPEN SEQUENCER ALIAS MIDI",@cBuffer,oDlg:hWnd)
DEFINE TIMER oTimer INTERVAL 2000 ACTION (GetStat(@acStat,@oDlg),RefreshStat(@aoStat,@acStat))
mciSendStr("CAPABILITY MIDI CAN EJECT" ,@cBuffer,oDlg:hWnd)
l1 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI CAN PLAY" ,@cBuffer,oDlg:hWnd)
l2 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI CAN RECORD" ,@cBuffer,oDlg:hWnd)
l3 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI CAN SAVE" ,@cBuffer,oDlg:hWnd)
l4 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI COMPOUND DEVICE",@cBuffer,oDlg:hWnd)
l5 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI HAS AUDIO" ,@cBuffer,oDlg:hWnd)
l6 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI HAS VIDEO" ,@cBuffer,oDlg:hWnd)
l7 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI USES FILES" ,@cBuffer,oDlg:hWnd)
l8 := cBuffer=="verdadero"
mciSendStr("CAPABILITY MIDI INPUTS" ,@cBuffer,oDlg:hWnd)
n9 := Trim(cBuffer)
mciSendStr("CAPABILITY MIDI OUTPUTS" ,@cBuffer,oDlg:hWnd)
n10 := Trim(cBuffer)
REDEFINE BUTTON oPlay ID 103 OF oDlg ACTION mciSendStr("PLAY MIDI FROM 0",@cBuffer,oDlg:hWnd)
REDEFINE BUTTON oStop ID 109 OF oDlg ACTION mciSendStr("STOP MIDI",@cBuffer,oDlg:hWnd)
REDEFINE BUTTON oAvTrack ID 101 OF oDlg ACTION ( AvPista(@oDlg),mciSendStr("PLAY MIDI",@cBuffer,oDlg:hWnd) )
REDEFINE BUTTON oReTrack ID 106 OF oDlg ACTION ( RePista(@oDlg),mciSendStr("PLAY MIDI",@cBuffer,oDlg:hWnd) )
REDEFINE BUTTON oOpenClose ID 107 OF oDlg ACTION OpenClose(@oDlg)
REDEFINE BUTTON oSalir ID 115 OF oDlg ACTION ( mciSendStr("STOP MIDI",@cBuffer,oDlg:hWnd),mciSendStr("CLOSE MIDI",@cBuffer,oDlg:hWnd),oDlg:End() )
REDEFINE BUTTON oFind ID 116 OF oDlg ACTION (cFile:=cGetFile("Midi Audio File (*.mid) | *.mid","Select a Midi Audio File"),;
mciSendStr("CLOSE MIDI",@cBuffer,oDlg:hWnd),;
mciSendStr("OPEN SEQUENCER!"+Upper(Alltrim(cFile))+" ALIAS MIDI",@cBuffer,oDlg:hWnd),;
oFile:Refresh()==nil)
REDEFINE GET oFile VAR cFile ID 300 OF oDlg VALID;
(If(Empty(cFile),(cFile:=cGetFile("Midi Audio File (*.mid) | *.mid","Select a Midi Audio File"))!=nil,.t.),;
mciSendStr("CLOSE MIDI",@cBuffer,oDlg:hWnd)!=-1,;
mciSendStr("OPEN SEQUENCER!"+Upper(Alltrim(cFile))+" ALIAS MIDI",@cBuffer,oDlg:hWnd)!=-1,;
oFile:Refresh()==nil)
REDEFINE CHECKBOX oL1 VAR l1 ID 150 OF oDlg
REDEFINE CHECKBOX oL2 VAR l2 ID 151 OF oDlg
REDEFINE CHECKBOX oL3 VAR l3 ID 152 OF oDlg
REDEFINE CHECKBOX oL4 VAR l4 ID 153 OF oDlg
REDEFINE CHECKBOX oL5 VAR l5 ID 154 OF oDlg
REDEFINE CHECKBOX oL6 VAR l6 ID 155 OF oDlg
REDEFINE CHECKBOX oL7 VAR l7 ID 156 OF oDlg
REDEFINE CHECKBOX oL8 VAR l8 ID 157 OF oDlg
REDEFINE SAY oN9 PROMPT n9 ID 158 OF oDlg
REDEFINE SAY oN10 PROMPT n10 ID 159 OF oDlg
mciSendStr("CAPABILITY MIDI DEVICE TYPE" ,@cBuffer,oDlg:hWnd)
REDEFINE SAY oType PROMPT UPPER(cBuffer) ID 190 OF oDlg
AuxGetVol(5,@nVolL,@nVolR)
REDEFINE SAY oTextLV PROMPT Str(nVolR) ID 122 OF oDlg
REDEFINE SAY oTextRV PROMPT Str(nVolR) ID 123 OF oDlg
GetStat(@acStat,@oDlg)
For nA=1 TO LEN(aoStat)
cPrompt := acStat[nA]
REDEFINE SAY aoStat[nA] PROMPT cPrompt ID 160+(nA-1) OF oDlg
Next nA
REDEFINE SCROLLBAR oSBRight ID 130 RANGE 0,32 ;
ON UP (AuxGetVol(5,@nVolL,@nVolR),;
AuxSetVol(5,if(nVolL<63000,nVolL+2047,nVolL),nVolR),;
AuxGetVol(5,@nVolL,@nVolR),;
oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
AuxSetVol(5,if(nVolL>2047,nVolL-2047,nVolL),nVolR),;
AuxGetVol(5,@nVolL,@nVolR),;
oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) OF oDlg
REDEFINE SCROLLBAR oSBLeft ID 131 RANGE 0,32 ;
ON UP (AuxGetVol(5,@nVolL,@nVolR),;
AuxSetVol(5,nVolL,if(nVolR<63000,nVolR+2040,nVolR)),;
AuxGetVol(5,@nVolL,@nVolR),;
oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
AuxSetVol(5,nVolL,if(nVolR>2047,nVolR-2040,nVolR)),;
AuxGetVol(5,@nVolL,@nVolR),;
oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) OF oDlg
ACTIVATE DIALOG oDlg ON INIT (oSBLeft:SetPos(nVolL/2047)==oSBRight:SetPos(nVolR/2047),oTimer:Activate()==Nil)
RELEASE TIMER oTimer
RETURN Nil
Static Function GetStat(acStat,oDlg)
Local cBuffer:=Space(200),aMessages:={"STATUS MIDI ALIGNMENT",;
"STATUS MIDI BITSPERSAMPLE",;
"STATUS MIDI BYTESPERSEC",;
"STATUS MIDI CHANNELS",;
"STATUS MIDI CURRENT TRACK",;
"STATUS MIDI FORMAT TAG",;
"STATUS MIDI INPUT",;
"STATUS MIDI LENGTH",;
"STATUS MIDI LEVEL",;
"STATUS MIDI MEDIA PRESENT",;
"STATUS MIDI MODE",;
"STATUS MIDI NUMBER OF TRACKS",;
"STATUS MIDI OUTPUT",;
"STATUS MIDI POSITION",;
"STATUS MIDI READY",;
"STATUS MIDI SAMPLESPERSEC",;
"STATUS MIDI START POSITION",;
"STATUS MIDI TIME FORMAT" }
Local nA,cActTrack
For nA=1 TO Len(aMessages)
mciSendStr(aMessages[nA],@cBuffer,oDlg:hWnd)
acStat[nA]=Upper(trim(cBuffer))
Next nA
Return
Static Function RefreshStat(aoStat,acStat)
Local nA
For nA=1 to Len(aoStat)
aoStat[nA]:SetText(acStat[nA])
Next nA
Return
Static Function ActPista(oDlg)
Local nActPista,cBuffer:=Space(200)
mciSendStr("STATUS MIDI CURRENT TRACK",@cBuffer,oDlg:hWnd)
nActPista=Val(cBuffer)
Return "TRACK : "+Ltrim(Str(nActPista))
Static Function OpenClose(oDlg)
Local cStatus,cBuffer:=Space(200)
mciSendStr("STATUS MIDI MODE",@cBuffer,oDlg:hWnd)
If Upper(cBuffer)="ABIERTO" //.or. Empty(Upper(cBuffer))
mciSendStr("SET MIDI DOOR CLOSED",@cBuffer,oDlg:hWnd)
Else
mciSendStr("SET MIDI DOOR OPEN",@cBuffer,oDlg:hWnd)
Endif
Return
Static Function AvPista(oDlg)
Local nActPista,cBuffer:=Space(200)
mciSendStr("STATUS MIDI CURRENT TRACK",@cBuffer,oDlg:hWnd)
nActPista=Val(cBuffer)
mciSendStr("SEEK MIDI TO "+ltrim(Str(nActPista+1)),@cBuffer,oDlg:hWnd)
Return
Static Function RePista(oDlg)
Local nActPista,cBuffer:=Space(200)
mciSendStr("STATUS MIDI CURRENT TRACK",@cBuffer,oDlg:hWnd)
nActPista=Val(cBuffer)
mciSendStr("SEEK MIDI TO "+ltrim(Str(nActPista-1)),@cBuffer,oDlg:hWnd)
Return