RELATIONSHIPS AMONG MUSIC TYPESETTING PROGRAMS ────────────────────────────────────────────── (rev. 11/30/09) At the moment, we have seven classes of related programs. Related programs are defined as programs that are built on the same source code or very similar source code. The functions of related programs need not be similar. For example, dskpage.z and pspage.z are built on the same source code, but the former displays music whereas the latter creates postscript files. Related programs ───────────────────────────── autoset z mskpage z dskpage z eskpage z scorecon.z kskpage z formtext z s2ed z xmskpage z pskpage z vskpage z sconpage.z ss2ed z mkpart z pspage z autoscr z spaging z vspace z mscroll z dscroll z scrpage z fskpage z ufskpage z xdskpage z = current as of 01/09/09 = current as of 04/24/09 = current as of 04/24/09 = current as of 11/30/09 ╔═══════════════════════════════════╗ ║ I. The autoset class of programs ║ ╨───────────────────────────────────╨ autoset.z is the program that builds i-file representations from stage2 files. The program operates on one stage2 file at a time, and the output is one long, non-system specific line of music, stored in a library called i-files. There currently is no program that can display these i-files; they must first be made into parts or into a multi-part system by the program mskpage.z. s2ed.z and ss2ed.z have the same source. ss2ed.z uses notesize 6 fonts, which are more practical for the smaller screens on notebook computers. s2ed.z contains most of the elements of autoset.z, a bare minimum of elements from mskpage.z, and the display logic from dskpage.z. The purpose of s2ed.z is the provide a graphics based method for adding information to bare-bones Stage2 files as they emerge from the music data-entry process. Because the purpose is simply to add data, s2ed.z does not contain some of the subtleties of autoset.z. s2ed.z can also be used to add print suggestions which provide for some vertical space editing of the music notation. autoscr.z is the SCORE conversion version of autoset.z. They now have the same source. ╔═══════════════════════════════════╗ ║ II. The page-making programs ║ ╨───────────────────────────────────╨ mskpage.z and xmskpage.z have the same source. The purpose of these programs is to combine one or more non-page specific i-files into a set of page specific i-files, which serve as the source files for music display and printing. The difference between these two programs is that xmskpage.z contains a display component (based on dskpage.z), which shows the user each line of music as it is being typeset and allows the user to alter the horizontal space between musical objects (notes, rests, barlines, etc.). mskpage.z and xmskpage.z can produce and also read from a format file, which provides information from earlier sessions of running the program (useful when i-files have been updated with changes or new information). The format file generated (and read) by xmskpage.z includes specific information about the horizontal location of musical objects (so that these modifications can be propagated through successive runnings of the program). The xmskpage.z program also has bugs, so its performance is not guarenteed. For the last year (2009), xmskpage.z has not been used, mostly because of its complexity and unpredictable behavior. As of 11/30/09, it has not been updated and is not current. spaging.z is the SCORE conversion version of mskpage.z. As of 10/13/07, they have the same source. mscroll.z and scrpage.z are programs based on the mskpage.z source that produce a one long, single system of output suitable for scrolling. The mskpage family may thus be described as follows: Output to pages Scroll output (SCROLL_OUT = 0) (SCROLL_OUT = 1) ┌────────────────────┬────────────────────┐ Regular output, │ mskpage.z │ mscroll.z │ no paramters │ Pars = (0,0) │ Pars = (0,1) │ (SCORE_PARS = 0) │ │ │ ├────────────────────┼────────────────────┤ Include score │ spaging.z │ scrpage.z │ parameters │ Pars = (1,0) │ Pars = (1,1) │ (SCORE_PARS = 1) │ │ │ └────────────────────┴────────────────────┘ Compiling Paramaters (SCORE_PARS, SCROLL_OUT) mkpart.z is based on an older version of mskpage.z, and, to my knowledge, has not kept up with changes. There may come a time (and situation) where mkpart.z's unique orientation is deemed useful and we will want to bring the program into the present. ╔═══════════════════════════════════════════════╗ ║ III. The music display and related programs. ║ ╨───────────────────────────────────────────────╨ dskpage.z, pskpage.z, dscroll.z, and pspage.z have the same source. dskpage.z displays music from page specific i-files pskpage.z prints from the same files. dscroll.z displays music from a long-format page specific i-file pspage.z makes postscript files from page specific i-files The vspace.z program has a different purpose entirely, but it also has an important connection to dskpage.z. The purpose of the vspace.z program is to compile an edition of a score from a set of page specific i-files spread out over a set of (movement) sub-libraries. In particular, the output of the mskpage.z programs is directed to a set of sub-libraries in a library called pages. An edition, on the other hand, is contained in a library called score, with each page of the edition being a separate file in that library. The vspace.z program assembles these page files from the dispersed page files in the pages sub-library. But that is not all that vspace.z does. The source files have four additional short-comings: 1) they need to have .mpg information added (as Z records), 2) they need page and copyright information added, 3) they need to have the musical lines adjusted vertically to avoid clashes between lines and to justify lines to the bottom of the page, and 4) they need to have text lines adjusted so as to avoid clashes with the music. To do its work, vspace.z needs an instruction file (usually called scform). An example of such a file is edform.doc in the current library. The vspace.z program incorporates large sections of dskpage.z for the purpose of determining if there is an actual clash between separate lines. This feature is used only in certain cases; never-the-less, it must be maintained using the current version of dskpage.z. fskpage.z and ufskpage.z share the same source. The purpose of fskpage.z is to add kerning data to (older) page specific i-files. The reason this is desirable is that the kerning matrix was developed in parallel with the glyph spacings for the various text fonts. In some cases, glyph spacings were changed to optimize the kerning matrix. Without kerning, and using the newer version of the fonts, some of the inter-glyph spacings will be inappropriate. fskpage.z should be run on any (older) page specific i-files before they are re-printed or released for display. At the moment, the program can process all files in a particular library. Note: Any page specific files compiled before (05/06/04) would probably be improved by having fskpage.z run on them. This would include most of our Handel editions. ufskpage.z removes kerning from one or more page specific files. ╔═══════════════════════════════════╗ ║ IV. The page editing programs ║ ╨───────────────────────────────────╨ eskpage.z and vskpage.z use the same source, but have different purposes and send output to different formats. eskpage.z is the original program. It is a page specific editing program, used to "top off" the pages of a particular edition, mainly for cosmetic purposes. The problem with using eskpage.z is that the output (usually directed back to the source page file) provides the only record of what was done. In essence, the output is an orphan -- no longer automatically derived from upstream sources. vskpage.z is a pared-down version of eskpage.z; the only elements that can be moved are musical lines and text lines. The output, however, is a set of instructions which can be incorporated in an scform file and used as a source for the vspace.z program. In this case, the process contributes to the downstream flow of data. eskpage.z contains most of the display modules from dskpage.z The eskpage.z and vskpage.z programs implement the use of macros. For these programs, a preset group of macros is stored in the file eskmac.k. In practice, this preset group has become a "standard" set of commands, as follows: F5 = move up a line. F6 = store results and redisplay at half size. F7 = move down a line ╔═══════════════════════════════════╗ ║ V. The score conversion programs ║ ╨───────────────────────────────────╨ scorecon.z and sconpage.z are built on the same source code. scorecon.z converts page specific i-files (output from spaging.z) to Lelend Smith's SCORE .pmx format. The output is directed to the same library that contains the input. Note: scorecon.z only works with notesize=14. sconpage.z operates on one long-format, page specific i-file (created by scrpage.z) The output is pseudo-SCORE .pmx format, because the P3 parameters (horizontal position) are allowed to grow to any size. ╔═══════════════════════════════════╗ ║ VI. Other programs ║ ╨───────────────────────────────────╨ kskpage.z is an orphaned program used for displaying output from the music scanning process. I haven't worked on this process since 2002, so I am unsure of the state of this program. In any case, it is not part of the regular music data-entry/display process. formtext.z is a new program which takes as input flat files with format instructions and creates a set of X-records that can be fed to dskpage.z or pskpage.z. formtext.z could develop into a full-fledged typesetting program. It contains some intelligence for handling fonts and special glyphs, as well as kerning.