Synth Core B is a simplified and improved revision of "Synth Core A" the development platform I designed two years ago to create custom audio synths and music controllers. The aim of the platform is to provide all the basic resources to allow synths or controllers designers ( with C knowledge and some skills in electronics ) focusing on the application development, and relieve them from the more tedious low level design tasks. I made that revision to simplify the hardware of "Synth Core A", because it included some elements that raised the complexity and cost of the board and where not necessary at all ( in case they are, they can be connected and used through some of the I/O ports ).

So "Synth Core B" platform is a combination of hardware and software designed to develop music devices like controllers or synths and also to manage other more specialized audio devices ( DCOs, programmable audio ICs, hardware codecs ... ) , something like a generic development board focused to synths applications.

 
Synth Core B hardware includes an Atmel AVR3 AT32UC3A-512 32bit microcontroller with DSP features, and other standard elements usually found on synthesizers like MIDI, potentiometers, LCD, stereo DAC, USB ... This is the list with the most important elements on the board:
- Atmel AVR32 AT32UC3A-512, an audio focused 32-bit MCU with DSP features, 512KB of program flash and 64KB internal SRAM
- 32MB external SDRAM
- FTDI serial to USB port ( FT232RL FTDI )
- MIDI interface ( with MIDI IN, MIDI OUT, AND MIDI THRU )
- RS-232 debug channel
- Host-Device USB port
- 2 SD cards slots
- LCD interface
- 7 ADCs connectors for potentiometers ( more can be used using switching techniques )
- 40 I/O bus lines ( with USART, SPI ... ) to interface other audio processors or peripherals
- Line out - headphones preamplifier for the audio bitstream DAC
Go to download section to check Synth Core Libs or to get a copy of them in ORCAD format.
The board is designed to run SynthCoreLibs and FreeRTOs based applications. SynthCoreLibs is a set of libraries which allows using Synth Core B hardware from FreeRTOs. Combining FreeRTOs and SynthCoreLibs provides all the necessary elements to implement synths or controller applications on the board. FreeRTOs gives all the resources to build real time applications ( tasks, queues, semaphores ...) and SyntCoreLibs the drivers to access the hardware in a easier way. SynthCoreLibs includes a simple API to:
- Communicate through RS-232 channel
- Communicate through serial-USB channel
- Communicate through MIDI channel
- Decode and encode MIDI events
- Access SDs and read and write in FAT16, and FAT32 formatted cards
- Read or write into XMLs stored into the SD card.
- Access the 7 ADCs
- Get the time from RTC
- Access the 40 I/O GPIO lines
- Control alphanumerical HD44780 compatible LCDs
- Control graphical S6B0724 compatible LCDs
- A console to access the board from the HyperTerminal or Minicom
- And other configuration routines to setup the external SDRAM, the PLL ...

I've commented all the functions and parts of the code to make the project easier to understand. There are also some example routines that show how to use the different modules. Go to download section to get the sources of Synth Core Libs

As mentioned in the hardware description the brain of the board is Atmel s 32bit microcontroller AT32UC3A-512. The AT32UC3A is a complete System-On-Chip microcontroller based on the AVR32 UC RISC processor running at frequencies up to 66 MHz ( it can achieve up to nearly 100 DMIPS ). AVR32 UC is a high-performance 32-bit RISC microprocessor core, designed for cost-sensitive embedded applications, with particular emphasis on high code density and high performance. It is not the last high end microprocessor or DSP but is more than enough to build medium range synthesizers or controllers at a low development cost, you can do nearly everything with it.

AVR32 has a lot of features to highlight, some of the most important are:
- It has all peripherals found on the most modern microcontrollers like SD interface, host-device USB, Audio Bitstream DAC, SDRAM controller, USARTs, SPIs , PWMs , RTC ...
- It is also focused to audio applications ( industry uses it on USB docking stations for iPod, Memory playback systems for SD cards or USB mass storage, car radios, home audio systems, USB speakers & microphones, Keyboards and guitar amplifiers, talking applications ... )
- Development tools are completely free and can be used on Windows or Linux (the user wont have to spend large quantities of money to get a good compiler or programmer to work with it ).
- AT32UCA is very easy to find in stores like Farnell, Mouser or Digkey where you can get it at a very reasonable cost ( around 9$ )
- Atmel provides a really complete documentation, a lot of application notes, and also a lot of sample projects showing how to use the different peripherals.
- It has a strong community that has helped me a lot with some technical issues.
- It is sold with an USB bootloader on flash so a programmer is not necessary. As it uses USB, firmware downloading time is very short compared to other serial programming methods, like ISP .

 
There are still some things TODO with the board:
- I have to solve a design error I made on the audio bitstream ADC : I’m not using it in differential mode and it decreases a lot the S/N ratio ( the audio has not enough quality ).
- Despite ATMEL provides the USB drivers I still haven’t integrated them on Synt Core Libs.
- Also must test USB firmware uploading ( now I'm using a JTAG programmer ).
- Modify the comments and function descriptions to make them readable by documentation tools like Doxygen.
- At this moment Synth Core B is only a development board: I HAVE TO CREATE APPLICATIONS WITH IT !
 
. . . Label, Program & Audiovisuals Tolaemon 2012 . . .