Tasks

Here is a breakdown of each task in the design process and a breakdown of what the goals and deliverables for each task are. The schedule changes dynamically so start and end dates are more tentative.

Task 1: Learn about autotuning theory and implementation (90%)

This has no real deliverables and it is hard to nail down a specific completion point, since throughout the process of working on this project I am constantly learning new things about audio signal processing.

Task 2: Select and purchase hardware (75%)

This task involved developing a list of materials I will need to build the autotuner and researching the most cost efficient hardware that fits my needs. The main pieces I need for this project are a processor, an audio in source (microphone), a power supply, and an audio out source. As of now I have selected the Raspberry Pi 2B+ as my processor, as it is powerful enough to execute the needed calculations in real-time and low cost compared to other equally suited processors. The microphone I selected in a Kinobo 2.0 USB. The reason I choose this is because it is very small and fits well into the aesthetic I envisioned for this project, and it is also very inexpensive compared to other options. As for the power supply and audio out, as of right now I am using a iPhone power converter with the micro USB to supply power to the RPi and headphones for the audio out. Later in the process I will purchase better hardware to finish the portable functionality I am aiming for.

Task 3: Build a MATLAB algorithm model (95%)

The MATLAB algorithm model I am using was found online here (ADD LINK LATER). The code was good for the most part, but needed a few key changes to make it run. The updated code can be found at this projects GitHub page here, along with all other code from the project thus far. The MATLAB code uses a PSOLA algorithm to correct the input audio pitch. A full overview of the PSOLA algorithm can be found in the previous post on this site.

Task 4: Integrate and bring up hardware system (100%)

After the Raspberry Pi was delivered, I installed Raspbian on it, a Linux based OS created specifically for Raspberry Pis. Then, I installed Code::Blocks, a programming environment for C, the language I plan on using for this project.

Task 5: Create real-time software architecture (80%)

Currently I am in the process of finishing up this task. most of this task involves creating flow diagrams, hardware drawing, UML diagrams, and software architectures.

Task 6: Port algorithms to C and coding real-time software and managing I/O (10%)

Current priority work for this task includes writing a startup script to run my program on boot for the RPi, and creating a program which takes the audio in from the Kinobo and sending it to the 3.5 mm audio out jack, unchanged. After figuring that out, the next step will be to start porting the code from MATLAB over to C.

Task 7: Software verification and error handling (0%)

Not yet started.

Task 8: Documentation