Documentation component by D.Glodt (c)2000-2004 | Appendix A: QWAVE |
|
Field | Type | R/W | Default |
|
|
|
|
Timer | QTIMER | RW | |
Controle the fréquency of évent OnChange. | |||
Lenght | LONG | R | |
Lenght of wave file or record time. | |||
State | INTEGER | R | VD_CLOSE |
State of player,can be WV_PLAY,WV_STOP,WV_PAUSE,WV_RECORD. | |||
FileOpen | BOOLEAN | R | False |
It's at true if a wave file is open to play or record. | |||
CurrentPos | LONG | RW | |
Position of wave file in milliseconds. | |||
Bits | INTEGER | RW | |
Bit number by sample of wave,can be WV_BIT8 ou WV_BIT16. | |||
Frequence | INTEGER | RW | |
Sample frequency of wave,can be WV_KHZ8,WV_KHZ11,WV_KHZ44. | |||
Mode | SHORT | RW | |
Output mode,can be WV_STEREO ou WV_MONO. | |||
Error | STRING | R | |
Text error if OPEN method return FALSE | |||
Volume | INTEGER | RW | 0 |
DeviceType | STRING | RW | |
Codec type ,example for mp3:MpegVideo |
Method | Type | Description | Params |
|
|
|
|
Close | SUB | Close the wave file | 0 |
Open | FUNCTION(FileName as string) | Open a wave file and return True if no error. | 1 |
Play | SUB | Play the wave file. | 0 |
Stop | SUB | Stop the player. | 0 |
Pause | SUB | Set the player to mode pause | 0 |
New | SUB | Create a new wave | 0 |
Record | SUB | Set the player to record,if the wave is new,his record time is define by the Lenght property. | 0 |
Save | FUNCTION(FileName as string) | Save the wave file and return True | 1 |
Delete | Sub(Pos1 as long,Pos2 as long) | Delete some sample data from wave file from position pos1 to pos2 in milliseconds | 2 |
Event | Type | Occurs when... | Params |
|
|
|
|
OnChange | (position as long) | Position of player in mode play or mode record. | 1 |
'************************************************************************** '* application:player Wave * '* auteur:D.Glodt * '* date:17-1-2004 * '************************************************************************** $OPTION ICON "wave.ico" $TYPECHECK ON $Include "Rapidq.inc" $include "Object\QWave.inc" $RESOURCE PLAYBMP as "play.bmp" $RESOURCE STOPBMP as "Stop.bmp" $RESOURCE PAUSEBMP as "Pause.bmp" $RESOURCE RECORDBMP as "record.bmp" $RESOURCE SCREENBMP as "gramo.bmp" Declare Sub Play Declare Sub Stop Declare Sub Pause Declare Sub Open Declare Sub Close Declare Sub Quitter Declare Sub SaveAs Declare Sub New Declare Sub Record Declare Sub TrackBarChange Declare Sub PostimerOnTimer(Position as long) Declare Sub Mono Declare Sub Stereo Declare Sub Bit8 Declare Sub Bit16 Declare Sub Khz8 Declare Sub Khz11 Declare Sub Khz44 Declare Sub DeleteStart Declare Sub DeleteEnd Declare Sub ShowParam Declare Sub TimeRecordChange Declare Sub Init Dim OpenDialog as QOpenDialog OpenDialog.Filter="Fichier Wave|*.wav|Fichier Mp3|*.mp3" OpenDialog.Caption= "Selectionner une onde" Dim SaveDialog as QSaveDialog SaveDialog.Filter="Fichier Wave|*.wav" SaveDialog.Caption= "Sauver une onde" Dim Wave as QWave Wave.DeviceType="MpegVideo" Wave.OnChange=PostimerOnTimer Wave.timer.interval=200 CREATE Form2 AS QFORM Caption="Parametres d'enregistrement" Width=288 Height=180 Center BorderStyle=bsDialog CREATE groupe1 AS QGROUPBOX Top=10 Left=2 Width=70 Height=60 Caption="Mode" CREATE MonoBt AS QRADIOBUTTON Top=15 Left=5 width=50 Caption="Mono" OnClick=Mono END CREATE CREATE StereoBt AS QRADIOBUTTON Top=35 Left=5 width=50 Caption="Stereo" OnClick=Stereo END CREATE END CREATE CREATE groupe2 AS QGROUPBOX Top=10 Left=82 Width=70 Height=60 Caption="Bits" CREATE Bit8Bt AS QRADIOBUTTON Top=15 Left=5 width=50 Caption="8bits" OnClick=Bit8 END CREATE CREATE Bit16Bt AS QRADIOBUTTON Top=35 Left=5 width=50 Caption="16bits" OnClick=Bit16 END CREATE END CREATE CREATE groupe3 AS QGROUPBOX Top=10 Left=162 Width=70 Height=80 Caption="Freq" CREATE Freq8Bt AS QRADIOBUTTON Top=15 Left=5 width=50 Caption="8Khz" OnClick=Khz8 END CREATE CREATE Freq11Bt AS QRADIOBUTTON Top=35 Left=5 width=50 Caption="11Khz" OnClick=Khz11 END CREATE CREATE Freq44Bt AS QRADIOBUTTON Top=55 Left=5 width=50 Caption="44Khz" OnClick=Khz44 END CREATE END CREATE CREATE label1 AS QLABEL Caption="Temps enregistrement(s):10" top=100 left=2 END CREATE CREATE TrackBar2 AS QTRACKBAR TickMarks=tmTopLeft TickStyle=tsNone Left=2 Top=130 Max=300 LineSize=0 Width=272 Height=22 Position=10 OnChange=TimeRecordChange END CREATE END CREATE CREATE Form AS QFORM Caption="Wave" Width=288 Height=180 Center BorderStyle=bsSingle DelBorderIcons 2 OnClose=Quitter OnShow=Init CREATE MENU AS QMAINMENU CREATE FileMenu AS QMENUITEM Caption="&Fichier" CREATE Item1 AS QMENUITEM Caption="&Nouveau" OnClick=New END CREATE CREATE Item2 AS QMENUITEM Caption="&Ouvrir" OnClick=Open END CREATE CREATE Item3 AS QMENUITEM Caption="&Fermer" OnClick=Close END CREATE CREATE Item4 AS QMENUITEM Caption="&Sauver sous" OnClick=SaveAs END CREATE CREATE Item5 AS QMENUITEM Caption="-" END CREATE CREATE Item6 AS QMENUITEM Caption="&Quitter" OnClick=Quitter END CREATE END CREATE CREATE EditMenu AS QMENUITEM Caption="&Edition" CREATE Item11 AS QMENUITEM Caption="&Supprimer depuis le debut" OnClick=DeleteStart END CREATE CREATE Item12 AS QMENUITEM Caption="&Supprimer depuis la fin" OnClick=DeleteEnd END CREATE CREATE Item13 AS QMENUITEM Caption="-" END CREATE CREATE Item14 AS QMENUITEM Caption="Parametres" OnClick=ShowParam END CREATE END CREATE END CREATE CREATE Panel1 AS QPANEL Left=0 Top=0 Width=281 Height=130 BevelOuter=bvNone CREATE image as QIMAGE width=100 height=70 BmpHandle=SCREENBMP END CREATE CREATE BtPlay AS QCOOLBTN BMPHandle=PLAYBMP Left=88 Top=26 Width=28 Height=28 Hint="Play" ShowHint=true GroupIndex=1 Enabled=false OnClick=Play END CREATE CREATE BtStop AS QCOOLBTN BMPHandle=STOPBMP Left=116 Top=26 Width=28 Height=28 Down=true Hint="Stop" ShowHint=true GroupIndex=1 Enabled=false OnClick=Stop END CREATE CREATE BtPause AS QCOOLBTN BMPHandle=PAUSEBMP Left=144 Top=26 Width=28 Height=28 GroupIndex=1 Hint="Pause" ShowHint=true Enabled=false OnClick=Pause END CREATE CREATE BtRecord AS QCOOLBTN BMPHandle=RECORDBMP Left=172 Top=26 Width=28 Height=28 Down=true Hint="Record" ShowHint=true GroupIndex=1 OnClick=Record END CREATE CREATE TrackBar1 AS QTRACKBAR TickMarks=tmBoth TickStyle=tsNone Left=2 Top=76 LineSize=0 Hint="Position" ShowHint=true Width=272 Height=21 OnChange=TrackBarChange END CREATE CREATE Infos AS QSTATUSBAR AddPanels "Temps:","position:" Panel(0).width=100 END CREATE END CREATE END CREATE Form.ShowModal Sub Open If OpenDialog.Execute Then Wave.close if Wave.open(OpenDialog.FileName) then EditMenu.Enabled=true TrackBar1.Max=Wave.lenght TrackBar1.Position=0 infos.panel(0).caption="Temps:"+str$(wave.lenght/1000)+"s" infos.panel(1).caption="Position:0" BtPlay.Enabled=true BtStop.Enabled=true BtPause.Enabled=true item4.Enabled=true item3.Enabled=true if wave.mode=WV_MONO then MonoBt.checked=true else StereoBt.checked=true end if if wave.bits=WV_BIT8 then Bit8Bt.checked=true else Bit16Bt.checked=true end if if wave.frequence=WV_KHZ8 then Freq8Bt.checked=true elseif wave.frequence=WV_KHZ11 then Freq11Bt.checked=true elseif wave.frequence=WV_KHZ44 then Freq44Bt.checked=true end if else showmessage wave.error end if end if End Sub Sub Close Wave.close BtPlay.Enabled=false BtStop.Enabled=false BtPause.Enabled=false EditMenu.Enabled=false item4.Enabled=false item3.Enabled=false infos.panel(0).caption="Temps:" infos.panel(1).caption="Position:" End Sub Sub Play if wave.FileOpen=false then BtStop.Down=True TrackBar1.Max=Wave.lenght Wave.play End Sub Sub Stop Wave.stop TrackBar1.Position=0 infos.panel(0).caption="Temps:"+str$(wave.lenght/1000)+"s" infos.panel(1).caption="Position:0" End Sub Sub Pause if wave.FileOpen=false then BtStop.Down=True Wave.pause End Sub Sub TrackBarChange Wave.currentPos=TrackBar1.Position infos.panel(1).caption="Position:"+str$(TrackBar1.Position/1000) End Sub Sub PostimerOnTimer(Position as long) TrackBar1.Position=Position infos.panel(1).caption="Position:"+str$(Position/1000) If Wave.state=WV_STOP then Wave.stop TrackBar1.Position=0 BtStop.Down=True end if End Sub Sub Quitter Wave.close form2.close form.close End Sub Sub Mono wave.mode=WV_MONO End Sub Sub Stereo wave.mode=WV_STEREO End Sub Sub Bit8 wave.bits=WV_BIT8 End Sub Sub Bit16 wave.bits=WV_BIT16 End Sub Sub Khz8 wave.frequence=WV_KHZ8 End Sub Sub Khz11 wave.frequence=WV_KHZ11 End Sub Sub Khz44 wave.frequence=WV_KHZ44 End Sub Sub New wave.close wave.new infos.panel(0).caption="Temps:"+str$(TrackBar2.Position)+"s" infos.panel(1).caption="Position:0" EditMenu.Enabled=true BtPlay.Enabled=true BtStop.Enabled=true BtPause.Enabled=true item4.Enabled=true item3.Enabled=true if wave.mode=WV_MONO then MonoBt.checked=true else StereoBt.checked=true end if if wave.bits=WV_BIT8 then Bit8Bt.checked=true else Bit16Bt.checked=true end if if wave.frequence=WV_KHZ8 then Freq8Bt.checked=true elseif wave.frequence=WV_KHZ11 then Freq11Bt.checked=true elseif wave.frequence=WV_KHZ44 then Freq44Bt.checked=true end if End Sub Sub SaveAs If SaveDialog.Execute Then form.cursor=crHourglass if instr(lcase$(SaveDialog.FileName),".wav")>0 then wave.save(SaveDialog.FileName) else wave.save(SaveDialog.FileName+".wav") end if form.cursor=crDefault end if End Sub Sub Record if wave.FileOpen=false then BtStop.Down=True wave.lenght=Trackbar2.Position*1000 TrackBar1.Max=Wave.lenght wave.record End Sub Sub DeleteStart wave.Delete(0,wave.currentPos) infos.panel(0).caption="Temps:"+str$(wave.lenght/1000) End Sub Sub DeleteEnd wave.Delete(wave.currentPos,wave.lenght) infos.panel(0).caption="Temps:"+str$(wave.lenght/1000)+"s" End Sub Sub ShowParam form2.show End Sub Sub TimeRecordChange label1.caption="Temps enregistrement(s):"+str$(TrackBar2.Position) infos.panel(0).caption="Temps:"+str$(TrackBar2.Position) End Sub Sub Init New infos.panel(0).caption="Temps:"+str$(TrackBar2.Position)+"s" End Sub