"thank you for being interested in creative electronic music."

About Us

DIYDSP.com is run by Noah Vawter and a select few, trusted collaborators. 

We are obsessed with building electronic music instruments using DSP techniques for the next century.  We seek ways to synthesize every sound imaginable in playable music instrument form.  

We operate by exchanging information, computer code and hardware designs that put this power into the hands of instrument designers and musicians. 

 Below is a lot of information about our current favorite CPU, the STM32F4.  When we first discovered this CPU, it was so searing hot, there was no time to give it its own page, so info on it was shared here.  Since then, it's moved to the main STM32F4 page, where there's even more up-to-date info.  It's Happening.

 Also, if you are in Somerville MA and looking for co-working/hackerspace/makerspace, Join the Pirateship!


Synthesizers based on STM32F4





Related Products



STM32F4 Development Boards



Free DSP Tutorials




STM32F4 Tutorials

by http://diydsp.com


1. Installing a complete set of Gnu tools on Linux (Ubuntu 10)
2. Porting mandel.c from libopencm3 to the Cerb40
3. Threads about the STM32F4 and its Discovery board
4. Reference materials, datasheets, and simliar documents
5. Timer examples with libopencm3
6. Wikis and other websites and threads about it.
7. ADC source code


1. Installing a complete set of Gnu tools on Linux (Ubuntu 10)

This is a set of GNU/Linux instructions for developing for stm32f4.  They include the hard floating-point support in the compiler.

1. Install the gcc compiler, a.k.a. arm-none-eabi-gcc

Prepare by installing necessary libraries:
sudo apt-get build-dep gcc-4.5 git zlib1g-dev python-yaml
sudo apt-get install libexpat1 and libexpat1-dev

Go here: https://github.com/esden/summon-arm-toolchain

git clone https://github.com/esden/summon-arm-toolchain.git

cd summon-arm-toolchain

./summon-arm-toolchain SUDO=sudo

2. Install st-util, a simple, free open debugger that works with arm-none-eabi-gdb:
Go here: https://github.com/texane/stlink
git clone https://github.com/texane/stlink.git
sudo make install

3. Get libopencm3 and its examples:

Go here: http://www.libopencm3.org/wiki/Main_Page
git clone git://github.com/libopencm3/libopencm3.git
cd libopencm3
sudo make install

4. Go into the examples and try and build some programs.

5. Debug programs in the debugger
Use these instructions:

2. Porting libopencm3's mandel.c demo from to the Cerb40


libopencm3 comes with example code to generate an ASCII mandelbrot set on the STM32F4 discovery board. However, it won't run on a stock CERB40, "Since the Discovery kit has an 8 MHz crystal while the FEZ Cerberus has a 12 MHz one."  Follow that link to see more info.  In my example below, I simply run using the HSI (High-Speed Internal clock).  Notice how I was wrong about there being no external crystal on the Cerb40...


Come join us at http://webchat.freenode.net/ sometime and channel #libopencm3

[22:27] <diydsp> so, I am curious if there are any Cerb40 developers out there?
[22:28] <diydsp> I ported mandel.c from examples/stm32/f4/stm32f4-discovery to the cerb40.
[22:28] <diydsp> I have the changes  in a pastebin
[22:28] <diydsp>  the main change is to NOT switch on the HSE (High Speed External) clock because
[22:28] <diydsp> there is no external crystal on the Cerb40.  [Ed. Note: I was wrong here!!! ]
[22:29] <diydsp> I couldn't figure out the exact syntax for internal clock using libopencm3.
[22:29] <diydsp> I was able to write to the regs with simple changes to the register names that I'm sure most devs know quite well.
[22:29] <diydsp> Here is the pastebin:
[22:30] <diydsp> If anyone has any suggestions on how i could re-write that to use the libopencm3 to configure the internal clock that would be useful :)
[22:30] <diydsp> In the meantime I'm off to write my application


1. Make these changes to mandel.c:



3. Threads about the STM32F4 and its Discovery board


4. Reference materials, datasheets, and simliar documents


5. Timer examples with libopencm3


6. Wikis


How to reprogram the STM32F4 via Dfuse:

  1. Step-by-step how-to
  2. AN2606    STM32™ microcontroller system memory boot mode
  3. AN3156   USB DFU protocol used in the STM32™ bootloader


7. ADC example source code for ADC, especially with libopencm3
  • https://github.com/bgamari/tracker/blob/master/main.c
  • http://code.google.com/p/rayaairbot/source/browse/trunk/microcontroller/stm32/adc_.c?r=54
  • http://www.micromouseonline.com/2009/05/26/simple-adc-use-on-the-stm32/#axzz2MW4iCHm4
  • http://tech.munts.com/MCU/Frameworks/ARM/stm32f4/libs/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Project/STM32F4xx_StdPeriph_Examples/ADC/ADC3_DMA/main.c
  • http://tech.munts.com/MCU/Frameworks/ARM/stm32f4/libs/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Project/STM32F4xx_StdPeriph_Examples/ADC/ADC3_DMA/main.c
  • http://tech.munts.com/MCU/Frameworks/ARM/stm32f4/libs/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Project/STM32F4xx_StdPeriph_Examples/ADC/


Additional threads about DSP and electronic music instument design:











Powered by liveSite