Tk::Music***... update



I've copied the original proposal below the current message...

Current message:

=pod

Update...


There are several key areas here:

1) Display of items on the screen
2) Addition of directions, comments, etc
3) Modification of item preferences (stalks, accidentals, etc)
4) Calculation of positions:
- a) horizontally
- b) vertically
5) Representation of musical notes
- a) length
- b) pitch

These would eventually all be part of the system, running in reverse order,
but they represent individual functional systems and will be built in the order shown.

1) Display of items onscreen..

First, we need to define what and how we want to display...

- a) I want to display music for editing only...
-- i) The staves can run on horizontally as long as they like (like in Noteworthy Composer)
-- ii) We only need one Canvas widget to display things on
-- iii) for final prints we can export to Lilypond
- b) I want to display musical directions, and perhaps other comments
- c) It would be nice to include lyric editing here too

So I need to create routines to draw notes, stems, tails, rests, etc, etc, etc
And I need to place them in the correct places using a cursor
The cursor will be moved according to the note sizes, spacing values, etc, stored
in the staff object and the note lengths stored in the note objects

For appending a single note, only that note and the length of the staff need to be altered
But for editing, inserting or deleting a note, the rest of the notes need to be re-painted/moved

Comments??

=cut






Original proposal:

=pod

comp.lang.perl.tk

Proposed CPAN Module: Tk::Canvas::Music

This module will create a Tk::Widget which ISA Tk::Canvas. It will
export functions that paint scores, notes, key signatures, time
signatures, tempo and other text, bar lines, a cursor/caret, ledger
lines, and so on. It will have a set of default bindings that allow
input from the keyboard. The key-mapping may be redefined at any time.

There will be a Read-Only version with none of the input bindings, for
display purposes or for the perl community to add their own bindings to.

A module like this can allow the printing of musical score, the input of
music in a conventional manner, or even the export of music to midi,
MusicXML, or any other form of storage. The Music::Note module will be
used to create a new Note module to represent the notes as objects.

The new Note module is necessary so that notes may have a length
property and may be rests. A Staff module will allow representation of
staves as objects. paint()ing the Staff will automatically paint() all
of the notes that belong to it, using the treble clef by default, but
adjusting the vertical position appropriately for any clef. Since the
Music::Note module is used, transposition will be easy, thus a
particular staff of a composition may be isolated and printed for Bb or
Eb (or any other) instruments.

This module is at the idea stage, will be written in perl, and will have
the standard perl license.

So, what do you think?... feedback please.

=cut

.


Quantcast