denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Denemo-devel] Patch for entering rhythms and then overlaying pitches


From: Richard Shann
Subject: [Denemo-devel] Patch for entering rhythms and then overlaying pitches
Date: Thu, 13 Sep 2007 17:59:07 +0100

I attach here the next instalment of my denemo development aimed at an
efficient system for entering large amounts of music. The aim is to be
able to enter a single line (voice) of music in just over the time
needed to play it through twice.

The present patch adds a function to input a rhythm pattern purely as
rhythm (ie all on one note). When rhythm patterns is selected this
function is bound to the Enter key by default. With this it is possible
to enter the rhythm of a piece by selecting rhythm patterns or durations
and pressing Enter to put them into a staff.

The patch also adds to the pitch recognition system a new option,
overlay tones, which results in pitches being overlaid on the rhythm of
the current measure. Any extra notes are kept in a queue for that
measure, so that any spurious notes or mistakes can be deleted and the
desired notes will move along the queue and be overlaid onto the rhythm
already set down for that bar.
Notes which have a pitch overlaid onto them are indicated in blue in the
display, and deleting them leaves the rhythm intact while deleting the
overlaid pitch.

The intended use is as follows:
1) Rhythm patterns are chosen for the piece
2) A single voice is entered all on one note by selecting rhythms and
pressing Enter
3) Pitch recognition is selected, and the first bar is selected.
4) The musical line for that measure is played into a microphone,
ignoring mistakes etc by repeating the correct note.
5) The next measure is selected and you continue entering the melody
6) Any measure that has spurious notes in it is selected and the
spurious notes deleted
7) You finish with Clear overlay, which clears any extra pitches you may
still have for any of the measures. (You don't strictly need to do this
if you are just going to save and quit, but you can't delete as normal
until you have deleted all the overlay pitches on the note, so if you
want to edit as normal, this is what you would do).

The other use for pitch recognition - entering music - is still there,
under the Insert option in the pitch recognition control panel. The
default is the new overlay pitches.

Improvements to do:

1) provide a more convenient keybinding for NextMeasure than the
ctrl-right arrow that is standard.

2) provide a function to step to the next measure which has too many
overlay pitches for the rhythm - and/or highlight such measures. This
will make it easier to chase down spurious pitches detected or wrong
notes played when entering pitches.

3) provide a "guided playback" key - each stroke of the key advances the
cursor and sounds the pitch - so that you can play the music as fast or
slow as you like by rhythmically pressing the key. This would be the
best way of checking the piece (assuming you have got the rhythm
correct).

4) provide a playback command to playback the rhythm of the piece
(before adding the pitches), so that it can be checked by ear, reading
the original as it plays back.

5) possibly: compare the duration of pitch-recognized pitches with the
rhythm that it will overlay, and detect spurious pitches by their
implausible duration. More surely: provide better visualization of all
the overlay pitches, including extra ones at the end of a measure.

6) possibly: provide a duration detection mechanism - you tap out the
rhythm of a measure on the spacebar, and the durations are analysed with
respect to the set of rhythms you have declared for the piece, and the
rhythm entered. What might make this work is that the algorithm knows
that everything fits in the measure, and when the measure starts
(another key would be needed to start with a rest) and the limited set
of possible rhythms.

More to do than done already!

Richard Shann


Attachment: diff.txt
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]