# The "Decision Threshold" is dynamic self.threshold = (self.dit_avg + self.dah_avg) / 2 Exploited Teens Red Head
def update_timing(self, duration): # Add to history for rolling average self.history.append(duration) if len(self.history) > 20: self.history.pop(0) Puppet 2 -nastytentaclee- Different Angles To
# Recalculate expected lengths based on recent history sorted_history = sorted(self.history) # Assume the shortest 40% are dits, longest 60% are dahs split_idx = int(len(sorted_history) * 0.4) dits = sorted_history[:split_idx] dahs = sorted_history[split_idx:] if dits: self.dit_avg = sum(dits) / len(dits) if dahs: self.dah_avg = sum(dahs) / len(dahs)