[sdiy] Microcontrollers for eurorack use... What to use?
Olivier Gillet
ol.gillet at gmail.com
Sun Jan 4 03:55:30 CET 2015
Hi Chris,
> Olivier, how would you suggest one get started with the STM32 chips?
My preferred way of programming is with a text editor and a command
line (invoking make, debugging with gdb, processing data/traces
produced by programs in a python shell). Mostly because I test a lot
of functionality by running the code on my own machine rather than on
the target hardware. It might not be to everybody's taste and is much
easier to practice on OS X or Linux. There are solutions (cygwin) to
get a similar environment on Windows - though I don't know how
practical it is. If you aren't already, get familiar with all this
stuff - the command line, makefiles, invoking a compiler from the
command line, writing a simple C "hello world" program (for your own
machine, not for an embedded target) and compiling it from a makefile.
Then I see several options:
* I personally started with this dev board ->
https://www.olimex.com/Products/ARM/ST/STM32-H103/ and an Olimex JTAG
programmer -> https://www.olimex.com/Products/ARM/JTAG/ARM-USB-OCD-H/
. My makefiles / programming scripts are there ->
https://github.com/pichenettes/stmlib ; and i have blink for F1 and F4
here -> https://github.com/pichenettes/stmlib-examples
* Get an STM32F4 Discovery board, compile your programs from the
command line and use ST-link to upload it to the discovery board
(http://jeremyherbert.net/get/stm32f4_getting_started). There are a
few synth projects for this board and minimal external hardware
(https://github.com/MrBlueXav/ambiantiseur).
* Sounds like bad advertising, but you could do worse than get one of
my Eurorack products (For F1: Yarns, Peaks, Tides, Frames, Braids,
Streams ; for F4: Clouds, Elements), an USB<->FTDI cable or a JTAG
box. The way the code is built and sent to the device is explained
here (http://mutable-instruments.net/modules/tides/open). Try hacking
the code, see how things are done... This might be helpful if the
thing you want to build has similar I/O requirements as one of my
products.
* Similarly, you could get the OWL pedal http://hoxtonowl.com/ and
hack at it (https://github.com/pingdynasty/OwlWare)
Best,
Olivier
On Sun, Jan 4, 2015 at 3:10 AM, Chris McDowell <declareupdate at gmail.com> wrote:
> Olivier, how would you suggest one get started with the STM32 chips? I’ve always stuck to what I could accomplish within the Arduino IDE, but would really love to “level up”. I bought one of the mbed-enabled nucleo dev boards from ST and really enjoy the extra horsepower, but I don’t want to rely on the mbed environment for developing any actual products. A nudge in the right direction would be much appreciated! :)
>
>
>
>> On Jan 3, 2015, at 7:20 PM, Olivier Gillet <ol.gillet at gmail.com> wrote:
>>
>> I've been using the STM32F4s in two modules I have recently announced
>> (Elements and Clouds), and have three more down in the pipe. I love
>> working with these for the following reasons:
>> * Easy to code with, using open-source tools (gcc-arm-none-eabi and
>> gdb) and a classic CLI/editor workflow.
>> * Relatively easy to interface with an audio codec IC.
>> * Code execution from flash is fast (unlike the STM32F1...).
>> * 32-bit floating point unit with fused multiply-add, hardware
>> division, square root and absolute value.
>> * GCC generates very good quality code from C/C++. We're reaping the
>> benefits of the popularity of ARM and the collective effort spent on
>> compilers...
>> * Lots of flash memory.
>> * Low power consumption. A complete module (MCU + Codec + op-amps for
>> audio and CV conditioning + blinkenlights) for 100mA.
>>
>> A few caveats:
>> * Small amount of internal SRAM (192kb on STM32F407, 256kb on STM32F427).
>> * Internal ADC needs software processing (averaging/low-pass
>> filtering) to get decent resolution. Certainly not for audio, OK for
>> CVs in the low kHz rate.
>> * I2S clock is always 256fs, which can be a problem with some codecs
>> to reach some sample rates.
>>
>> I haven't tested the external memory interface - the STM32F429 has a
>> controller for SDRAM which might be a good option for your looper
>> (older parts only support SRAM).
>>
>> For synthesis applications, one can get a lot of work done. In my
>> modules or through benchmarks, I got them to run:
>> * ~100 zero-delay SVF at 48kHz.
>> * ~100 basic wavetable oscillators at 48kHz.
>> * A 16-band vocoder and several wavetable oscillators at 48kHz (lower
>> bands downsampled to 8kHz).
>> * 8x 4-op FM voices with oversampling at 96kHz.
>> * A mono phase-vocoder with 25% overlapping at 48kHz.
>> * Waveshaping/wavefolding/ringmod algorithms at 96kHz with 8x
>> oversampling (768kHz).
>> * A simple reverb (a dozen APs, 2-3 modulated delays/APs) uses 10% of
>> the CPU at 48kHz.
>>
>> All of these were from C++ code - but I studied the generated machine
>> code carefully and very rarely found inefficiencies.
>>
>> On Sun, Jan 4, 2015 at 12:42 AM, Paul Perry <pfperry at melbpc.org.au> wrote:
>>> Thanks Scott, that is is line with what a friend said, he had
>>> single one taking 200mA (non-music application, but flat out.)
>>>
>>> paul perry Melbourne Australia
>>>
>>> ----- Original Message ----- From: "Scott Gravenhorst"Subject: Re: [sdiy]
>>> Microcontrollers for eurorack use... What to use?
>>>>
>>>> I don't have a precise answer for this, however, I've successfully powered
>>>> 4 dsPICs (28 pin DIP) from a single 1 ampere 3.3volt supply. three of the
>>>> dsPICs were doing audio, one was acting as a MIDI controller talking to two
>>>> of the others as voice engines over SPI.
>>>>
>>>
>>> _______________________________________________
>>> Synth-diy mailing list
>>> Synth-diy at dropmix.xs4all.nl
>>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at dropmix.xs4all.nl
>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>
More information about the Synth-diy
mailing list