Files
Vocaluxe/Vocaluxe/Lib/Sound/Portaudio/PortAudioASIO.cs
T
Flamefire b0b3c09ab4 Bugfix to make it .Net2 compiler compliant
Bugfix to allow spaces in project dir
2013-03-24 16:52:22 +01:00

100 lines
5.8 KiB
C#

/*
* PortAudioSharp - PortAudio bindings for .NET
* Copyright 2006-2011 Riccardo Gerosa and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
using System;
using System.Runtime.InteropServices;
namespace PortAudioSharp
{
/// <summary> PortAudio v.19 bindings for .NET - ASIO bindings </summary>
public partial class PortAudio
{
#region **** PORTAUDIO DATA STRUCTURES ****
[StructLayout(LayoutKind.Sequential)]
public struct PaAsioStreamInfo
{
public ulong size; /**< sizeof(PaAsioStreamInfo) */
public int hostApiType; /**< paASIO */
public ulong version; /**< 1 */
public ulong flags;
/// Support for opening only specific channels of an ASIO device.
/// If the paAsioUseChannelSelectors flag is set, channelSelectors is a
/// pointer to an array of integers specifying the device channels to use.
/// When used, the length of the channelSelectors array must match the
/// corresponding channelCount parameter to Pa_OpenStream() otherwise a
/// crash may result.
/// The values in the selectors array must specify channels within the
/// range of supported channels for the device or paInvalidChannelCount will
/// result.
private readonly IntPtr channelSelectors;
}
#endregion
#region **** PORTAUDIO DEFINES ****
public const int paAsioUseChannelSelectors = 0x01;
#endregion
#region **** PORTAUDIO FUNCTIONS ****
// /// <summary> Retrieve legal latency settings for the specificed device, in samples. </summary>
// /// <param name="device"> The global index of the device about which the query is being made. </param>
// /// <param name="minLatency"> A pointer to the location which will recieve the minimum latency value. </param>
// /// <param name="maxLatency"> A pointer to the location which will recieve the maximum latency value. </param>
// /// <param name="preferredLatency"> A pointer to the location which will recieve the preferred latency value. </param>
// /// <param name="granularity"> A pointer to the location which will recieve the granularity. This value
// /// determines which values between minLatency and maxLatency are available. ie the step size,
// /// if granularity is -1 then available latency settings are powers of two. </param>
// /// See ASIOGetBufferSize in the ASIO SDK.
// PaError PaAsio_GetAvailableLatencyValues( PaDeviceIndex device, long *minLatency, long *maxLatency,
// long *preferredLatency, long *granularity );
/// <summary> Display the ASIO control panel for the specified device. </summary>
/// <param name="device"> The global index of the device whose control panel is to be displayed. </param>
/// <param name="systemSpecific">
/// On Windows, the calling application's main window handle,
/// on Macintosh this value should be zero.
/// </param>
[DllImport("PortAudio.dll")]
public static extern PaError PaAsio_ShowControlPanel(int device, IntPtr systemSpecific);
// /// <summary> Retrieve a pointer to a string containing the name of the specified input channel. </summary>
// /// The string is valid until Pa_Terminate is called.
// /// The string will be no longer than 32 characters including the null terminator.
// PaError PaAsio_GetInputChannelName(PaDeviceIndex device, int channelIndex, const char** channelName );
// /// <summary> Retrieve a pointer to a string containing the name of the specified input channel. </summary>
// /// The string is valid until Pa_Terminate is called.
// /// The string will be no longer than 32 characters including the null terminator.
// PaError PaAsio_GetOutputChannelName( PaDeviceIndex device, int channelIndex, const char** channelName );
/// <summary> Set the sample rate of an open paASIO stream. </summary>
/// <param name="">stream</param>
/// The stream to operate on.
/// <param name="sampleRate"></param>
/// The new sample rate.
/// Note that this function may fail if the stream is alredy running and the
/// ASIO driver does not support switching the sample rate of a running stream.
/// <returns> paIncompatibleStreamHostApi if stream is not a paASIO stream. </returns>
[DllImport("PortAudio.dll")]
public static extern PaError PaAsio_SetStreamSampleRate(IntPtr stream, double sampleRate);
#endregion
}
}