Hello everybody,

this is a rather lengthy message,
so I decided to give you first
some hints on its
                            Contents:
                            =========

   Paragraphs  1) - 7)  are questions about PMX (and maybe M-Tx, too).

   Paragraph   8)  is a question/suggestion/contribution
                   to the   T R A N S P O S I N G   problem of MusiXTeX
                   (or any music typesetting program)
                      Probably/Perhaps you know the method suggested in
                   this paragraph.  Is it impossible to teach it
                   to MusiXTeX?

   Two sources for M-Tx are included (between the Lines "=============").


Thanks for reading!

## Eckart


-------------------------------------------------------------------------
I am using M-Tx 30,  PMX1.3a   (or was it called 1.31?) and MusiXTeX T74.
-------------------------------------------------------------------------

After paragraph 3) I append an M-Tx-File.
Looking at its output a few questions
came into my mind:

1) Obviously PMX suppresses the output of full-bar pauses (r0) if they
   occur only in one voice ("line of music"). If they occur in both
   only one is put.

   Is there a possibility to override this (yet brillant(!)) feature?
   For example in bar 58 I might wish to put a full bar rest
   to prepare the player for the coming "Einsatz" of the soprano.
   (How do you say "Einsatz" in English?)
   (Even in bar 52 (Tenor), and bars 36 + 37 (S+A) I might be tempted to do so.)

2) In bar 53 I do not understand the vertical alignment: I tried several
   shifting manipulations but they did not yield what I want.
   If I do not shift anything the tenor would not strangely fall in
   between the two eights of the bass.
   Why?
   And how do you manipulate the shifting?

3) Bar 25 raises the question: Does PMX provide a possibility to
   shorten the stems --- apart from the inline TeX method always available?

Here is the MT-x's source file:
============================================================================
Title: Fuga VII a 4 voci
Composer: J.S.Bach
Options: b
PIANO4VOCI: Voices S,A T,B; Continuo; Clefs G F
Style: PIANO4VOCI
Meter: C/
Flats: 3
Pages: 2
Systems: 12

%%Ab

% bar 1
r0 |
r0 |
r0 |
e0 |

% bar 2
r0 |
r0 |
r0 |
b2+ r4+1 a |

% bar 3
r0 |
r0 |
r0 |
g4 c2 b4 |

% bar 4
r0 |
r0 |
r0 |
a4 a8 g a4 c |

% bar 5
r0 |
r0 |
r0 |
f4- b2 a4 |

% bar 6
r0 |
r0 |
r0 |
g4 g8 f g4 b |

% bar 7
r0 |
r0 |
b0 |
e4- e8 d e4 g |

% bar 8
r0 |
r0 |
e2 r4+7 e4 |
c4- d8 e f2 |

% bar 9
r0 |
r0 |
d g2 f4 |
b2- ( b2+ |

% bar 10
r0 |
r0 |
e4 e8 d e4 g |
b ) an4 g |

% bar 11
r0 |
r0 |
c4- f2 e4 |
an4d-2 b1 a g4 a |

% bar 12
r0 |
r0 |
d4 d8 c d4 f |
b b- b+ af |

% bar 13
r0 |
r0 |
b- b8 a b4 d |
g g- g+ f |

% bar 14
r0 |
e0 |
g4- a8 b c4 b8 c |
e f8 g ( a2 |

% bar 15
r0 |
b2+ r4-2 a |
d4 f b- d |
a4 ) g8 f g4 b |

% bar 16
r0 |
g4 c2 b4 |
( e0 |
e4- a8 g a4 c |

% bar 17
r0 |
a4 a8 g  a4 c |
e2 ) d4 c |
f2d- g8 a |

% bar 18
r0 |
f- b2 a4 |
d4d e1 d c4 d |
b0 |

% bar 19
r0 |
g4 g8 f g4 b |
e4 b8 a ( b2 |
e2d- d4 |

% bar 20
r0 |
e4-  f8 e  f4 a |
b4 ) a8 g ( a2 |
c2 r4 f |

% bar 21
b0 |
d4- e2 d4 |
a4 ) g f b |
( b0- |

% bar 22
e2 r4+5 e |
c4 g+ ( c2 |
g2 ( f2 |
b2 ) an |

% bar 23
d4 g2 f4 |
cr4 ) b8 an  ( b2 |
f4 ) d ( g2 |
b2 r4 g |

% bar 24
e4 e8 d e4 g |
b2 ) an4 g |
g4 ) c8 b ( c2 |
c2 r4 e |

% bar 25
c4- f2 e4 |
an4d   b1 a g4 a |
c4d ) d1 c b4 c |
f2  r4 f |

