caudio/Examples/CSharpExamples/CSharpTutorial2_3DSound/Program.cs

101 lines
3.4 KiB
C#

//****************************************************************
//cAudio 2.3.0 Tutorial 2 C#
//Basic 3d Audio. Moving Audio source. Must be mono sound source
//****************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using cAudio;
namespace CSharpTutorial2_3DSound
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
//Some fancy text
Console.WriteLine("cAudio 2.2.0 Tutorial 2: Basic 3D Audio. C#\n");
Console.WriteLine("Available Playback Devices:\n");
//Hold audio source x position
float rot = 0;
//Grab a list of available devices
IAudioDeviceList pDeviceList = cAudioCSharpWrapper.createAudioDeviceList();
//Get the default device name.
string defaultDeviceName = pDeviceList.getDefaultDeviceName();
for (uint i = 0; i < pDeviceList.getDeviceCount(); i++)
{
string deviceName = pDeviceList.getDeviceName(i);
if (deviceName.Equals(defaultDeviceName))
Console.WriteLine(" " + i + "): " + deviceName + " [DEFAULT]");
else
Console.WriteLine(" " + i + "): " + deviceName);
}
Console.WriteLine("\n");
Console.WriteLine("Choose a device by number: ");
string deviceSelection = Console.ReadLine();
uint deviceSelect = Convert.ToUInt32(deviceSelection);
Console.WriteLine("\n");
//Create an uninitialized Audio Manager
IAudioManager audioMgr = cAudioCSharpWrapper.createAudioManager(false);
audioMgr.initialize(pDeviceList.getDeviceName(deviceSelect));
//Grab the listener object, which allows us to manipulate where "we" are in the world
//It's useful to bind this to a camera if you are using a 3d graphics engine
IListener listener = audioMgr.getListener();
//Create the audio file
IAudioSource mysound = audioMgr.create("bing", "../../../Media/bling.ogg");
if (mysound != null)
{
listener.setPosition(new cVector3(0,0,0));
mysound.play3d(new cVector3(0,0,0), 2.0f, true);
mysound.setVolume(1.0f);
mysound.setMinDistance(1.0f);
mysound.setMaxDistance(100.0f);
//Play for 10 seconds
const int ticksToPlay = 10000;
int currentTick = 0;
int currentSecTick = 0;
while (mysound.isPlaying() && currentTick < ticksToPlay)
{
rot += 0.1f * 0.017453293f;
float x = (float)(5.0f * Math.Cos(rot) - 0.0f * Math.Sin(rot));
float z = (float)(0.0f * Math.Cos(rot) + 5.0f * Math.Sin(rot));
mysound.move(new cVector3(x,0.0f,z));
++currentTick;
if(currentTick/1000 > currentSecTick)
{
++currentSecTick;
Console.Write(".");
}
cAudioCSharpWrapper.cAudioSleep(10);
}
}
audioMgr.Dispose();
Console.WriteLine(@"Press any key to quit ");
Console.ReadLine();
}
}
}