Rhythm Tutor

Disclaimer

This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in
Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything
else useful to implementing this project. Everything I have prepared to help you is right here.

This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is
fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the
define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many
other projects of my own.

Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.

Please do not email me about this project without reading the disclaimer above.

In 4/4 musical time, if you only use 8th notes, quarter
notes, half notes, or whole notes there are only a limited number of possible rhythms. At
each time slot there can be sound or silence. The previous note can be tied/joined to the
previous or not.

It is thus possible to enumerate all possible rhythms and display the traditional
music notation for them. All you need is a Unicode font that has glyphs for the
four notes, or you can use png images and combine them on a Canvas.

You can also make the sounds, either with MIDI (Musical Instrument Digital Interface)
(which Java now supports), or with mathematically synthesized sound.

You let people chose the rhythms and then hear them. You can make it into a game. You
play the rhythm and they have to guess which musical notation corresponds.

You make the first note of each monotonous bar a little louder.

Other than 4/4 time you could do 3/4 or 5/5 or 6/6 etc.

You could use 1/3 notes, 1/5 notes. You could superimpose two rhythms on top of each
other. What does a 6 beat rhythm sound like on top of a 7? The idea is to give a musician
a tools to become exhaustively familiar with all the possibilities rather than sticking
in familiar ruts.

Here is another similar projects you could tackle: play scales in tunings based on
different numbers besides 12, e.g. where each note is the 16th root of two larger than
the last, rather than the 12th root. You calculate the twelfth root of 2 as Math. pow( 2, 1.0d/12.0d ) in Java.

Experiment with what the analogous chords and arpeggios sound like.

Try transposing some public domain music such as Bach’s counter point to your
new tunings to see what it sounds like.

Your program could be an application and Applet or a
JWS (Java Web Start) app.