コード例 #1
0
 public GenericNAudioSinkSource(SystemPanel _owner, BinaryReader src) : base(_owner, src)
 {
     setChannels(null, null);
     overrun           = 0;
     prevstate         = false;
     fromDriverStarted = false;
     toDriverStarted   = false;
     sinkSourceMode    = SinkSourceMode.Offline;
 }
コード例 #2
0
 public GenericNAudioSinkSource() : base()
 {
     setChannels(null, null);
     overrun           = 0;
     prevstate         = false;
     fromDriverStarted = false;
     toDriverStarted   = false;
     sinkSourceMode    = SinkSourceMode.Offline;
 }
コード例 #3
0
        public override void tick()
        {
            // Handle Overrun
            if (overrun > 0)
            {
                overrun--;
            }
            if (overrun > 0)
            {
                if (prevstate == false)
                {
                    if (overflowLED != null)
                    {
                        overflowLED.LEDState = true;
                    }
                    // ((Controls.LED)ctrl[1]).state = true;
                    // needsDrawingUpdate = true;
                }
                prevstate = true;
            }
            else
            {
                if (prevstate == true)
                {
                    if (overflowLED != null)
                    {
                        overflowLED.LEDState = false;
                    }
                    // ((Controls.LED)ctrl[1]).state = false;
                    // needsDrawingUpdate = true;
                }
                prevstate = false;
            }

            if (sinkSourceMode == SinkSourceMode.Disconnect)
            {
                driverDisconnect();
                sinkSourceMode = SinkSourceMode.Offline;
            }

            if (sinkSourceMode == SinkSourceMode.GoOnline)
            {
                fromDriverStarted = toDriverStarted = false;
                sinkSourceMode    = driverConnect();
            }

            if (sinkSourceMode == SinkSourceMode.Online)
            {
                if (fromDriverChannels > 0)
                {
                    if (!fromDriverStarted)
                    {
                        if (fromDriver[0].fill() > owner.startSourceMinFill)
                        {
                            fromDriverStarted = true;
                        }
                    }

                    if (fromDriverStarted && (fromDriver[0].fill() >= owner.blockSize))
                    {
                        for (int i = 0; i < fromDriverChannels; i++)
                        {
                            if (IOfromDriver[i] != null)
                            {
                                if (_active && (IOfromDriver[i].connectedTo != null))
                                {
                                    fromDriver[i].retrieve(IOfromDriver[i].connectedTo.signalInput, 0.0);
                                }
                                else
                                {
                                    fromDriver[i].flush(owner.blockSize);
                                }
                            }
                        }
                    }
                    else
                    {
                        if (fromDriverStarted)
                        {
                            fromDriverStarted = false;
                            overrun           = owner.overrunCounterStart;
                        }
                    }
                }

                if (toDriverChannels > 0)
                {
                    if (toDriver[0].space() < owner.blockSize)
                    {
                        overrun         = owner.overrunCounterStart;
                        toDriverStarted = false;
                        for (int i = 0; i < toDriverChannels; i++)
                        {
                            toDriver[i].flush();
                        }
                    }
                    else
                    {
                        for (int i = 0; i < toDriverChannels; i++)
                        {
                            if (IOtoDriver[i] != null)
                            {
                                if (_active && (IOtoDriver[i].connectedTo != null))
                                {
                                    toDriver[i].insert(IOtoDriver[i].connectedTo.signalOutput);
                                }
                                else
                                {
                                    toDriver[i].insert(0, owner.blockSize);
                                }
                            }
                        }
                    }
                }
            }
        }