Tk::MusicSheet... update

Ask a Question related to PERL Modules, Design and Development.

  1. #1

    Default Tk::MusicSheet... 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

    Jimi-Carlo Bukowski-Wills Guest

  2. Similar Questions and Discussions

    1. why is the "Adobe Acrobat 6.0.1 Update" message there at the top? -- the update doesn't work
      why is the "Adobe Acrobat 6.0.1 Update" message there there at the top? -- the update doesn't work
    2. PSE Update?
      From www.sitelink.net: CNET News.com reports that Adobe is preparing to make several major product announcements -- including a new version of...
    3. 5.0.7 Update Pack 1 requires SCO Update license?
      I was just up on SCO's FTP site and noticed they have, as of today, Update Pack 1 and Maintenance Pack 1. I have a question about the Update Pack...
    4. After Update
      On my After Update on a form. I have it populate 2 fields showing who was in there and what time the changes were made. The problem is, after the...
    5. Specifying "do not update" values in "additive" UPDATE sprocs
      Hello, I want to write a sproc whose purpose is to perform 'additive' UPDATEs to a given table. By 'additive', I mean I would like the existing...
  3. #2

    Default Re: Tk::MusicSheet... update

    On 2006-08-03, Jimi-Carlo Bukowski-Wills wrote:
    > 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
    >
    > ... 1) Display of items onscreen..
    > - 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,
    > 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??
    Check out muscript [url]http://www.pjb.com.au/muscript[/url] which has compact
    PostScript routines to draw all the things you want (eg. treble-clefs :-) )
    I hope you can keep your things scaleable, it's pretty important to
    be able to have small staves and large staves.

    Try to not confine output to Lilypond format. MusicXML can be a useful
    lingua franca. MIDI would allow the piece to be heard while editing,
    very useful for proof-reading. Hopefully it will be easy for other
    programmers to generate output in their own formats, or to input a
    score into your MusicSheet...

    Regards, Peter

    --
    AUS/TAS/DPIW/CIT/Servers hbt/lnd/l8 6233 3061 [url]http://www.pjb.com.au[/url]
    Pasaré, pasarémos dice el agua y canta la verdad contra la piedra
    -- Pablo Neruda
    Peter Billam Guest

  4. #3

    Default Re: Tk::MusicSheet... update

    Peter, thanks for your feedback...

    I'm hoping to either...

    1) Use an existing musical representation format (such as Music::Note) or

    2) Create an appropriate "ideal" musical representation format

    .... that will allow conversion to any format...
    including output using lilypond syntax, muscript syntax, and a variety of
    other formats

    Audio::Beep accepts the lilypond format which means that exporting in this
    format would allow playback.

    I suppose that one of the central parts of this module will be translation
    of music from one notation/representation to another... perhaps I should
    propose this as a separate system of modules...

    There should be an ideal way to represent the data of music, but there are
    many ways of notating it. I want this ideal representation to allow easy
    translation to any notation format. It is this ideal representation that
    the Tk::MusicSheet widget will export as a data structure. The data can
    then be filtered through another module to create a version in some format
    or other, eg lilypond, noteworthy, midi, letter, ABC, number,
    integer, parsons, and so on.

    What do you think?

    Jimi


    On Fri, 04 Aug 2006 08:44:20 +1100, Peter Billam wrote:
    > On 2006-08-03, Jimi-Carlo Bukowski-Wills wrote:
    >> 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
    >>
    >> ... 1) Display of items onscreen..
    >> - 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,
    >> 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??
    >
    > Check out muscript [url]http://www.pjb.com.au/muscript[/url] which has compact
    > PostScript routines to draw all the things you want (eg. treble-clefs :-) )
    > I hope you can keep your things scaleable, it's pretty important to
    > be able to have small staves and large staves.
    >
    > Try to not confine output to Lilypond format. MusicXML can be a useful
    > lingua franca. MIDI would allow the piece to be heard while editing,
    > very useful for proof-reading. Hopefully it will be easy for other
    > programmers to generate output in their own formats, or to input a
    > score into your MusicSheet...
    >
    > Regards, Peter
    Jimi-Carlo Bukowski-Wills Guest

  5. #4

    Default Re: Tk::MusicSheet... update

    I forgot to say...

    YES, this will be entirely scalable (graphically) since each graphical
    element shall be created using lines and ovals using the Tk::Canvas
    createLine, createOval, etc

    J

    On Fri, 04 Aug 2006 14:29:31 +0000, Jimi-Carlo Bukowski-Wills wrote:
    > Peter, thanks for your feedback...
    >
    > I'm hoping to either...
    >
    > 1) Use an existing musical representation format (such as Music::Note) or
    >
    > 2) Create an appropriate "ideal" musical representation format
    >
    > ... that will allow conversion to any format...
    > including output using lilypond syntax, muscript syntax, and a variety of
    > other formats
    >
    > Audio::Beep accepts the lilypond format which means that exporting in this
    > format would allow playback.
    >
    > I suppose that one of the central parts of this module will be translation
    > of music from one notation/representation to another... perhaps I should
    > propose this as a separate system of modules...
    >
    > There should be an ideal way to represent the data of music, but there are
    > many ways of notating it. I want this ideal representation to allow easy
    > translation to any notation format. It is this ideal representation that
    > the Tk::MusicSheet widget will export as a data structure. The data can
    > then be filtered through another module to create a version in some format
    > or other, eg lilypond, noteworthy, midi, letter, ABC, number,
    > integer, parsons, and so on.
    >
    > What do you think?
    >
    > Jimi
    >
    >
    > On Fri, 04 Aug 2006 08:44:20 +1100, Peter Billam wrote:
    >
    >> On 2006-08-03, Jimi-Carlo Bukowski-Wills wrote:
    >>> 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
    >>>
    >>> ... 1) Display of items onscreen..
    >>> - 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,
    >>> 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??
    >>
    >> Check out muscript [url]http://www.pjb.com.au/muscript[/url] which has compact
    >> PostScript routines to draw all the things you want (eg. treble-clefs :-) )
    >> I hope you can keep your things scaleable, it's pretty important to
    >> be able to have small staves and large staves.
    >>
    >> Try to not confine output to Lilypond format. MusicXML can be a useful
    >> lingua franca. MIDI would allow the piece to be heard while editing,
    >> very useful for proof-reading. Hopefully it will be easy for other
    >> programmers to generate output in their own formats, or to input a
    >> score into your MusicSheet...
    >>
    >> Regards, Peter
    Jimi-Carlo Bukowski-Wills Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139