Status Update – Team (03/23/19)

These past two weeks, we’ve made a couple key pushes forward as a team.

First, we finally got our parts order submitted! Because Sullivan had a lot of resources in his audio lab, we were able to limit our purchases even more than we planned. The parts came in earlier this week, and we spent some time assembling the simple pedal we purchased.

We also started working on hashing out our integration plan. We are focusing on the integration aspect because the midsemester demo is coming up in a week and a half. By then, we want to be able to show the full flow of our project with a simple test circuit and audio sample. We’ve been focusing on individual modules up until now, so this integration plan was a change of pace.

Along that note, we made a change to our audio processing module to help with the integration plan. We realized that the JUCE library was very heavy for what we needed, so we decided as a team to switch to a different library. Hopefully we’ll see the wiseness of our choice next week.

We also spent some time discussing our requirements and vision for the midsemester demo. We wanted to all agree on what we wanted to have ready for the demo so that no one was stressed or surprised. We agreed that we wanted a demo of simulating a real time sound on a low pass filter ready.

Next week, we plan on working together to fully integrate our project. After that, we can start building out a testing suite. Lots of exciting things are now going to happen!

Status Update – Stephen (03/23/19)

It’s been two weeks since the last status report! The first week was spring break for us, so it felt good to get back into the groove of things this past week.

The first thing I worked on was the Ethics assignment. For it, I read the case study found at https://www.scu.edu/ethics/focus-areas/more/engineering-ethics/engineering-ethics-cases/may-the-truth-be-with-you/. It describes a situation where an employee realizes that her company sold defective goods to a customer. She has to decide between telling the customer the truth, or helping her company’s bottom line by charging for the repairs. It was cool to read because I thought that the scenario was very realistic – I could definitely see this happening in the industry today.

Next, I put some more time into working on the front end for the circuit simulator. I found a very competent javascript circuit simulator written by MIT here at https://github.com/zupolgec/circuit-simulator. To give direction to my efforts, I used this as a guide on how to implement our simulator.

Our simulator is built with a class based programming style. We currently have the following classes: the Schematic class representing the whole system, the Component class representing individual circuit components, the ConnectionPoint class representing connections between circuit components, and the Wire class representing wires. There are also classes that inherit from the Component class: Resistor class, Inductor class, Capacitor class, etc.

The Component class has methods like rotate, move, add and remove. These do as expected. The subclasses of Component (like Resistor and Inductor) have their own personal draw and toString methods.

The Wire class represents the wires connecting instances of the Component class. It has a method bisect which checks whether or not any component currently bisects a wire. If there are, then the bisected wire is deleted and two wires are created that represent both halves of the bisected wire.

The Schematic class holds all the methods that tie the whole visualizer together. It’s in charge of holding and drawing all of the circuit components added by the user. It’s also in charge of handing when the user wants to export circuits to and import from file  (though, these features aren’t done yet 🙁 ).

Overall, I think I got a nice bit of progress in this past two weeks. Obviously, there is always more to be done, but I definitely feel like I’m on track.

This upcoming week, I want to finish working on the export and import features. This is really important to finish because our midpoint demo is coming up! Next week is really going to be all about integration.

Status Update – Stephen (03/09/2019)

This week, I spent time working on the design report and on my electron application.

This last Sunday afternoon, My teammates and I found an empty table in Gates and hunkered down to write our design report. The design report probably the biggest overarching document that we have worked on this semester for capstone. As such, it required us to finally fully flesh out any last questions we had about our project.

The first thing we did was go over our presentation feedback from the week before. It was helpful and informative to be critiqued before we wrote this design report, but since the feedback was released late in the week we unfortunately did not have time to meet with our advisors. Even so, we had a discussion about our feedback, and finally nailed down in detail the ins and outs of our testing mechanics. This is one of the sections that I think we have been hand waving the most since the beginning, so it was nice to finally have that settled.

Writing the report took much longer than I expected. What was scheduled to be an afternoon work session ended up being a whole day commitment. We divided up the report into sections and then reviewed each other’s drafts to make sure we were all on the same page.

