-*-text; mode:auto-fill; -*-


MPP-FAQ



CONTENTS OF THIS FILE

INTRODUCTION
GOALS
DESIGN
WHAT MPP CAN DO
TODO-now
TODO-sometime
BUGS
I WANT TO HELP
CONTENTS OF PACKAGE
DISCLAIMER & COPYING POLICY




INTRODUCTION

Typesetting music is a complex task, whereas the message that printed
music conveys is usually a simple one. MusiXTeX is a system for
setting music (using TeX). Programming MusiXTeX is difficult. MPP is a
try at providing a simple interface for setting music using
MusiXTeX. MPP stands for MusiXTeX preprocessor, and this is how the program 
works, currently.

This document is not really a Q&A document: it only contains the
answers, not the questions. It describes what we think mpp should
be. If you have suggestions on MPP, or trouble using it, please
consult this first.


GOALS

- Describing a well-defined language for defining music. We call this
language (rather arrogantly) The Musical Definition Language (mudela
for short) or mpp-input. The program MPP reads an MPP-input sourcefile
and outputs a musixtex file.  This musical definition language should:

1. define music as unambigiously as possible.
2. be easily readable.
3. be writable in ASCII (with a simple texteditor).

At this time, the language isn't yet defined precisely. We are working
on it, and it will largely resemble mpp-input (as it is now).

- We want to provide an easy-to-use interface for typesetting music in
its broadest sense. This interface should be intuitive from a musical
point of view. By broadest sense we mean: it is designed for music
printed left to right in staffs, using notes to designate rythm and
pitch.

- MPP uses MusiXTeX and TeX for its output. This is not a key
issue: in a future version, MPP might bypass musixtex, but at the
moment MusiXTeX and TeX are very convenient for producing output, and
if MusiXTeX is maintainted properly, then there is no need to bypass
it. 

*
* AT THIS TIME TWO VERSIONS OF MUSIXTEX EXIST: ONE BY TAUPIN, ONE
* BY EGLER. WE THINK THIS IS A BAD IDEA, AND A WASTE OF EFFORT. WE
* WILL NOT SUPPORT TWO ENTIRELY DIFFERENT VERSIONS OF MUSIXTEX.
* 
* DEAR READER, PLEASE TRY TO PREVENT THE ARISAL OF TWO CAMPS OF
* MUSIC TYPESETTERS VERSIONS.  IT WILL BE IN EVERYBODY'S GOOD IF
* THERE IS ONLY *ONE* VERSION OF MUSIXTEX
*
*
* Perhaps Taupin and Egler could be persuaded to sum up the best
* features their packages. a voting could then be organised, to decide
* in what direction Musi?TeX should evolve.
*

Incidently, if it might come to a voting, be sure to send a copy of
your vote or OS kernel to <H.M.Zeilmaker@stud.tue.nl>. We are
still trying to determine wether this account is a null-device, or
how much data the harddisk can hold.

(For the humor impaired. This an attempt at  making a joke :-)

Don't get us wrong: we think Musi[xcX]TeX is a wonderful and useful
package: look at the effort we put into MPP.  We'd hate to see
it's usage decrease because of lack of agreement.

- Generate high-quality output. Ideally it should be of a professional
quality. We'd like to render Herbert Chlapiks words, "Fine music
setting is not possible without a knowledgeable printer,"  untrue.

- MPP does not display notes directly, nor will it be rehacked to be
used interactively. MPP writes output to a file.  It will not be
extended to play music, or to recognize music.  

This does not mean that the language mpp uses should solely be used
for printing music. You ("you" means "not we") could write midi
to/from mpp translators or something alike.

- MPP should support a broad range of platforms. Mpp is mainly
developed on unix machines. It should be portable to any platform
which can run (Musix)TeX and a C++ compiler. Yes. Even SMDOS is
supported, although we secretly hope that everybody ditches dos, in
favor of an os that lets you use as much memory as you like. The 640k
barrier is not a problem at this moment, but as mpp advance, this
could become an issue.

- MPP is free. Commercial windows packages for setting music are
abundant. Free musicprinting software is scarce.

Q: Why do you want to design a system when GUI systems exist? Look, i
can even set the notes  with my mouse!

A: This is the old GUI vs. text argument. We personally don't like
GUIs:

  - What you see is all you get
  - A language is much better suited for computer purposes
(playing, writing).
  - The learning curve is a lot steeper, but after you've mastered the
language, you can be much faster with mpp.

DESIGN

- mpp is written in C++. It will not be downgraded/ported to fit
broken systems. Since mpp is now not longer being developed on a DOS
machine using a backward C++ compiler, mpp is going to be upgraded to
higher level C++ (eg. templates, standard conformance)


WHAT MPP CAN DO (v0.46)

At the moment MPP's features include:

- multistaff parts. This includes orchestral scores, piano parts. Each
part is contained in a separate file.

- lyrics (through a perl script. See the pcnov ftp site)

- Chords, beams, slurs, ties, clef and meter changes, transposition,
super and subscripts, (de)crescendos


TODO-now

- define mudela.
- get rid of generic octave
- multibar rests
- generalised \script macro
- named voices/staffs
- update and extend the manual.
- crescendo placement
- multiple movements on one page. 
- Consult file TODO, NEWS (v = done, x = ?, * = not done)


TODO-sometime

- macros: mpp extensions in inputfiles.
- run trip.mpp for some situations mpp doesn't handle gracefully.
- remove musixtex deps in sourcelanguage.
- support: windows (?), MacIntosh (?)


BUGS

Yes.


