Team Status Report for 5/8/2021

This week Sam delivered the Final Presentation during class. The team looked into the system’s noise, and found the source having to do with the BM83. Unfortunately, there is no time to resolve this issue. The audio path and UI code have been integrated, and DSP effects have been worked on.

The final efforts from the group include finalizing the video, poster, and final report.

Thanks for a great semester on behalf of Team D0!

Sam’s Status Report for 5/8/2021

This week I began integration of our full system, including debugging the hardware and software together.

A lot of effort was spent working with the new hardware, particularly establishing a strong physical connection with the LCD pins, learning to pair a speaker to the BM83, which required some soldering and re-soldering, exchanging dead wires, and removing bad connections.

Integration required a few attempts at debugging configuration issues since the audio path and UI had never been tested together. Eventually, with help from Xingran, I got this working. Now, the LCD is really dim, so I need to look into resolving this issue.

I conducted testing with a guitar as in input signal. There is latency of about 200ms (rough estimate), which I think is induced mostly by whatever Bluetooth codec we are using. Also, the signal is relatively distorted, with a significant amount of noise.

I successfully developed the delay effect, but noticed that it amplifies the noise due to the feedback loop.

Next steps are looking into the LCD display issue, implementing the EQ effect, and finalizing our video, poster, and report.

Here is quick video demo of playing guitar through BARI:

Demo

Team Status Report for 5/1/2021

This week we continued work on the signal path and UI. We started using the new pre-amp on Rev2, observing a large increase in quality. Due to the current chip shortage, our manufacturer was unable to provide us with essential components we needed for a complete Rev2 assembly. As a workaround, we decided to pass the final design’s signal through this pre-amp and then jumping the signal over to one of the Rev1 boards. There is still some noise that appears to be from the ADC, which is being looked into.

The UI is in a usable state, with meaningful variables able to be adjusted, and full control of our input devices (switch, button, encoder).

As a team we also worked on the final presentation, which Sam will deliver next week.

Next week we will wrap up validation, implement our updated MVP DSP effects, integrate the UI and signal path, and work on overall signal path quality. We will also make our video.

Here is our updated schedule:

For a little bit of fun, here is the guts of our beautiful BARI box:

Sam’s Status Report for 5/1/2021

This week I worked on the UI. I have successfully included global control variables for parameters such as channel enables and gain. Everything is controlled by the rotary encoder, button, and a programmable footswitch. As we add new effects or features, I can easily add new menus and variables given my modular infrastructure.

Tomorrow I will prepare for the final presentation, which I will deliver on Monday or Wednesday. Before then I need to update some slides and include information on UI validation.

Next week I will work on implementing at least delay and EQ, as well as helping Xingran with integration between the UI and audio signal path. I am currently on schedule, but we have a lot of work to do before the end!

Below is a short video demonstrating the UI:

Video

Team Status Report for 4/24/2021

This week Rev2 came in early, which was a nice surprise! Adam has begun assembly on it already. The BARI box has also been 3-D printed. We spent time on the signal path, successfully getting Bluetooth output from the BM83, even from a 1/4″ jack input, using a double buffering I/O scheme for audio streaming. We were unsatisfied with the quality of the old pre-amp, but the new one works a lot better, as verified from some tests in the lab. In addition, work has been done on the UI, with a pixel map and menu structure successfully created.

Next week we will work on the final presentation (probably later in the week) and continue work on Rev2 assembly, UI, and the signal path integration.

Sam’s Status Report for 4/24/2021

The past two weeks I have been focusing on the LCD UI. I finished the character maps and have created helper functions and a main menu, as well as a bare-bones channel parameter menu. From here, I will include global variables that are controlled by the UI, and I will enable control via the rotary encoder, button, and footswitch.

My progress is behind schedule, but I plan to work on the UI more before Monday.  The code is written modularly, so once I write interrupt routines for the user-input controllers, I should be able to integrate everything quickly.

In the next week I hope to finish the UI and maybe implement some of the DSP effects, or do whatever else the team needs. We will probably also work on the final presentation slide deck, which I will be presenting.

Below is the small demo of going through a channel parameter menu:

Video

Team Status Report for 04/10/2021

This week we worked on hardware interfacing and debugging. Adam and Xingran tested the pre-amp and debugged interfacing with the ADC, and Sam worked on the LCD, receiving assistance from Adam for debugging.

At our interim demo, we expect to show off proof that our ADC is spitting out values and show off that we can interface with the LCD and toggle pixels.

Looking forward we hope to get the full signal path going, which includes interfacing with the BM83. We also hope to complete the BARI Box and the LCD UI. We look forward to ordering Rev2 soon. We are deprioritizing DSP effects, but will include them once the signal path and UI and are completed. In addition, we decided to move from 4 channels to 2 channels for the final product in order to save in complexity.

Here is our updated schedule for the rest of the semester:

 

Sam’s Status Report for 4/10/2021

This week I focused on interfacing with the LCD. On Wednesday I went to the lab to meet Adam and Xingran and learned how to program Rev1 using the STM32 Discovery Board. Following that, I debugged the flashing process locally at my house. Attempting different USB cables, ports on my computers, wires, and allowing for a lot of hard and soft resets on all devices, I eventually got it to flash (at least once in a while)!

From there I wrote up some code to turn the LCD’s display on and display characters. Again, this was based on this Arduino code from the manufacturer. I had no luck with getting the LCD running, even after some debugging.

On Saturday I went to the lab with Adam and we found out a couple important discoveries

  1. The parallel/serial pin was hard-wired to VDD, which is parallel. However, we needed it to be connected to ground so that we can interface it via SPI. Adam fixed this
  2. My initialization code was running before any peripherals or SPI was set up, so I moved it to later in the execution.

We were amazed to see that the LCD displayed pixels after making these changes!

Video demo of LCD

Next week I will wrap up the LCD UI, adding a menu structure.

Team Status Report for 4/3/2021

This week we finalized assembly of Rev1, worked on interfacing with the BM83 Bluetooth module, and began development on the UI.

We will meet on Monday or Tuesday to discuss our project and adjust our schedule as needed, likely deciding to expend available slack time in the schedule and maybe cut some non-essential parts.

Next week we will finalize what we want to display at the interim demo, and discuss changes we want to make for Rev2, hoping to get that shipped as soon as possible. Work with the BM83 and UI will continue.

No specific media to share in this post, but check out the individual status reports for some progress updates!

Sam’s Status Report for 4/3/2021

This week I shifted my focus to the UI. I created a draft of a wireframe of our menu interface, received feedback from the team, and then incorporated their changes. Give the specs of our LCD (128×64 pixels), and the use of standard 8×5 pixel characters, all the items on a menu will fit on the screen. Here is the wireframe for your reference: (BARI UI Wireframe)

From there, the team decided I should work on some of the lower level implementation of the UI as well, so I worked on a function that maps characters to pixels. I did not find any resources online for this in terms of code, but I did find a nice template for the pixel maps,  as well as a tool to quickly get the hex for each pixel map. I also found an example of interfacing with our LCD. All of these resources have been helpful in working with the implementation of the UI. Further, I have found mapping numbers, letters in both cases, and select symbols to pixel arrays has been a time-consuming process. However, it is the foundation of the UI.

Next week I hope to finish interfacing with the LCD, getting some kind of trivial writing, and then eventually laying out the menu and writing menu layers to the screen.