public GenericNAudioSinkSource(SystemPanel _owner, BinaryReader src) : base(_owner, src) { setChannels(null, null); overrun = 0; prevstate = false; fromDriverStarted = false; toDriverStarted = false; sinkSourceMode = SinkSourceMode.Offline; }
public GenericNAudioSinkSource() : base() { setChannels(null, null); overrun = 0; prevstate = false; fromDriverStarted = false; toDriverStarted = false; sinkSourceMode = SinkSourceMode.Offline; }
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); } } } } } } }