% bar 26
d4 d8 c d4 f |
b2 r4 f4 |
d2 r4+9 c |
b4 f b an |

% bar 27
b- b8 an b4 d |
g2 r4-6 d |
d2 r4+7 af4 |
g d g f |

% bar 28
g- an ( b2 |
e f g2 |
b c df2 |
e2d en4 |

% bar 29
b ) an |
f2.e |
c4 b c2 |
f0 |

% bar 30
b4 d8 e f4 d |
d4 f8 g  ( af2 |
b0 |
b2- r |

% bar 31
b4 e8 f g4 e |
ar4 ) g8 a b4 g |
e2 r4+7 e |
r2 e |

% bar 32
f4 e8 d c4 d |
f b a b |
d4 g2 f4 |
b2+ r4+0 a |

% bar 33
e4 r4 r2 |
b- r4 r2 |
e4 e8 d e4 g |
g c2 b4 |

% bar 34
r0 |
r0 |
c- f2 e4 |
a a8 g a4 c |

% bar 35
r0 |
r0 |
d d8 c d4 f |
f4- b2 a4 |

% bar 36
r0 |
r0 |
b- b8 a b4 d |
g g8 f g4 b |

% bar 37
r0 |
b0+ |
g2- ( g+ |
e4- e8 d  e4 g |

% bar 38
e0 |
X1.3S e2 r4+1 e |
g4 ) g8 f g4 an |
c2- c+ |

% bar 39
b2+ r4+6 a |
d g2 f4 |
b4 d8- c d4 f |
b4 b8 a b4 d |

% bar 40
g c2 b4 |
e e8 d  e4 g |
g4 g8 f ( g2 |
e2 r4+4 en |

% bar 41
a a8 g a4 c |
c- f2 e4 |
g4 )  c4- ( f2 |
X.9S f f8- en f4 an |

% bar 42
f- b2 a4 |
d4 d8 c d4 f |
f4 ) f8 e ( f2 |
b2 r4+4 d |

% bar 43
g4 g8 f g4 b |
b- b8 a b4 d |
f4 ) b- e4 r4+10 |
X.9S e e- e8+ d c b |

% bar 44
e- e8 d e4 g |
g- an8 bn c4 b |
r0 |
c4 c- c8+ bf a g |

% bar 45
c- d8 e ( f2 |
( cr2 c8 ) bn c d |
r0 |
a4 a- a+ g8 f |

% bar 46
f2 ) e8 d e f |
bn4 g ( c2 |
r0 |
( g0 |

% bar 47
d4 g2 f4 |
c2r ) ( bf2 |
r0 |
g8 ) f g a  g f en d |

% bar 48
en c ( f2 |
b2 ) a8 g a b |
r0 |
( c0 |

% bar 49
f2 ) ( ef |
g4 c2 b4 |
r0 |
c8 ) b c d  c b an g |

% bar 50
e ) d8 c d e |
an4 f ( b2 |
r0 |
( f0 |

% bar 51
c4 f2 e4 |
b2r ) ( af |
r0 |
f8 ) e+ f g  f e d c |

% bar 52
d b ( e2 |
a ) g8 f g a |
r0 |
( b0 |

% bar 53
e2 ) ( df |
f4 b2 a4 |
r2 X1 b2 |
b8 ) a+ b c  b a g f |

% bar 54
df4 ) c b2 |
b4 a2 ( g4 |
e2  r4 df |
g4 a dn- en |

% bar 55
a2 r2 |
g4r )  f8 g  ( a2 |
c f2 e4 |
( f2  f8 ) ef df c |

% bar 56
r0 |
a4 ) f b a |
df d8 c d4 f |
( b2 b8 ) b c df |

% bar 57
r0 |
g g8 f g4 b |
b- e2 df4 |
( e2   e8 ) e- f g |

% bar 58
r0 |
e- a2 g4 |
c c8 b c4 e |
a8 b c df  ( e2 |

% bar 59
b0 |
f4 f8 e f4 g8 f |
a- a8 g a4 b8 a |
e2 ) dn |

% bar 60
e2 r4+4 e |
e4 g8 f g4 an8 g |
g4 b8 a b4 c |
e0 |

% bar 61
d4 g2 f4 |
f4 b8 af b4 d |
d4 d8 c d4 f |
b2+ r4+2 a |

% bar 62
e e8 d e4 g |
e4 c g2 |
b g ( e2 |
g c2 b4 |

% bar 63
c- f2 e4 |
a4 a2 g4 |
e4 ) c8 b c4 e |
a4 a8 g a4 c |

