Lance’s Status Report for April 8th

Posted late because the Slack announcement said “April 10th,” apologies!

 

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I mostly finished up the comms pipeline between the Arduino and Python scripts, which means that now we can fully work on assembling the system and writing more complex music generation code. Some issues have arisen, such as certain pins being activated when they shouldn’t be. As far as I can tell, it just shouldn’t be happening, but it is. I’ll need to look a little deeper into the code to figure out what the issue is. However, I don’t think that fixing the issue will take more than a few hours. I also had to fix some minor timing bugs regarding establishing the serial connection, but things are going well.

Is your progress on schedule or behind? If you are behind, what actions will betaken to catch up to the project schedule?

I’m on track.

What deliverables do you hope to complete in the next week?

I’m going to completely finish the comms pipeline and then put my all into making the music generation code the best it can be.

Now that you are entering into the verification and validation phase of your project, provide a comprehensive update on what tests you have you run or are planning to run. In particular, how will you analyze the anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?

I’ve been doing unit testing on my comms code without any circuits involved, just back and forth communication between the two devices. This involves sending values from a Python script to the Arduino, and then having it send verification codes, received data, etc. For music generation, I can just print a list of notes and then play them on my own keyboard to see if the melodies sound passable (or at least not terrible).

Katherine’s Status Report for April 8th

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

This week, I started by laser-cutting the mounting system and putting it together. I tried using hot glue, which didn’t prove to be a good method so I am going to use superglue next time. We also discovered that the 3mm acrylic does not hold up well under the weight of the solenoids, so after the demo, I worked on a redesign using 6mm acrylic. I have had a lot of past projects where I had a hard time keeping acrylic together, so I am considering cutting out certain pieces in 6mm thickness wood instead because the wood glue holds together very well. In addition to redesigning the mounting system, I kept working on object detection. I have decided to make the Haar Cascade for the symbols using the opencv tools to train them. I also changed the design of the objects to make them symmetrical around the center so they are more easily recognized in different positions. I am currently in the process of training the cascade.

Is your progress on schedule or behind? If you are behind, what actions will betaken to catch up to the project schedule?

I am on schedule.

What deliverables do you hope to complete in the next week?

Finish the object detection!!  and get started on distance measurements so that I can provide feedback to the user.

Now that you are entering into the verification and validation phase of your project, provide a comprehensive update on what tests you have you run or are planning to run. In particular, how will you analyze the anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?

I am planning to run a test (when my symbol detection starts working)  where I measure the time between when I put the symbol in the note area and when it recognizes it. To do this, I am going to have code that just has a time that records what time it recognizes the symbols and have it start with the symbol in the right place. This needs to be less than a second to meet the use case requirements.

 

Team Status Report for April 8th

What are the most significant risks that could jeopardize the success of theproject? How are these risks being managed? What contingency plans are ready?

HW: I am a little scared that we might have to order more solenoids in case of burnout? We currently have 7 working solenoids and ordered 7 more because we had leftover solenoids in the toolbox but now they are gone. It’s not the worst risk since we can always order new ones. However, I am also a little worried about the power supply availability. If we can’t get the 30V/3A power supply, we can’t run this system.

SW: I am still worried about object detection, but like before, my backup is using the color detection that is already working.

MSW: I’m a little worried about melody generation. Generating random things isn’t that difficult, but I think that even generating mediocre melodies will be difficult. I don’t think that it will be possible to generate great melodies, at least consistently. Great melodies are difficult to write by hand, so creating an algorithm to do so would be an achievement by itself (and something I could probably sell for a large sum of money).

Were any changes made to the existing design of the system (requirements,block diagram, system spec, etc)? Why was this change necessary, what costsdoes the change incur, and how will these costs be mitigated going forward?

HW: nope

SW/Fabrication: I did redesign the mounting system because the 3mm did not hold the weight of the solenoids very well. The cost is going to be around $30, but hopefully this is the last redesign. SW – no.

MSW: Nothing major. Just small data structure changes to accommodate new data/changes.

Provide an updated schedule if changes have occurred.

HW: n/a

MSW: No change.

This is also the place to put some photos of your progress or to brag about acomponent you got working.

Sun A’s Status Report for April 8th

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I was able to finish the full-octave hardware component to be ready for the interim demo this week. I worked with Katie to build the mounting system. This week, I wanted to work on building the two-octave system or at least prepare the components for it; but, all of our new solenoids are gone because my team left the toolbox with all of the components in Tech Spark.

