Emeric Vigier | eebea67 | 2012-08-06 17:36:30 -0400 | [diff] [blame] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| 2 | <HTML> |
| 3 | |
| 4 | <HEAD> |
| 5 | <TITLE> |
| 6 | Secret Rabbit Code (aka libsamplerate) |
| 7 | </TITLE> |
| 8 | <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)"> |
| 9 | <META NAME="Version" CONTENT="libsamplerate-0.1.8"> |
| 10 | <META NAME="Description" CONTENT="The Secret Rabbit Code Home Page"> |
| 11 | <META NAME="Keywords" CONTENT="libsamplerate sound resample audio dsp Linux"> |
| 12 | <LINK REL=StyleSheet HREF="SRC.css" TYPE="text/css" MEDIA="all"> |
| 13 | </HEAD> |
| 14 | |
| 15 | <BODY TEXT="#FFFFFF" BGCOLOR="#000000" LINK="#FB1465" VLINK="#FB1465" ALINK="#FB1465"> |
| 16 | <!-- pepper --> |
| 17 | <CENTER> |
| 18 | <IMG SRC="SRC.png" HEIGHT=100 WIDTH=760 ALT="SRC.png"> |
| 19 | </CENTER> |
| 20 | <!-- pepper --> |
| 21 | <BR> |
| 22 | <!-- pepper --> |
| 23 | <TABLE ALIGN="center" WIDTH="98%"> |
| 24 | <TR> |
| 25 | <TD VALIGN="top"> |
| 26 | <BR> |
| 27 | <DIV CLASS="nav"> |
| 28 | <BR> |
| 29 | <A HREF="index.html">Home</A><BR> |
| 30 | <A HREF="license.html">License</A><BR> |
| 31 | <A HREF="history.html">History</A><BR> |
| 32 | <A HREF="download.html">Download</A><BR> |
| 33 | <A HREF="quality.html">Quality</A><BR> |
| 34 | <A HREF="api.html">API</A><BR> |
| 35 | <A HREF="bugs.html">Bug Reporting</A><BR> |
| 36 | <A HREF="win32.html">On Win32</A><BR> |
| 37 | <A HREF="faq.html">FAQ</A><BR> |
| 38 | <A HREF="lists.html">Mailing Lists</A><BR> |
| 39 | <A HREF="ChangeLog">ChangeLog</A><BR> |
| 40 | <BR> |
| 41 | <DIV CLASS="block"> |
| 42 | Author :<BR>Erik de Castro Lopo |
| 43 | <!-- pepper --> |
| 44 | <BR><BR> |
| 45 | <!-- pepper --> |
| 46 | |
| 47 | </DIV> |
| 48 | <IMG SRC= |
| 49 | "/cgi-bin/Count.cgi?ft=6|frgb=55;55;55|tr=0|md=6|dd=B|st=1|sh=1|df=src_qual.dat" |
| 50 | HEIGHT=30 WIDTH=100 ALT="counter.gif"> |
| 51 | </DIV> |
| 52 | |
| 53 | </TD> |
| 54 | <!-- pepper --> |
| 55 | <!-- ######################################################################## --> |
| 56 | <!-- pepper --> |
| 57 | <TD VALIGN="top"> |
| 58 | <DIV CLASS="block"> |
| 59 | |
| 60 | <H1><B>SRC Quality</B></H1> |
| 61 | <CENTER><P> |
| 62 | <B>This document not yet complete.</B><BR> |
| 63 | </P></CENTER> |
| 64 | <P> |
| 65 | When measuring the performance of a Sample Rate Converter, there are three |
| 66 | factors to consider: |
| 67 | </P> |
| 68 | <UL> |
| 69 | <LI><B>Signal-to-Noise Ratio</B> - a measure of how much noise the sample |
| 70 | rate conversion process adds to the signal. |
| 71 | This is measured in decibels (dB) and the higher this value the |
| 72 | better. |
| 73 | For most sample rate converters, the SNR will vary depending on |
| 74 | the input signal and the ratio between input and output sample |
| 75 | rates. |
| 76 | The only valid comparison of SNR is between the worst case for |
| 77 | for each converter. |
| 78 | <LI><B>Bandwidth</B> - most sample rate converters attenuate high |
| 79 | frequencies as part of their operation. |
| 80 | Bandwidth can be measured by finding the frequency where the |
| 81 | attenuation is 3dB and expressing that as a percentage of the full |
| 82 | bandwidth at that sampling rate. |
| 83 | <LI><B>Speed</B> - the faster the better <B>:-)</B>. |
| 84 | </UL> |
| 85 | |
| 86 | <P> |
| 87 | There are a number of sample rate converters available for downloading |
| 88 | but I will limit the comparison ot Secret Rabbit Code to the following: |
| 89 | </P> |
| 90 | <UL> |
| 91 | <LI><A HREF="http://www.mega-nerd.com/SRC/download.html">sndfile-resample</A> |
| 92 | which is a program (which uses libsamplerate) from the <B>examples/</B> |
| 93 | directory of the Secret Rabbit Code source code distribution. |
| 94 | <LI><A HREF="http://www-ccrma.stanford.edu/~jos/resample/Available_Software.html"> |
| 95 | Resample</A> |
| 96 | by Julius O Smiths which seems to have been the first high quality converter |
| 97 | available as source code. |
| 98 | <LI><A HREF="http://www.tsp.ece.mcgill.ca/MMSP/Documents/Software/AFsp/ResampAudio.html">ResampAudio</A> |
| 99 | which is part of |
| 100 | <A HREF="http://www.tsp.ece.mcgill.ca/MMSP/Documents/Software/AFsp/AFsp.html"> |
| 101 | Audio File Programs and Routines</A> |
| 102 | by Peter Kabal. |
| 103 | <LI><A HREF="http://home.sprynet.com/~cbagwell/sox.html">SoX</A> which is maintained |
| 104 | by Chris Bagwell. |
| 105 | SoX is also able to perform some low quality sample rate conversions but these |
| 106 | will not be investigated. |
| 107 | <LI><A HREF="http://shibatch.sourceforge.net/">Shibatch</A> which seems to be a |
| 108 | frequency domain sample rate converter. |
| 109 | Unfortunately, this converter does not handle arbitrary conversion ratios and |
| 110 | hence could not be properly compared to the other converters. |
| 111 | <LI><A HREF="http://sr-convert.sourceforge.net/">sr-convert</A> is another |
| 112 | converter which does not handle arbitrary conversion ratios. |
| 113 | </UL> |
| 114 | |
| 115 | <P> |
| 116 | It should be noted that the first three converters above are based on the algorithm |
| 117 | by <A HREF="http://www-ccrma.stanford.edu/~jos/resample/"> Julius O. Smith</A> |
| 118 | which emulates the conversion of the digital signal to an analogue one and then |
| 119 | sampling the analogue signal at the new sample rate. |
| 120 | </P> |
| 121 | |
| 122 | <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> |
| 123 | |
| 124 | <H3><B>Methodology</B></H3> |
| 125 | <P> |
| 126 | Measuring the SNR of a converter is relatively straight forward. |
| 127 | Generate an input signal consisting of a windowed sine wave, sample rate |
| 128 | convert it and measure the signal-to-noise ratio of the output signal. |
| 129 | A typical length for the original file is 30000 samples. |
| 130 | </P> |
| 131 | <P> |
| 132 | The bandwidth of a sample rate converter is a little more difficult to measure. |
| 133 | Currently this is done by generating two short files containing a windowed |
| 134 | sine wave. |
| 135 | The frequencies of the sine waves are 0.35 and 0.495 of the sample rate. |
| 136 | These file are then upsampled by a factor of 2 using the converter under test. |
| 137 | If the attenutaion of the lower frquency is less than 3dB and higher frequency is |
| 138 | more than 3dB, it is then possible to iteratively increase the lower frequency |
| 139 | and decrease the upper frequency keeping the -3dB point bracketed. |
| 140 | When the distance between the upper and lower frequency is sufficiently small, |
| 141 | it is possible to obtain a very accurate estimate of the -3dB frequency. |
| 142 | </P> |
| 143 | <P> |
| 144 | The speed of a sample rate converter is easy to measure; simply perform a |
| 145 | conversion on a large file or a number of smaller files and time the conversion |
| 146 | process. |
| 147 | </P> |
| 148 | |
| 149 | <P> |
| 150 | The above measurement techniques are built into a test program which is delivered |
| 151 | with the Secret Rabbit Code source code distibution. |
| 152 | This program is able to test the first four of the above converters. |
| 153 | </P> |
| 154 | <!--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> |
| 155 | |
| 156 | <H3><B>SoX</B></H3> |
| 157 | <P> |
| 158 | SoX provides three methods of resampling; a linear interpolator, a polyphase |
| 159 | resampler and the Julius O. Smith simulated analogue filter method. |
| 160 | </P> |
| 161 | |
| 162 | <H3><B>Shibatch</B></H3> |
| 163 | <P> |
| 164 | Shibach |
| 165 | </P> |
| 166 | |
| 167 | <P> |
| 168 | <B>More Coming Soon.</B> |
| 169 | </P> |
| 170 | |
| 171 | <!-- <A HREF="mailto:aldel@mega-nerd.com">For the spam bots</A> --> |
| 172 | |
| 173 | </DIV> |
| 174 | </TD></TR> |
| 175 | </TABLE> |
| 176 | |
| 177 | </BODY> |
| 178 | </HTML> |
| 179 | |