[sdiy] STM32 (or other) audio DSP learning recommendations

Scott Gravenhorst music.maker at gte.net
Tue Jun 26 19:46:01 CEST 2018

Hi John,

I've worked with the STM32F746 Discovery board as well as a Nucleo board.  The
Nucleo has rather sparse devices on it meaning that at least a CODEC is needed
to make sound.  The Nucleo is a lot less expensive.  The Discovery board has a
CODEC, but also has other things that may or may not be required for DSP synth
development (such as LCD screen and others).  The "extras" make the Discovery
more expensive than the Nucleo for the same chip.  

As for high quality code, you'll have to judge that yourself, but ST provides a
set of "libraries" for free in the form of source code.  

What I found useful there are device initialization code for ARM peripheral
devices.  I found some of the code cumbersome, but it can be edited down a lot
(because it comes as source code in C).  

There are numerous projects included in the free downloads, some more useful
than others.  I didn't find the projects inside the downloads all that
informative, but I did find code on github that ultimately led to a MIDI synth
which then led to a project template that I've used to create several MIDI
synths.  The example projects from ST work, but none were synths, rather they
were smatterings of demonstrations for most of the peripherals available on the
board.  I didn't find much synth making help there to be honest - however, this
has been true for me with other hardware platforms as well.  The github project
I found most helpful was ws-ldn-12 which is a set of projects, one of which
shows a rather simple way to use the CODEC.  Probably the best thing about all
of this is that the "libraries" are not pre-compiled code with a bunch of
secrets inside, it is C source code that you can study and modify if needed.

Things like filters, vocoders, and effects like echo/flange I found on random
DSP sites, not on ST's site.  For me, once I can make a sine wave come out of a
CODEC I'm good to go.  I found www.dspguide.com to be a good place to start for
DSP basics.

Hopefully, that was helpful.

