Welcome to the Software_OSCAR_P01A01 repository, which implements
the complete software stack for the OSCAR_P01A01 effects pedal.
👉 https://github.com/DADDesign-Projects/OSCAR_P01A01
This project is part of the DADDesign-Projects ecosystem, built on the FORGE framework and supported by dedicated utilities such as the QSPI Flasher Client and the TrueType-to-Bitmap converter.
By relying on the FORGE framework, the software handles all
low-level hardware configuration and management required by the OSCAR
pedal:
Clocks, GPIO, SDRAM, QSPI Flash, Audio CODEC, display, switches,
encoder, USB, MIDI, and more.
The project is built using STM32CubeIDE from STMicroelectronics:
👉 https://www.st.com/en/development-tools/stm32cubeide.html
- Clone the repository
git clone --recurse-submodules https://github.com/DADDesign-Projects/Software_OSCAR_P01A01
Load the files from the Resource directory into the external flash drive. Use the QSPI Flasher utility: https://github.com/DADDesign-Projects/OSCAR_P01_FlasherLoader
-
Open in STM32CubeIDE Start STM32CubeIDE
Import → Existing Projects into Workspace → Select the cloned folder -
Build & Debug
- Use an ST-LINK or compatible debug probe
- Or flash via USB DFU: hold BOOT + RESET, release RESET then BOOT → pedal enters DFU mode
Modifications applied to CubeMX-generated files are marked with the
DAD comment.
Core application code, almost entirely generated by CubeMX.
Includes a redirection hook to HardwareAndCo after base hardware
initialization.
the OSCAR software stack is built upon the DAD_FORGE framework
(Framework for Open and Resourceful Guitar Effects):
👉 https://github.com/DADDesign-Projects/DAD_FORGE
FORGE provides all the abstraction layers, modules, and real‑time audio structures needed for embedded digital audio systems.
Documentation and tutorials for framfork FORGE available here: (https://daddesign-projects.github.io/OSCAR_Documentation/)
CubeMX‑generated hardware drivers.
➡️ No modifications done here.
All hardware-specific configuration and FORGE module instantiation required for OSCAR_P01A01.
ST USB middleware: DFU, MIDI, CDC, and USB Device stack handling.
USB Device-specific code, including a custom callback in usbd_cdc_if.c for USB data reception.
- Software_OSCAR_P01A01.ioc
Main CubeMX file: clocks, peripherals, pins, middlewares, hardware configuration. - To adapt CubeMX output for a
main.cppC++ project: - c2cpp.bat → Renames
main.c→main.cpp - cpp2c.bat → Renames
main.cpp→main.c
-
STM32H743IITX_FLASH.ld Memory layout when running from internal Flash (Release mode)
-
STM32H743IITX_RAM.ld Memory layout when running from RAM (Debug mode)
Project visual assets: bitmaps, fonts, images for the display. Ressources files must be written to the external QSPI Flash memory using the flasher utility: (https://github.com/DADDesign-Projects/OSCAR_P01_FlasherLoader)
This project is licensed under the Apache 2.0 License (https://opensource.org/licenses/Apache-2.0).
- OSCAR_P01A01: https://github.com/DADDesign-Projects/OSCAR_P01A01
- DAD_FORGE: https://github.com/DADDesign-Projects/DAD_FORGE
- OSCAR_P01_FlasherClient: https://github.com/DADDesign-Projects/OSCAR_P01_FlasherLoader
- TrueType-to-Bitmap-Converter: https://github.com/DADDesign-Projects/TrueType-to-Bitmap-Converter
- Daisy_QSPI_Flasher_Server: https://github.com/DADDesign-Projects/OSCAR_Flasher_Server
Feel free to contact me for any questions, feedback, improvement suggestions, or collaboration proposals related to the FORGE framework or the OSCAR hardware platform. I am always open to discussion and community contributions (daddesign.projects@gmail.com).