MIDI Keys

Online Music Synthesizer

Designed by Astrid Leighton

About ▼

About

MIDI Keys is an online synthesizer built to interact with a MIDI device. MIDI stands for Musical Instrumental Digital Interface. MIDI is an important musical tool and is commonly used in the music industry today. Normally, users must download audio software to use MIDI; however, MIDI Keys provides a simple solution by allowing users to play their MIDI devices directly through the browser. MIDI Keys presents users with numerous samples to play with, allowing them to save samples to their user account or create music without signing in.

Requirements ▼

Requirements

Functional

  • User login and registration
  • MIDI device connect and disconnect
  • View list of available MIDI devices
  • View list of available sound samples
  • Add and/or remove saved samples
  • View colorized note feedback from on-screen keyboard

Non-Functional

  • Simple site navigation
  • MIDI error handling
  • Data validation
  • Database hashing
  • Web browser support
  • Audio feedback within 15 milliseconds
Technologies ▼

Technologies

  • React.js
  • Express.js
  • mySQL
  • WebMIDI
  • Tone.js
  • AudioKeys
  • Materials UI
  • Sass

  • MIDI keys implements a React front end and Express back end using a mySQL database to store user and sample information. WebMIDI, Tone.js, and AudioKeys are third-party libraries utilized to allow for MIDI interaction from the browser. Materials UI and Sass are used to built the front-end elements and icons features within the application.

    Initially, I was largely unfamiliar with React and any of the third-party MIDI libraries utilized within this application, so I chose to learn these new technologies to improve my skills in development. I implemented React as the prominent language of this application as it largely relies on event listening and state changes, allowing it to function well with MIDI events and key presses.

Technologies

Technical Approach

MIDI Keys utilized both a waterfall and Agile methodology in its development lifecycle. Development began in September 2023 and finished in April 2024. Future functionality will continue to be developed. All design documents and requirements were developed before the initial development of the application. Throughout application development, sprint planning was utilized to organize project updates using GitHub issues, Kanban boards, and burndown charts. Design documents are listed below:

Wireframe
Physical Architecture
Logical Solution Diagram

Risks and Challenges

Building this application included several risks and challenges, all of which I documented and prioritized in order to stay on track:

Outstanding Issues

As of now, there are no outstanding issues in this application. However, this application will continue to be improved with new features including: recording functionality, additional samples, and a chord display.

Contact Information ▼

Contact

Contact Info

Email: astridleighton@gmail.com
LinkedIn: View Profile
GitHub: View Repositories