+1.3.36.jcn1
+===========
+
+* Added and updated a faq about postscript and ghostscript.
+
+* Fixed order of slurVerticalDirection verticalDirection in
+ generic-property.scm. Similar fixes for Stem, Tie, etc.
+
+* Added a Text_engraver to GraceContext. Maybe it was removed on
+ purpose: scripst on grace notes seem broken, they appear on the
+ main note.
+
+* Bugfix: volume effect of (de)crescendi was sometimes wrong way round.
+
.3.35.hwn1
===========
output, use TeX and @code{dvips}.
-@subsubsection The beams and slurs are gone if use the XDvi magnifying glass!?
+@subsubsection The beams and slurs are gone when using the XDvi magnifying glass!?
-The beams and slurs are done in PostScript. XDvi doesn't show
-PostScript in the magnifying glass. Complain to the XDvi maintainers.
+Various dynamic symbols, such as beams, crescendi, slurs are done in
+PostScript. XDvi doesn't show PostScript in the magnifying glass.
+Complain to the XDvi maintainers.
+@subsubsection Beams, slurs and crescendi are not displayed at all!
+
+See previous answer. XDvi uses GhostScript for displaying PostScript,
+check that you have GhostScript installed. If you use a different
+DVI viewer, check if it will display embedded PostScript. Don't worry,
+the symbols should appear on the printout.
+
@subsubsection A lot of musical stuff doesn't make it to the MIDI file, eg. dynamics, articulation, etc.
The MIDI output was originally put in as a proof that MIDI could be
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=36
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=jcn1
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
{
\context StaffGroup = a <
\context PianoStaff = b <
- \context Staff = "c" \notes\relative c'' { b1 \break b }
- \context Staff = "d" \notes\relative c'' { b1 \break b }
+ \context Staff = "c" \notes\relative c'' { b4 b \bar "empty"; \break b b }
+ \context Staff = "d" \notes\relative c'' { b4 b b b }
>
>
\paper {
indent=100.0\mm;
linewidth=150.0\mm;
- \translator
- {
+ \translator {
\StaffContext
\consists "Staff_margin_engraver";
numberOfStaffLines = #1
- marginScriptPadding = #10 % urg: this is in PT
+ marginScriptPadding = #30 % urg: this is in PT
instrument = #"Foo"
- instr = #"Foo"
+ instr = #"Bar"
}
+ \translator {
+ \StaffGroupContext
+ \consists "Staff_margin_engraver";
+ marginScriptPadding = #10 % urg: this is in PT
+ instrument = #" \n \n \n \n \n \n \n \n \n \nPiano\n(For rehearsal only)"
+ }
}
}
-\score
-{
- \context StaffGroup = a <
- \context PianoStaff = b <
- \context Staff = "c" \notes\relative c'' { b1 \break b }
- \context Staff = "d" \notes\relative c'' { b1 \break b }
- >
- >
-
- \paper {
- indent=100.0\mm;
- linewidth=150.0\mm;
- \translator
- {
- \StaffContext
- \consists "Staff_margin_engraver";
- numberOfStaffLines = #1
- marginScriptPadding = #30 % urg: this is in PT
- instrument = #"Foo"
- instr = #"Bar"
- }
- }
-}
void
Dynamic_engraver::do_process_music ()
{
- if ((span_req_l_drul_[START] || text_req_l_)
+ if ((span_req_l_drul_[START] || span_req_l_drul_[STOP] || text_req_l_)
&& !line_spanner_
&& pending_element_arr_.size ())
{
last_request_mom_ = now_mom ();
else
{
- for (int i = 0; i < pending_element_arr_.size (); i++)
+
+#if 1
+ /*
+ Maybe always creating a line-spanner for a (de)crescendo (see
+ below) is not a good idea:
+
+ a\< b\p \!c
+
+ the \p will be centred on the line-spanner, and thus clash
+ with the hairpin. When axis-group code is in place, the \p
+ should move below the hairpin, which is probably better?
+ */
+ if (now > last_request_mom_)
+#else
+ /*
+ During a (de)crescendo, pending request will not be cleared,
+ and a line-spanner will always be created, as \< \! are already
+ two requests.
+ */
+ if (now > last_request_mom_ && !span_start_req_l_)
+#endif
{
- Score_element* e = pending_element_arr_[i];
- side_position (e).set_axis (Y_AXIS);
- side_position (e).add_staff_support ();
-
- /*
- UGH UGH
- */
- Direction d = directional_element (e).get ();
- if (!d)
+ for (int i = 0; i < pending_element_arr_.size (); i++)
{
- SCM s = get_property ("dynamicDirection");
- if (!isdir_b (s))
- s = get_property ("verticalDirection");
- if (isdir_b (s))
- d = to_dir (s);
- directional_element (e).set (d);
- }
+ Score_element* e = pending_element_arr_[i];
+ side_position (e).set_axis (Y_AXIS);
+ side_position (e).add_staff_support ();
+
+ /*
+ UGH UGH
+ */
+ Direction d = directional_element (e).get ();
+ if (!d)
+ {
+ SCM s = get_property ("dynamicDirection");
+ if (!isdir_b (s))
+ s = get_property ("verticalDirection");
+ if (isdir_b (s))
+ d = to_dir (s);
+ directional_element (e).set (d);
+ }
- SCM s = get_property ("dynamicPadding");
- if (gh_number_p (s))
- e->set_elt_property ("padding", s);
- s = get_property ("dynamicMinimumSpace");
- if (gh_number_p (s))
- e->set_elt_property ("minimum-space", s);
+ SCM s = get_property ("dynamicPadding");
+ if (gh_number_p (s))
+ e->set_elt_property ("padding", s);
+ s = get_property ("dynamicMinimumSpace");
+ if (gh_number_p (s))
+ e->set_elt_property ("minimum-space", s);
+ }
+ pending_element_arr_.clear ();
}
- pending_element_arr_.clear ();
}
if (text_req_l_)
Drul_array<Span_req*> span_req_l_drul_;
Array<Audio_dynamic_tuple> dynamic_tuple_arr_;
Array<Audio_dynamic_tuple> finished_dynamic_tuple_arr_;
+ Direction dir_;
Direction finished_dir_;
};
if (span_req_l_drul_[STOP])
{
+ finished_dir_ = dir_;
if (!span_start_req_l_)
{
span_req_l_drul_[STOP]->warning (_ ("can't find start of (de)crescendo"));
{
span_start_req_l_ = 0;
finished_dynamic_tuple_arr_ = dynamic_tuple_arr_;
- finished_dir_ = span_req_l_drul_[STOP]->span_type_str_ == "crescendo"
- ? RIGHT : LEFT;
dynamic_tuple_arr_.clear ();
if (finished_dynamic_tuple_arr_.size ())
dynamic_tuple_arr_.push (finished_dynamic_tuple_arr_.top ());
if (span_req_l_drul_[START])
{
+ dir_ = span_req_l_drul_[START]->span_type_str_ == "crescendo"
+ ? RIGHT : LEFT;
span_start_req_l_ = span_req_l_drul_[START];
audio_p_ = new Audio_dynamic (0);
Audio_element_info info (audio_p_, 0);
\consists "Rhythmic_column_engraver";
\consists "Dynamic_engraver";
+ \consists "Text_engraver";
\consists "Property_engraver";
}
\translator {
\ScoreContext
- textEmptyDimension = ##t
+ %textEmptyDimension = ##t
textStyle = #"italic"
+ timeSignatureStyle = #"C"
}
\translator { \OrchestralScoreContext }
}
%% Aargh: absulute dynamics:
\remove "Text_engraver";
}
-
+ % Hmm
\translator {
\StaffContext
\accepts "VoiceOne";
instrScriptPadding = #35 %% urg, this is in pt
maximumRestCount = #1
}
- \translator { \OrchestralPartStaffContext }
+ \translator {
+ \OrchestralPartStaffContext
+ \accepts "VoiceOne";
+ \accepts "VoiceTwo";
+ instrumentScriptPadding = #55 %% urg, this is in pt
+ instrScriptPadding = #35 %% urg, this is in pt
+ maximumRestCount = #1
+ }
\translator {
\ScoreContext skipBars = ##t
- textEmptyDimension = ##t
+ %textEmptyDimension = ##t
textStyle = #"italic"
+ timeSignatureStyle = #"C"
}
}
(define generic-stem-properties
(cons "Stem"
(list
- (list 'stemVerticalDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'stemVerticalDirection dir? 'direction)
(list 'stemLength number? 'length)
(list 'flagStyle string? 'flag-style)
(list 'stemCentered boolean? 'stem-centered)
(define generic-dot-properties
(cons "Dots" (list
- (list 'dotDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'dotDirection dir? 'direction)
)
))
(define generic-breathing-sign-properties
(cons "Breathing_sign"
(list
- (list 'breathingSignVerticalDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'breathingSignVerticalDirection dir? 'direction)
)))
(define generic-clef-properties
(define generic-tie-properties
(cons "Tie" (list
- (list 'tieVerticalDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'tieVerticalDirection dir? 'direction)
)))
(define generic-tie-column-properties
(cons "Tie_column" (list
- (list 'tieVerticalDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'tieVerticalDirection dir? 'direction)
)))
(define generic-slur-properties
(cons "Slur"
(list
- (list 'slurVerticalDirection dir? 'direction)
(list 'verticalDirection dir? 'direction)
+ (list 'slurVerticalDirection dir? 'direction)
(list 'slurDash number? 'dashed))))
(define generic-timesig-properties