Wav File Sink: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category:Block Docs]] | [[Category:Block Docs]] | ||
Write stream to a Microsoft PCM (.wav) file. | Write stream to a Microsoft PCM (pulse code modulated) (.wav) file (all versions of GNU Radio) and some other file formats that [http://libsndfile.github.io/libsndfile/formats.html ''libsndfile''] supports (GNU Radio 3.9.0.0 and later): | ||
Values must be floats within [-1;1] | Values must be floats within [-1;1]. | ||
== Parameters == | == Parameters == | ||
Line 16: | Line 16: | ||
: Sample rate of the recording | : Sample rate of the recording | ||
; Bits per Samples | ; Output Format (GNU Radio 3.9 and later) | ||
: | : choice of possible container/audio formats: | ||
* WAV (old-school windows RIFF sound files) | |||
* FLAC (lossless audio codec – probably a good choice for storage of actual audio data) | |||
* Ogg file (Container for lossy compression – allows for choice of vorbis, or OPUS, as audio codec. Prefer OPUS. Very good quality.) | |||
* 64-bit WAV ([https://en.wikipedia.org/wiki/RF64 RF64], used in broadcasting standards, to support massive multichannel files, and files > 4 GB) | |||
; Bits per Samples (only WAV, FLAC, 64-bit WAV) | |||
: Bit-depth of the recording. | |||
: Rule of thumb: you don't need more than 2 + (audio SNR in dB)·2 bits of integer bitdepth to keep quantization noise below signal noise. | |||
: "Float" always suffices, but is wasteful on size, if you're using "Double" without having written down a calculation why, you're doing it wrong | |||
== Example Flowgraph == | == Example Flowgraph == | ||
[[File:Mic_to_OPUS.png]] | |||
Non-GUI flow graph. Records a microphone to an OPUS-compressed .ogg file. Very handy. | |||
== Source Files == | == Source Files == | ||
; C++ files | ; C++ files | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/lib/wavfile_sink_impl.cc wavfile_sink_impl.cc] | ||
: [https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/lib/wavfile_sink_impl.h wavfile_sink_impl.h] | |||
; Header files | ; Header files | ||
Line 32: | Line 45: | ||
; Public header files | ; Public header files | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/include/gnuradio/blocks/wavfile_sink.h wavfile_sink.h] | ||
; Block definition | ; Block definition | ||
: [https://github.com/gnuradio/gnuradio | : [https://github.com/gnuradio/gnuradio/blob/main/gr-blocks/grc/blocks_wavfile_sink.block.yml blocks_wavfile_sink.block.yml] |
Latest revision as of 11:53, 26 June 2022
Write stream to a Microsoft PCM (pulse code modulated) (.wav) file (all versions of GNU Radio) and some other file formats that libsndfile supports (GNU Radio 3.9.0.0 and later):
Values must be floats within [-1;1].
Parameters
(R): Run-time adjustable
- File (R)
- Path to the file to write to
- N Channels
- Number of audio channels
- Sample Rate
- Sample rate of the recording
- Output Format (GNU Radio 3.9 and later)
- choice of possible container/audio formats:
- WAV (old-school windows RIFF sound files)
- FLAC (lossless audio codec – probably a good choice for storage of actual audio data)
- Ogg file (Container for lossy compression – allows for choice of vorbis, or OPUS, as audio codec. Prefer OPUS. Very good quality.)
- 64-bit WAV (RF64, used in broadcasting standards, to support massive multichannel files, and files > 4 GB)
- Bits per Samples (only WAV, FLAC, 64-bit WAV)
- Bit-depth of the recording.
- Rule of thumb: you don't need more than 2 + (audio SNR in dB)·2 bits of integer bitdepth to keep quantization noise below signal noise.
- "Float" always suffices, but is wasteful on size, if you're using "Double" without having written down a calculation why, you're doing it wrong
Example Flowgraph
Non-GUI flow graph. Records a microphone to an OPUS-compressed .ogg file. Very handy.
Source Files
- C++ files
- wavfile_sink_impl.cc
- wavfile_sink_impl.h
- Header files
- TODO
- Public header files
- wavfile_sink.h
- Block definition
- blocks_wavfile_sink.block.yml