Development Standards & Practices Used
List all standard circuit, hardware, software practices used in this project. List all the Engineering standards that apply to this project that were considered.
Summary of Requirements
Applicable Courses from Iowa State University Curriculum
New Skills/Knowledge acquired that was not taught in courses
Table of Contents
1.2 Required Skill Sets for Your Project 5
(if feasible – tie them to the requirements) 5
1.3 Skill Sets covered by the Team 5
(for each skill, state which team member(s) cover it) 5
1.4 Project Management Style Adopted by the team 5
1.5 Initial Project Management Roles 5
2.2 Requirements & Constraints 5
3.1 Project Management/Tracking Procedures 6
3.3 Project Proposed Milestones, Metrics, and Evaluation Criteria 6
3.4 Project Timeline/Schedule 6
3.5 Risks And Risk Management/Mitigation 7
3.6 Personnel Effort Requirements 7
3.7 Other Resource Requirements 7
4.2.3 Decision-Making and Trade-Off 9
4.3.1 Design Visual and Description 10
4.3.3 Areas of Concern and Development 10
4.4 Technology Considerations 10
5.7 Security Testing (if applicable) 11
7.1 Areas of Responsibility 12
7.2 Project Specific Professional Responsibility Areas 12
7.3 Most Applicable Professional Responsibility Area 12
List of figures/tables/symbols/definitions
Analog Circuit Design
Embedded Software Development
UI/UX Design
Software Application Development
Wood Working
Digital Signal Processing
MIDI Processing
Software Application Development
Embedded Software Development
Wood Working
Digital Signal Processing
Analog Circuit Design
Embedded Software Development
Software Application Development
UI/UX Design
Digital Signal Processing
MIDI Processing
Embedded Software Development
Agile Development
Software Testing
Software Development
Git Management
Client Interaction
Analog Hardware Design
Hardware Testing
Software Development
Software Testing
Documentation
Team Organization
Our goal is to help guitarists who are not as fluent on keys as they are on a guitar. The problem these people are facing is that if they are music producers then they are at a disadvantage from those who use Midi keyboards. This is a global problem that people face all around the world. This problem is also occurring all the time as music production is becoming more accessible and popular. Because of its popularity, it is important to be as inclusive as possible. Our solution is developing a Midi guitar which allows guitarists an easier platform to produce music.
Our final project must be a functional guitar that would feel as if you are playing any other electric guitar when being played. The guitar’s strings must have realistic tension, and the added hardware must not add significant weight to the overall weight of the guitar. This guitar needs to output MIDI data to a software where the user can customize things like pitch, tone, and other attributes for music recording purposes. For example, a user may be able to change which note each string is tuned to, or what instrument sound is output, similar to an electric keyboard, all within an easy to understand and navigate software.
Musicians who wish to record music who are primarily guitar players benefit with this product. Most digital music composition options center around the ability to play piano. For those who do not know how to play the piano, this limits options and restricts the music that can be recorded by musicians. The ability to emulate a MIDI keyboard’s functionality within a guitar gives the ability to create quality digital music to a wider audience.
We are using agile methodology for our project. We chose this because it gives a clear idea of who needs to do what every two weeks, and gives us plenty of time to complete the issues assigned to us within those two weeks.
We will be using Git, Gitlab, Discord, and Google Drive throughout the project.
Fig. 1: Overview of our project timeline.
Task Name | Estimate of in-person hours required to complete |
Define project scope and approach | 5 |
Build test platform | 8 |
Develop note detection system | 20 |
Develop strumming detection system | 40 |
Develop note acquisition and MIDI encoding software | 50 |
Develop PC companion app | 20 |
Test entire system with test platform | 20 |
Construct external processing box | 15 |
Prepare guitar for hardware implementation | 8 |
Migrate system from test platform into real guitar | 4 |
Verify system performance in guitar body | 4 |
Seek and implement feedback from guitarists | 15 |
Table 1: List of tasks and the estimation of in-person hours required to complete said task.
The one thing our project will need is a working guitar body. A couple of our members have some guitar bodies that they would be willing to part with, but these may not be sufficient, and we may have to build something ourselves. If this was the case, we would need access to a shop with good quality woodworking equipment to build parts of our guitar.
Area | Description | Examples |
Public health, safety, and welfare | The stakeholders for this project are most likely directly affected as this solution would be for stakeholders. | There isn’t anything potentially dangerous or controversial about this product so health, safety and welfare are non-issues. |
Global, cultural, and social | The cultural group that this project reflects are guitarists. One of our main concerns is building a medium to produce music which mimics a guitar as close as possible. | This solution is modeled by the guitarist community because we do not want a change in culture. The goal is to help not change. |
Environmental | This project in the short run will have n0 environmental impact. This is not a concern. | All materials for this project are recycled and powering at most two microcontrollers will have a negligible impact on the environment. |
Economic | This product could possibly affect the economic market of midi controllers as it would be breaking technology compared to other midi guitar controllers. | Realistically this product would be the cost of a standard guitar plus the cost of the embedded hardware plus labor. |
Table 2: Different areas of the world our project could impact, a description how our project could affect said area, and examples of why/how.
Guitar players need a way to use a guitar as a MIDI input because MIDI keyboards are not intuitive for them to use. Sure, they can use a MIDI keyboard as a MIDI input, however, this can hinder their workflow and dampen their creative ability. Finally, this guitar can open up a whole new world of possibilities in terms of live performance. Say a guitar player wants to play some crazy sound that’s only possible through a MIDI synthesizer; this guitar would allow them to do that while also maintaining a realistic guitar feel.
MIDI guitars exist, but they consist of buttons on the neck and not real strings. Does not feel like you are playing a real guitar and can feel weird. There are also solutions that exist that use DSP to pull out the most prominent frequencies from a signal and then convert these to MIDI notes. These aren’t as accurate or as fast as what we are planning on doing, since our solution will be looking at exactly what fret the user is pushing down to determine what note they are playing.
Fig 2: Example of a MIDI Guitar with buttons.
Components/subsystems:
Note detection
This is one of our biggest problems as the solution is not trivial. We have brainstormed many ideas in an informal sense and also siphoned those ideas into a structured framework like the lotus blossom.
Options:
We mostly made these decisions by communicating verbally with each other and describing the pros and cons of each decision.
So far, our design consists of a test platform we built out of a piece of wood with two strings and four frets attached to it. This has allowed us to test various methods of note detection.
Currently, our design consists of 3 separate systems:
Note detection is the determination of what note(s) the user is playing based on where they are pressing down on strings/frets.
Strum detection is detecting when the user plucks notes, as a user pressing down on a fret doesn’t necessarily mean they are playing that note.
MIDI encoding is taking the information from the note detection and strum detection systems and shipping it off to the computer in MIDI format. We have not finalized how this system will work, but we suspect it will be on a different microcontroller from the first two so we can save some overhead on the note and strum detection. We are planning on using an open source library we found to send this data over usb to the computer.
Fig 3: Block diagram overview of our project.
This block diagram shows a general view of the design we have worked out for our project. Information will start at the circuitry, which will be read by the first microcontroller, which will determine what note is being played based on the signals coming from the fretboard of the guitar. Then, the microcontroller will dump the note that is being played into a note buffer, where it will be picked up by another program/microcontroller that will convert this into a MIDI note, and send that off to the PC over a USB cable.
The final product is intended to be used as someone would use any regular guitar, except that it will be used as a MIDI controller. This means that the user will take the guitar, plug the processing box into their computer, and use the guitar to send MIDI data to their DAW of choice to create music.
Our only area of concern is note detection as the problem is not easy to solve. We believe that this problem is solvable and we have a few solutions ready, but they are workarounds. The immediate plan is to continue brainstorming a solution, but once development in other sections of the project continues, we will use one of the workaround solutions. We may also talk to some other professors to see if they have any ideas on a solution to our problem.
.Because of space and structural integrity considerations, the hardware in the guitar itself must be kept to a practical minimum in terms of size and complexity. Anything that doesn’t need to be local to the guitar itself will be contained in an external processing box.
It will be necessary to implement a string of resistors into the guitar neck itself. Because it will be nearly impossible to disassemble the neck after assembly, it is paramount that all hardware and electrical connections inside the neck be built to last, and able to perform in a variety of environmental conditions. We are prioritizing connection robustness, component lifespan, and low temperature coefficients in the hardware contained within the guitar itself, as there is no easy way to revise or repair the hardware internal to the guitar as there is with the hardware contained external to the guitar.
Because there will be a wire harness carrying signals from the guitar to the external processing box several feet away from the guitar, signal integrity is a consideration. As much as possible, we will be using DC or low-frequency signals between the processing box and guitar in order to preserve signal integrity between the two while minimizing the size and expense of cables contained within the wire harness.
The main technology used on the software end of this project is C#/.NET. The main strength with this language and framework is its immense documentation and also its large scale use in the technology industry. The only weakness of this tool is that the team is not familiar with it so it will take some time to perfect its usage.
Our proposed design has not been officially implemented yet. It has gone through several iterations however when it comes to our note detection and strum detection systems. After tweaking those issues we are confident in our final design for the product. If we need to further iterate our design, we have the product separated enough to be able to redesign specific aspects without interfering with other systems embedded in the guitar.
Fig 4: Component Diagram
Our current design plan has been to break our project into manageable functional components. Each of these components or subsystems are independent from each other which makes it much easier to test our designs and further our designs. This will also make it much easier to implement all of our subsystems into a final product. As seen in figure 4 Our total design has 4 functional components with 3 internal connections and one external output. All of these components can and will be engineered separately and concurrently.
Our four main units to be tested are note detection, strum detection, midi encoding and the software application. The hardware aspects are being tested using written test cases and the software application will have a regression suite written for it as development continues. The tools used are our gitlab storyboard as each story will have its corresponding tests. We will have another (undecided) platform for recording physical tests.
Strum detection and note detection are one main interface. This will be tested similarly to how they are tested separately. We will have a set of smoke tests for them and verify additions are working properly. The second most important interface to test will be the connection between the microcontroller and the software application. The regression suite we write for the software application will have some coverage of the microcontroller, but will require some manual tests. Tools for the software testing might include Jenkins/xUnit. Tools for the hardware testing might include an oscilloscope.
Our most critical integration path is connecting strum detection and note detection. Our plan for testing these will use their pre-existing test suites to verify singular performance. Then we will develop another test suite for the combined components. Tools for integration testing will be similar to the previous tools mentioned above.
We have a very defined scope and heavy expectations for this project. This is all very well documented as well and will be used as a model for developing our system tests. Tools would include our previously created documentation along with gitlab stories.
For regression testing we will have a new set of tests written for each and every gitlab story. For hardware, this will be a manual regression suite. For software this will most likely be setup as an automatic regression suite using GitLab CI/CD or another tool like Jenkins.
We will carefully develop another regression test suite for acceptance testing along with our client to ensure our functional and non-functional requirements are being met. We will run through this acceptance testing regression suite at every major milestone to ensure conformance. We will also outsource our testing to another guitarist for verification.
There are no real security concerns in our application, so this is not applicable to our design.
In our case we will have a set of tests for each story in gitlab. These stories are assigned to a single member and managed by that member. If a story has failing tests it is the owners duty to resolve these issues whether that is fixing them on their own or outsourcing their issue to another group member.
Our current implementation plan is to design and test each of the components separately this semester, then implement each subsystem and the final product during next semester. Our goal is to have everything theoretically designed and working to make our process of connecting technologies as seamless as possible. There is a lot to focus on outside of our fields of study to focus on and we would like to make sure these external skillsets are given enough time to grow. For example, woodworking and general structural mechanics.
This discussion is with respect to the paper titled “Contextualizing Professionalism in Capstone Projects Using the IDEALS Professional Responsibility Assessment”, International Journal of Engineering Education Vol. 28, No. 2, pp. 416–424, 2012
We chose the SE code of ethics, and We will analyze Principle 3: Product.
Area of responsibility | Definition | NSPE Canon | SE Code of Ethics, Principle 3: Product |
Work Competence | Perform work of high quality, integrity, timeliness, and professional competence | Perform services only in areas of their competence; Avoid deceptive acts. | It covers Work Competence in 3.04 where it discusses that you ensure that the team be qualified to work on the project, among other areas. It highlights that you can provide the highest quality of work possible. |
Financial Responsibility | Deliver products and services of realizable value and at reasonable costs. | Act for each employer or client as faithful agents or trustees. | Financial responsibility is stated in 3.01, where you must strive for not only high quality in the product, but for acceptable cost as well. Communication Honesty is covered in 3.11 where documentation is discussed. |
Communication Honesty | Report work truthfully, without deception, and understandable to stakeholders. | Issue public statements only in an objective and truthful manner; Avoid deceptive acts. | Documentation is an important form of communication for a team to use. |
Health, Safety, Well-Being | Minimize risks to safety, health, and well-being of stakeholders. | Hold paramount the safety, health, and welfare of the public. | Health and wellbeing can be argued is a part of 3.02 with achievable goals. It can detriment your mental health if your goals are unachievable and you invest too much time to a goal it is not physically possible to meet. |
Property Ownership | Respect property, ideas, and information of clients and others. | Act for each employer or client as faithful agents or trustees. | Property ownership is discussed in 3.13 when it mentions only to use accurate data legally and ethically. |
Sustainability | Protect environment and natural resources locally and globally. | Sustainability is seen in 3.14 when it is mentioned to maintain the integrity of data, and to avoid outdated/flawed code. | |
Social Responsibility | Produce products and services that benefit society and communities. | Conduct themselves honorably, responsibly,ethically, and lawfully so as to enhance the honor, reputation, and usefulness of the profession. | Lastly, social responsibility is also mentioned in 3.13, it is the social responsibility to maintain ethics in acquiring data. |
1. Work competence does apply to our project’s professional context. Everyone must be able to complete their work for the project to succeed as we all have different skill sets and rely on the work of others. We are performing high.
2. Financial Responsibility applies a bit to our project. We will have to make a few purchases, but it will be mostly cheap items for testing, but we will not need to make any significant portions until we begin working on a prototype. Performing highly.
3. Communication responsibility relates to our project a lot as we do not see each other every day. We must keep in touch to stay on the same page and ask for help. We are performing highly as we have been in close communication since the beginning of the semester daily.
4. Health, safety, and well-being somewhat applies to our project. There are not a lot of health or safety risks associated with our project. I’d say we are performing medium.
5. Property ownership does not really apply with the MIDI guitar. Most of the project will be made by the group and be owned by the group. So far it's NA.
6. Sustainability does not really apply to our project. MIDI Guitar does not have a significant environmental impact. Performance NA.
7. Social responsibility somewhat applies to MIDI guitar. There is a niche need for a product that we are making. We would categorize our performance as medium.
Our group has demonstrated high proficiency in communication thus far. We have a discord server that we use daily as our primary source of communication. It means a lot for our project because it is how we will discuss things outside of class and meetings, as well it is how we will schedule meetings and discuss the project. We have dedicated channels for different aspects of the project, such as hardware, software, etc. Because we do not meet every day it is important to communicate fluidly to maintain efficient work on this project.
There is a solid foundation for the end product of MIDI Guitar. We have established strum detection for individual strings and are making good progress on fret detection. These are the core requirements for this project and the rest of the assembly, along with 6 full strings and 24 frets, will be built atop the foundation we are completing.
Overall we have developed a solid foundation for this project to succeed. Note detection, which was our biggest challenge, has been solved and tested and strum detection is our next obstacle to overcome before next semester. We Have a good understanding of what needs to be done for the other remaining components for this project and have developed sufficient system testing plans for their total integration. Our plan going forward is to complete each component separately then integrate them together, treating this integration as its own sort of component.
Name | Date |
Feb 13, 2022 | |
Feb 13, 2022 | |
Feb 13, 2022 | |
Feb 13, 2022 | |
Feb 13, 2022 |