Skip to content

Feat/bips PTT personnalisables (WAV + volume reglable)#3

Open
leochely wants to merge 1 commit into
kainann:mainfrom
leochely:feat/customizable-ptt-sound
Open

Feat/bips PTT personnalisables (WAV + volume reglable)#3
leochely wants to merge 1 commit into
kainann:mainfrom
leochely:feat/customizable-ptt-sound

Conversation

@leochely

Copy link
Copy Markdown
Contributor

Remplace les bips synthetiques par defaut (press 880Hz / release 440Hz) par des WAV fournis par l'utilisateur, avec un slider de volume global. Les bips synthetiques restent le fallback quand aucun WAV n'est charge.

audio_io.py:

  • _load_wav_as_mono_48k() : decode PCM 8/16/24/32 bits, mono-downmix par moyenne des canaux, resampling lineaire vers 48 kHz via np.interp. Pas de dependance nouvelle (stdlib 'wave' + numpy). Cap a 5s.
  • AudioIO porte _beep_press_custom / _beep_release_custom (None par defaut) et beep_volume (1.0). load_custom_beep() copie le WAV source dans <client_dir>/sounds/ptt.wav et stocke le buffer decode. clear_custom_beep() supprime le fichier + buffer. set_beep_volume() clamp [0,1].
  • play_local_beep() utilise le custom si present, sinon le synth ; applique _beep_volume via copie scalaire.
  • AudioIO.init auto-charge ptt_press.wav et ptt_release.wav presents dans <client_dir>/sounds/ : la selection survit aux redemarrages sans re-import manuel.

client.py:

  • Groupe 'Sons PTT' ajoute en bas du panneau Audio : pour chaque bip (press/release), trois boutons (Parcourir / Reinitialiser / Tester) + un label affichant l'etat. Un slider 0..100% pour le volume global. QFileDialog filtre sur *.wav.
  • Handlers _on_pick_beep / _on_reset_beep / _on_test_beep / _on_beep_volume_changed wired sur audio_io. _refresh_beep_labels() remet le texte/style en accord avec has_custom_beep().
  • Persistance via self._cfg['beep_press_custom'], 'beep_release_custom' (bools) et 'beep_volume' (float 0..1) - merges naturellement avec _save_cfg/_load_cfg (pas de purge par _CORE_MANAGED_CFG_KEYS).

README : nouvelle entree 'Bips PTT personnalisables' sous Fonctionnalites.

Remplace les bips synthetiques par defaut (press 880Hz / release 440Hz) par des WAV fournis par l'utilisateur, avec un slider de volume global. Les bips synthetiques restent le fallback quand aucun WAV n'est charge.

audio_io.py:
- _load_wav_as_mono_48k() : decode PCM 8/16/24/32 bits, mono-downmix par
  moyenne des canaux, resampling lineaire vers 48 kHz via np.interp.
  Pas de dependance nouvelle (stdlib 'wave' + numpy). Cap a 5s.
- AudioIO porte _beep_press_custom / _beep_release_custom (None par
  defaut) et _beep_volume (1.0). load_custom_beep() copie le WAV
  source dans <client_dir>/sounds/ptt_<kind>.wav et stocke le buffer
  decode. clear_custom_beep() supprime le fichier + buffer.
  set_beep_volume() clamp [0,1].
- play_local_beep() utilise le custom si present, sinon le synth ;
  applique _beep_volume via copie scalaire.
- AudioIO.__init__ auto-charge ptt_press.wav et ptt_release.wav
  presents dans <client_dir>/sounds/ : la selection survit aux
  redemarrages sans re-import manuel.

client.py:
- Groupe 'Sons PTT' ajoute en bas du panneau Audio : pour chaque
  bip (press/release), trois boutons (Parcourir / Reinitialiser /
  Tester) + un label affichant l'etat. Un slider 0..100% pour le
  volume global. QFileDialog filtre sur *.wav.
- Handlers _on_pick_beep / _on_reset_beep / _on_test_beep /
  _on_beep_volume_changed wired sur audio_io. _refresh_beep_labels()
  remet le texte/style en accord avec has_custom_beep().
- Persistance via self._cfg['beep_press_custom'], 'beep_release_custom'
  (bools) et 'beep_volume' (float 0..1) - merges naturellement avec
  _save_cfg/_load_cfg (pas de purge par _CORE_MANAGED_CFG_KEYS).

README : nouvelle entree 'Bips PTT personnalisables' sous Fonctionnalites.
@leochely leochely changed the title feat(client): bips PTT personnalisables (WAV + volume reglable) Feat/bips PTT personnalisables (WAV + volume reglable) May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant