I solved the stem length issue, although rather clumsily. For some
mysterious reason, you need to make the change inside the \beamst@m macro
before the call to \C@stem. Now if someone can just figure out how to get
rid of the "parasitic" beam segment, we're in business!

--Don Simons

===============================
\input musixtex
\nostartrule

\makeatletter
\def\beamst@m{% queue de note vers une poutre
  \getcurpos \advance\y@v-\b@x
  \y@ii\b@p\y@v \divide\y@ii\tw@nty \advance\y@ii\b@z
  \ifdim\y@ii>\st@top % la poutre est au-dessus
    \stem@skip\qd@skip \comp@slope\stem@skip \advance\y@ii\s@lope
    \ifnum\b@n>\z@ \advance\y@ii\b@n\interbeam \advance\y@ii-\interbeam \fi
    \st@top\y@ii % a mettre a jour avec la pente ulterieurement
  \else
    \stem@skip\z@
    \ifdim\y@ii<\st@bot
      \ifnum\b@n<\z@ \advance\y@ii\b@n\interbeam \advance\y@ii\interbeam \fi
      \st@bot\y@ii \fi \fi
% Added for the challenge problem
  \advance\st@top-\interbeam
  \C@stem}
\makeatother

\startextract
%\notes\ibu0l{-1}\nbbu0\nbbbu0\qb0{jhi}\tbbbu0\qb0e\hqsk\en
\notes\ibbbu0j{-1}\qb0{jhi}\tbbbu0\qb0e\hqsk\en
\notes\nbbbu0\qb0{_i}\tbbu0\tbbbu0\nbbbu0\qb0e\en
\notes\nbbu0\qb0h\tbbbu0\qb0c\hqsk\en
\notes\nbbbu0\qb0{^ge}\hqsk\qb0{=g}\tbbbu0\tbbu0\loffset{30}{\tbu0}\qb0c\en
\zendextract

\end
=======================================

>-----Original Message-----
>From: Don Simons [mailto:dsim...@roadrunner.com]
>Sent: Friday, May 02, 2014 12:12 AM
>To: 'Werner Icking Music Archive'
>Subject: RE: [Tex-music] LilyPond blog invites you to an
engravingchallenge! :-)
>
>Andre's example looks good, but if we could solve the stemlength and
parasitic beam
>problems in Jean-Pierre's version, it would be better, because it only uses
one beam,
>and with that only one slope. There's no need to calculate starting heights
for later
>overlapping beams, and you can adjust the slope with just one parameter
change, and
>keep the same relative vertical positions of the various beam segments.
>
>On the stemlength issue, I tried this, but it doesn't work as I obviously
intended.
>When I make the adjustment positive, it then has an effect, but not what
I'd expect.
>And if I try adjusting \st@top directly, other weird things happen.
>
>================================
>\input musixtex
>\nostartrule
>
>\makeatletter
>\global\let\bst\beamst@m\gdef\beamst@m{\bst\advance\y@ii-
>2\interbeam\st@top\y@ii\global\let\beamst@m\bst}
>\makeatother
>
>\startextract
>%\notes\ibu0l{-1}\nbbu0\nbbbu0\qb0{jhi}\tbbbu0\qb0e\hqsk\en
>\notes\ibbbu0j{-1}\qb0{jhi}\tbbbu0\qb0e\hqsk\en
>\notes\nbbbu0\qb0{_i}\tbbu0\tbbbu0\nbbbu0\qb0e\en
>\notes\nbbu0\qb0h\tbbbu0\qb0c\hqsk\en
>\notes\nbbbu0\qb0{^ge}\hqsk\qb0{=g}\tbbbu0\tbbu0\loffset{30}{\tbu0}\qb0c\e
>n
>\zendextract
>
>\end
>===============================
>
>--Don
>
>>-----Original Message-----
>>From: TeX-Music [mailto:tex-music-boun...@tug.org] On Behalf Of Andre Van
>>Ryckeghem
>>Sent: Thursday, May 01, 2014 9:57 PM
>>To: Werner Icking Music Archive
>>Subject: Re: [Tex-music] LilyPond blog invites you to an
engravingchallenge! :-)
>>
>>Dear Jean-Pierre and Don,
>>
>>For removing the parasitic beam, i think, you need a \tbu0 somewhere
>>for shortening the stems perhaps you may use \stemlenght{n} before each
note
>>(i did not tested it in the example)
>>In musixtex you must start with the maximum number of beams and the
longest
>>beam must be the upper one.
>>
>>But the proposed method can perhaps be used for the lilipond challenge:
>>==================
>>\input musixtex
>>\nostartrule
>>
>>\startextract
>>\notes\ibbu0l{-1}\qb0{jhi}\tbbu0\qb0e\hqsk\en
>>\notes\ibu1k{-1}\qb0{_i}\tbu0\qb0e\en
>>\notes\ibu0l{-1}\qb0h\tbu1\qb0c\hqsk\en
>>\notes\ibu1j{-1}\qb0{^ge}\hqsk\qb0{=g}\tbu0\tbu1{\tbu0}\qb0c\en
>>\zendextract
>>
>>\end
>>===================
>>
>>Andre
>>
>>-----Oorspronkelijk bericht-----
>>From: Don Simons
>>Sent: Friday, May 02, 2014 12:40 AM
>>To: 'Werner Icking Music Archive'
>>Subject: Re: [Tex-music] LilyPond blog invites you to an
engravingchallenge!
>>:-)
>>
>>Very clever! Your method lets musixtex compute starting heights for all
the
>>re-started beam segments.
>>
>>Sorry, I can't answer either question. For stem lengths, you could try to
>>find the code in musixtex.tex that draws them, and then replace that with
>>code that stops the upper part 2\interbeam (?) shorter.
>>
>>Why didn't you start it with \ibbbu0j{-1} rather than
>>\ibu0l{-1}\nbbu0\nbbbu0 ? It seems to give the same result.
>>
>>I don't have a clue about the "parasitic" beam segment.
>>
>>--Don
>>
>>>-----Original Message-----
>>>From: TeX-Music [mailto:tex-music-boun...@tug.org] On Behalf Of
Jean-Pierre
>>>Coulon
>>>Sent: Thursday, May 01, 2014 3:01 AM
>>>To: Werner Icking Music Archive
>>>Subject: Re: [Tex-music] LilyPond blog invites you to an engraving
>>challenge! :-)
>>>
>>>I almost obtained the snippet of the challenge with the attached source
by
>>>adding a "temporary" third beam. I intentionally let the beginning
portion
>>>of this 3rd beam so you understand the logic, but you can get rid of it
>>>saying a \loffset bigger than 24 or so at line #8.
>>>
>>>But: 1: does anybody know where the "parasitic" beam portion below the
>>>staff comes from?
>>>
>>>2: how to shorten stemlenghts so they do no climb above the 2nd beam?
>>>
>>>Otherwise my process would be easier than yours to put into a macro
>>>because it's difficult to write a macro that does something at <pitch p>
>>>*and* <pitch p+1>
>>>
>>>Bye
>>>
>>>Jean-Pierre Coulon
>>
>>
>>
>>-------------------------------
>>TeX-music@tug.org mailing list
>>If you want to unsubscribe or look at the archives, go to
>>http://tug.org/mailman/listinfo/tex-music
>>
>>
>>-------------------------------
>>TeX-music@tug.org mailing list
>>If you want to unsubscribe or look at the archives, go to
>>http://tug.org/mailman/listinfo/tex-music



-------------------------------
TeX-music@tug.org mailing list
If you want to unsubscribe or look at the archives, go to 
http://tug.org/mailman/listinfo/tex-music

Reply via email to