Michelle’s status report for 5/8

This week, I worked on the final presentation slides, and I helped our teammate practice the final presentation. I also worked on editing the final demo video. The video is mostly done now, with a few segments still waiting for integration of our system to be completed. I will be working on the video tomorrow and Monday to make sure that our video is a clear demonstration for all of our work.

Next week, I will be finishing the video and working on the final report.

Michelle’s status report for 5/1

This week, I was able to successfully synthesize and hear notes being played through a speaker. So I was able to test out my unison detune design, and I made some changes on the parameters. I also did some preliminary verifications for frequency distortion, and worked on the final presentation slides with my teammates.

Next week, we will be focusing on integrating the effects we each have implemented (ADSR, arpeggiator, and unison detune) into a final complete product.

Michelle’s status report for 4/24

This week, I was able to connect the entire system. However, I am having some trouble with synthesis. I am receiving warnings about pin assignment and some entities within the design not being found, but I am using the same QSF files as my teammates. I wasn’t able to resolve these warnings.

Next week, I will be working closer with my teammates to try and solve these issues, so that I can actually test some of the design changes I have made previously.

Michelle’s status report for 4/10/21

This week, I worked on writing code for the unison detune effect (branch). I did some research online about the actual application of unison detune in commercial synthesizers, and I learned some of the different parameters and modes for configuring the effect. For one, the spacing between the detuned frequencies and the central, original frequency could be designated as:

  • standard: where the spacing is the same throughout, like: | | | | |
  • exponential: where the spacing increases as the difference between the frequency increases, like: |   |||   |
  • inverse logarithmic: where the spacing decreases as the difference between the frequency increases, like: ||   |   ||

Since we are only using one rotary knob to control the unison effect, we were not planning to implement multiple modes. I decided to write my implementation as the exponential mode, because from what I heard from some of the examples online, the resulting sound given by this mode has the most potential, and it sounds the closest to our expectation of the unison detune effect.

I am on schedule so far. My stereo decoder is still on its way, and it will hopefully arrive soon. After receiving the necessary board elements for playing audible sound, I will be able to tune the parameters more easily. Next week, after integration, we will be done with our third checkpoint. After that, we can start on our fourth checkpoint of implementing the arpeggiator effects.

Michelle’s status report for 4/3/21

This week, I finished running simulations of the waveform oscillator of all four types of waves and merged my code (one of the commits). I also fixed some issues within the code, for example, I was using multiple clocks in always blocks.

However, synthesis on the board is not compiling successfully when my teammate tried to do so. I took time to set up the synthesis environment on my local machine, and I will try to look into the issue.

Because of the hardship we faced in using the MIDI breakout board, I also did some investigation on connecting the MIDI keyboard directly to the FPGA via USB.

I am on schedule. Next week, we will be moving into the third checkpoint. I will try to get different sounds playing from the four types of waveforms, then I can start on the implementation of the unison effect.

Michelle’s status report for 3/27

Our group started off this week’s discussion by going over my approach for the sine oscillation, and we found out that my original design for creating the look-up tables was not appropriate for our purpose. Specifically, I originally only stored 256 distinct values for a sine wave in the LUT, and since we are aiming for an output frequency of 44.1kHz, we need much more data points than that. So, I started off this week’s work by editing my design and also adding in some other features : (1) volume control (amplitude-scaling of output signal), and (2) accommodations for the scenario where the oscillator has to output a different note after it is enabled.

My code is pushed on this branch. This code has passed simulation tests.

I also started on my work for the second checkpoint, which is to implement the oscillator to output square, triangle, and sawtooth waves. However, I have not finished the simulation tests yet, so I have yet to push them onto Git.

I am a bit behind schedule since I haven’t finished the simulations yet, but I’m not concerned because I’m sure I can finish these in the next few days. However, I am quite concerned about the integration of our project as we are experiencing hardships in hardware interfaces. I will be mostly focusing on solving this part with our team, though it wasn’t planned as part of my checkpoint goals.

Next week, I hope we will be able to resolve our issues with hardware interfaces, and I will be able to finish the simulation test cases for the square, triangle, and sawtooth waves. I will also be starting on my planned goal for the next checkpoint, which is to implement the unison effect.

Michelle’s status report for 3/13/21

  • I practiced and gave the design review presentation.
  • As planned, I worked on setting up my local environment for simulation and synthesis. I have successfully installed and set up ModelSim and Quartus on my PC.
  • My other task this week is to integrate the look-up table for implementing the waveform oscillator for sine waves. For this, I am looking into some of the design details of LUT’s in FPGA’s. My next step is to determine the exact number of data points that we need for producing waveforms that would meet our design requirement.
  • I also worked on the design report that we will turn in next week.

I am on schedule. Next week, I will be implementing the LUT’s and the sine waveform oscillator.

Michelle status report for 3/6/2021

This week, I am on track with my planned tasks on the Gantt chart. I finished writing the Matlab testing scripts for ADSR and waveform generation. In addition, the entire team met for a total of around 9 hours this week in finalizing our design, drawing the block diagram, and creating the design review presentation. I think this time was very well spent, because I am now able to get a much better grasp on the project. Next week, I plan to start configuring my local system to enable synthesis and simulation, in accordance with our Gantt chart.

Michelle’s Status Report for 02/20/21

This week, I did some preliminary work on the project such as finalizing our project goals, dividing up the workload, and setting up the team website. I took some time to read a couple of papers from past capstone projects that are similar to ours, and I also watched some videos to brush up my understanding on some of the basic concepts of synthesizers and FPGA’s. We are on-time with our schedule, as we are not hands-on with the project just yet… My goal for next week is to start writing the Matlab scripts for testing waveforms, filters, distortions, and ADSR.