Skip to content

Latest commit

 

History

History
102 lines (72 loc) · 4.23 KB

PROPOSAL.md

File metadata and controls

102 lines (72 loc) · 4.23 KB

Final Project: Synthesizer

My final project web app will be an electronic musical instrument using the Web Audio API for waveform sound synthesis.

Features

Musical Keyboard

  • The application allows you to play play 8 notes (1 octave) using the QWERTY home row or on-screen buttons:
Do Re Mi Fa Sol La Ti Do
C D E F G A B C
a s d f j k l ;

I'm thinking of using the G and H keys as an additional control, like volume or octave.

Additional Feature Ideas

Chromatic Keyboard

Interface expands to enable playing 2 chromatic octaves:

| q  | w  | e  | r  |  | u  | i  | o  | p  |  
| a  | s  | d  | f  |  | j  | k  | l  | ;  |    
| z  | x  | c  | v  |  | m  | ,  | .  | /  |  

| F  | F♯ | G  | G♯ |  | F  | F♯ | G  | G♯ |
| C♯ | D  | D♯ | E  |  | C♯ | D  | D♯ | E  |
| A  | A♯ | B  | C  |  | A  | A♯ | B  | C  |

The Number row could control volume:

Volume Level: 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Key: 1 2 3 4 5 6 7 8 9 0

Saving patches

The app has controls that initialize the on-screen controls to match the values of the synth parameters. So I could figure out a way for users to save and recall their settings.

Backing track

I could also add a feature where you can play along to a pre-recorded drum track or other audio file.

Goals

  • Become more familiar with Web Audio API and Tone.js for sound synthesis and other audio capabilities.
  • Create an interface that is responsive and can work from a mobile phone, tablet, or desktop, via both QWERTY keyboard, mouse, or touchscreen.
  • Use CSS Flexible Boxes and Sass where appropriate.
  • Extend interactivity to hardware with Gamepad & Web MIDI APIs
  • Visualization?

Web APIs

APIs and Libraries I will definitely use are in bold.

Instead of public Web APIs I will utilize at least one of the following browser APIs:

  • Web Audio API
  • SVG
  • Canvas
  • Offline
  • Geolocation
  • WebGL

Libraries

Inspiration

Public APIs

Though I don't see a use for these on this project, these APIs were on my short list when considering what to do: