[sdiy] Wave table interpolation

Tim Ressel timr at circuitabbey.com
Mon Nov 13 18:45:06 CET 2017


I meant '413. Its one of those Mondays...

--tr


On 11/13/2017 9:20 AM, Mikko Helin wrote:
> For PCM1681 and it's 8-channel TDM interface you will need some 
> STM32F42x part at least. (427)
>
> --Mikko
>
> On Mon, Nov 13, 2017 at 5:32 PM, <paula at synth.net 
> <mailto:paula at synth.net>> wrote:
>
>     <cough>
>
>     256 Kbyte of SRAM
>
>     http://www.st.com/en/microcontrollers/stm32f412ve.html
>     <http://www.st.com/en/microcontrollers/stm32f412ve.html>
>
>
>     Still, that's quite a chunk of RAM.
>
>     Paula
>
>
>
>     On 2017-11-13 15:08, Tom Wiltshire wrote:
>
>         100MHz?! 256mB RAM?! Easy life!! That’s no limitations at all.
>         <insert
>         Monty Python's Yorkshireman paraphrasing here>
>
>         Yes, you could certainly make linear interp work well in such
>         a situation.
>
>         You’ve got multiply instructions and probably
>         multiply-accumulate too,
>         so linear interp is only a couple of instructions and you
>         don’t have
>         to worry about whether it’s powers of 2 or not (although that does
>         always seem to make life easier…)
>
>         Tom
>
>         ==================
>                Electric Druid
>         Synth & Stompbox DIY
>         ==================
>
>             On 12 Nov 2017, at 22:50, Tim Ressel
>             <timr at circuitabbey.com <mailto:timr at circuitabbey.com>> wrote:
>
>             I meant clean code-wise  :-)
>
>             Target sample rate is 192KHz. TI makes a super cool 8
>             channel audio dac PCM1681. Target proc is the
>             STM32F412VET6, cortex M4, 256 mB ram, 100MHz.
>
>             So you think I can get away with linear?  That would make
>             the interop code simple. Since I am filling in 256 points
>             in between samples the math is all powers of 2.
>
>             -t-i-m-b-o-
>
>             On 11/12/2017 11:28 AM, Richie Burnett wrote:
>
>                 Linear interpolation isn't particularly clean (it
>                 isn't band-limited) but can work adequately if you
>                 oversample the data in the wave tables first, and/or
>                 use a sufficiently high playback sample-rate like
>                 96kHz.  In the case of the former, if the data in the
>                 wavetables is already oversampled considerably, then
>                 linear interpolation between the points isn't such a
>                 bad approximation.  And the latter gives space for the
>                 images from the imperfect interpolation to go, before
>                 they alias back into the audio band where you will
>                 hear them...
>
>                 If you run your playback at 48kHz, then the demands on
>                 the interpolator are very stringent. It should be flat
>                 out to 20kHz or thereabouts, and then be something
>                 like 80dB or more down by 28kHz if you aren't to hear
>                 aliasing back into the audio band below 20kHz.  That's
>                 only 8kHz of transition band for the interpolating
>                 filter to work it's magic.  However, doubling the
>                 playback sample rate to 96kHz, means that you've got
>                 all the space between 20kHz and 76 kHz for the
>                 interpolating filter's transition band.  That's 7
>                 times as wide, for a mere x2 oversampling during
>                 playback, so the demands on the interpolating filter
>                 are greatly reduced!
>
>                 -Richie,
>
>                 -----Original Message----- From: Tim Ressel
>                 Sent: Sunday, November 12, 2017 6:56 PM
>                 To: SYNTH DIY
>                 Subject: [sdiy] Wave table interpolation
>
>                 Hi,
>
>                 Another fun one. I've been looking at the WaveEdit
>                 software. It looks
>                 like it produces waves that are 256 samples by 16
>                 bits. Obviously you'll
>                 want to interpolate between the samples. Linear
>                 interpolation works and
>                 is cheap but is brute force and causes lots of
>                 distortion. I've looked
>                 at cubic interpolation. Is that a viable approach? My
>                 app needs 4 tables
>                 live at a time so I can interpolate (linearly) between
>                 them, so this all
>                 has to happen on the fly. Cubic looks a bit math
>                 intensive.
>
>                 Thanks!
>
>
>             --
>             --Tim Ressel
>             Circuit Abbey
>             timr at circuitabbey.com <mailto:timr at circuitabbey.com>
>
>             _______________________________________________
>             Synth-diy mailing list
>             Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>             http://synth-diy.org/mailman/listinfo/synth-diy
>             <http://synth-diy.org/mailman/listinfo/synth-diy>
>
>
>
>         _______________________________________________
>         Synth-diy mailing list
>         Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>         http://synth-diy.org/mailman/listinfo/synth-diy
>         <http://synth-diy.org/mailman/listinfo/synth-diy>
>
>     _______________________________________________
>     Synth-diy mailing list
>     Synth-diy at synth-diy.org <mailto:Synth-diy at synth-diy.org>
>     http://synth-diy.org/mailman/listinfo/synth-diy
>     <http://synth-diy.org/mailman/listinfo/synth-diy>
>
>
>
>
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at synth-diy.org
> http://synth-diy.org/mailman/listinfo/synth-diy

-- 
--Tim Ressel
Circuit Abbey
timr at circuitabbey.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20171113/af8c4738/attachment.htm>


More information about the Synth-diy mailing list