But seriously, mpp is free software, and we like programming more than
testing. You can help us develop and maintain mpp by sending us
bugreports and suggestions. If you think mpp's behaviour is a bug, 
then please mail a full bugreport:

* An mpp-source file which generates the bug

* The mpp version (if you are using an experimental version, please
send the top lines of ChangeLog)

* Your compiler (eg. g++ -v) and OS version (eg. uname -a),
and a log of what mpp says.)


I WANT TO HELP!

If you think you can make MPP better, then you may do so; The GNU
copyleft guarantees you can. But do send us patches and suggestions,
to prevent two versions from floating around.

Keep in mind that we have also thought of mpp's design. Don't come with
suggestions how to radically make MPP better by rewriting the whole
thing. Don't bug us with philosophical discussions. We've got better
things to do.

Sorry if we are sounding a bit harsh.

If you want to help, and do not know how to code C++, then could you do 
something about the manual? We like coding a lot more than writing
docs.


DISCLAIMER & COPYING POLICY

MPP is copyright 1995, 1997 by its author(s). MPP is distributed under the
terms of the GNU General Public License. MPP is provided without any
warranty what so ever.  MPP may be freely distributed.  For further
information consult the GNU General Public License.


CONTENTS OF PACKAGE

This archive contains 

  src/*.h, src/*.cc: the mpp sources, written in C++
  src/*.c: GNU getopt_long
  notes.ini, script.ini: mpp runtime
  src/*cc.ini: mpp compile time datafiles
  input/*.mpp: example mpp input files
  mdo: a script for producing a dvi file from a mpp file
  input/mpp.tex: a file containing TeX definitions for mpp.
  mppdoc.*: an (incomplete) manual
  domppdoc: compile the manual into a TeXable file
  mpp.exe: an MSDOS executable.
  COPYING: the GNU General Public License
  SUPPORT: supported platforms.
  ChangeLog: list of changes
  INSTALL: how to install
  FAQ: you're reading this
  NEWS: summary of changes.
  TODO: what should have been in mpp.
  MANIFEST: a list of all files in this archive.

If you use the dos version, you are likely to encounter

  mdo.bat
  mpp.exe: msdos executable.

GETTING MPP 


WWW:

MPP has it's own webpage:
http://www.stack.urc.tue.nl/~hanwen/mpp-english.html.  You will find a
link to the latest release as well as a link to the latest
test-version---which is not guaranteed to work. Some examples (both
gif and mpp-input) and links can also be found here. And do drop by on
our orchestra homepage.

FTP:

We will upload the latest 'stable' release to the tex-archive,
eg. ftp.dante.de. You can also find the latest version of Musi*TeX
here. The directory would be /pub/tex/support/music2tex/

The latest test-release as well as the stable release should be
available from ftp://pcnov095.win.tue.nl/pub/mpp/. This machine is
occasionally used as a dos box, so it is not always available.


AUTHORS

MPP was written by 

* Jan Nieuwenhuizen <jan@digicash.com> (main author)

* Han-Wen Nienhuys <hanwen@stack.nl> (From v 0.45 on)


ACKNOWLEDGEMENTS

Thanks go out to:

-Han-Wen Nienhuys <hanwen@stack.urc.tue.nl> for writing this :),
and some other documents.

-Judith Blauw for useful help on musical matters

-Herbert Zeilmaker for a second opinion on the MPP language.

All these people are members of the Eindhovens Jongeren Ensemble,
(a small symphonic orchestra in the south of The Netherlands)

INSTALLATION

See the file INSTALL for detailed installation instructions.

Basically on a unix machine, you should do:

	1. execute 'configure'
	2. run 'make'
	3. run  'make INSTALLDIR=your_favourite_libdir'	
	4. install the "mdo" script correctly, and edit to suit your
	   needs. 

For an msdos machine, an executable is supplied. Copy it (along with the
.ini files and mpp.tex) to a directory, and create a batchfile :

        rem batch file
	del *.mx?
	\myfavdir\mpp %1 
	tex %1
	musixflx %1
	tex %1
     

SUPPORTED PLATFORMS

Mpp 0.4{5,6} is known to compile and run on the following platforms

  Machine, OS, compiler
    adress of person who compiled it

  Sun Sparc; SunOS 4.3.1_U1; g++ 2.6.3, g++ 2.7.0 
    Han-Wen Nienhuys
  Sun Sparc; SunOS ftl1 5.4 generic sun4m; g++ 2.6.0 
    Jan Nieuwenhuizen
  SGI Power Challenge; IRIX 5.3 11091811 IP19 mips; native CC, g++
    2.7.0; Jan Nieuwenhuizen
  i286/i386; SM-DOS; Turbo C++ 1.0, Turbo C++ 3.0, gnu make 3.71 
    Jan Nieuwenhuizen
  intel x86; SM-DOS; Borland C++ 3.0, gnu make 3.71 
    Han-Wen Nienhuys
  i386/i586 Linux 1.2.1[13]; g++ 2.7.{2,0} (ELF)
    Han-Wen Nienhuys
  i?86, Linux 1.3.30; g++ 2.7.0
    Dirk Laurie <dirk@calvyn.puk.ac.za>
  BSD/OS 2.01 i486, g++ 2.6.3
    Nick Goddard <nickg@clic.co.uk>
  IBM RS6000; Aix 3.2; g++ 2.?. 
    ?
  OS/2 Warp, Borland C++
    Christof Hesse <ea241@fim.uni-erlangen.de>

These platforms might give some problems.

  g++ <= 2.5 might trigger internal compiler errors. 
  Watcom 10.5: init.cc o[f]stream error


