Frantz’s Status Report for March 29

This Week’s Accomplishments:

This week, I began programming in C++. I first created functions to extract samples from a .wav file and create a new .wav file using a list of samples. This allows us to easily test our algorithms using imported sound files. Then, I began reworking the pitch-shifting algorithm in C++. I am modifying it so it completes the task in chunks, which is vital for outputting data in real time with minimal latency. I tried importing the FFT library “shy_fft,” but it doesn’t seem to work properly. After a lot of troubleshooting, I switched to “FFTW.”

Additionally, I ordered a micro-USB cable with data transmission for connecting our microcontroller to a computer.

Status:

Our schedule is on track, but time is getting tight. We will stay diligent to complete our project satisfactorily.

Next Week:

Next week, I will continue rewriting the phase vocoder algorithm for real-time use in C++. I will test the FFTW import to ensure that it works properly. When I am done, I will start writing the delay algorithm.

Nick Status Report 3/29

This week, I was unable to work much, as I was sick and had a major lab for another class. With the time I had, I researched some other daisy projects to make a plan for the device code for our pedal, so that we can start integrating everything. My progress is slightly behind because of the setbacks from this week, but I have plenty of time in the next two weeks to make up for it. Next week, I hope to get the base of the main code done so that we can test the code Chaitanya has been working on with our audio processing code, and I also hope to get the 3D model finished if the PCB is done in time.

Team Status Report for March 29

Primary risks involve not being able to get the systems integrated on time. Josie has made good progress prototyping the pitch shifting and delay features in python and is working to get them in C++ for the microcontroller. Chaitanya is looking to wrap up prototyping with the Daisy Seed and I/O components on breadboard in the coming week. Nick has preliminary casing 3-d models. The integration of these different parts will, therefore, be our next challenge. We are looking to address this next week once all of the different subsystems are fully functional. This will involve extensive discussion on the interfaces of our separate modules and a push in the next few weeks to experiment amongst our different parts.

No changes to the existing design. Potential changes could be made to the hardware in case there isn’t enough time for the PCB and the breadboard implementation is working (which seems to be the case at this point). Schedule should be sufficient but we will be heavily emphasizing system integration in this final chapter of our project. Please reference individual status reports for detailed pictures/diagrams of our individual progress.

Chaitanya’s Status Report for March 29

This week, I continued working on the PCB design. I attempted to resolve issues regarding the pinouts provided on the data sheet with Gordon but decided that testing of the physical component was the most efficient way of matching the schematic pins to physical pins for components that had vague data sheets. However, since there was an extensive delay in getting our components despite putting an order weeks ago (just got them on Wednesday), my progress at the beginning of the week was hindered. Once I got the components, I immediately started on the breadboard prototype. My goal for this week was to understand the pinouts of all components and set up the breadboard prototype with the daisy seed mounted. I was able to successfully test and identify the the functionality of all pins for all components. I did this using the DC power supplies in Tech Spark and an LED to verify that buttons, switches, and 7-segment display were working. Here is my current progress on the breadboard. The headerpins came with the daisy seed. We originally ordered a non-soldered microcontroller, but ordered another one recently with soldered header pins.

The delay in getting the components halted my progress on the PCB as I couldn’t proceed for some of the buttons until I was confident which pins in the schematic corresponded to the schematic pins. It also delayed my progress on the prototype. Hence, I am slightly behind schedule. My plan is to establish a connection between the daisy seed (goes on top of the header pins in the picture) and the I/O components by displaying print statements everytime an interaction with a button, switch, etc. occurs. I would like to be able to demo this during next week’s interim demos. However, we are also waiting on the the micro-usb cable used to program the Daisy. We had originally thought we placed an order, but when it didn’t come with the rest of the components, we realized that it was not placed and immediately placed another one. I strongly believe that my connections in the picture above are correct as I tested them with DC power supply/LED successfully. Hence, the primary concern is familiarizing myself with the daisy interface. While Josie will be primarily in charge of the 2 features of our pedal and getting them working with the microcontroller, I need to be able to program I/O features using the interface.

