public Error OpenDefaultOutputStream(int numOutputChannels, double sampleRate, uint sampleSize, out IBuffer buffer)
        {
            bps = (int)sampleSize;
            PaSampleFormat sampleFormat = bps switch
            {
                8 => PaSampleFormat.paInt8,
                16 => PaSampleFormat.paInt16,
                24 => PaSampleFormat.paInt24,
                32 => PaSampleFormat.paInt32,
                _ => PaSampleFormat.paCustomFormat
            };

            if (sampleFormat == PaSampleFormat.paCustomFormat)
            {
                buffer = null;
                return(Error.paSampleFormatNotSupported);
            }
            buffer = outBuffer = new Buffer.Buffer(256 * numOutputChannels * bps / 8);
            outBuffer.SetEndOfBuffer(new BufferState {
                AbsolutePosition = 256 * numOutputChannels * 20
            });
            streamCallback = StreamCallback;
            channel        = numOutputChannels;
            outBufferState.AbsolutePosition = 0;
            return(Pa_OpenDefaultStream(ref stream, 0, numOutputChannels, sampleFormat, sampleRate, 256, streamCallback, IntPtr.Zero));
        }
Esempio n. 2
0
 private static extern int Pa_OpenStream(ref IntPtr stream,
                                         IntPtr inputParameters,
                                         IntPtr outputParameters,
                                         double sampleRate,
                                         ulong framesPerBuffer,
                                         PaStreamFlags streamFlags,
                                         PaStreamCallback streamCallback,
                                         IntPtr userData);
Esempio n. 3
0
 private static extern int Pa_OpenDefaultStream(ref IntPtr stream,
                                                int numInputChannels,
                                                int numOutputChannels,
                                                PaSampleFormat sampleFormat,
                                                double sampleRate,
                                                ulong framesPerBuffer,
                                                PaStreamCallback streamCallback,
                                                IntPtr userData);
Esempio n. 4
0
 unsafe public static extern PaError PA_OpenDefaultStream(
     out void *stream,
     int numInputChannels,
     int numOutputChannels,
     PaSampleFormat sampleFormat,
     double sampleRate,
     uint framesPerBuffer,
     PaStreamCallback streamCallback,
     int callback_id);                           // 0 for callback1, else callback2
Esempio n. 5
0
 unsafe public static extern PaError PA_OpenStream(
     out void *stream,
     PaStreamParameters *inputParameters,
     PaStreamParameters *outputParameters,
     double sampleRate,
     uint framesPerBuffer,
     PaStreamFlags streamFlags,
     PaStreamCallback streamCallback,
     int callback_id);                           // 0 for callback1, else callback2
 public StreamCallbackContainer(
     PaStreamCallback callbackProvider,
     PaSampleFormat inputSampleFormat, PaSampleFormat outputSampleFormat,
     int numInputChannels, int numOutputChannels, object userData)
 {
     this.callbackProvider   = callbackProvider;
     this.inputSampleFormat  = inputSampleFormat;
     this.outputSampleFormat = outputSampleFormat;
     this.numInputChannels   = numInputChannels;
     this.numOutputChannels  = numOutputChannels;
     this.userData           = userData;
 }
Esempio n. 7
0
        public PortAudioStream(int rate, int channels, int bufferSize, int numBuffers, GetBufferDataCallback bufferFillCallback)
        {
            if (refCount == 0)
            {
                Pa_Initialize();
                refCount++;
            }

            streamCallback = new PaStreamCallback(StreamCallback);

            Pa_OpenDefaultStream(out stream, 0, 1, PaSampleFormat.Int16, 44100, 0, streamCallback, IntPtr.Zero);
            bufferFill = bufferFillCallback;
        }
Esempio n. 8
0
        public PaStream OpenStream(
            PaStreamParameters?inputParameters, PaStreamParameters?outputParameters,
            double sampleRate, int framesPerBuffer, PaStreamFlags streamFlags,
            PaStreamCallback streamCallback, object userData)
        {
            var streamCallbackContainer = new StreamCallbackContainer(
                streamCallback,
                inputParameters.HasValue ? inputParameters.Value.sampleFormat : 0,
                outputParameters.HasValue ? outputParameters.Value.sampleFormat : 0,
                inputParameters.HasValue ? inputParameters.Value.channelCount : 0,
                outputParameters.HasValue ? outputParameters.Value.channelCount : 0,
                userData);
            IntPtr stream;

            unsafe
            {
                PaStreamParameters inputParametersTemp, outputParametersTemp;
                IntPtr             inputParametersPtr = IntPtr.Zero;
                if (inputParameters.HasValue)
                {
                    inputParametersPtr = new IntPtr(&inputParametersTemp);
                    Marshal.StructureToPtr <PaStreamParameters>(inputParameters.Value, inputParametersPtr, false);
                }
                IntPtr outputParametersPtr = IntPtr.Zero;
                if (outputParameters.HasValue)
                {
                    outputParametersPtr = new IntPtr(&outputParametersTemp);
                    Marshal.StructureToPtr <PaStreamParameters>(outputParameters.Value, outputParametersPtr, false);
                }
                PaErrorException.ThrowIfError(Pa_OpenStream(
                                                  new IntPtr(&stream),
                                                  inputParametersPtr, outputParametersPtr,
                                                  sampleRate, (unsigned_long_t)framesPerBuffer, streamFlags,
                                                  streamCallbackContainer.Callback, IntPtr.Zero));
            }
            return(new PaStream(
                       stream, streamCallbackContainer,
                       inputParameters.HasValue ? inputParameters.Value.sampleFormat : 0,
                       outputParameters.HasValue ? outputParameters.Value.sampleFormat : 0,
                       inputParameters.HasValue ? inputParameters.Value.channelCount : 0,
                       outputParameters.HasValue ? outputParameters.Value.channelCount : 0));
        }
