Beispiel #1
0
        public void TestCircularSampleBuffer()
        {
            var x = new CircularSampleBuffer(4000);

            Assert.AreEqual(0, x.Count);

            x.Write(LinearArray(0, 3950), 0, 3950);
            Assert.AreEqual(3950, x.Count);

            var target = new float[3950];

            x.Read(target, 0, 3950);
            Assert.AreEqual(0, x.Count);

            var source = LinearArray(0, 100);

            x.Write(source, 0, 100);
            Assert.AreEqual(100, x.Count);

            target = new float[100];
            x.Read(target, 0, 100);
            Assert.AreEqual(0, x.Count);
            Assert.AreEqual(source, target);

            var read = x.Read(target, 0, 100);

            Assert.AreEqual(0, read);
        }
        public void Open()
        {
            _finished = false;

            _circularBuffer = new CircularSampleBuffer(BufferSize * BufferCount);
            _context        = new AudioContext();

            // possible fix for Web Audio in iOS 9 (issue #4)
            dynamic ctx = _context;

            if (ctx.state == "suspended")
            {
                Action <Event> resume = null;
                resume = e =>
                {
                    ctx.resume();
                    Browser.Window.SetTimeout((Action)(() =>
                    {
                        if (ctx.state == "running")
                        {
                            Browser.Document.Body.RemoveEventListener("touchend", resume, false);
                        }
                    }), 0);
                };
                Browser.Document.Body.AddEventListener("touchend", resume, false);
            }

            Ready();
        }
Beispiel #3
0
        /// <inheritdoc />
        public void Open()
        {
            _circularBuffer = new CircularSampleBuffer(BufferSize * BufferCount);

            _context = new DirectSoundOut(100);
            _context.Init(this);

            ((EventEmitter)Ready).Trigger();
        }
        /// <inheritdoc />
        public void Open()
        {
            _finished       = false;
            _circularBuffer = new CircularSampleBuffer(BufferSize * _bufferCount);

            _context = new WasapiOut(_device, AudioClientShareMode.Shared, true, _latency);
            _context.Init(this);

            Ready();
        }
        public void Open()
        {
            _finished       = false;
            _circularBuffer = new CircularSampleBuffer(BufferSize * BufferCount);

            _context = new DirectSoundOut(100);
            _context.Init(this);

            Ready();
        }
Beispiel #6
0
        public void Open()
        {
            _finished = false;

            _circularBuffer = new CircularSampleBuffer(BufferSize * BufferCount);

            JsContext.JsCode("window.AudioContext = window.AudioContext || window.webkitAudioContext");
            _context = new AudioContext();

            _latency = (BufferSize * 1000) / (2 * _context.sampleRate);

            // create an empty buffer source (silence)
            _buffer = _context.createBuffer(2, BufferSize, _context.sampleRate);

            // create a script processor node which will replace the silence with the generated audio
            _audioNode = _context.createScriptProcessor(BufferSize, 0, 2);
            _audioNode.onaudioprocess = GenerateSound;

            OnReadyChanged(true);
        }
        public void Open()
        {
            _finished = false;

            _circularBuffer = new CircularSampleBuffer(BufferSize * BufferCount);

            JsContext.JsCode("window.AudioContext = window.AudioContext || window.webkitAudioContext");
            _context = new AudioContext();

            // possible fix for Web Audio in iOS 9 (issue #4)
            dynamic ctx = _context;

            if (ctx.state == "suspended")
            {
                EventListener resume = null;
                resume = e =>
                {
                    ctx.resume();
                    HtmlContext.window.setTimeout(() =>
                    {
                        if (ctx.state == "running")
                        {
                            HtmlContext.document.body.removeEventListener("touchend", resume, false);
                        }
                    }, 0);
                };
                HtmlContext.document.body.addEventListener("touchend", resume, false);
            }

            // create an empty buffer source (silence)
            _buffer = _context.createBuffer(2, BufferSize, _context.sampleRate);

            // create a script processor node which will replace the silence with the generated audio
            _audioNode = _context.createScriptProcessor(BufferSize, 0, 2);
            _audioNode.onaudioprocess = GenerateSound;

            Ready();
        }
Beispiel #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NAudioSynthOutput"/> class.
 /// </summary>
 public NAudioSynthOutput()
     : base(PreferredSampleRate, 2)
 {
     _context        = null !;
     _circularBuffer = null !;
 }
Beispiel #9
0
 public PartyServer(string key)
 {
     _Key   = key;
     buffer = new CircularSampleBuffer(44100 * 60 * 5);//5min of CD-quality audio
     ThreadPool.QueueUserWorkItem(ServiceStream);
 }