private void StartPlaybackIfNeeded(OpenALAudioTrack track) { AL.GetSource(track.SourceId, ALGetSourcei.SourceState, out int stateInt); ALSourceState State = (ALSourceState)stateInt; if (State != ALSourceState.Playing && track.State == PlaybackState.Playing) { AL.SourcePlay(track.SourceId); } }
/// <summary> /// Creates a new audio track with the specified parameters /// </summary> /// <param name="sampleRate">The requested sample rate</param> /// <param name="hardwareChannels">The requested hardware channels</param> /// <param name="virtualChannels">The requested virtual channels</param> /// <param name="callback">A <see cref="ReleaseCallback" /> that represents the delegate to invoke when a buffer has been released by the audio track</param> /// <returns>The created track's Track ID</returns> public int OpenHardwareTrack(int sampleRate, int hardwareChannels, int virtualChannels, ReleaseCallback callback) { OpenALAudioTrack track = new OpenALAudioTrack(sampleRate, GetALFormat(hardwareChannels), hardwareChannels, virtualChannels, callback); for (int id = 0; id < MaxTracks; id++) { if (_tracks.TryAdd(id, track)) { return(id); } } return(-1); }
/// <summary> /// Creates a new audio track with the specified parameters /// </summary> /// <param name="sampleRate">The requested sample rate</param> /// <param name="channels">The requested channels</param> /// <param name="callback">A <see cref="ReleaseCallback" /> that represents the delegate to invoke when a buffer has been released by the audio track</param> public int OpenTrack(int sampleRate, int channels, ReleaseCallback callback) { OpenALAudioTrack track = new OpenALAudioTrack(sampleRate, GetALFormat(channels), callback); for (int id = 0; id < MaxTracks; id++) { if (_tracks.TryAdd(id, track)) { return(id); } } return(-1); }
private void StartPlaybackIfNeeded(OpenALAudioTrack track) { AL.GetSource(track.SourceId, ALGetSourcei.SourceState, out int stateInt); ALSourceState State = (ALSourceState)stateInt; if (State != ALSourceState.Playing && track.State == PlaybackState.Playing) { if (_volumeChanged) { AL.Source(track.SourceId, ALSourcef.Gain, _volume); _volumeChanged = false; } AL.SourcePlay(track.SourceId); } }