-
Notifications
You must be signed in to change notification settings - Fork 0
Project Proposal
Songbird is a music generator that applies basic rules of music theory to guide the user's experience in creating a short melody in the key of C.
Users begin by selecting a single note on a keyboard. An algorithm then determines what notes are be available next, and highlights what can be chosen. The user will then repeat the process of selecting notes, until the generated song reaches a specific length.
Once a song has been created, the user can play the song back on the timeline.
Main features:
- Keyboard that plays corresponding sounds when keys are clicked
- Individual keys play specific notes
- Timeline that stores and plays notes when playing state is active
- Action to select and save sounds from keyboard to timeline
- User flow for selecting and submitting next note
- Algorithm for determining next note based on current notes / previous notes
- Actions to play and reset timeline
Bonus features / In progress:
- Tempo adjustment
- Key transposing
- Pairing melody with chords
A main screen displays the timeline with the selected notes if the user has created a melody. It also has controls for playback and options to start a new melody.
https://www.dropbox.com/s/ucilgijt9m0xpu9/Screenshot%202018-02-16%2001.01.44.png?dl=0
A keyboard will be visible for the main view as well.
Songbird will include the following technologies:
Structure / Sounds: Vanilla JavaScript, DOM and rendering: HTML Bundling: Webpack
Scripts:
- timeline.js: handles logic for rendering the main music timeline
- keyboard.js: handles rendering keyboard and note selection and store algorithm for next notes
- main.js: joins timeine and keyboard files together
- Get a basic idea of what kind of algorithm the generated songs will follow, and what kinds of chord progressions we want to generate.
- Research implementing sounds through JS
- Goals:
- Set up webpack and render basic page
- Create a keyboard that generates sound when pressed
- Implement selecting and saving notes onto a timeline
- Goals:
- Finish up timeline and ensure that saved notes can play
- Create start-stop button for timeline
- Goals:
- Implement main algorithm and get correct notes to be presented for each time a user selects a note
- Create reset, tempo, and undo features for timeline
- Implement and style controls for note selection steps (play note on select, allow user to hear notes before selecting, etc)
- Goals:
- Finish up features from Day 3
- Add instructions
- Style everything and make it look awesome
- Goals:
- Random song generator
- Transposing
- Adding beats
- Adjustible