{"id":19762,"date":"2026-09-30T10:40:00","date_gmt":"2026-09-30T08:40:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=19762"},"modified":"2026-09-25T09:45:52","modified_gmt":"2026-09-25T07:45:52","slug":"sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/","title":{"rendered":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured"},"content":{"rendered":"<p>FL Studio exports at the project&#8217;s sample rate. The export window has no setting of its own for it; according to the manual, it belongs in the Audio Settings. When a project runs at 48 kHz and a 44.1 kHz file is needed, a resampler recalculates the samples. When the sampling rate is lowered, it first has to remove whatever lies above half the new sampling rate, at 44.1 kHz everything above 22.05 kHz: Julius O. Smith describes how the lowpass cutoff moves below half the new, lower sampling rate for this purpose. Whatever remains above it folds back into the range below as aliasing.<\/p>\n<p>The measurement compares the two resamplers that ffmpeg ships with: its own swr with three filter lengths, including the default, and the SoX Resampler soxr at two quality levels. Sine tones, a single impulse and two loud masters from the test mix of the measurement <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/true-peak-after-encoding-aac-mp3-ogg-vorbis-opus-measured\/\">True Peak After Encoding<\/a> were measured, this time generated at 48 kHz.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/resampling-48-441-en.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Two line charts for five methods. On the left, the level of sine tones between 15 and 22 kHz after conversion: swr with filter_size 16 already drops from 18 kHz and is 3 dB lower at 20 kHz, the swr default 1.3 dB, swr with filter_size 128 and both soxr levels stay close to 0 dB up to 20.5 kHz and only then fall steeply. On the right, the level of the folded content for tones between 22.5 and 23.9 kHz: swr with filter_size 16 at \u221210 to \u221216 dB, the default at \u221214 to \u221234 dB, filter_size 128 around \u2212100 dB, soxr between \u2212137 and \u2212162 dB, soxr with precision 28 below \u2212180 dB. Four key figures below\"><figcaption>Passband level and aliasing when converting from 48 to 44.1 kHz, per method.<\/figcaption><\/figure>\n<h2>How the measurement was made<\/h2>\n<ul>\n<li><strong>Methods:<\/strong> ffmpeg 7.1.5, aresample filter with 44.1 kHz output in 32-bit float. swr with filter_size 16, 32 (default) and 128, soxr with precision 20 (default, SoX \u201cHigh Quality\u201d according to the documentation) and 28 (\u201cVery High Quality\u201d). The cutoff stayed at the default everywhere: for swr 0.97 of half the sampling rate as the 6 dB point, for soxr 0.91 as the 0 dB point.<\/li>\n<li><strong>Checks:<\/strong> <code>-ar 44100<\/code> without further options produced the same sample values as aresample with default settings. Without the NEON routines of the ARM computer (<code>-cpuflags 0<\/code>), the largest deviation for swr was 131 dB below the level of the tones; soxr showed none.<\/li>\n<li><strong>Sine tones:<\/strong> one second each at \u22126 dBFS at 48 kHz, analysed over the middle half second with a least-squares fit. Tones from 1 to 22 kHz show the passband level. Tones from 22.5 to 23.9 kHz lie above the new Nyquist frequency of 22.05 kHz; the measurement captured what arrives at 44.1 kHz minus the tone frequency.<\/li>\n<li><strong>Single impulse:<\/strong> duration of the pre-ringing before the main peak down to \u221260 and \u2212100 dB.<\/li>\n<li><strong>Masters:<\/strong> the test mix, regenerated at 48 kHz, once with a limiter at \u22129 LUFS and \u22121 dBTP, once hard-clipped at \u22121 dBFS to \u22128 LUFS. The hi-hats made from filtered noise reach up to 24 kHz; the share above 20 kHz was 28.5 and 27.3 dB below the total energy. True peak per ITU-R BS.1770-5 and a 16-times cross-check, plus sample peak and samples above 0 dBFS.<\/li>\n<li><strong>Processing time:<\/strong> the limiter master converted three times per method on a Raspberry Pi 4, counting the shortest time including reading and writing the files.<\/li>\n<\/ul>\n<h2>Passband: ffmpeg&#8217;s default already attenuates below 20 kHz<\/h2>\n<table>\n<thead>\n<tr>\n<th>Method<\/th>\n<th>18\u00a0kHz<\/th>\n<th>19\u00a0kHz<\/th>\n<th>20\u00a0kHz<\/th>\n<th>20.5\u00a0kHz<\/th>\n<th>21\u00a0kHz<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>swr, filter_size 16<\/td>\n<td>\u22120.81\u00a0dB<\/td>\n<td>\u22121.67\u00a0dB<\/td>\n<td>\u22123.03\u00a0dB<\/td>\n<td>\u22123.95\u00a0dB<\/td>\n<td>\u22125.04\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>swr, default (filter_size 32)<\/td>\n<td>\u22120.01\u00a0dB<\/td>\n<td>\u22120.22\u00a0dB<\/td>\n<td>\u22121.28\u00a0dB<\/td>\n<td>\u22122.43\u00a0dB<\/td>\n<td>\u22124.18\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>swr, filter_size 128<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>\u22121.01\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>soxr, default (precision 20)<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>\u22120.01\u00a0dB<\/td>\n<td>\u22120.07\u00a0dB<\/td>\n<td>\u22123.75\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>soxr, precision 28<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>0.00\u00a0dB<\/td>\n<td>\u22120.03\u00a0dB<\/td>\n<td>\u22124.06\u00a0dB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>With default settings, swr lost 0.22 dB at 19 kHz and 1.28 dB at 20 kHz; with filter_size 16 it was already 3.03 dB at 20 kHz. With filter_size 128 and with both soxr levels, the level stayed within 0.01 dB up to 20 kHz and within 0.07 dB up to 20.5 kHz; the steep drop only begins above that.<\/p>\n<h2>Above 22.05 kHz: aliasing between \u22129.5 and below \u2212180 dB<\/h2>\n<table>\n<thead>\n<tr>\n<th>Method<\/th>\n<th>Tone 22.5\u00a0kHz, alias at 21.6\u00a0kHz<\/th>\n<th>Tone 23\u00a0kHz, alias at 21.1\u00a0kHz<\/th>\n<th>Tone 23.5\u00a0kHz, alias at 20.6\u00a0kHz<\/th>\n<th>Tone 23.9\u00a0kHz, alias at 20.2\u00a0kHz<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>swr, filter_size 16<\/td>\n<td>\u22129.5\u00a0dB<\/td>\n<td>\u221211.5\u00a0dB<\/td>\n<td>\u221213.8\u00a0dB<\/td>\n<td>\u221215.8\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>swr, default (filter_size 32)<\/td>\n<td>\u221214.3\u00a0dB<\/td>\n<td>\u221219.9\u00a0dB<\/td>\n<td>\u221227.1\u00a0dB<\/td>\n<td>\u221234.4\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>swr, filter_size 128<\/td>\n<td>\u221296.2\u00a0dB<\/td>\n<td>\u221294.7\u00a0dB<\/td>\n<td>\u2212104.0\u00a0dB<\/td>\n<td>\u221297.9\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>soxr, default (precision 20)<\/td>\n<td>\u2212136.6\u00a0dB<\/td>\n<td>\u2212148.6\u00a0dB<\/td>\n<td>\u2212141.6\u00a0dB<\/td>\n<td>\u2212162.2\u00a0dB<\/td>\n<\/tr>\n<tr>\n<td>soxr, precision 28<\/td>\n<td>below \u2212180\u00a0dB<\/td>\n<td>below \u2212180\u00a0dB<\/td>\n<td>below \u2212180\u00a0dB<\/td>\n<td>below \u2212180\u00a0dB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A tone at 22.5 kHz cannot be represented at 44.1 kHz; if it remains, it appears mirrored at 21.6 kHz. The swr default attenuated it by only 14.3 dB, filter_size 16 by 9.5 dB. Only further away from the Nyquist frequency did the attenuation grow, for the default up to 34.4 dB at 23.9 kHz. swr with filter_size 128 reached 94.7 to 104.0 dB, soxr 136.6 to 162.2 dB and with precision 28 more than 180 dB. Smith names the price of steep filters: for a given stop-band specification, a lowpass filter needs approximately twice as many calculations per sample for each halving of the transition band width.<\/p>\n<h2>Peaks: the true peak stayed, the sample peak rose by up to 1.3 dB<\/h2>\n<table>\n<thead>\n<tr>\n<th>Master<\/th>\n<th>True peak 4 times<\/th>\n<th>True peak 16 times<\/th>\n<th>Sample peak<\/th>\n<th>Samples above 0 dBFS<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Limiter, \u22129 LUFS, \u22121 dBTP: Master at 48 kHz<\/td>\n<td>\u22121.05\u00a0dBTP<\/td>\n<td>\u22120.79\u00a0dBTP<\/td>\n<td>\u22122.31\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Limiter: swr, filter_size 16<\/td>\n<td>\u22121.16\u00a0dBTP<\/td>\n<td>\u22121.07\u00a0dBTP<\/td>\n<td>\u22121.53\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Limiter: swr, default (filter_size 32)<\/td>\n<td>\u22121.03\u00a0dBTP<\/td>\n<td>\u22120.96\u00a0dBTP<\/td>\n<td>\u22121.44\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Limiter: swr, filter_size 128<\/td>\n<td>\u22121.04\u00a0dBTP<\/td>\n<td>\u22120.98\u00a0dBTP<\/td>\n<td>\u22121.35\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Limiter: soxr, default (precision 20)<\/td>\n<td>\u22121.05\u00a0dBTP<\/td>\n<td>\u22120.95\u00a0dBTP<\/td>\n<td>\u22121.40\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Limiter: soxr, precision 28<\/td>\n<td>\u22121.05\u00a0dBTP<\/td>\n<td>\u22120.95\u00a0dBTP<\/td>\n<td>\u22121.41\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS, \u22128 LUFS: Master at 48 kHz<\/td>\n<td>+0.38\u00a0dBTP<\/td>\n<td>+0.72\u00a0dBTP<\/td>\n<td>\u22121.00\u00a0dBFS<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS: swr, filter_size 16<\/td>\n<td>+0.28\u00a0dBTP<\/td>\n<td>+0.38\u00a0dBTP<\/td>\n<td>+0.01\u00a0dBFS<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS: swr, default (filter_size 32)<\/td>\n<td>+0.41\u00a0dBTP<\/td>\n<td>+0.54\u00a0dBTP<\/td>\n<td>+0.18\u00a0dBFS<\/td>\n<td>18<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS: swr, filter_size 128<\/td>\n<td>+0.47\u00a0dBTP<\/td>\n<td>+0.64\u00a0dBTP<\/td>\n<td>+0.27\u00a0dBFS<\/td>\n<td>41<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS: soxr, default (precision 20)<\/td>\n<td>+0.45\u00a0dBTP<\/td>\n<td>+0.64\u00a0dBTP<\/td>\n<td>+0.26\u00a0dBFS<\/td>\n<td>42<\/td>\n<\/tr>\n<tr>\n<td>Hard clipping at \u22121 dBFS: soxr, precision 28<\/td>\n<td>+0.44\u00a0dBTP<\/td>\n<td>+0.64\u00a0dBTP<\/td>\n<td>+0.26\u00a0dBFS<\/td>\n<td>44<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Loudness stayed the same for every conversion (resolution 0.1 LU). The true peak measured 4 times changed by no more than 0.11 dB; in the 16-times cross-check it fell by 0.08 to 0.34 dB, most with filter_size 16, which attenuates the highs most. The samples, by contrast, hit different points of the waveform after conversion. For the limiter master, the sample peak rose from \u22122.31 to as much as \u22121.35 dBFS. The <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/clipper-vs-limiter-aliasing-true-peak-encoding-measured\/\">hard-clipped master<\/a> had no sample above \u22121.00 dBFS at 48 kHz; after conversion, 2 to 44 samples were above 0 dBFS, 42 and 44 with soxr. In a 16-bit or 24-bit file, such values are clipped. The limit on the samples at 48 kHz therefore does not protect the 44.1 kHz file, whereas the true peak of the 48 kHz file already showed beforehand how high the values can reach.<\/p>\n<h2>Pre-ringing and processing time: hardly any differences<\/h2>\n<table>\n<thead>\n<tr>\n<th>Method<\/th>\n<th>Processing time for 32 s of stereo<\/th>\n<th>faster than real time<\/th>\n<th>Pre-ringing down to \u221260 dB<\/th>\n<th>down to \u2212100 dB<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>swr, filter_size 16<\/td>\n<td>0.50\u00a0s<\/td>\n<td>64 times<\/td>\n<td>0.14\u00a0ms<\/td>\n<td>0.18\u00a0ms<\/td>\n<\/tr>\n<tr>\n<td>swr, default (filter_size 32)<\/td>\n<td>0.55\u00a0s<\/td>\n<td>58 times<\/td>\n<td>0.27\u00a0ms<\/td>\n<td>0.36\u00a0ms<\/td>\n<\/tr>\n<tr>\n<td>swr, filter_size 128<\/td>\n<td>0.81\u00a0s<\/td>\n<td>39 times<\/td>\n<td>0.68\u00a0ms<\/td>\n<td>1.41\u00a0ms<\/td>\n<\/tr>\n<tr>\n<td>soxr, default (precision 20)<\/td>\n<td>0.70\u00a0s<\/td>\n<td>46 times<\/td>\n<td>0.98\u00a0ms<\/td>\n<td>1.93\u00a0ms<\/td>\n<\/tr>\n<tr>\n<td>soxr, precision 28<\/td>\n<td>0.79\u00a0s<\/td>\n<td>40 times<\/td>\n<td>1.32\u00a0ms<\/td>\n<td>2.27\u00a0ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>All five methods rang for the same length before and after the impulse, as linear-phase filters do. Down to \u221260 dB, the pre-ringing lasted from 0.14 ms with filter_size 16 to 1.32 ms with soxr at precision 28, down to \u2212100 dB no more than 2.27 ms. The more accurate methods cost little time on the Raspberry Pi 4: 32 seconds of stereo took 0.55 s with the swr default, 0.70 s with soxr and 0.79 s with precision 28, each including reading and writing the files.<\/p>\n<h2>What this means for the export<\/h2>\n<ul>\n<li>For a 44.1 kHz file from a 48 kHz export, <code>-af aresample=44100:resampler=soxr<\/code> changed the level by no more than 0.01 dB up to 20 kHz and attenuated content above 22.05 kHz by at least 137 dB; <code>:precision=28<\/code> cost 0.1 s more.<\/li>\n<li><code>-ar 44100<\/code> on its own uses the swr default: 1.3 dB less at 20 kHz and only 14 dB of attenuation for content just above 22.05 kHz. Within swr, filter_size=128 brought the deviation up to 20 kHz below 0.01 dB and the attenuation to 95 to 104 dB.<\/li>\n<li>What matters for the peaks after conversion is the true peak of the 48 kHz file, not its sample peak. The <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/lufs-true-peak-loudness-meter\/\">LUFS and True Peak Meter<\/a> measures both in the browser.<\/li>\n<li>Conversion to 16-bit with dither follows as the last step after the sample rate conversion; see <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/dither-16-bit-export-distortion-noise-modulation-noise-shaping-measured\/\">Dither When Exporting to 16-Bit<\/a>.<\/li>\n<li>The FL Studio manual describes the same principle for interpolation when transposing samples: linear interpolation can cause aliasing, and for the final render it recommends settings above 64-point sinc if aliasing is audible with lower methods. The setting is covered in the <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/tutorials-en-music-production\/mastering-streaming-loudness-fl-studio-2026-step-by-step\/\">mastering tutorial for FL Studio<\/a>.<\/li>\n<\/ul>\n<h2>Context and limits<\/h2>\n<p>The measurement covered the resamplers in ffmpeg, not the conversion in FL Studio or other programs. The test mix is synthetic; its hi-hats made from filtered noise reach up to 24 kHz, while many recordings contain less above 20 kHz. A listening test was not part of the measurement: the folded content lands between 20.2 and 21.6 kHz, and whether it becomes audible there depends on material, hearing and playback. The processing times apply to the Raspberry Pi 4 used for the measurement; the absolute values change on other hardware.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Why does the more accurate resampler produce more samples above 0 dBFS on the hard-clipped master?<\/h3>\n<p>Because it reproduces the waveform between the samples more faithfully. Hard clipping at \u22121 dBFS creates edges with content reaching up to the top of the band, and the waveform described by these samples swings beyond the clipping level between them: the true peak of the 48 kHz file was +0.72 dBTP measured with 16-times oversampling, although no sample exceeded \u22121.00 dBFS.<\/p>\n<p>A resampler calculates new samples at different points in time, so it reads this waveform at new positions and also hits spots close to the peaks. The flatter its passband, the more of the high frequencies that make up the overshoots survive. filter_size 16 already attenuates by 3.03 dB at 20 kHz, smoothing the peaks, and ended up with 2 samples above 0 dBFS; soxr and filter_size 128 leave the high end intact and ended up with 41 to 44.<\/p>\n<p>The problem therefore lies in the master, not in the resampler. What matters is the true peak of the 48 kHz file: if the file is lowered until that true peak sits below 0 dBTP with a little margin, or if limiting only happens after the conversion, the samples of the 44.1 kHz file stay below 0 dBFS, at 16 or 24 bits as well.<\/p>\n<h3>Can the aliasing of swr also be fixed with a lower cutoff instead of a larger filter_size?<\/h3>\n<p>Only at the expense of the high end. The cutoff, for swr a 6 dB point at 0.97 of half the sampling rate, around 21.4 kHz, determines where the transition band lies; filter_size determines how wide it is. With the default of 32 it is so wide that it reaches both below 20 kHz and beyond 22.05 kHz: hence the 1.28 dB loss at 20 kHz and only 14.3 dB of attenuation at 22.5 kHz.<\/p>\n<p>A lower cutoff merely shifts this wide band downward. The attenuation just above 22.05 kHz then rises, but the loss below 20 kHz grows along with it; this was not measured, it follows from where the transition band lies. The transition only becomes narrower with a longer filter, and that is exactly Smith&#8217;s rule of thumb: every halving of the transition band costs roughly twice as many calculations per sample. On the Raspberry Pi used for the measurement that price was small, with filter_size 128 taking 0.81 instead of 0.55 s for 32 seconds of stereo.<\/p>\n<h3>Does it matter whether the conversion to 16-bit comes before or after the conversion to 44.1 kHz?<\/h3>\n<p>Yes. The resampler calculates new samples that no longer sit on the 16-bit grid, so its output has to be rounded a second time, either without suitable dither or with a second layer of noise. On top of that come the samples above 0 dBFS that the conversion can produce and that are clipped in a 16-bit file. That is why the conversion to 16-bit with dither comes last.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/ffmpeg.org\/ffmpeg-resampler.html\" target=\"_blank\" rel=\"noopener noreferrer\">FFmpeg Resampler Documentation<\/a><\/li>\n<li><a href=\"https:\/\/ffmpeg.org\/ffmpeg.html\" target=\"_blank\" rel=\"noopener noreferrer\">ffmpeg Documentation<\/a><\/li>\n<li><a href=\"https:\/\/ccrma.stanford.edu\/~jos\/resample\/Implementation.html\" target=\"_blank\" rel=\"noopener noreferrer\">Implementation \u2013 Digital Audio Resampling Home Page (Julius O. Smith III)<\/a><\/li>\n<li><a href=\"https:\/\/ccrma.stanford.edu\/~jos\/resample\/Theory_Ideal_Bandlimited_Interpolation.html\" target=\"_blank\" rel=\"noopener noreferrer\">Theory of Ideal Bandlimited Interpolation \u2013 Digital Audio Resampling Home Page (Julius O. Smith III)<\/a><\/li>\n<li><a href=\"https:\/\/www.image-line.com\/fl-studio-learning\/fl-studio-online-manual\/html\/fformats_save_export.htm\" target=\"_blank\" rel=\"noopener noreferrer\">Exporting Audio &amp; MIDI \u2013 FL Studio Online Manual<\/a><\/li>\n<li><a href=\"https:\/\/www.itu.int\/rec\/R-REC-BS.1770\" target=\"_blank\" rel=\"noopener noreferrer\">ITU-R BS.1770: Algorithms to measure audio programme loudness and true-peak audio level<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Sample rate conversion from 48 to 44.1 kHz, measured with ffmpeg: the default resampler, also used by -ar 44100, lowered 20 kHz by 1.3 dB and let a tone at 22.5 kHz through as an alias at 21.6 kHz, attenuated by only 14 dB. soxr stayed within 0.01 dB up to 20 kHz and attenuated the alias by 137 dB. A master hard-clipped at \u22121 dBFS had a sample peak of up to +0.27 dBFS after conversion.<\/p>\n","protected":false},"author":1,"featured_media":19913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92861],"tags":[92901],"class_list":["post-19762","post","type-post","status-publish","format-standard","hentry","category-music-production","tag-music-production"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-30T08:40:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured\",\"datePublished\":\"2026-09-30T08:40:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/\"},\"wordCount\":1865,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png\",\"keywords\":[\"Music Production\"],\"articleSection\":[\"Music Production\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/\",\"name\":\"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png\",\"datePublished\":\"2026-09-30T08:40:00+00:00\",\"description\":\"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png\",\"width\":1200,\"height\":630,\"caption\":\"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/music-production\\\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik","description":"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/","og_locale":"en_US","og_type":"article","og_title":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik","og_description":"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-30T08:40:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured","datePublished":"2026-09-30T08:40:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/"},"wordCount":1865,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png","keywords":["Music Production"],"articleSection":["Music Production"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/","name":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png","datePublished":"2026-09-30T08:40:00+00:00","description":"Sample rate conversion from 48 to 44.1 kHz, measured: high-frequency loss, aliasing, pre-ringing, true peak and processing time of ffmpeg swr and soxr.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-19762-sample-rate-conversion-48-44-1-khz-a-m19.png","width":1200,"height":630,"caption":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/music-production\/sample-rate-conversion-48-44-1-khz-aliasing-peaks-swr-soxr-measured\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Converting 48 kHz to 44.1 kHz: Aliasing, High-Frequency Loss and Peaks of swr and soxr, Measured"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/19762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=19762"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/19762\/revisions"}],"predecessor-version":[{"id":20943,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/19762\/revisions\/20943"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/19913"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=19762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=19762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=19762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}