Rapid-Q Documentation by William Yu (c)1999-2000 | Appendix B: QDXSOUND |
|
Field | Type | R/W | Default |
|
|
|
|
AutoUpdate | INTEGER | RW | True |
AutoUpdate determines whether to let the internal thread update the sound buffer every 50ms, or let the programmer control the updates. | |||
BufferLength | INTEGER | RW | 1000 |
BufferLength specifies how many bytes to read into the buffer for playing. For heavy computations or deeply nested loops, it's a good idea to extend the BufferLength so that the music can play uninterrupted. | |||
FileName | STRING | RW | |
FileName specifies the .WAV file. | |||
Frequency | INTEGER | RW | |
Frequency specifies the reproduction frequency. Do not set the frequency before loading a file, since a default frequency for the .WAV file will be given to you when you load a new sound file. | |||
Looped | INTEGER | RW | False |
Looped specifies whether to replay the sound file after it has finished playing. | |||
Pan | INTEGER | RW | 0 |
Pan specifies the relative volume of the right and left channels within the range from -100 to 100. A value of -100 mutes the right channel, and a value of 100 mutes the left channel. | |||
Parent | QFORM | W | |
Playing | INTEGER | R | |
Playing determines whether the sound file is currently playing. | |||
Position | INTEGER | RW | |
Use Position to set/get the current playing position of the sound file. | |||
Size | INTEGER | R | |
Size returns the file size of the .WAV file in bytes. | |||
StickyFocus | INTEGER | RW | False |
StickyFocus determines whether to keep playing even if the application loses focus. | |||
Tag | INTEGER | RW | |
Tag is not used internally, it is reserved storage space for the programmer. | |||
Volume | INTEGER | RW | |
Volume specifies the output volume for the current sound as a percentage. Setting volume to 0 mutes the sound, while setting volume to 100 plays the sound with "normal volume" (ie. your current sound settings for your computer). |
Method | Type | Description | Params |
|
|
|
|
Play | SUB | Start playing sound | 0 |
Stop | SUB | Stop playing sound | 0 |
Update | SUB | Update sound buffer | 0 |
Event | Type | Occurs when... | Params |
|
|
|
|
'-- 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