Firmware spelunking
This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.
Overview
The drumsynth firmware (ie., not the interface board) is divided into a few logical parts: the hardware handling, the communications interfaces (MIDI via UART and USB, SD over SPI), the sound generation and the sequencer.
Files and folders
├── AudioCodecManager │ ├── AudioCodecManager.c │ └── AudioCodecManager.h ├── config.h ├── datatypes.h ├── DSPAudio │ ├── 1PoleLp.c │ ├── 1PoleLp.h │ ├── automationNode.c │ ├── automationNode.h │ ├── BufferTools.c │ ├── BufferTools.h │ ├── CymbalVoice.c │ ├── CymbalVoice.h │ ├── Decay.c │ ├── Decay.h │ ├── distortion.c │ ├── distortion.h │ ├── dither.c │ ├── dither.h │ ├── DrumVoice.c │ ├── DrumVoice.h │ ├── HiHat.c │ ├── HiHat.h │ ├── lfo.c │ ├── lfo.h │ ├── mixer.c │ ├── mixer.h │ ├── modulationNode.c │ ├── modulationNode.h │ ├── Oscillator.c │ ├── Oscillator.h │ ├── random.c │ ├── random.h │ ├── ResonantFilter.c │ ├── ResonantFilter.h │ ├── Samples.c │ ├── Samples.h │ ├── SlopeEg2.c │ ├── SlopeEg2.h │ ├── snapEg.c │ ├── snapEg.h │ ├── Snare.c │ ├── Snare.h │ ├── squareRootLut.c │ ├── squareRootLut.h │ ├── transientGenerator.c │ ├── transientGenerator.h │ ├── transientTables.c │ ├── transientTables.h │ ├── wavetable.c │ └── wavetable.h ├── globals.h ├── hardfaultHandler.c ├── hardfault.S ├── Hardware │ ├── cs4344_cs5343.c │ ├── cs4344_cs5343.h │ ├── FIFO.c │ ├── FIFO.h │ ├── SD_FAT │ │ ├── diskIo.c │ │ ├── diskio.h │ │ ├── ff.c │ │ ├── ffconf.h │ │ ├── ff.h │ │ ├── integer.h │ │ ├── SD_Manager.c │ │ ├── SD_Manager.h │ │ ├── SD_routines.c │ │ ├── sd_routines.h │ │ ├── SPI_routines.c │ │ └── SPI_routines.h │ ├── TriggerOut.c │ ├── TriggerOut.h │ └── USB │ ├── usb_bsp.c │ ├── usbd_desc.c │ ├── usbd_desc.h │ ├── usbd_usr.c │ ├── usb_manager.c │ ├── usb_manager.h │ ├── usb_midi_core.c │ └── usb_midi_core.h ├── main.c ├── MIDI │ ├── frontPanelParser.c │ ├── frontPanelParser.h │ ├── MidiMessages.h │ ├── MidiNoteNumbers.h │ ├── MidiParser.c │ ├── MidiParser.h │ ├── MidiVoiceControl.c │ ├── MidiVoiceControl.h │ ├── ParameterArray.c │ ├── ParameterArray.h │ ├── Uart.c │ ├── Uart.h │ └── valueShaper.h ├── SampleRom │ ├── flash_if.c │ ├── flash_if.h │ ├── SampleMemory.c │ └── SampleMemory.h ├── Sequencer │ ├── clockSync.c │ ├── clockSync.h │ ├── EuklidGenerator.c │ ├── EuklidGenerator.h │ ├── sequencer.c │ ├── sequencer.h │ ├── SomData.c │ ├── SomData.h │ ├── SomGenerator.c │ └── SomGenerator.h ├── startup_stm32f4xx.S ├── stm32f4xx_conf.h ├── stm32f4xx_it.c ├── stm32f4xx_it.h └── system_stm32f4xx.c