====== GSoC 2025: Sound Open Firmware project ====== [[:gsoc:google-summer-code-2025|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ====== Sound Open Firmware ====== Sound Open Firmware (SOF) is an open source audio digital signal processing firmware and driver infrastructure. Is the first fully open source BSD/MIT-licensed audio firmware. The SOF firmware and drivers are platform- and architecture-agnostic. The SOF project provides firmware source code, tools, and debug capabilities for developers to innovate and enhance production devices for all Linux based operating systems. ==== Sound Open Firmware Community ==== Website - https://www.sofproject.org/ Git - https://github.com/thesofproject/ Documentation - https://thesofproject.github.io/latest/index.html Discord - https://discord.com/invite/Ck7jw53nU2 (see #sof channel) Watch this if you are new to SOF - [[https://www.youtube.com/watch?v=vwDoEumA1Mo | Sound Open Firmware introduction]] Code Licenses - BSD/MIT ===== Project Proposals ===== ===== Project 1: Enhancing the SOF Demo GUI for Improved Usability and Functionality ===== //1 contributor medium-size (175 hours)// //Level of difficulty//: Intermediate [[https://www.sofproject.org/|Sound Open Firmware (SOF)]] is an open source audio digital signal processing (DSP) firmware and an SDK that together provide infrastructure and development tools for developers working on audio or signal processing. More on this, you can find here: https://thesofproject.github.io/latest/introduction/index.html SOF has support for NXP, Intel, AMD and Mediatek targets. SOF comes with a set of runtime tools - command line applications that can be used to exchange data with running firmware and a demo GUI. The current GUI, while functional, lacks some modern usability features and doesn’t fully exploit the potential of SOF’s advanced capabilities. {{ :gsoc:sof_gui.jpeg?200 |}} This project aims to improve and enhance the SOF Demo GUI, which is used to demonstrate and control SOF components on hardware. The goal is to add new features, improve the user interface, and enhance the overall usability and functionality of the GUI. This project will focus on creating a new version of the GUI with the following key improvements: - Redesign the GUI to make it more intuitive and user-friendly; - Implement a modern and responsive design using the latest GTK features; - Display a real-time frequency spectrum to visualize the audio signal's frequency content; - Provide step-by-step tutorials to guide new users through the features of the GUI. This will involve working with the existing codebase, implementing new features, and optimizing the current functionalities. This project will provide a more powerful and user-friendly tool for demonstrating and controlling SOF components, benefiting developers and users in the audio processing community. The enhancements will make it easier for new users to get started with SOF, while providing advanced features for experienced users. **Expected Outcomes:** * A significantly improved SOF Demo GUI with enhanced usability and functionality. * Comprehensive documentation and tutorials to help users understand and utilize the new features. * A robust and well-tested codebase that can be easily maintained and extended in the future. * Submit all enhancements back to [[https://github.com/thesofproject/sof|SOF]] **Skills Required:** * Python programming * C programming * GTK and GUI development * Familiarity with version control systems (e.g., Git) **Mentors:** * Iuliana Prodan - iuliana.prodan@nxp.com * George Stefan - george.stefan@nxp.com ===== Project 2: Add Virtual DAI component to SOF ===== //1 contributor medium-size (175 hours)// //Level of difficulty//: Intermediate We want to have a Virtual DAI for two reasons: * debugging and rapid prototyping. We want to be able to create a quick audio pipeline without using a real DAI device. * first step in implementing a software loopback pipeline that will help implement a memory to memory processing pipeleline The DAI should have two directions: * playback -> just get the data from source and do 'consume' it. Similar with /dev/null. * capture -> generate data (zeroes or some patterns) and send it to sink. Similar with /dev/zero or /dev/urandom **Expected Outcomes:** * SOF Virtual DAI component implemented and merged upstream * Simple pipeline with playback and record working * Virtual DAI will log output frames and throw them out * Record will generate frames filled with zeroes **Skills Required:** * C programming * Familiarity with version control systems (e.g., Git) **Mentors:** * Daniel Baluta