John Speth <john.speth at andrews-cooper.com> wrote:
>Hi list-
>I'd like to get myself setup and productive in experimenting with 
>audio DSP techniques and I'm looking for recommendations to get 
>started. My goal is career development (EE and SW eng) that will 
>keep me interested in continuing the project, whatever that may 
>be. I figured the SDIY crowd can recommend good dev/eval boards 
>with appropriate SW libraries. 
>My preference is STM32 based since I know the chip so well but 
>I'm interested in anything that meets these needs: 
>  *   Getting started relatively quickly (little to no soldering).
>* Excellent SW support (ported libraries, lots of configuration 
>options, high quality code, lots of examples). * Minimum cost (of 
>course but I don't want to "cheap out" either). * Covers signal 
>generation (like a synth) and audio processing (for example, 
>echo/flanging, various filters, vocoder, etc). 
>Any recommendations?
>Thanks, John Speth
>Content-Type: text/html; charset
>Content-Transfer-Encoding: quoted-printable
><html xmlns:v="urn:schemas-microsoft-com:vml" 
>xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta 
>http-equiv="Content-Type" content="text/html; charset=us-ascii"> 
><meta name="Generator" content="Microsoft Word 15 (filtered 
>medium)"> <style><!-- /* Font Definitions */ @font-face 
>{font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;} @font-face 
>{font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} 
>@font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} 
>/* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal 
>{margin:0in; margin-bottom:.0001pt; font-size:11.0pt; 
>font-family:"Calibri",sans-serif;} a:link, span.MsoHyperlink 
>{mso-style-priority:99; color:#0563C1; 
>text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed 
>{mso-style-priority:99; color:#954F72; 
>text-decoration:underline;} p.MsoListParagraph, 
>li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; 
>margin-top:0in; margin-right:0in; margin-bottom:0in; 
>margin-left:.5in; margin-bottom:.0001pt; font-size:11.0pt; 
>font-family:"Calibri",sans-serif;} span.EmailStyle17 
>font-family:"Calibri",sans-serif; color:windowtext;} 
>.MsoChpDefault {mso-style-type:export-only; 
>font-family:"Calibri",sans-serif;} @page WordSection1 {size:8.5in 
>11.0in; margin:1.0in 1.0in 1.0in 1.0in;} div.WordSection1 
>{page:WordSection1;} /* List Definitions */ @list l0 
>{mso-list-id:1570729290; mso-list-type:hybrid; 
>mso-list-template-ids:1774219494 2018134142 67698691 67698693 
>67698689 67698691 67698693 67698689 67698691 67698693;} @list 
>l0:level1 {mso-level-number-format:bullet; mso-level-text:-; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:"Calibri",sans-serif; 
>mso-fareast-font-family:Calibri; mso-bidi-font-family:"Times New 
>Roman";} @list l0:level2 {mso-level-number-format:bullet; 
>mso-level-text:o; mso-level-tab-stop:none; 
>mso-level-number-position:left; text-indent:-.25in; 
>font-family:"Courier New";} @list l0:level3 
>{mso-level-number-format:bullet; mso-level-text:\F0A7; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:Wingdings;} @list l0:level4 
>{mso-level-number-format:bullet; mso-level-text:\F0B7; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:Symbol;} @list l0:level5 
>{mso-level-number-format:bullet; mso-level-text:o; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:"Courier New";} @list l0:level6 
>{mso-level-number-format:bullet; mso-level-text:\F0A7; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:Wingdings;} @list l0:level7 
>{mso-level-number-format:bullet; mso-level-text:\F0B7; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:Symbol;} @list l0:level8 
>{mso-level-number-format:bullet; mso-level-text:o; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:"Courier New";} @list l0:level9 
>{mso-level-number-format:bullet; mso-level-text:\F0A7; 
>mso-level-tab-stop:none; mso-level-number-position:left; 
>text-indent:-.25in; font-family:Wingdings;} ol 
>{margin-bottom:0in;} ul {margin-bottom:0in;} --></style><!--[if 
>gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1026" /> 
></xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout 
>v:ext="edit"> <o:idmap v:ext="edit" data="1" /> 
></o:shapelayout></xml><![endif]--> </head> <body lang="EN-US" 
>link="#0563C1" vlink="#954F72"> <div class="WordSection1"> <p 
>class="MsoNormal">Hi list-<o:p></o:p></p> <p 
>class="MsoNormal"><o:p> </o:p></p> <p 
>class="MsoNormal">I’d like to get myself setup and 
>productive in experimenting with audio DSP techniques and 
>I’m looking for recommendations to get started.  My 
>goal is career development (EE and SW eng) that will keep me 
>interested in continuing the project, whatever that may be.  
>I figured the SDIY crowd can recommend good dev/eval boards with 
>appropriate SW libraries.<o:p></o:p></p> <p 
>class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">My 
>preference is STM32 based since I know the chip so well but 
>I’m interested in anything that meets these 
>needs:<o:p></o:p></p> <ul style="margin-top:0in" type="disc"> <li 
>class="MsoListParagraph" style="margin-left:0in;mso-list:l0 
>level1 lfo1">Getting started relatively quickly (little to no 
>soldering).<o:p></o:p></li><li class="MsoListParagraph" 
>style="margin-left:0in;mso-list:l0 level1 lfo1">Excellent SW 
>support (ported libraries, lots of configuration options, high 
>quality code, lots of examples).<o:p></o:p></li><li 
>class="MsoListParagraph" style="margin-left:0in;mso-list:l0 
>level1 lfo1">Minimum cost (of course but I don’t want to 
>“cheap out” either).<o:p></o:p></li><li 
>class="MsoListParagraph" style="margin-left:0in;mso-list:l0 
>level1 lfo1">Covers signal generation (like a synth) and audio 
>processing (for example, echo/flanging, various filters, vocoder, 
>etc).<o:p></o:p></li></ul> <p 
>class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">Any 
>recommendations?<o:p></o:p></p> <p 
>class="MsoNormal"><o:p> </o:p></p> <p 
>class="MsoNormal">Thanks, John Speth<o:p></o:p></p> <p 
>class="MsoNormal"><o:p> </o:p></p> </div> </body> </html> 
>Content-Type: text/plain; charset=s-ascii"
>MIME-Version: 1.0
>Content-Transfer-Encoding: 7bit
>Content-Disposition: inline
>Synth-diy mailing list
>Synth-diy at synth-diy.org

-- ScottG
-- Scott Gravenhorst
-- http://scott.joviansynth.com/
-- When the going gets tough, the tough use the command line.
-- Matt 21:22

More information about the Synth-diy mailing list