Is your progress on schedule or behind? If you are behind, what actions will betaken to catch up to the project schedule?

No — I am on schedule!

What deliverables do you hope to complete in the next week?

Hopefully, I can finish soldering and heat-shrink the components. So, I can start assembling everything onto the board.

Now that you are entering into the verification and validation phase of your project, provide a comprehensive update on what tests you have you run or are planning to run. In particular, how will you analyze the anticipated measured results to verify your contribution to the project meets the engineering design requirements or the use case requirements?

For my hw component, I use a very simple arduino code to test if all 7 solenoids can be turned on or not. From there, I tested a random pair of 7 solenoids and group of 4 solenoids at a time. As for meeting the engineering design requirements and the use case requirements, I try to make all of the solenoids solder to a longer wire and heat shrink as much as possible to make the circuit as compact as possible so it’s easy to install.

 

 

Lance’s Status Report for April 1st

I didn’t do anything :'(

 

Mandatory April Fools’ jokes out of the way, here’s the real update:

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

Code has been rewritten and interfacing is set to be fully complete by morning. We’re running with a slightly simplified system for our demo, so I’m in the middle of making sure those aspects are perfect. I’m also writing a test program that showcases how our solenoid system can be used  if it were played perfectly. It’s just going to play a relatively simple melody with backing chords, but I think it’ll work as a good benchmark for timing and syncopation.

Is your progress on schedule or behind? If you are behind, what actions will betaken to catch up to the project schedule?

All good on my end, or rather, I count Sunday as the end of my week, so everything will be on track by tomorrow evening.

What deliverables do you hope to complete in the next week?

After our demo, I’m going to complete melody and chord generation and get them at least somewhat functional and interesting. Integration should be completely finished, which means I can spend all day tweaking algorithms. Oh, boy!

I also want to see if there’s an easier way to detect the Arduino, because I’ve been having to manually find the COM port the entire semester. It’s not that big of a deal, but it does diminish the “plug and play” aspect of the system.

Team’s Status Report for April 1st

What are the most significant risks that could jeopardize the success of theproject? How are these risks being managed? What contingency plans are ready?

HW: I am a little worried that we are not able to solder the components to a protoboard. However, as long as we keep our wires organized, I think we can keep building our circuit on a breadboard. However, this is not a very significant risk in terms of running the system.

Music SW: Melody and chord generation have me somewhat worried. I don’t want to generate unusable garbage, but I don’t want to make everything predictable either. Our generative mode is one of the two main modes we want to implement, and if it’s not good, that’s going to be a problem.

Software (note that my stuff was overwritten earlier so I am resubmitting now): The object detection is the biggest risk still, as I have tried a lot of methods but nothing is working well still. The contingency plan is to use the color detection that is already working.

Were any changes made to the existing design of the system (requirements,block diagram, system spec, etc)? Why was this change necessary, what costsdoes the change incur, and how will these costs be mitigated going forward?

HW: we have decided not to solder.

Music SW: None since last week. I’ve been changing up struct internals to see what works best, but it doesn’t affect the overall system.

SW: Not since last week.

Provide an updated schedule if changes have occurred.

 

This is also the place to put some photos of your progress or to brag about acomponent you got working

HW: N/A — will show our working circuit on Wednesday!

Music SW: Nothing here. I did sync the Arduino LED to an interesting rhythm but it wasn’t much to write home about.

SW/FAB (Katherine): added photo of the mounting system I designed in the slack.

Katherine’s Status Report for April 1st

What did you personally accomplish this week on the project?

This week, I worked on creating the design to mount the solenoids above the piano, and worked more on object detection. I took lots of measurements of the piano and used online specs for the solenoids to figure out a design and created it in Fusion360. I will attach an image once the issue with uploading photos is fixed, but for now, I put the image in the slack. I exported DXF’s and will cut it all out and put it together on Monday with the acrylic that I picked up last Wednesday. I also spent more time trying to figure out how to get the symbol detection working, and had very limited success — one method that I tried was using template matching, but was scaling the image until it was greater than the screen, in order to account for different scales of the symbol – was taking too much time and causing a lag in the video. Another detection was only able to detect it about 5% of the time. Finally, I tried some shape detection and that was also having a very hard time figuring out where even the star was. I have been a bit frustrated with this, but I may try to make another attempt at creating a Haas Cascade after doing more reading.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I am on schedule, using the updated Gantt chart from last week.

What deliverables do you hope to complete in the next week?

