コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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);
            }
        }