<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Audio Formats &amp; Storage on Embedded Systems Development</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/</link><description>Recent content in Audio Formats &amp; Storage on Embedded Systems Development</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/index.xml" rel="self" type="application/rss+xml"/><item><title>PCM, WAV &amp; Raw Audio</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/pcm-wav-raw-audio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/pcm-wav-raw-audio/</guid><description>&lt;h1 id="pcm-wav--raw-audio"&gt;PCM, WAV &amp;amp; Raw Audio&lt;a class="anchor" href="#pcm-wav--raw-audio"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;PCM (Pulse Code Modulation) is the standard representation of uncompressed digital audio — a sequence of numeric samples, each representing the instantaneous amplitude of the audio waveform at a regular time interval. Every other audio format either is PCM (WAV, AIFF) or compresses PCM (MP3, Opus, ADPCM). On an MCU, PCM is the native format: I2S peripherals produce and consume PCM, DMA buffers hold PCM, and DSP functions operate on PCM. Understanding PCM encoding conventions — signedness, endianness, bit depth, and channel interleaving — prevents the class of bugs where audio plays but sounds like static, plays at the wrong pitch, or has swapped channels.&lt;/p&gt;</description></item><item><title>Audio Compression Codecs</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/audio-compression-codecs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/audio-compression-codecs/</guid><description>&lt;h1 id="audio-compression-codecs"&gt;Audio Compression Codecs&lt;a class="anchor" href="#audio-compression-codecs"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Uncompressed PCM audio consumes storage and bandwidth at a fixed, often inconvenient rate — 176 KB/s for CD-quality stereo, 32 KB/s for 16 kHz mono voice. Audio compression codecs reduce this by 4x to 20x, trading CPU cycles for smaller files and lower bitrates. On an MCU, the choice of codec is constrained by CPU budget, RAM availability, and licensing: decoding MP3 on a Cortex-M4 is practical, but encoding Opus in real time requires careful optimization and typically 80+ KB of RAM. The right codec depends on whether the MCU is encoding (recording), decoding (playback), or both, and on the acceptable quality loss.&lt;/p&gt;</description></item><item><title>Streaming Audio Protocols</title><link>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/streaming-audio-protocols/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://applied-ee.github.io/embedded/docs/audio-projects/audio-formats/streaming-audio-protocols/</guid><description>&lt;h1 id="streaming-audio-protocols"&gt;Streaming Audio Protocols&lt;a class="anchor" href="#streaming-audio-protocols"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Streaming audio from an MCU to a server (or between devices) over an IP network introduces challenges that do not exist in local playback: variable network latency, packet loss, jitter, and the need to maintain a continuous audio stream despite an unreliable transport. The protocol choice determines whether the system achieves low-latency monitoring (tens of milliseconds), reliable recording (no lost samples), or efficient broadcast to multiple listeners. Most embedded audio streaming runs over UDP (for low latency) or HTTP/WebSocket (for simplicity and firewall traversal).&lt;/p&gt;</description></item></channel></rss>