% bar 64
d4 d8 c d4 f |
a4 f ( b2 |
f d g d |
f4- b2 a4 |

% bar 65
b- e ( df2 |
b4 ) r4 r4 a4 |
e r4+8 r4+8 f |
g4 g8 f g4 b |

% bar 66
d4 ) c ( b2 |
g2 r4-6 f |
e2 r4+6 dn |
e4- e8 dn e4 g |

% bar 67
b4 ) a8 g ( a2 |
e2d-2 d8 c |
c2.a |
c4- d8 e  f2 |

% bar 68
a2 ) gf2 |
d4 b ( e2 |
f2 r4+4 c+ |
b2- an |

% bar 69
f0 |
e2r ) d |
f- f8 e f4 b |
b0 |

% bar 70
e0 of ||
b0 ||
g0 ||
e0- ofd ||
========================================================================
The MT-x source at the end of this message raises some more questions:

4)   Could PMX be asked to cope with more than 128 characters per line?
     One of the lines has as many as 127 characters although it contains
     only one bar. (This is due to a number of melismatic lyrics in that
     bar. I guess this case is not that singular as one might think at first
     sight.)

5)   In bar 4 the grace note strangely makes PMX (or M-Tx?) forget the
     correct octave: I had to put an extra "-"-sign which is not consisent
     with PMX's usual octave handling.
     What is the reason?

6)   In this piece it would be nice to enable PMX to handle an instrument
     with *two* systems which is not the 'first' ("bottom") instrument.
     I guess this is to much asking, right?
     How could I handle this problem?

