BASS_SAMPLE structure
Used with BASS_SampleGetInfo and BASS_SampleSetInfo to retrieve and set the default playback attributes of a sample.
typedef struct {
DWORD freq;
float volume;
float pan;
DWORD flags;
DWORD length;
DWORD max;
DWORD origres;
DWORD chans;
DWORD mingap;
DWORD mode3d;
float mindist;
float maxdist;
DWORD iangle;
DWORD oangle;
float outvol;
DWORD vam;
DWORD priority;
} BASS_SAMPLE;
Members
freq | Default sample rate.
|
volume | Default volume... 0 (silent) to 1 (full).
|
pan | Default panning position... -1 (full left) to +1 (full right), 0 = centre.
|
flags | A combination of these flags.
BASS_SAMPLE_8BITS | 8-bit resolution. If neither this or the BASS_SAMPLE_FLOAT flags are present, then the sample is 16-bit.
| BASS_SAMPLE_FLOAT | 32-bit floating-point.
| BASS_SAMPLE_LOOP | Looped?
| BASS_SAMPLE_3D | The sample has 3D functionality enabled.
| BASS_SAMPLE_MUTEMAX | Mute the sample when it is at (or beyond) its max distance (3D samples only).
| BASS_SAMPLE_SOFTWARE | The sample is not using hardware mixing.
| BASS_SAMPLE_VAM | DX7 voice allocation and management features are enabled (see below).
| BASS_SAMPLE_OVER_VOL | Override: the channel with the lowest volume is overridden.
| BASS_SAMPLE_OVER_POS | Override: the longest playing channel is overridden.
| BASS_SAMPLE_OVER_DIST | Override: the channel furthest away (from the listener) is overridden (3D samples only).
|
|
length | The length in bytes.
|
max | Maximum number of simultaneous playbacks.
|
origres | The original resolution (bits per sample)... 0 = undefined.
|
chans | Number of channels... 1 = mono, 2 = stereo, etc.
|
mingap | Minimum time gap in milliseconds between creating channels using BASS_SampleGetChannel. This can be used to prevent flanging effects caused by playing a sample multiple times very close to each other. The default setting, after loading/creating a sample, is 0 (disabled).
|
The following are the sample's default 3D attributes (if the sample is 3D).
|
mode3d | The 3D processing mode... one of these flags.
BASS_3DMODE_NORMAL | Normal 3D processing.
| BASS_3DMODE_RELATIVE | The sample's 3D position (position/velocity/orientation) is relative to the listener. When the listener's position/velocity/orientation is changed with BASS_Set3DPosition, the sample's position relative to the listener does not change.
| BASS_3DMODE_OFF | Turn off 3D processing on the sample, the sound will be played in the centre.
|
|
mindist | The minimum distance. The sample's volume is at maximum when the listener is within this distance.
|
maxdist | The maximum distance. The sample's volume stops decreasing when the listener is beyond this distance.
|
iangle | The angle of the inside projection cone in degrees... 0 (no cone) to 360 (sphere).
|
oangle | The angle of the outside projection cone in degrees... 0 (no cone) to 360 (sphere).
|
outvol | The delta-volume outside the outer projection cone... 0 (silent) to 1 (full).
|
The following are the sample's DX7 voice allocation/management settings (if VAM is enabled).
|
vam | voice allocation/management flags... a combination of these
BASS_VAM_HARDWARE | Play the sample in hardware. If no hardware voices are available then
the play call will fail.
| BASS_VAM_SOFTWARE | Play the sample in software (ie. non-accelerated). No other VAM flags may be used together with this flag.
| The following flags enable hardware resource stealing... if the hardware has no available voices, a currently playing buffer will be stopped to make room for the new buffer. Only samples with VAM enabled are considered for termination.
| BASS_VAM_TERM_TIME | If there are no free hardware voices, the buffer to be terminated will be the one with the least time left to play.
| BASS_VAM_TERM_DIST | If there are no free hardware voices, the buffer to be terminated will be one that was loaded/created with the BASS_SAMPLE_MUTEMAX flag and is beyond its max distance (maxdist). If there are no buffers that match this criteria, then the play call will fail.
| BASS_VAM_TERM_PRIO | If there are no free hardware voices, the buffer to be terminated will be the one with the lowest priority. This flag may be used with the TERM_TIME or TERM_DIST flag, if multiple voices have the same priority then the time or distance is used to decide which to terminate.
|
|
priority | Priority, used with the BASS_VAM_TERM_PRIO flag... 0 (min) to 0xFFFFFFFF (max).
|
Remarks
When a sample has 3D functionality, the
iangle and
oangle angles decide how wide the sound is projected around the orientation angle (as set via
BASS_ChannelSet3DPosition). Within the inside angle the volume level is the level set in the
volume member (or the
BASS_ATTRIB_VOL attribute when the sample is playing). Outside the outer angle, the volume changes according to the
outvol value. Between the inner and outer angles, the volume gradually changes between the inner and outer volume levels. If the inner and outer angles are 360 degrees, then the sound is transmitted equally in all directions.
When VAM is enabled, and neither the BASS_VAM_HARDWARE or BASS_VAM_SOFTWARE flags are specified, then the sample will be played in hardware if resources are available, and in software if no hardware resources are available.
See also
BASS_SampleCreate,
BASS_SampleGetInfo,
BASS_SampleLoad,
BASS_SampleSetInfo