Given the limited amount of time we have at this stage, I will be heavily investing my time in getting a breadboard prototype fully functional over the next week. The PCB will serve as a bonus version of the prototype but getting a basic implementation working is my first priority. Once I am able to set up the Daisy Seed GPIO connections, I hope to resume work on the PCB, fixing the connections in the schematic/layout according to the testing of the physical pins I completed this week and early next week.

 

Frantz’s Status Report for March 22

This Week’s Accomplishments:

This week, I have written the phase vocoder algorithm in Python. It successfully shifts our test tone by a given number of semitones up or down. There are currently some harmonics introduced in the process that I will need to debug, but the output is coherent. I also tested the input levels coming out of a guitar using an oscilloscope. I noticed that there is a significant amount of noise above the threshold of human hearing. So, we decided that we can use a simple RC filter to remove the noise before the signal gets input into the Daisy Seed. This should avoid any issues with aliasing. We also completed part of the Ethics Assignment this week.

Status:

Now that the phase vocoder pitch shifter works, progress is back on track.

Next Week:

Next week, I will start rewriting the phase vocoder algorithm in C++. Notably, for real-time input, I will need to use a circular buffer to store the signal while each batch is being operated upon. I will determine if I need to write a fast Fourier transform algorithm or if we can import a (or use an already-imported) library.

Nick Status Report 3/22

 

This week, we started by doing part 4 of the ethics assignment Monday. Then, I made the base of the 3D model for the pedal housing to confirm the initial design ideas with the group Wednesday. I can’t add the holes for the components yet, as the PCB layout isn’t complete yet, and will be mounted to the other side of the faceplate, but I discussed more with the 3D printing lab to ask about restrictions and design requirements so that I can add the I/O holes and send out the designs for printing once the PCB is finished. In lab Wednesday, we discussed the initial model and tested our audio input component to find if we needed to make any adjustments to our schematic. I also worked with Chaitanya further to fix some issues we had with the design, swapping out some parts and adding some components to deal with pin issues on our microcontroller. We are mostly on schedule, although we are having to shift some parts of the schedule around due to some work relying on other work to be completed. Next week, I will start on the implementation software, although one of my other classes has a major lab that will keep me busy early in the week.

 

 

Chaitanya’s Status Report for March 22

This week was dedicated to making solid progress on the PCB. We wanted to get the parts ideally by this week as the order was placed last week. Ideally, we wanted to have an initial prototype done on the breadboard this week to use as input to the PCB before sending it off. As I worked through the PCB schematic, I realized that the number of GPIO pins might be a limiting factor to the pedal surface I/O that we had. Hence, we reduced the number of pitch shifting buttons from 4 to 2. Originally, we had 2 buttons for +/-1 octave and +/-1 semitone pitch shifting. I decided to remove the +/-1 octave buttons to free up some GPIO pins. After discussing with Nick, he also looked into 7-segment displays with potentially less pins. He found a 12-pin display that I downloaded an updated my schematic with. I was able to go through the datasheet for each component and figure out which pins corresponded to what functionality. After doing so, I was able to make the appropriate connections to the Daisy Seed microcontroller. I was able to get the schematic done for the pitch adjustment buttons, mode switch, and beat/pitch LED buttons rotary encoders, and ON/OFF LED. I also realized that I needed pull-up and pull-down resistors to make sure that I was sending good 1’s and 0’s. I added these in, adding 10kOhm resistors going into the GPIO pins and 10kOhm resistors for switch pins that were not ON. Please see the my current schematic progress:

I think my progress is back on track. I had doubts last week given my unfamiliarity with KiCad, but I spent a lot of time this week watching tutorials and reading the datasheets multiple times to get a solid understanding of the hookups. After getting most of the schematic done, I am more confident in the timeline to get the PCB out.

I still have to quickly do the hookups for the 7-segment display and 2-mode switch for selecting 3 vs. 4 beats. I have already looked through the datasheets to verify that the parts are good and that I have a solid understanding of the pins in the schematic. My next steps are to clarify some of the datasheet pinouts to make sure my hookups are correct. I will set up a time with Gordon early next week and finalize the schematic shortly after. Once this is done, I need to quickly place and route in the layout view and use Gordan’s help to get the PCB out as soon as possible. Hopefully, by the end of next week, I should have a nearly complete layout that can be sent out.

