Sets up a synchronizer on a mixer source channel.
HSYNC BASS_Mixer_ChannelSetSync( DWORD handle, DWORD type, QWORD param, SYNCPROC *proc, void *user );
|handle||The channel handle.|
|type||The type of sync. This can be one of the standard sync types, as available via BASS_ChannelSetSync, or one of the mixer specific sync types listed below.|
|param||The sync parameter.|
|proc||The callback function.|
|user||User instance data to pass to the callback function.|
Sync types, with param and SYNCPROC data definitions.
|BASS_SYNC_MIXER_ENVELOPE||Sync when an envelope ends. This is not triggered by looping envelopes.|
param : envelope type to sync on, 0 = all types. data : envelope type.
|BASS_SYNC_MIXER_ENVELOPE_NODE||Sync when an envelope reaches a new node.|
param : envelope type to sync on, 0 = all types. data : LOWORD = envelope type, HIWORD = node number.
|BASS_SYNC_STALL||Sync when mixing of the channel is stalled/resumed. This is like the standard BASS_SYNC_STALL sync, except it can be either mixtime or not.|
param : not used. data : 0 = stalled, 1 = resumed.
|BASS_ERROR_HANDLE||The channel is not plugged into a mixer.|
|BASS_ERROR_ILLTYPE||An illegal type was specified.|
|BASS_ERROR_ILLPARAM||An illegal param was specified.|
Sync types that would automatically be mixtime when using BASS_ChannelSetSync are not so when using this function. The BASS_SYNC_MIXTIME flag should be specified in those cases, or BASS_ChannelSetSync used instead.
If the mixer itself is a decoding channel, or the BASS_SYNC_MIXTIME flag is used, then there is effectively no real difference between this function and BASS_ChannelSetSync, except for the mixer specific sync types listed above.
When a source is removed from a mixer, any syncs that have been set on it via this function are automatically removed. If the channel is subsequently plugged back into a mixer, the previous syncs will not still be set on it. Syncs set via BASS_ChannelSetSync are unaffected.
BASS_ChannelSetSync, SYNCPROC callback