Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flosSoftware/harmonizer
learn music harmony and rhythm!
https://github.com/flosSoftware/harmonizer
drum-machine music-composition music-theory synthesizer
Last synced: 25 days ago
JSON representation
learn music harmony and rhythm!
- Host: GitHub
- URL: https://github.com/flosSoftware/harmonizer
- Owner: flosSoftware
- License: agpl-3.0
- Created: 2019-07-14T10:44:01.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-09-02T14:42:10.000Z (over 5 years ago)
- Last Synced: 2024-08-03T16:09:47.349Z (4 months ago)
- Topics: drum-machine, music-composition, music-theory, synthesizer
- Language: JavaScript
- Size: 341 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-javascript-audio - harmonizer - interactive piano that teaches harmony and rhythm theory (Music theory / Web MIDI API)
README
# Live demo
- http://learnharmony.net
# Instructions
- Open index.html
- Click on the piano keyboard (or press SPACE) to start playing
- Please note that you can click only the light blue buttons on the keyboard
- To stop, press SPACE
- Adjust the parameters as you like, toggles/sliders work while playing, while the others take effect on the first restart
# How does this work
- Plays chords according to predefined progressions, in various keys taken from the Circle of fifths
- It always starts from the key you pressed; if you use SPACE, it starts from A3 note (so the first key is A major or A minor)
- At times, shifts to a new key (using pivot chords) according to the rules chosen in the select field
- To modulate from a major key to its relative minor, it makes use of *ii - iv* correspondence or *iii - i* correspondence (in the latter case it doesn't switch to the strict relative key, but to its neighbouring key)
- To modulate form a minor key to its relative major, it makes use of *I - vi* correspondence or *VI - I* correspondence (in the latter case it doesn't switch to the strict relative key, but to its neighbouring key)
- At times, shifts to a new progression
- At times, makes a chord inversion (if Inv parameter is toggled on)
- Rhythm is generated randomly and changes at each restart
# Thanks to ...
- p5.js, p5.sound
- bootstrap
- https://codepen.io/zastrow/pen/oDBki for the nice piano keyboard.
- https://soundpacks.com/free-sound-packs/jazz-drum-kit/ for the drum kit sounds.