Team Status Report for March 22

Most of our risks still lie in the PCB manufacturing. Chaitanya is working to get the PCB schematic/layout out. We are mitigating this risk by having a functional breadboard-based implementation. All components have been ordered over a week ago, and we should have them early next week to make connections. The risks on the software side lie primarily in making our code compatible with the Daisy Seed microcontroller. Josie has been able to get functioning pitch shifting and delay algorithms to work using Python. The group was able to verify that the functionality of these algorithms. Adapting these algorithms to meet the Daisy Seed specs is the primary concern. We will have to make sure we are comfortable using memory and any other blocks on the Daisy. Having a working prototype in python is our main form of mitigation as it gives us a base for developing our C++ program for the microcontroller.

A few changes were made on the hardware side. With a lot of the schematic done for the PCB, we realized that there may not be sufficient GPIO pins for all of our components. Hence, we made a few small modifications to the user interface of the pedal (buttons, switches, etc. on the outer surface of the pedal casing). This included reducing the buttons the user can use to specify the amount to pitch shift. Previously our design had 4 buttons – 2 for shifting by +/-1 octaves and 2 for shifting +/-1 semitones. We removed the octave buttons. While a slight inconvenience to the user, functionality is preserved. In addition, we found a 7-segment display that required fewer pins to ensure that it didn’t take up an unnecessary number of GPIO pins on the microcontroller. These changes should not impact functionality, so we deemed them appropriate. These changes have not impacted our timeline as the PCB has not been sent out yet. Please reference individual status reports for progress screenshots.

Chaitanya’s Status Report for March 15

This week, I spent the majority of my time working with Nick to finalize the hardware design. This consisted of making a clear list of materials with digikey links to identify which components were available to implement our design and ideas. The list can be seen here:

This process included going through our design from our design report/presentation, listing out all of the components of our pcb (and other things we needed), and finding the proper components in DigiKey based on desired functionality.  We found all the components we needed and Nick put in the list mid-week. In addition, I have continued progressing on my PCB design. I had to watch a few videos on how to interact with KiCad as it is a new EDA tool. However, I was able to successfully download several of the components from DigiKeys and put them in my schematic. Now that I have overcome that initial obstacle, I am fairly confident in wrapping up the design within the next week or so. Nick and I also met outside of class time to decide any additional hardware changes we need to make before sending our PCB for fabrication. Last week, during our meeting with Professor and TA, we were told to consider some hardware to ensure that our input and output voltage match what is needed by the guitar input and the output. One concern that came up in our meeting was anticipating the proper hardware for this and including it in our PCB. We decided that we were going to have a separate breadboard (very small) inside our casing to handle this to prevent further delay in getting our PCB out. I also completed Steps 1-2 of the Ethics assignment and discussed Step 3 with my team. We have made our Slack submission and are ready for the discussion on Monday.

I am starting to fall slightly behind in my progress. I should be able to catch up given the progress of this week as I now have all components in my KiCad library and simply have to wire everything and double check the Daisy Seed Specs. I should be able to wrap this up hopefully within the next week. In addition, Nick and I will be putting together the prototype next week on breadboard or devboard (we have both – depends on which we find easier). All components should be coming next week. Our goal is to have an initial physical implementation of our hardware design within the next week.

Frantz’s Status Report for March 15

This Week’s Accomplishments:

This week, I completed the time-stretching portion of the pitch-shifting algorithm. I have started the phase vocoder portion as well, which is vital to keeping the sound coherent. I also completed Steps 1-3 of the Ethics Assignment. I discussed next steps with my team.

Status:

My progress is still slightly behind schedule, but since this week was scheduled as slack time, I have caught up a bit. The pitch shifter is unsurprisingly difficult, and I will need to focus significantly on the circular buffer used in making this a real-time operation.

Next Week:

Next week, I will complete and test the phase vocoder algorithm in Python, and I plan to begin the process of rewriting it in C++. My team and I will also test some of our materials with an oscilloscope in the lab. I will bring my guitar and some cables in provide input signals for this testing.