CounterPointer is a teaching tool to help music theory students learn more about species counterpoint. You can use the web editor to input your melody, see generated example countermelodies, or write your own countermelody and check it against the set of counterpoint rules, all while being able to listen to your score played back on a piano in real time. Instead of manually checking for rule violations, you can immediately get feedback on your countermelody and quickly correct any mistakes.
CounterPointer was created to be a tool for music theory students / instructors to use to enrich the classroom learning experience of species counterpoint. In our experience, we have found counterpoint homework to be quite often rote, requiring very little skill besides following a long checklist of rules. We thought it would be an interesting take to see how the strong mesh of rules in counterpoint could lend to an algorithm, and hope that others may find a service like this novel and helpful!
-
- Input a melody, countermelody duo and check its validity against a given species of rules.
- Rule violations show up at the bottom of the screen and give a small description on how a counterpoint rule was violated.
-
- Input a melody and the generate button can generate a random valid countermelody to fit the counterpoint rules of the species, key, and mode specified.
-
- Press the play button to see how your counterpoint sounds at a fixed tempo, and press the download button to get a PDF version of the score made!
This project is 24/7 hosted at the link given above, but if you want to run it yourself:
- BACKEND
- Our backend runs on Maven for Java. The download for Maven can be found here
- Once downloaded, navigate into the
/server
folder, runmvn package
to build the project, and./run
to start the server on localhost.
- FRONTEND
- Our frontend runs on Typescript and React.js. Typescript can be found here, and React (along with all other dependencies) can be installed by running
npm install
in the/frontend
directory - To build the frontend typescript package, navigate into the
/frontend/package
directory and runtsc build
. - Once the typescript packages is built, navigate to the
/frontend/client
directory and runnpm start
oryarn start
to initiate the React app on localhost
- Our frontend runs on Typescript and React.js. Typescript can be found here, and React (along with all other dependencies) can be installed by running
Highlight a region of the staff and place notes in with the respective letter keys on your keyboard. You can use the dropdowns to modify the key, mode, and species s as well as, once inputting is finished, check or generate a counterpoint. Further controls and hotkeys (for accidentals, note duration, etc.) are detailed on the landing screen of the site.
We encourage you to check out Robert Hutchinson's online textbook to species counterpoint. It lays out all the rules we are checking for in each species. If you need a refresher on basic music theory, this section of the same online textbook is the right place to be.
Star the project, and help us make it better by opening issues and pull requests!
CounterPointer was created as the final project for Brown University's CSCI 0320 course by Alex Ding, En-Hua Holtz, John Chung, and Orion Bloomfield.