7)   In Line 17 and 18 of the following file you find "%%%Ar" and "%%%K-1+2".
     So if you take off one of the %-characters, MusiXTeX should transpose the
     whole Arioso to D-major.
     (I am still using MusiXTeX T74.) The manual says, MusiXTeX would
     transpose and change everything correctly -- except for the natural signs
     "\na" which will not be changed. But I see a number of accidentals which
     are not changed correctly.
     (BTW: PMX's output file does not put "\transpose=-1" anywhere, so maybe
     PMX has its own method? Anyway, neither works: If I insert
     \relativeaccid\transpose=-1\generalsignature{2} in the tex-file,
     MusiXTeX would not transpose correctly,
     and if I trust only PMX, the piece is still not transposed correctly.

     What is the problem?

8)   Talking about transposing:  Why is MusixTeX not able to handle the
     natural signs correctly?  MusiXTeX has been taught a lot about transposing,
     so I think it should be able to learn it perfectly.

     I have not dug in MusiXTeX's stomache so deeply yet but I think the
     algorithm presented here should be digestable for MusiXTeX ...

     If a natural sign occurs you have to analyze its meaning by looking at the
     current signature (With this term I want to refer to the 'local' signature, which 
is not necessarily
     equal to the generalsignature, if there had been changes of signs by
     "\setsign".) So looking at the current signature, MusiXTeX would find out,
     whether the natural sign means a
      i) chromatical raising     ii) chromatical lowering   iii) a (chromatical)
         (if the current             (if the current              "reinforcement"
          signature would             signature would            (if the current
          yield a flatted             yield a sharpened          signature would
          pitch, unless the           pitch, unless the          yield the same
          natural sign had            natural sign had           pitch)
          been put.)                  been put.)

    The accidental of the transposed version has to be put according to the
    result of this analysis -- but again with respect to the current
    signature of thist transposed version:

   i) chrom.raising      is indicated by a DOUBLESHARP | SHARP | NATURAL,...
  ii) chrom.lowering     is indicated by a  NATURAL    | FLAT  | DOUBLEFLAT, ...
 iii) chrom.reinforcemt. is indicated by a    SHARP    | NATURAL |  FLAT,...
 ... according to
           whether the curr.signature is a    sharp    | natural |  flat.


   This is in general the way how transpositions works: Compare
   the original current signature to the new one,
   find out the meaning of the accidental according to the original
   signatuure and translate it into the new one.
   MusiXTeX can do that in many cases (according to the manual).
   Why does it give up when struggling with the natural sign?

   Now the above 'algorithm' may still seem complex: It would require
   a lot of "\if"s in order to treat all the different cases.

   But there is a very simple 'formula' to do   A L L   the transposing:
   Let us attach an integer number to each note endowed with any accidental
   in the following manner: (I use MusiXTeX's way of coding the accidentals)

   Endow all the notes f, c, g, d, a, e, b with the possible accidentals
   (we restrict ourselves of course to the ones in common use) and receive
   the following 'chain'.

   note:        ...   <b _f _c _g _d _a _e _b  f  c  g  d  a  e  b ^f ^c ^g ^d ^a ^e 
^b >f ...
   integer attached:
    int(note) = ...   -9 -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10 11 
12 13 ...

            [Actually we are viewing a bijection 'int'
             but practically we will need only a restriction of 'int' to
             the subset consisting of the notes in use.
             In use would mean: Everything which MusiXTeX is capable of.
             So since MusiXTeX knows the five accidentals
               \dfl, \fl, \na, \sh and \dsh
             we would have a subset   7 x 5 = 35 possible notes,
             ranging from   int(<f)=-15  to   int(>b)=19.
             In the following we establish the 'Transposition-Operator'
             on the complete set of all notes and give its formula
             using the bijection 'int'.]


   To transpose correctly we only need to know the DIFFERENCE of the
   *old* and the *new* current signatures which in fact equals the
   DIFFERENCE of the old and new *general*signatures:

   diff := newCurrSign - oldCurrSign = newGenSign - oldGenSign.
   To do the transposing you only have to add this integer number called "diff"
   to the integers above, each one representing a note of the whole
   chromatical spectrum.
   The result gives you the note needed for the transposed version.
   So put *its* accidental!

   In my Example (Tranposition E flat major --->  D major) we would have:
       diff = 2 - (-3) = 5.
   So the E natural (voice #1, Violone, bar 3) would be transposed to a D sharp:
      int(e nat) = 4  --->   4 + 5 = 9  =  int(^d)
   So let MusiXTeX put the accidental of a D sharp which is a sharp sign!
   The  E flat (same voice, bar 4) would run along the same line:
      int(e fl) = -3  --->   -3 + 5 = 2 = int(d)
   So let MusiXTeX put the accidental of a D which is a natural sign!
   (I could have written `=d� instead of merely `d� in the chain above.)

   The accidentals belonging to any note can be computed by calculating
   modulo 7, using more or less Euklids Division Algorithm.....

   [ BTW: Recently I saw a discussion about transposing in the mailing list,
          which rose the question whether MusiXTeX should simplify
          "difficult" notations. The algorithm above would never simplify
          these cases (e.g. a doubleflatted 'f' would never be changed into a
          flatted 'e'). And I strongly vote for this behaviour: If you want
          to change the notations do it by hand. If a program would
          change the orthography I would not trust its transpositions.

          If you typeset music not related to 'traditional' signatures
          there might be the wish to simplify (though I would still deny this).
          But I am convinced that this should be a 'cura posterior':
          FIRST teach MusiXTeX how to transpose perfectly.
          THEN think about an extra 'option' to
          ignore enharmonical orthography in favour of simplicity. ]

========================================================================
Title: Betrachte, meine Seel
Composer: Johann Sebastian Bach
VioleDAmore: Voices V1,V2; Clefs G
Basso: Voices B; Vocal; Clefs F
Liuto: Voices  MD MS; Clefs a F
Cont:  Voices Cnt; Clefs F
Style: VioleDAmore  Basso  Liuto  Cont
Flats: 3
Meter: C
Size: 16
Pages: 2
Systems: 6

%%h
%%(19.) Arioso  -- Adagio
%%Ab
%%%Ar
%%%K-1+2
%%\\smalltype\
%%\\setinterinstrument3{1\Interligne}\
%%\\setinterinstrument2{-4\Interligne}\
%%\\setinterinstrument1{-2\Interligne}\

% Block 1
r8 b c ( d d ) e Gud c ( a
r8 g a ( f f ) g a ( d-
r0
%%%U: Wird auf der Orgel mit 8 und 4 Fu{\ss} gedackt gespielt.
r1 e g b  e c a f+  d b g b  c a f d+
e8- e e e  e e e e
%%%l 
%%% col Bassono grosso 
%%% U: tasto solo 
 e4- r  e r

% Block 2
a ) g a ( f f ) g a ( d-
d ) e c ( d d ) e c ( a
r4 r8 b- a+ g ( c d1 ) e 
L: Be-trach-te, mei-ne
r e- g b ( e3 d c b  a1 ) f+ ( d3 c b a g1 ) e+ ( c3 b a g f1 ) d+
e e e e  e e e e
e r e r

% Block 3
d ) e f ( g g ) b en- ( f
a ) g a ( b b ) df g- ( an
b4 r8 e- df+ d d c 
L: Seel, mit \"angst-li-chem Ver-
r e- g b d a g e+  b g en g  b g+ c- b
e e e e  en e e e
e r en r

% Block 4
f ) f g ( a a ) f+ bn- ( d
a ) an c ( f f ) af d- ( f
Gusb an a r f bn.c d f- 
L: gn\"u-gen, mit bit-trer Lust und
c f- an c e c an c  f d bn g  af f d f
ef e e e  d d d d
ef r d r

% Block 5
d ) e c ( bn b ) ef bf ( g
f ) g e ( d d ) bf+ g ( en
af a ( a1 g ) ( a f ) f8 en r c 
L: halb be-klemm-tem Her-zen dein
r f bn d  e c f- d+  g- c bf g  en g b df
g g g g  g g g g
g r g r

% Block 6
g ) b g X.4: ( en e ) X: g c ( ef |
e ) c en ( g g ) e g ( c
en g c4 r8 g ef+ c 
L: h\"och-stes Gut in Je-su
c g+ en c  e c g c  en- g c e  c g ef g
b b b b  b b b b
b r b r

% Block 7
[+1+1 e ) c an X.4: ( fs ] f ) X: a e+ ( d
c ) an fs ( ef+ e ) c f- ( a
fs- f r c+ ( c d- ) r d 
L: Schmer-zen, wie dir auf
r fs an c  e c a c  f- a c e c a f a
an a a a  d- d d d
an r d r

% Block 8
d ) bn gs ( an a ) gn bf ( a
a ) gs d ( fn f ) en cs ( cn
bn+ b r8  an1 g cs8 c r a 
L: Dor-nen, so ihn ste-chen, die
bn an b d  f d cs d  g- a cs en  g e c e
fn f f f  en e e e
f r en r

% Block 9
a ) c g+ ( fs f ) g d ( b
c ) an+ ef+ ( d d ) b g ( d
d1 an fs g ( a d- ) cn8+ Gusc b4 r8 b 
L: Him-mels-schl\"us-sel-blu-men bl\"uhn! Du
d fs- an cn  a c d fs  g g- b d  g b- d g-
fs f d d  g g g g
fs r g r

% Block 10
b ) af f X.3: ( d d ) X: e g ( b
d ) b d ( f f ) b- e ( g
d- fs ( af1 g ) a8 g4 r8 e 
L: kannst viel s\"u-{\ss}e Frucht von
af f a c  f d b af+ b- a+ g e  b e b g
fn f f f  e e e e
fn r e r

% Block 11
b ) X.3S g b ( e e ) c b ( a
g ) e+ b ( g g ) a df- ( c
df+ d d c a a r c 
L: sei-ner Wer-mut bre-chen, drum
e g b g  e g b df  c e a f  g e c a+
g g g g  c- c c c
g- r c r

% Block 12
a ) c f ( a a ) f d ( b
c ) a+ c ( f f ) d a ( f
( c f- ) r1 f g a d8- f b4 
L: sieh ohn Un-ter-la{\ss} auf ihn,
f a f c  a c e c  d f d a  f a d f
d d d d  f f f f
d r f r

% Block 13
b ) df b ( g g ) c a ( f
f ) b g ( e e ) f c ( er
r8 e- df4+ r8 c8 f- ( g1 a ) 
L: auf ihn, drum sieh ohn
b- e b g  b e g e  c e c a  c f a f
g g g g  a a a a
g r a r

% Block 14
f ) d f ( gf g ) f e ( e+
er ) b d ( e e ) d c ( c+
( e d ) ( c b ) b8+ ( a1 gf ) Guf e8 f ( g4 
L: Un-ter-la{\ss} auf ihn, ohn Un-
b-  f+ a f  e d c d  e c an c  e gf e c
b b b b  an a a a
b r an r

% Block 15
e ) gf c- ( e e ) b a d
c ) b e- ( gf g ) e f ( b
[ g1 ) e ] [ d e ] an b c d [ e b ] [ gn e ] b8  r1 g+ 
L: -ter-la{\ss}, drum sieh ohn Un-ter-la{\ss} auf
af b d f  gf f e d  b+ e- gn b  d- f b- a
b b b b  b b b b
b r b- r

% Block 16
e b c ( d d ) e c ( a
b ) gn a ( f f ) g a ( d-
Guf e4 r4 r2 
L: ihn!
g e g b  e c a f+  d b g b  c a f d+
e- e e e  e e e e
e- r e r

% Block 17
a ) g a ( f f ) g a ( d-
d ) e c ( d d ) e c ( a
r0 
r e- g b  ( e3 d c b a1 ) f+  ( d3 c b a g1 ) e+  ( c3 b a g f1 ) d+
e e e e  e e e e
e r e r

% Block 18
d ) e of r4 r2
a ) g of r4 r2
r0 of
e4- of r4 r2
e4 ofd r4 r2
e0 ofd
========================================================================

Reply via email to