<div dir="ltr"><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif"><span style="font-family:arial,sans-serif;font-size:12.8px">For PCM1681 and it's 8-channel TDM interface you will need some STM32F42x part at least. (427)</span><br></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif"><span style="font-family:arial,sans-serif;font-size:12.8px"><br></span></div><div class="gmail_default" style="font-family:"trebuchet ms",sans-serif"><span style="font-family:arial,sans-serif;font-size:12.8px">--Mikko</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 13, 2017 at 5:32 PM,  <span dir="ltr"><<a href="mailto:paula@synth.net" target="_blank">paula@synth.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><cough><br>
<br>
256 Kbyte of SRAM<br>
<br>
<a href="http://www.st.com/en/microcontrollers/stm32f412ve.html" rel="noreferrer" target="_blank">http://www.st.com/en/microcont<wbr>rollers/stm32f412ve.html</a><br>
<br>
<br>
Still, that's quite a chunk of RAM.<br>
<br>
Paula<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
On 2017-11-13 15:08, Tom Wiltshire wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
100MHz?! 256mB RAM?! Easy life!! That’s no limitations at all. <insert<br>
Monty Python's Yorkshireman paraphrasing here><br>
<br>
Yes, you could certainly make linear interp work well in such a situation.<br>
<br>
You’ve got multiply instructions and probably multiply-accumulate too,<br>
so linear interp is only a couple of instructions and you don’t have<br>
to worry about whether it’s powers of 2 or not (although that does<br>
always seem to make life easier…)<br>
<br>
Tom<br>
<br>
==================<br>
       Electric Druid<br>
Synth & Stompbox DIY<br>
==================<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 12 Nov 2017, at 22:50, Tim Ressel <<a href="mailto:timr@circuitabbey.com" target="_blank">timr@circuitabbey.com</a>> wrote:<br>
<br>
I meant clean code-wise  :-)<br>
<br>
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.<br>
<br>
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.<br>
<br>
-t-i-m-b-o-<br>
<br>
On 11/12/2017 11:28 AM, Richie Burnett wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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...<br>
<br>
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!<br>
<br>
-Richie,<br>
<br>
-----Original Message----- From: Tim Ressel<br>
Sent: Sunday, November 12, 2017 6:56 PM<br>
To: SYNTH DIY<br>
Subject: [sdiy] Wave table interpolation<br>
<br>
Hi,<br>
<br>
Another fun one. I've been looking at the WaveEdit software. It looks<br>
like it produces waves that are 256 samples by 16 bits. Obviously you'll<br>
want to interpolate between the samples. Linear interpolation works and<br>
is cheap but is brute force and causes lots of distortion. I've looked<br>
at cubic interpolation. Is that a viable approach? My app needs 4 tables<br>
live at a time so I can interpolate (linearly) between them, so this all<br>
has to happen on the fly. Cubic looks a bit math intensive.<br>
<br>
Thanks!<br>
<br>
</blockquote>
<br>
--<br>
--Tim Ressel<br>
Circuit Abbey<br>
<a href="mailto:timr@circuitabbey.com" target="_blank">timr@circuitabbey.com</a><br>
<br>
______________________________<wbr>_________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/l<wbr>istinfo/synth-diy</a><br>
</blockquote>
<br>
<br>
______________________________<wbr>_________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/l<wbr>istinfo/synth-diy</a><br>
</blockquote>
______________________________<wbr>_________________<br>
Synth-diy mailing list<br>
<a href="mailto:Synth-diy@synth-diy.org" target="_blank">Synth-diy@synth-diy.org</a><br>
<a href="http://synth-diy.org/mailman/listinfo/synth-diy" rel="noreferrer" target="_blank">http://synth-diy.org/mailman/l<wbr>istinfo/synth-diy</a><br>
</div></div></blockquote></div><br></div>