home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / WAVEAUDI.PRG < prev    next >
Text File  |  1994-06-07  |  8KB  |  190 lines

  1. #include "FiveWin.ch"
  2.  
  3. Function WaveAudio()
  4.    Local cPrompt    // Declared to avoid array range error. See FOR loop
  5.    Local oDlg,lMute,lLeft,lRight,lOpen
  6.    Local oPLay,oStop,oAvTrack,oReTrack,oOpenClose,oSalir
  7.    Local oT1,oT2,oT3,oT4,oT5,oT6,oT7,oT8,oT9,oT10
  8.    Local oL1,oL2,oL3,oL4,oL5,oL6,oL7,oL8,oN9,oN10,l1,l2,l3,l4,l5,l6,l7,l8,n9,n10
  9.    Local cBuffer:=Space(200),oSBRight,oSBLeft,nVolR:=0,nVolL:=0
  10.    Local oTextLV,oTextRV
  11.    Local oTimer,oTracks[25]
  12.    Local aoStat[18],acStat[18]
  13.    Local cFile:=Space(30),oFind
  14.    Local nA,oFile,oType
  15.  
  16.    DEFINE DIALOG oDlg RESOURCE "WAVEAUDIO"
  17.    
  18.    mciSendStr("OPEN WAVEAUDIO ALIAS WAVE",@cBuffer,oDlg:hWnd)
  19.  
  20.     DEFINE TIMER oTimer INTERVAL 2000 ACTION (GetStat(@acStat,@oDlg),RefreshStat(@aoStat,@acStat))
  21.  
  22.    mciSendStr("CAPABILITY WAVE CAN EJECT"      ,@cBuffer,oDlg:hWnd)
  23.    l1 :=  cBuffer=="verdadero"
  24.    mciSendStr("CAPABILITY WAVE CAN PLAY"       ,@cBuffer,oDlg:hWnd)  
  25.    l2 := cBuffer=="verdadero"
  26.    mciSendStr("CAPABILITY WAVE CAN RECORD"     ,@cBuffer,oDlg:hWnd)
  27.    l3 := cBuffer=="verdadero"
  28.    mciSendStr("CAPABILITY WAVE CAN SAVE"       ,@cBuffer,oDlg:hWnd)
  29.    l4 := cBuffer=="verdadero"
  30.    mciSendStr("CAPABILITY WAVE COMPOUND DEVICE",@cBuffer,oDlg:hWnd)
  31.    l5 := cBuffer=="verdadero"
  32.    mciSendStr("CAPABILITY WAVE HAS AUDIO"      ,@cBuffer,oDlg:hWnd)
  33.    l6 := cBuffer=="verdadero"
  34.    mciSendStr("CAPABILITY WAVE HAS VIDEO"      ,@cBuffer,oDlg:hWnd)
  35.    l7 := cBuffer=="verdadero"
  36.    mciSendStr("CAPABILITY WAVE USES FILES"      ,@cBuffer,oDlg:hWnd)
  37.    l8 := cBuffer=="verdadero"
  38.    mciSendStr("CAPABILITY WAVE INPUTS"      ,@cBuffer,oDlg:hWnd)
  39.    n9 := Trim(cBuffer)
  40.    mciSendStr("CAPABILITY WAVE OUTPUTS"      ,@cBuffer,oDlg:hWnd)
  41.    n10 := Trim(cBuffer)
  42.  
  43.    REDEFINE BUTTON oPlay      ID 103 OF oDlg ACTION mciSendStr("PLAY WAVE FROM 0",@cBuffer,oDlg:hWnd)
  44.    REDEFINE BUTTON oStop      ID 109 OF oDlg ACTION mciSendStr("STOP WAVE",@cBuffer,oDlg:hWnd)
  45.    REDEFINE BUTTON oAvTrack   ID 101 OF oDlg ACTION ( AvPista(@oDlg),mciSendStr("PLAY WAVE",@cBuffer,oDlg:hWnd) )
  46.    REDEFINE BUTTON oReTrack   ID 106 OF oDlg ACTION ( RePista(@oDlg),mciSendStr("PLAY WAVE",@cBuffer,oDlg:hWnd) )
  47.    REDEFINE BUTTON oOpenClose ID 107 OF oDlg ACTION OpenClose(@oDlg)
  48.    REDEFINE BUTTON oSalir     ID 115 OF oDlg ACTION ( mciSendStr("STOP WAVE",@cBuffer,oDlg:hWnd),mciSendStr("CLOSE WAVE",@cBuffer,oDlg:hWnd),oDlg:End() )
  49.  
  50.    REDEFINE BUTTON oFind ID 116 OF oDlg ACTION (cFile:=cGetFile("Wave Audio File (*.wav) | *.wav","Select a Wave Audio File"),;
  51.     mciSendStr("CLOSE WAVE",@cBuffer,oDlg:hWnd),;
  52.     mciSendStr("OPEN WAVEAUDIO!"+Upper(Alltrim(cFile))+" ALIAS WAVE",@cBuffer,oDlg:hWnd),;
  53.     oFile:Refresh()==nil)
  54.  
  55.    REDEFINE GET oFile VAR cFile ID 300 OF oDlg VALID;
  56.    (If(Empty(cFile),(cFile:=cGetFile("Wave Audio File (*.wav) | *.wav","Select a Wave Audio File"))!=nil,.t.),;
  57.     mciSendStr("CLOSE WAVE",@cBuffer,oDlg:hWnd)!=-1,;
  58.     mciSendStr("OPEN WAVEAUDIO!"+Upper(Alltrim(cFile))+" ALIAS WAVE",@cBuffer,oDlg:hWnd)!=-1,;
  59.     oFile:Refresh()==nil)
  60.  
  61.  
  62.    REDEFINE CHECKBOX oL1 VAR l1 ID 150 OF oDlg
  63.    REDEFINE CHECKBOX oL2 VAR l2 ID 151 OF oDlg
  64.    REDEFINE CHECKBOX oL3 VAR l3 ID 152 OF oDlg
  65.    REDEFINE CHECKBOX oL4 VAR l4 ID 153 OF oDlg
  66.    REDEFINE CHECKBOX oL5 VAR l5 ID 154 OF oDlg
  67.    REDEFINE CHECKBOX oL6 VAR l6 ID 155 OF oDlg
  68.    REDEFINE CHECKBOX oL7 VAR l7 ID 156 OF oDlg
  69.    REDEFINE CHECKBOX oL8 VAR l8 ID 157 OF oDlg
  70.    REDEFINE SAY oN9  PROMPT n9  ID 158 OF oDlg
  71.    REDEFINE SAY oN10 PROMPT n10 ID 159 OF oDlg
  72.  
  73.    mciSendStr("CAPABILITY WAVE DEVICE TYPE"      ,@cBuffer,oDlg:hWnd)
  74.    REDEFINE SAY oType PROMPT UPPER(cBuffer) ID 190 OF oDlg
  75.  
  76.    AuxGetVol(5,@nVolL,@nVolR)
  77.    REDEFINE SAY oTextLV PROMPT Str(nVolR) ID 122 OF oDlg
  78.    REDEFINE SAY oTextRV PROMPT Str(nVolR) ID 123 OF oDlg
  79.  
  80.    GetStat(@acStat,@oDlg)
  81.    For nA=1 TO LEN(aoStat)
  82.       cPrompt := acStat[nA]
  83.       REDEFINE SAY aoStat[nA] PROMPT cPrompt ID 160+(nA-1) OF oDlg
  84.    Next nA
  85.  
  86.    REDEFINE SCROLLBAR oSBRight ID 130 RANGE 0,32 ;
  87.     ON UP   (AuxGetVol(5,@nVolL,@nVolR),;
  88.              AuxSetVol(5,if(nVolL<63000,nVolL+2047,nVolL),nVolR),;
  89.              AuxGetVol(5,@nVolL,@nVolR),;
  90.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
  91.     ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
  92.              AuxSetVol(5,if(nVolL>2047,nVolL-2047,nVolL),nVolR),;
  93.              AuxGetVol(5,@nVolL,@nVolR),;
  94.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) )  OF oDlg
  95.  
  96.    REDEFINE SCROLLBAR oSBLeft  ID 131 RANGE 0,32 ;
  97.     ON UP  (AuxGetVol(5,@nVolL,@nVolR),;
  98.             AuxSetVol(5,nVolL,if(nVolR<63000,nVolR+2040,nVolR)),;
  99.             AuxGetVol(5,@nVolL,@nVolR),;
  100.             oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) ;
  101.     ON DOWN (AuxGetVol(5,@nVolL,@nVolR),;
  102.              AuxSetVol(5,nVolL,if(nVolR>2047,nVolR-2040,nVolR)),;
  103.              AuxGetVol(5,@nVolL,@nVolR),;
  104.              oTextLV:SetText(Str(nVolL)),oTextRV:SetText(Str(nVolR)) ) OF oDlg
  105.  
  106.    ACTIVATE DIALOG oDlg ON INIT (oSBLeft:SetPos(nVolL/2047)==oSBRight:SetPos(nVolR/2047),oTimer:Activate()==Nil)
  107.  
  108.    RELEASE TIMER oTimer   
  109.  
  110.    RETURN Nil
  111.  
  112. Static Function GetStat(acStat,oDlg)
  113.    Local cBuffer:=Space(200),aMessages:={"STATUS WAVE ALIGNMENT",;
  114.                                          "STATUS WAVE BITSPERSAMPLE",;
  115.                                          "STATUS WAVE BYTESPERSEC",;
  116.                                          "STATUS WAVE CHANNELS",;
  117.                                          "STATUS WAVE CURRENT TRACK",;
  118.                                          "STATUS WAVE FORMAT TAG",;
  119.                                          "STATUS WAVE INPUT",;
  120.                                          "STATUS WAVE LENGTH",;
  121.                                          "STATUS WAVE LEVEL",;
  122.                                          "STATUS WAVE MEDIA PRESENT",;
  123.                                          "STATUS WAVE MODE",;
  124.                                          "STATUS WAVE NUMBER OF TRACKS",;
  125.                                          "STATUS WAVE OUTPUT",;
  126.                                          "STATUS WAVE POSITION",;
  127.                                          "STATUS WAVE READY",;
  128.                                          "STATUS WAVE SAMPLESPERSEC",;
  129.                                          "STATUS WAVE START POSITION",;
  130.                                          "STATUS WAVE TIME FORMAT" }
  131.    Local nA,cActTrack
  132.  
  133.    For nA=1 TO Len(aMessages)
  134.       mciSendStr(aMessages[nA],@cBuffer,oDlg:hWnd)
  135.       acStat[nA]=Upper(trim(cBuffer))
  136.    Next nA
  137.    Return
  138.  
  139. Static Function RefreshStat(aoStat,acStat)
  140.    Local nA
  141.    
  142.    For nA=1 to Len(aoStat)
  143.       aoStat[nA]:SetText(acStat[nA])
  144.    Next nA
  145.    Return
  146.  
  147.  
  148. Static Function ActPista(oDlg)
  149.    Local nActPista,cBuffer:=Space(200)
  150.  
  151.    mciSendStr("STATUS WAVE CURRENT TRACK",@cBuffer,oDlg:hWnd)
  152.    nActPista=Val(cBuffer)
  153.  
  154.    Return "TRACK : "+Ltrim(Str(nActPista))
  155.  
  156.  
  157. Static Function OpenClose(oDlg)
  158.    Local cStatus,cBuffer:=Space(200)
  159.  
  160.    mciSendStr("STATUS WAVE MODE",@cBuffer,oDlg:hWnd)
  161.  
  162.    If Upper(cBuffer)="ABIERTO" //.or. Empty(Upper(cBuffer))
  163.       mciSendStr("SET WAVE DOOR CLOSED",@cBuffer,oDlg:hWnd)
  164.    Else
  165.       mciSendStr("SET WAVE DOOR OPEN",@cBuffer,oDlg:hWnd)
  166.    Endif
  167.   
  168.    Return
  169.  
  170.  
  171. Static Function AvPista(oDlg)
  172.    Local nActPista,cBuffer:=Space(200)
  173.  
  174.    mciSendStr("STATUS WAVE CURRENT TRACK",@cBuffer,oDlg:hWnd)
  175.    nActPista=Val(cBuffer)
  176.  
  177.    mciSendStr("SEEK WAVE TO "+ltrim(Str(nActPista+1)),@cBuffer,oDlg:hWnd)
  178.   
  179.    Return
  180.  
  181. Static Function RePista(oDlg)
  182.    Local nActPista,cBuffer:=Space(200)
  183.  
  184.    mciSendStr("STATUS WAVE CURRENT TRACK",@cBuffer,oDlg:hWnd)
  185.    nActPista=Val(cBuffer)
  186.  
  187.    mciSendStr("SEEK WAVE TO "+ltrim(Str(nActPista-1)),@cBuffer,oDlg:hWnd)
  188.    
  189.    Return
  190.