Esempio n. 9
0
        public PaStream OpenDefaultStream(
            int numInputChannels, int numOutputChannels, PaSampleFormat sampleFormat,
            double sampleRate, int framesPerBuffer, PaStreamFlags streamFlags,
            PaStreamCallback streamCallback, object userData)
        {
            var streamCallbackContainer = new StreamCallbackContainer(
                streamCallback,
                sampleFormat, sampleFormat,
                numInputChannels, numOutputChannels, userData);
            IntPtr stream;

            unsafe
            {
                PaErrorException.ThrowIfError(Pa_OpenDefaultStream(
                                                  new IntPtr(&stream),
                                                  numInputChannels, numOutputChannels, sampleFormat,
                                                  sampleRate, (unsigned_long_t)framesPerBuffer, streamFlags,
                                                  streamCallbackContainer.Callback, IntPtr.Zero));
            }
            return(new PaStream(stream, streamCallbackContainer));
        }
Esempio n. 10
0
 public static extern int Pa_OpenDefaultStream([Out] IntPtr stream, int numInputChannels, int numOutputChannels,
                                                UInt32 sampleFormat, double sampleRate, UInt32 framesPerBuffer,
                                                PaStreamCallback streamCallback, IntPtr userData);
Esempio n. 11
0
 public static extern int Pa_OpenDefaultStream([Out] IntPtr stream, int numInputChannels, int numOutputChannels,
                                               UInt32 sampleFormat, double sampleRate, UInt32 framesPerBuffer,
                                               PaStreamCallback streamCallback, IntPtr userData);
Esempio n. 12
0
 public static extern int Pa_OpenStream(out IntPtr stream, PaStreamParameters inputParameters, PaStreamParameters outputParameters,
                                        Double sampleRate, UInt32 framesPerBuffer, UInt32 streamFlags,
                                        PaStreamCallback streamCallback, IntPtr userData);
Esempio n. 13
0
 public static extern PaError Pa_OpenDefaultStream(out IntPtr stream, int numInputChannels, int numOutputChannels, PaSampleFormat sampleFormat, double sampleRate, uint framesPerBuffer, PaStreamCallback streamCallback, IntPtr userData);
		unsafe public static extern PaError PA_OpenDefaultStream(
			out void *stream,
			int numInputChannels,
			int numOutputChannels,
			PaSampleFormat sampleFormat,
			double sampleRate,
			uint framesPerBuffer,
			PaStreamCallback streamCallback,
			int callback_id);		// 0 for callback1, else callback2
		unsafe public static extern PaError PA_OpenStream (
			out void *stream, 
			PaStreamParameters *inputParameters,
			PaStreamParameters *outputParameters,
			double sampleRate,
			uint framesPerBuffer,
			PaStreamFlags streamFlags,
			PaStreamCallback streamCallback,
			int callback_id);		// 0 for callback1, else callback2
Esempio n. 16
0
 public static extern int Pa_OpenStream(out IntPtr stream, PaStreamParameters inputParameters, PaStreamParameters outputParameters,
                                         Double sampleRate, UInt32 framesPerBuffer, UInt32 streamFlags,
                                         PaStreamCallback streamCallback, IntPtr userData);
Esempio n. 17
0
 public static unsafe extern PaError PA_OpenStream(
     out void* stream,
     PaStreamParameters* inputParameters,
     PaStreamParameters* outputParameters,
     double sampleRate,
     uint framesPerBuffer,
     PaStreamFlags streamFlags,
     PaStreamCallback streamCallback,
     int user_data, int callback_id);
Esempio n. 18
0
 PaError         Pa_OpenDefaultStream(out IntPtr /*PaStream ** */ stream, int numInputChannels, int numOutputChannels, [MarshalAs(UnmanagedType.SysUInt)] IntPtr /*PaSampleFormat*/ sampleFormat, double sampleRate, [MarshalAs(UnmanagedType.SysUInt)] /*unsigned long*/ IntPtr framesPerBuffer, PaStreamCallback streamCallback, IntPtr /*void **/ userData)
 ;
Esempio n. 19
0
 PaError         Pa_OpenStream(out IntPtr /*PaStream ** */ stream, /*const*/ IntPtr /*PaStreamParameters * */ inputParameters, /*const*/ IntPtr /*PaStreamParameters * */ outputParameters, double sampleRate, [MarshalAs(UnmanagedType.SysUInt)] /*unsigned long*/ uint framesPerBuffer, [MarshalAs(UnmanagedType.SysUInt)] PaStreamFlags streamFlags, PaStreamCallback streamCallback, IntPtr /*void **/ userData)
 ;