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

Jay Schwichtenberg jschwich53 at comcast.net
Wed Jun 27 23:37:13 CEST 2018


There is a STM32F769I-DISC1 Discovery board that does not have the display
for $49 at mouser.

At some point I'm hoping to get my STM32F769I Disco and STM32F767 Nucleo
boards going. Those and the Raspberry Pi Zero, Teensy 3.6s and a couple
more.

At some point (and I can't find it now, thinking it might have been in
electro-music.com) I read that someone was using a development board (might
have been a Disco board) or Raspberry Pi with a display with no display
controller and was having problems with audio. The display sucked up so much
CPU time and memory that you had to drop the audio rate to something pretty
slow.

Jay S.

-----Original Message-----
From: Synth-diy [mailto:synth-diy-bounces at synth-diy.org] On Behalf Of Scott
Gravenhorst
Sent: Tuesday, June 26, 2018 10:46 AM
To: synth-diy at synth-diy.org
Subject: Re: [sdiy] STM32 (or other) audio DSP learning recommendations


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
>
>
>--_000_MW2PR12MB24588BA40CA6F12937593A91B3490MW2PR12MB2458namp_
>Content-Type: text/html; charset
>Content-Transfer-Encoding: quoted-printable
>
><html xmlns:v="urn:schemas-microsoft-com:vml" 
>xmlns:o="urn:schemas-microsoft-com:office:office" 
>xmlns:w="urn:schemas-microsoft-com:office:word" 
>xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" 
>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 
>{mso-style-type:personal-compose;
>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>B 
></o:p></p> <p class="MsoNormal">Ib



More information about the Synth-diy mailing list