Scale - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

AudioTools

 Scale
 scale audio data by the specified ratio or to the specified size

 Calling Sequence Scale(audArray, scale, options)

Parameters

 audArray - Array or Matrix containing the audio data to scale scale - scale factor or desired length of scaled audio options - options modifying the scaling operation

Description

 • The Scale command rescales audio data, producing a new audio object with the specified size.
 • The audArray parameter specifies the audio to scale, and must be a dense, rectangular, one or two dimensional Array, Vector, or Matrix with datatype=float[8].
 • The scale parameter specifies either the desired scaling ratio, or the desired length, in samples, of the scaled audio data. The former is expressed as a numeric value. The latter is expressed as an integer range giving the desired resulting array indices.
 • By default, scaling is done using B-spline interpolation.  This produces excellent results reasonably fast. When reducing audio data using scale factors smaller than 1/2.5, the scaling is done in steps to avoid unnecessary information loss. For example, scaling by 1/4 is accomplished by scaling twice by 1/2. The nature of the algorithm makes this stepwise scaling unnecessary when enlarging audio data.
 • If the method=nearest option is specified, scaling is done using the nearest-neighbor algorithm. This produces poorer results, but the algorithm is very fast.  This method is often suitable for producing low-quality rescalings of audio data.
 • Specifying method=bspline is equivalent to the default behavior.
 • NOTE: Scaling does not change the sampling rate of the data, which means that it does change the pitch. For example, scaling down by a factor of 0.5 will double the pitch (increase it by one octave). To resample audio data without affecting the pitch, use the AudioTools[Resample] command.

Examples

 > $\mathrm{audiofile}≔\mathrm{cat}\left(\mathrm{kernelopts}\left(\mathrm{datadir}\right),"/audio/stereo.wav"\right):$
 > $\mathrm{with}\left(\mathrm{AudioTools}\right):$
 > $\mathrm{aud}≔\mathrm{Read}\left(\mathrm{audiofile}\right)$
 ${\mathrm{aud}}{≔}\left[\begin{array}{cc}{"Sample Rate"}& {22050}\\ {"File Format"}& {\mathrm{PCM}}\\ {"File Bit Depth"}& {8}\\ {"Channels"}& {2}\\ {"Samples/Channel"}& {19962}\\ {"Duration"}& {0.90531}{}{s}\end{array}\right]$ (1)
 > $\mathrm{small}≔\mathrm{Scale}\left(\mathrm{aud},1..5000\right)$
 ${\mathrm{small}}{≔}\left[\begin{array}{cc}{"Sample Rate"}& {22050}\\ {"File Format"}& {\mathrm{PCM}}\\ {"File Bit Depth"}& {8}\\ {"Channels"}& {2}\\ {"Samples/Channel"}& {5000}\\ {"Duration"}& {0.22676}{}{s}\end{array}\right]$ (2)
 > $\mathrm{squished}≔\mathrm{Scale}\left(\mathrm{aud},0.25\right)$
 ${\mathrm{squished}}{≔}\left[\begin{array}{cc}{"Sample Rate"}& {22050}\\ {"File Format"}& {\mathrm{PCM}}\\ {"File Bit Depth"}& {8}\\ {"Channels"}& {2}\\ {"Samples/Channel"}& {4991}\\ {"Duration"}& {0.22635}{}{s}\end{array}\right]$ (3)
 > $\mathrm{quick}≔\mathrm{Scale}\left(\mathrm{aud},0.25,\mathrm{method}=\mathrm{nearest}\right)$
 ${\mathrm{quick}}{≔}\left[\begin{array}{cc}{"Sample Rate"}& {22050}\\ {"File Format"}& {\mathrm{PCM}}\\ {"File Bit Depth"}& {8}\\ {"Channels"}& {2}\\ {"Samples/Channel"}& {4991}\\ {"Duration"}& {0.22635}{}{s}\end{array}\right]$ (4)