From QB64 Wiki

Jump to: navigation, search

The _SNDOPEN function loads a sound file into memory and returns a LONG handle value above 0.


sound_handle& = _SNDOPEN (filename$[, "[VOL][,][SYNC][,][LEN][,][PAUSE][,][SETPOS]"])


  • Returns a LONG sound handle value to the sound file in memory. A zero value means the sound could NOT be loaded.
  • The literal or variable STRING sound file name can be WAV, OGG, AIFF, RIFF, VOC, MP3, MOD or MIDI file types.
  • Capabilities of VOL, LEN, SYNC, SETPOS and PAUSE is a string of parameters separated by commas. It is NOT case sensitive.
  • ALWAYS check the handle value returned is greater than zero before attempting to play the sound!
  • The handle can be used by most of the SND sound playing Functions and Subs in QB64 except _SNDPLAYFILE which plays a sound file name directly and does not use a handle value.
  • Handles can be closed with _SNDCLOSE when the sound is no longer necessary.
  • An ILLEGAL FUNCTION CALL error message means the capabilities$ string was invalid or two NON-SYNC sounds are using the same channel!
  • If a WAV sound file won't play, try it using the Windows Play WAV sounds library to check it or convert the sound file to OGG!

Sound File Capabilities
  • Each capability can only be specified once and must be valid for that file or it won't play. Capabilities can be listed in any order.

QB64 supports the following sound file formats (Bold is a guaranteed capability): WAV = "VOL,SYNC,LEN,PAUSE" Free WAV to OGG GUI converter OGG = "VOL,SYNC,LEN,PAUSE" Free WAV to OGG converter AIF = "VOL,SYNC,LEN,PAUSE" RIF = "VOL,SYNC,LEN,PAUSE" VOC = "VOL,SYNC,LEN,PAUSE" MID = "VOL" MOD = "VOL,PAUSE" MP3 = "VOL,PAUSE,SETPOS" Free WMA, MP3 and OGG converter Note: _SNDBAL only affects MP3 volume. Sound will reside in main channel.

  • The required sound file capabilities can make a difference as to whether a sound file can be played or not and how it can be used.
Only one sound can exist on the primary channel, and it must be closed before playing another non-SYNC sound.

Capability Descriptions "VOL" can change the volume or balance of the sound using _SNDVOL and _SNDBAL. "LEN" can get the length of the sound using the _SNDLEN function. "PAUSE" can pause the sound using _SNDPAUSE and the _SNDPAUSED function can check it. "SETPOS" can change the position the sound is (or will be) playing from. See _SNDSETPOS. "SYNC" can load the sound onto a unique channel, to be played simultaneously with others. When SYNC is not specified, the sound is loaded onto the primary channel.

Snippet 1: Loading a sound file to use in the program later. Only load it ONCE and use the handle any time you want!

h& = _SNDOPEN("dog.wav","sync,vol") 'only use the capabilities of that file type IF h& = 0 THEN BEEP ELSE _SNDPLAY h& 'check for valid handle before using!

Snippet 2: Playing a sound from 2 different speakers based on program results. Must use SYNC!

Laff& = _SNDOPEN("KONGlaff.ogg", "SYNC,VOL") 'load sound file and get LONG handle value IF LaffX! < -1 THEN LaffX! = -1 'set full volume to left speaker IF LaffX! > 1 THEN LaffX! = 1 'set full volume to right speaker _SNDBAL Laff&, LaffX! 'balance sound to left or right speaker _SNDPLAY Laff& 'play sound

See also:

Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Personal tools