def set(self, **kwargs):
        """Sets an internal setting for acquistion, using keywords.

        Available parameters to set: 
        
        :param acqtime: duration of recording (input) window (seconds)
        :type acqtime: float
        :param aifs: sample rate of the recording (input) operation (Hz)
        :type aifs: int
        :param aochan: AO (generation) channel name
        :type aochan: str
        :param aichan: AI (recording) channel name
        :type aichan: str
        :param nreps: number of repetitions for each unique stimulus
        :type nreps: int
        :param binsz: time bin duration for spike sorting (seconds)
        :type binsz: float
        :param caldb: See :meth:`StimulusModel<sparkle.stim.stimulus_model.StimulusModel.setReferenceVoltage>`
        :type caldb: float
        :param calv: See :meth:`StimulusModel<sparkle.stim.stimulus_model.StimulusModel.setReferenceVoltage>`
        :type calv: float
        :param datafile: a reference to an open file to save data to
        :type datafile: :class:`AcquisitionData<sparkle.data.dataobjects.AcquisitionData>`
        :param average: whether to average repetitions of a trace, saving only the averaged signal
        :type average: bool
        :param reject: whether to reject values higher than a defined threshold. Only used while average is true
        :type reject: bool
        :param rejectrate: the value to base artifact rejection on
        :type rejectrate: float
        """
        self.player_lock.acquire()
        if 'acqtime' in kwargs:
            self.player.set_aidur(kwargs['acqtime'])
        if 'aifs' in kwargs:
            self.player.set_aifs(kwargs['aifs'])
            self.aifs = kwargs['aifs']
        if 'aifs' in kwargs or 'acqtime' in kwargs:
            t = kwargs.get('acqtime', self.player.get_aidur())
            npoints = t*float(kwargs.get('aifs', self.player.get_aifs()))
            self.aitimes = np.linspace(0, t, npoints)
        if 'trigger' in kwargs:
            self.player.set_trigger(kwargs['trigger'])
        self.player_lock.release()

        if 'aochan' in kwargs:
            self.aochan = kwargs['aochan']
        if 'aichan' in kwargs:
            self.aichan = kwargs['aichan']
        if 'binsz' in kwargs:
            self.binsz = kwargs['binsz']
        if 'save' in kwargs:
            self.save_data = kwargs['save']
        if 'caldb' in kwargs:
            self.caldb = kwargs['caldb']
        if 'calv' in kwargs:
            self.calv = kwargs['calv']
        if 'calf' in kwargs:
            self.calf = kwargs['calf']
        if 'caldb' in kwargs or 'calv' in kwargs:
            self.update_reference_voltage()
        if 'datafile' in kwargs:
            self.datafile = kwargs['datafile']
        if 'reprate' in kwargs:
            self.reprate = kwargs['reprate']
        if 'save' in kwargs:
            self.save_data = kwargs['save']
        if 'average' in kwargs:
            self.average = kwargs['average']
        if 'reject' in kwargs:
            self.reject = kwargs['reject']
        if 'rejectrate' in kwargs:
            self.rejectrate = kwargs['rejectrate']