Creates a new sample.
HSAMPLE BASS_SampleCreate( DWORD length, DWORD freq, DWORD chans, DWORD max, DWORD flags );
length | The sample's length, in bytes. | ||||||||||||||||
freq | The default sample rate. | ||||||||||||||||
chans | The number of channels... 1 = mono, 2 = stereo, etc. | ||||||||||||||||
max | Maximum number of simultaneous playbacks... 1 (min) - 65535 (max)... use one of the BASS_SAMPLE_OVER flags to choose the override decider, in the case of there being no free channel available for playback (ie. the sample is already playing max times). | ||||||||||||||||
flags | A combination of these flags.
|
BASS_ERROR_INIT | BASS_Init has not been successfully called. |
BASS_ERROR_ILLPARAM | max and/or length is invalid. |
BASS_ERROR_FORMAT | The sample format is not supported. |
BASS_ERROR_MEM | There is insufficient memory. |
BASS_ERROR_NO3D | Could not initialize 3D support. |
BASS_ERROR_UNKNOWN | Some other mystery problem! |
To play a sample, first a channel must be obtained using BASS_SampleGetChannel, which can then be played using BASS_ChannelStart or BASS_ChannelPlay.
If you want to play a large or one-off sample, then it would probably be better to stream it instead with BASS_StreamCreate.
HSAMPLE sample = BASS_SampleCreate(256, 440 * 64, 1, 1, BASS_SAMPLE_LOOP | BASS_SAMPLE_OVER_POS); // create sample short data[128]; // data buffer int a; for (a = 0; a < 128; a++) data[a] = (short)(32767.0 * sin(a * 6.283185 / 64)); // sine wave BASS_SampleSetData(sample, data); // set the sample's data