protected override void DisposeInstance(AudioSignal instance)
        {
            //remove pin relation
            foreach (var param in AudioSignal.GetParams(instance))
            {
                if (param.IsOutput)
                {
                    FOutputPinToParamMap.Remove(param);
                }
                else
                {
                    FInputPinToParamMap.Remove(param);
                }
            }

            base.DisposeInstance(instance);
        }
        protected override TSignal GetInstance(int i)
        {
            var instance = new TSignal();

            //assign pin relation
            foreach (var param in AudioSignal.GetParams(instance))
            {
                if (param.IsOutput)
                {
                    FOutputPinToParamMap[param] = FOutputPins[param.Name];
                }
                else
                {
                    FInputPinToParamMap[param] = FInputPins[param.Name];
                }
            }

            return(instance);
        }