Skip to content

Add WavWriter for streaming audio to WAV files#5

Open
gnudles wants to merge 1 commit into
mainfrom
add-wav-writer-io-2590983243015515335
Open

Add WavWriter for streaming audio to WAV files#5
gnudles wants to merge 1 commit into
mainfrom
add-wav-writer-io-2590983243015515335

Conversation

@gnudles
Copy link
Copy Markdown
Owner

@gnudles gnudles commented May 4, 2026

This PR introduces an interface to stream audio samples to a WAV file on disk without storing the entire audio in memory.

Changes

  • Extracts header generation logic in lib/src/wav_io.dart into a reusable writeWavHeader method.
  • Implements WavWriter in lib/io.dart which uses dart:io's RandomAccessFile to progressively write chunks to disk and seek back to update the header length when close() is called.
  • Tests WavWriter thoroughly to ensure its output perfectly matches the original in-memory saveWav method.
  • Leaves core library intact without dart:io imports to ensure no breaking changes for web users.

PR created automatically by Jules for task 2590983243015515335 started by @gnudles

- Refactored `saveWav` to reuse extracted `writeWavHeader` function.
- Added `lib/io.dart` with `WavWriter` utilizing `RandomAccessFile` to stream audio chunks and rewrite the header on close.
- Preserves web compatibility by not importing `dart:io` in the core library.
- Added corresponding tests in `test/wav_writer_test.dart` to verify behaviour and match output byte-for-byte with `saveWav`.

Co-authored-by: gnudles <12647462+gnudles@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

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