Example #1
0
        public unsafe WaveDuplex(int deviceIndex, double sampleRate, int framesPerBuffer, AudioBufferAvailableDelegate bufferNeededDelegate)
        {
            this._bufferAvailable = bufferNeededDelegate;
            PaStreamParameters paStreamParameters = new PaStreamParameters
            {
                device           = deviceIndex,
                channelCount     = 2,
                suggestedLatency = 0.0,
                sampleFormat     = PaSampleFormat.PaFloat32
            };
            PaError paError = PortAudioAPI.Pa_IsFormatSupported(ref paStreamParameters, ref paStreamParameters, sampleRate);

            if (paError != 0)
            {
                throw new ApplicationException(paError.ToString());
            }
            this._gcHandle = GCHandle.Alloc(this);
            paError        = PortAudioAPI.Pa_OpenStream(out this._streamHandle, ref paStreamParameters, ref paStreamParameters, sampleRate, (uint)framesPerBuffer, PaStreamFlags.PaNoFlag, this._paCallback, (IntPtr)this._gcHandle);
            if (paError != 0)
            {
                this._gcHandle.Free();
                throw new ApplicationException(paError.ToString());
            }
            paError = PortAudioAPI.Pa_StartStream(this._streamHandle);
            if (paError == PaError.paNoError)
            {
                return;
            }
            PortAudioAPI.Pa_CloseStream(this._streamHandle);
            this._gcHandle.Free();
            throw new ApplicationException(paError.ToString());
        }
Example #2
0
        public unsafe WavePlayer(int deviceIndex, double sampleRate, int framesPerBuffer, AudioBufferNeededDelegate bufferNeededDelegate)
        {
            Console.WriteLine("WavePlayer started, samplerate=" + sampleRate.ToString() + ", frameCount=" + framesPerBuffer.ToString());
            this._bufferNeeded = bufferNeededDelegate;
            PaStreamParameters paStreamParameters = new PaStreamParameters
            {
                device           = deviceIndex,
                channelCount     = 2,
                suggestedLatency = 0.0,
                sampleFormat     = PaSampleFormat.PaFloat32
            };
            PaError paError = PortAudioAPI.Pa_IsFormatSupported(IntPtr.Zero, ref paStreamParameters, sampleRate);

            if (paError != 0)
            {
                throw new ApplicationException("Init audio output device: " + paError.ToString());
            }
            this._gcHandle = GCHandle.Alloc(this);
            paError        = PortAudioAPI.Pa_OpenStream(out this._streamHandle, IntPtr.Zero, ref paStreamParameters, sampleRate, (uint)framesPerBuffer, PaStreamFlags.PaNoFlag, this._paCallback, (IntPtr)this._gcHandle);
            if (paError != 0)
            {
                this._gcHandle.Free();
                throw new ApplicationException("Open audio output device: " + paError.ToString());
            }
            paError = PortAudioAPI.Pa_StartStream(this._streamHandle);
            if (paError == PaError.paNoError)
            {
                return;
            }
            PortAudioAPI.Pa_CloseStream(this._streamHandle);
            this._gcHandle.Free();
            throw new ApplicationException("Start audio output device: " + paError.ToString());
        }
Example #3
0
        public static PaError PaAsio_GetInputChannelName(PaDeviceIndex device, int channelIndex, ref string channelName)
        {
            IntPtr  charPtr = new IntPtr(0);
            PaError err     = IntPtr_PaAsio_GetInputChannelName(device, channelIndex, out charPtr);
            string  str     = Marshal.PtrToStringAnsi(charPtr);

            channelName = str;
            return(err);
        }
        public AudioPlayer(int deviceIndex, double sampleRate, uint framesPerBuffer, SamplesAvailableEvent samplesAvailableCallback)
        {
            _bufferNeeded = samplesAvailableCallback;

            PaStreamParameters ouputParams = new PaStreamParameters();

            ouputParams.device           = deviceIndex;
            ouputParams.channelCount     = 2;
            ouputParams.suggestedLatency = 0;
            ouputParams.sampleFormat     = PaSampleFormat.paFloat32;

            PaError paErr = Pa_IsFormatSupported(IntPtr.Zero, ref ouputParams, sampleRate);

            if (paErr != PaError.paNoError)
            {
                throw new ApplicationException(paErr.ToString());
            }

            _gcHandle = GCHandle.Alloc(this);

            paErr = Pa_OpenStream(out _streamHandle, IntPtr.Zero, ref ouputParams, sampleRate, framesPerBuffer, PaStreamFlags.paNoFlag, _paCallback, (IntPtr)_gcHandle);

            if (paErr != PaError.paNoError)
            {
                _gcHandle.Free();
                throw new ApplicationException(paErr.ToString());
            }

            paErr = Pa_StartStream(_streamHandle);
            if (paErr != PaError.paNoError)
            {
                Pa_CloseStream(_streamHandle);
                _gcHandle.Free();
                throw new ApplicationException(paErr.ToString());
            }
        }
Example #5
0
        public static string Pa_GetErrorText(PaError errorCode)
        {
            IntPtr strptr = IntPtr_Pa_GetErrorText(errorCode);

            return(Marshal.PtrToStringAnsi(strptr));
        }
Example #6
0
 public static extern IntPtr IntPtr_Pa_GetErrorText(PaError errorCode);
Example #7
0
 public static string Pa_GetErrorText(PaError errorCode)
 {
     IntPtr strptr = IntPtr_Pa_GetErrorText(errorCode);
      		return Marshal.PtrToStringAnsi(strptr);
 }
Example #8
0
 public static extern IntPtr IntPtr_Pa_GetErrorText(PaError errorCode);
Example #9
0
        public static string Pa_GetErrorText(PaError errorCode)
        {
            IntPtr ptr = PortAudioAPI.IntPtr_Pa_GetErrorText(errorCode);

            return(Marshal.PtrToStringAnsi(ptr));
        }
Example #10
0
 public static string Pa_GetErrorText(PaError errorCode)
 {
     return Marshal.PtrToStringAnsi(PortAudioAPI.IntPtr_Pa_GetErrorText(errorCode));
 }