예제 #1
0
        void TestSpatial(AudioEngine engine)
        {
            var audio3d = engine.Create3DEngine();

            audio3d.SetListenerPosition(new Vector3(0, 0, 0));

            var buffer      = engine.CreateBuffer();
            var leftSource  = engine.CreateSource();
            var rightSource = engine.CreateSource();

            var samples = TestUtil.CreateBeep(440.0f, TimeSpan.FromSeconds(1), out var format);

            buffer.BufferData(samples, format);

            leftSource.QueueBuffer(buffer);
            rightSource.QueueBuffer(buffer);

            audio3d.SetSourcePosition(leftSource, Vector3.UnitX * -10);
            audio3d.SetSourcePosition(rightSource, Vector3.UnitX * 10);

            leftSource.Play();

            //wait since Play is non blocking
            Thread.Sleep(1500);

            rightSource.Play();

            //wait since Play is non blocking
            Thread.Sleep(1500);
        }
예제 #2
0
        public AudioSystem(Game game) : base(game)
        {
            _engine   = AudioEngine.CreateDefault();
            _3dengine = _engine.Create3DEngine();
            _sources  = new List <AudioSource>();
            _cached   = new Dictionary <string, AudioBuffer>();
            _mixers   = new Dictionary <AudioVolumeSlider, Submixer>();
            _settings = game.AssetStore.AudioSettings.Current;

            CreateSubmixers();

            // TODO: Sync RNG seed from replay?
            _random = new Random();
        }