'=========================================================================== ' Subject: DIRECTSOUND EXAMPLE Date: 08-28-00 (15:19) ' Author: The ABC Programmer Code: RAPIDQ ' Origin: voxel@edmc.net Packet: RAPIDQ.ABC '=========================================================================== '-- DirectSound example for Rapid-Q by William Yu $TYPECHECK ON $INCLUDE "RAPIDQ.INC" DECLARE SUB exitItemClick (sender AS QMENUITEM) DECLARE SUB openItemClick (sender AS QMENUITEM) DECLARE SUB formShow (sender AS QFORM) DECLARE SUB playButtonClick (sender AS QBUTTON) DECLARE SUB stopButtonClick (sender AS QBUTTON) DECLARE SUB positionTrackBarChange (sender AS QTRACKBAR) DECLARE SUB freqTrackBarChange (sender AS QTRACKBAR) DECLARE SUB volumeTrackBarChange (sender AS QTRACKBAR) DECLARE SUB panTrackBarChange (sender AS QTRACKBAR) CREATE form AS QFORM width = 360 height = 300 center CREATE dxSound AS QDXSOUND END CREATE CREATE mainMenu AS QMAINMENU CREATE fileMenu AS QMENUITEM caption = "&File" CREATE openItem AS QMENUITEM caption = "&Open..." onClick = openItemClick END CREATE CREATE breakItem1 AS QMENUITEM caption = "-" END CREATE CREATE exitItem AS QMENUITEM caption = "E&xit" onClick = exitItemClick END CREATE END CREATE END CREATE CREATE panTrackBar AS QTRACKBAR left = 10 top = 10 width = 200 height = 30 tickStyle = tsManual min = -100 max = 100 onChange = panTrackBarChange enabled = FALSE END CREATE CREATE panLabel AS QLABEL left = 215 top = 20 caption = "Pan 0dB" END CREATE CREATE volumeTrackBar AS QTRACKBAR left = 10 top = 60 width = 200 height = 30 tickStyle = tsManual min = 0 max = 100 position = 100 onChange = volumeTrackBarChange enabled = FALSE END CREATE CREATE volumeLabel AS QLABEL left = 215 top = 70 caption = "Volume 100%" END CREATE CREATE freqTrackBar AS QTRACKBAR left = 10 top = 110 width = 200 height = 30 tickStyle = tsManual max = 44100 position = 22050 min = 0 onChange = freqTrackBarChange enabled = FALSE END CREATE CREATE freqLabel AS QLABEL left = 215 top = 120 caption = "Frequency 22050Hz" END CREATE CREATE positionTrackBar AS QTRACKBAR left = 10 top = 160 width = 200 height = 30 tickStyle = tsManual onChange = positionTrackBarChange enabled = FALSE END CREATE CREATE positionLabel AS QLABEL left = 215 top = 170 caption = "Position 0 / 0" END CREATE CREATE playButton AS QBUTTON left = 30 top = 210 caption = "&Play" enabled = FALSE onClick = playButtonClick END CREATE CREATE stopButton AS QBUTTON left = 110 top = 210 caption = "&Stop" enabled = FALSE onClick = stopButtonClick END CREATE onShow = formShow showModal END CREATE SUB formShow (sender AS QFORM) panTrackBar.setTick(0) volumeTrackBar.setTick(50) freqTrackBar.setTick(22050) dxSound.looped = FALSE END SUB SUB exitItemClick (sender AS QMENUITEM) form.close END SUB SUB openItemClick (sender AS QMENUITEM) DIM openDialog AS QOPENDIALOG openDialog.filter = "*.wav|*.wav" IF openDialog.execute THEN dxSound.fileName = openDialog.fileName panTrackBar.enabled = TRUE volumeTrackBar.enabled = TRUE freqTrackBar.enabled = TRUE positionTrackBar.enabled = TRUE playButton.enabled = TRUE stopButton.enabled = TRUE positionTrackBar.position = 0 positionTrackBar.max = dxSound.size freqTrackBar.position = dxSound.frequency freqTrackBarChange(freqTrackBar) positionTrackBarChange(positionTrackBar) END IF END SUB SUB playButtonClick (sender AS QBUTTON) dxSound.play WHILE dxSound.playing doEvents positionTrackBar.position = dxSound.position positionLabel.caption = "Position "+STR$(positionTrackBar.position)+" / "+STR$(dxSound.size) WEND END SUB SUB stopButtonClick (sender AS QBUTTON) dxSound.stop dxSound.position = 0 positionTrackBar.position = 0 END SUB SUB positionTrackBarChange (sender AS QTRACKBAR) dxSound.position = sender.position positionLabel.caption = "Position "+STR$(sender.position)+" / "+STR$(dxSound.size) END SUB SUB freqTrackBarChange (sender AS QTRACKBAR) dxSound.frequency = sender.position freqLabel.caption = "Frequency "+STR$(sender.position)+"Hz" END SUB SUB volumeTrackBarChange (sender AS QTRACKBAR) dxSound.volume = sender.position volumeLabel.caption = "Volume "+STR$(sender.position)+"%" END SUB SUB panTrackBarChange (sender AS QTRACKBAR) dxSound.pan = sender.position panLabel.caption = "Pan "+STR$(sender.position)+"dB" END SUB