{ ======== TModAdder = class( TMod) public } procedure TModAdder.CreateIO; // override; begin FIsSlow := True; AddInput ( i_mute, 'mute'); AddInput ( i_in1 , 'in1' ); AddInput ( i_in2 , 'in2' ); AddInput ( i_in3 , 'in3' ); AddInput ( i_in4 , 'in4' ); AddInput ( i_in5 , 'in5' ); AddInput ( i_in6 , 'in6' ); AddInput ( i_in7 , 'in7' ); AddOutput( o_out , 'out' ); end; procedure TModAdder.SetDefaults; // override; var i : Integer; begin for i := i_in1 to i_in7 // Make sure unused inputs are set to 0, so it'll 'work' do FInputs[ i] := 0; FDezipperMap := [ ]; end; procedure TModAdder.DoSlowTick; // override; var i : Integer; R : TSignal; begin R := 0.0; for i := i_in1 to i_in7 do R := R + FInputs[ i]; FOutputs[ o_out] := R * SignalToMute( FInputs[ i_mute]); end;