Putting together the mounting system and getting the symbol detection working so that I can shift from color detection to detecting symbols.

Sun A’s Status Report for April 1st

What did you personally accomplish this week on the project? Give files orphotos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I finished implementing a full octave actuator system. I tested them randomly and up to 4 solenoids can be powered at the same time.

Is your progress on schedule or behind? If you are behind, what actions will betaken to catch up to the project schedule?

No

What deliverables do you hope to complete in the next week?

Finish building the frame to hold all of the solenoids + start building two-octave system

I need to order more solenoids because I burned some of them 🙁

Lance’s Status Report for March 25th

What did you personally accomplish this week on the project?

This week,  I finished up a bit of platform integration code, and after working with Katherine to discuss software integration I decided that it would be best to go back and rewrite large portions of my own code. This is both for ease of integration, and ensure that the code is easy to maintain, modify, and work on for someone else. I’ve gotten through parts of it, mainly the Python end of things. This involves some code that manages sending messages to Arduino and representing notes in the code. The note representation hasn’t changed much, but it has been refined. For testing purposes, it was mostly just a number, a length, and a checksum. Now, it’s a list that contains a length, a list of notes that are represented as their MIDI values, and finally a checksum. The current implementation has better support for chords, because the previous simply relied on the Arduino interpreting them fast enough to queue them into the same time step. The clocks of the computer and Arduino won’t be synced, so there’s no need to add a start value (rather, it would be difficult to, and it is currently unnecessary due to the speed of the current pipeline). For more info on the representation, notes will be sorted into measures, which are grouped into phrases. There will be one phrase that constantly updates which contains eight measures. The measures have no set length (in Python), but do have a maximum length of timeSignatureNumerator*timeSignatureDenominator*8. This means that in 4/4, you can have four sets of eight 32nd notes, which is generally the smallest subdivision anyone will have to deal with on a daily basis. Measures are ordered, as are phrases, but note lists are not. However, ensuring that there are no duplicate notes is important.

If I decide to make a version that does not enforce strict timing, I can just add a flag to the note list that determines whether or not they will be played immediately or sent to the phrase+measure list set.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I had initially planned on finishing up integration and testing around this time, so it’s debatable as to whether or not I’m on track, but I plan on finishing as much as I possibly can before the interim demo.

What deliverables do you hope to complete in the next week?

I plan on expanding upon what I already have and making it work with Katherine’s code, as well as letting the Arduino sequencer interact with the solenoids.

Katherine’s Status Report for March 25

What did you personally accomplish this week on the project?

This week, I worked on a couple of things. First, Lance and I spent time discussing how we were going to integrate our parts of the project and how my data should be passed to him. Next, I brainstormed how to produce the mounting system for the solenoids. I have an ideate minor so I have taken a lot of classes using the laser cutter, 3d printers, etc. and have a lot of experience in designing because of that, so we figured I would build the mounting system. (I decided on 3mm clear acrylic so that you could see inside). This wasn’t originally in the Gantt chart, so that has been altered. Finally, I have been working on providing feedback to the user. This has become more of an ordeal than originally planned because I am also switching to using the detection of a symbol rather than color detection. This makes the device a lot better because now the background shouldn’t matter as much and is also easier to place on someone. (This was based on last week’s meeting). I designed two symbols to be used, for some reason WordPress won’t let me update anything right now but I will just describe them for now and try to add them later.  One is a star with an R in the middle, and the other is a hexagon with an L in the middle. I want it to be able to detect these symbols and use them to trigger the notes, instead of color. I did a lot of research on how to best do this – its more complicated than I originally expected but I am currently working on a way to do it, that I think will work-  I am going to create a custom Haar Cascade file for the two symbols and use that in my openCV code. I tried several other methods, like template matching, but they failed due to not being able to handle hte image at different scales or other similar problems. Finally, I decided to provide feedback to the user using the object detection that I was developing already. I found examples of people calculating depth based on faces, so I think I could try to implement that with my symbols and provide real-time feedback for moving closer or farther based on that. Because this depends on my symbol recognition implementation, which is taking more time than expected, I need to push back the Gantt chart about a week.

 

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

Technically, I am behind schedule because the feedback to the user is not working yet due to changing the mechanism but I had my schedule ending pretty early so I am going to edit the Gantt chart to incorporate the new work — making the symbol detection and creating the mounting system.

What deliverables do you hope to complete in the next week?

Next week, I am planning on completing the build of the mounting system and symbol detection.