Skip to content

feat: enregistrement audio par bloc + navigation timeline à la molette - #53

Merged
DZTic merged 1 commit into
mainfrom
feat/recording-and-timeline-nav
Jun 28, 2026
Merged

feat: enregistrement audio par bloc + navigation timeline à la molette#53
DZTic merged 1 commit into
mainfrom
feat/recording-and-timeline-nav

Conversation

@DZTic

@DZTic DZTic commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Deux fonctionnalités demandées, regroupées (toutes deux développées sur le même working tree).

1. Déplacements sur la timeline

  • Molette = défilement temporel ; Ctrl+molette = zoom centré sur le curseur. Nouveau helper partagé TimelineWheel, branché sur la bande rythmo et la forme d'onde.
  • Home / Fin = tout début / toute fin.
  • ↑ / ↓ = réplique précédente / suivante (saut de bloc en bloc).

2. Enregistrement de prises de doublage par bloc

  • Capture micro WASAPI via NAudio (MicRecorder) → WAV 16-bit.
  • Pré-roll de 3 s = décompte : la lecture repart 3 s avant le bloc, mais l'audio n'est conservé qu'à partir du début du bloc (trim calé sur l'horloge réelle de la boucle de rendu → robuste aux ralentissements du décodeur).
  • Lecture des prises positionnées à block.StartTime (TakeMixer, calqué sur l'AudioMixer existant) : volume suivant la piste « Voix » (mute/solo respectés), virtualisation des players.
  • Nouveau champ DialogueBlock.AudioFile (chemin absolu, rétro-compatible : omis du JSON si null).
  • UI : section Enregistrement dans le panneau d'édition (sélecteur de micro, bouton ●/■, ▶ écouter, 🗑 supprimer la prise). Raccourci R ; Espace stoppe la prise. Pendant l'enregistrement, les prises existantes sont suspendues (anti-réinjection micro).

Stockage

WAV dans <projet>_recordings/ si le projet est enregistré, sinon dossier temporaire. Chemins absolus, même convention que AudioTrack.Url.

Vérification

  • dotnet build Release : OK (0 erreur / 0 avertissement).
  • Tests cœur : 94/94 verts.
  • Release portable générée via publish.ps1 (auto-contenu win-x64, DLL NAudio incluses).
  • ⚠️ La capture micro réelle n'a pas pu être testée en headless — à valider en lançant l'app avec un micro.

Limites assumées (hors périmètre)

  • Chemins WAV absolus : déplacer le projet casse le lien (comme les pistes audio existantes).
  • Arrêt manuel de l'enregistrement (pas de bip de décompte ni d'auto-stop en fin de bloc).
  • Suppression d'une prise : la référence est effacée (annulable Ctrl+Z), le WAV reste sur disque.

Deux fonctionnalités :

1. Déplacements sur la timeline
   - molette = défilement temporel, Ctrl+molette = zoom centré sur le curseur
     (helper partagé TimelineWheel, branché sur la bande et la forme d'onde) ;
   - Home/Fin = début/fin, ↑/↓ = réplique précédente/suivante.

2. Enregistrement de prises de doublage par bloc
   - capture micro WASAPI via NAudio (MicRecorder), WAV 16-bit ;
   - pré-roll de 3 s servant de décompte : la lecture repart 3 s avant le bloc,
     l'audio n'est conservé qu'à partir du début du bloc (trim calé sur l'horloge) ;
   - lecture des prises positionnées à block.StartTime (TakeMixer), volume suivant
     la piste « Voix », virtualisation des players ;
   - champ DialogueBlock.AudioFile (rétro-compatible, omis du JSON si null) ;
   - UI : section Enregistrement dans le panneau d'édition (sélecteur de micro,
     bouton ●/■, écouter/supprimer la prise) ; raccourci R, Espace stoppe la prise.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@DZTic
DZTic merged commit 64e6ee4 into main Jun 28, 2026
1 check passed
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