Starts the device.

    DWORD buflen,
    DWORD threads


buflenBuffer length in samples... 0 = use current length.
threadsThe maximum number of processing threads to use... 0 = use current number.

Return value

If successful, then TRUE is returned, else FALSE is returned. Use BASS_ASIO_ErrorGetCode to get the error code.

Error codes

BASS_ERROR_INITBASS_ASIO_Init has not been successfully called.
BASS_ERROR_ALREADYThe device has already been started.
BASS_ERROR_NOCHANNo channels have been enabled.
BASS_ERROR_UNKNOWNSome other mystery problem!


Before starting the device, channels must be enabled using BASS_ASIO_ChannelEnable. Once started, channels cannot be enabled or disabled until the device is stopped, using BASS_ASIO_Stop.

The default number of processing threads is 1, which means that the enabled channels' ASIOPROC functions get called in series (starting with the lowest input channel). Multiple channels can be processed in parallel if multiple threads are created for that purpose via the threads parameter. The number of threads is automatically capped at the number of enabled channels with an ASIOPROC function, which is sufficient to have them all processed simultaneously.

See also

BASS_ASIO_ChannelEnable, BASS_ASIO_ChannelGetLevel, BASS_ASIO_ChannelIsActive, BASS_ASIO_ChannelPause, BASS_ASIO_GetLatency, BASS_ASIO_GetInfo, BASS_ASIO_IsStarted, BASS_ASIO_Stop