예제 #1
0
        public void StartStream()
        {
            if (StreamState != StreamState.Open)
            {
                throw new Exception("Trying to Start a stream that does not have State: Open. State is " + StreamState.ToString());
            }

            var err = PortAudio.Pa_StartStream(Config.Stream);

            if (err != PortAudio.PaError.paNoError)
            {
                throw new Exception(PortAudio.Pa_GetErrorText(err));
            }

            StreamState = StreamState.Started;
        }
예제 #2
0
        public void CloseStream()
        {
            if (StreamState != StreamState.Stopped)
            {
                throw new Exception("Trying to Close a stream that does not have State: Stopped. State is " + StreamState.ToString());
            }

            if (Config == null)
            {
                return;
            }

            var err = PortAudio.Pa_CloseStream(Config.Stream);

            if (err != PortAudio.PaError.paNoError)
            {
                throw new Exception(PortAudio.Pa_GetErrorText(err));
            }

            StreamState = StreamState.Closed;
        }
예제 #3
0
        public void OpenStream()
        {
            if (Config == null)
            {
                throw new Exception("Configuration settings have not been applied. You must first configure the host");
            }

            if (StreamState != StreamState.Closed)
            {
                throw new Exception("Trying to Open a stream that does not have State: Closed. State is " + StreamState.ToString());
            }

            callbackDelegate       = RealtimeCallback;
            streamFinishedDelegate = StreamFinished;

            var err = PortAudio.Pa_OpenStream(
                out Config.Stream,
                ref Config.inputParameters,
                ref Config.outputParameters,
                Samplerate,
                BufferSize,
                (PortAudio.PaStreamFlags.paClipOff | PortAudio.PaStreamFlags.paDitherOff),
                callbackDelegate,
                new IntPtr(0)
                );

            if (err != PortAudio.PaError.paNoError)
            {
                throw new Exception(PortAudio.Pa_GetErrorText(err));
            }

            err = PortAudio.Pa_SetStreamFinishedCallback(Config.Stream, streamFinishedDelegate);

            if (err != PortAudio.PaError.paNoError)
            {
                throw new Exception(PortAudio.Pa_GetErrorText(err));
            }

            StreamState = StreamState.Open;
        }