The next morning, after our capstone discussion about the Pentium Chronicles, we did a final review pass of our design report. After another hour, we finally submitted our report.

After discussing with Sullivan, we also finalized our parts order. Luckily for us, Sullivan had a bunch of cables and a guitar that we could use. We submitted a first order for some pedals and some other small items.

The rest of my time was spent on working on my election application. I spent some more time looking up documentation and tutorials for different electron development practices. There are a lot of “boiler plates” that we can use that opens the door up for specific development stacks (different boiler plates helped users set up React, Angular, and Vue, among other things). I took a look at some of those found at electronforge.io and continued working on the app.

Next week is Spring Break! Unfortunately, I do feel like I need to make significant progress this week to stay on track. So, I plan on spending an afternoon in Cancun working, as well as working when I get back to CMU on Friday.

Status Update – Stephen (03/02/2019)

This week, we had the opportunity to listen to our classmate’s design presentation. It was really cool to see where everyone was taking their project, but this also meant we had to prepare for our presentation as well. In the beginning of this week, I helped Matt prepare for his presentation. We ran through it a couple times and worked out any rough edges. We also had our TA Chris go over our slides and give us his feedback.

 

We also started to talk about our design report. A lot of this discussion ultimately came from reviewing our slides and thinking about the critical questions of our project.

 

On the development side, I continued to work on our Electron application. I did some research on how Electron applications are organized and attempted to implement their file structure. I also looked into building our scrollable canvas. The idea is to have two sets of coordinates per point: one coordinate is relative to the screen that the user can see while the other coordinate is relative to the (0, 0) position on the overall canvas. Changing the displayed screen is basically transforming our coordinates from one to the other.

 

Overall, I don’t think I got as much development as I planned to. Last week, I did not anticipate the presentation and design report to take so much time out of my week. So, currently I feel a bit behind schedule. Because next week is our last week before spring break, I think it’s extremely important to make significant progress. I am leaving for spring break vacation next Friday, so I will try to frontload my work earlier in the week.

 

Next week, I hope to have the scrollable grid implemented in our desktop application. This will require me to finalize our file structure for the application. I will also need to learn more about interactivity with javascript applications.

Status Update – Stephen He (02/23/2019)

Stephen:

There was a lot to do this week! I spent my time divided between designing our application with Figma, building our frontend with Electron, and preparing for the presentation.

Designing with Figma:

This is actually my first time designing anything! Although I have done some front end web development before, I have always worked with a designer who provided the assets and design of the product. From this experience, I’ve definitely grown more appreciative of the hard work they do!

There are a lot of design tools out there, but I settled on using Figma to help organize what our application will look like. Figma is an online UI design tool that allows for teams to work together without needing to pass around a messy amount of assets and images.

Although Figma was really helpful for our team, there definitely was an initial learning curve to using Figma. The application is really powerful and lets you do so many transformations to an image, for instance. However, the abundance of tools made even the simplest thing a bit contrived to do.

After a little trial and error, I came up with this design: 

 

Building with Electron:

Building with Electron seems to be pretty straightforward because I can mainly proceed with Node.js development. However, scoping and testing things out this week definitely made me more aware of how many moving parts there are in the frontend. For example, to be most effective, the circuit simulator would ideally be able to snap circuit components together, allow the user to expand the canvas / scroll around to build large multi-screen circuits, and creatively organize wires with labels to make the circuit readable. The main takeaway from messing around with Electron this week is that I need to increase my pace of development of the frontend for this semester.

I began this week by making a simple “Hello World” application. I moved on to messing with some features such as a file manager and adding custom HTML.

 

This week, I hope to have a v1 of our application built and ready. I want to be able to click through circuit parts and move them onto my grid to build a circuit. I’ll save converting the circuit to a netlist for a later time.

With my current progress, I think that I am on track / a bit behind. I want to push a bit more on the front end progress before spring break, so for these next two weeks I’ll invest more time than before.