]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/sequential-iterator.cc (run_always): implement run_always().
authorhanwen <hanwen>
Thu, 15 Jan 2004 17:01:41 +0000 (17:01 +0000)
committerhanwen <hanwen>
Thu, 15 Jan 2004 17:01:41 +0000 (17:01 +0000)
* input/mutopia/F.Schubert/standchen.ly: use newaddlyrics.

* lily/event.cc (to_relative_octave): add octave-check.

* Documentation/user/refman.itely (Line breaking): add noBreak.

* scm/new-markup.scm (normalsize-markup): add function.
(sans-markup): new function.

15 files changed:
ChangeLog
Documentation/topdocs/NEWS.texi
Documentation/user/refman.itely
input/mutopia/F.Schubert/standchen.ly
lily/accidental-placement.cc
lily/bar-number-engraver.cc
lily/break-align-interface.cc
lily/event.cc
lily/include/sequential-iterator.hh
lily/parser.yy
lily/sequential-iterator.cc
lily/tie.cc
mf/feta-bolletjes.mf
scm/define-music-properties.scm
scm/new-markup.scm

index 19bc31fda2662bc00f7cfe3e122575f7fbff3e22..4e37cb824b91ab568ff77f35d973e4300f428f79 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2004-01-15  Han-Wen Nienhuys   <hanwen@xs4all.nl>
 
+       * lily/sequential-iterator.cc (run_always): implement run_always().
+
+       * input/mutopia/F.Schubert/standchen.ly: use newaddlyrics. 
+
+       * lily/event.cc (to_relative_octave): add octave-check.
+
+       * Documentation/user/refman.itely (Line breaking): add noBreak.
+
        * scm/new-markup.scm (normalsize-markup): add function.
        (sans-markup): new function.
 
index d3cd476a219246107afa0f6004d19940d6e74a76..f85b750578ee6d1c8b7482aa58421b2647543db1 100644 (file)
@@ -18,6 +18,19 @@ Version 2.1.9
 
 @itemize @bullet
 
+@item
+A more concise syntax for checking octaves was introduced. A note may
+be followed by @code{=}@var{quotes} which indicates what its absolute
+octave should be.  In the following example, 
+
+@example
+  \relative c'' @{ c='' b=' d,='' @}        
+@end example
+
+@noindent
+the @code{d} will generate a warning, because a @code{d''} is
+expected, but a @code{d'} is found.
+
 @item There is a new mechanism for putting lyrics to melodies.
 With this mechanism, @code{LyricVoice}s can be put melodies
 individually, allowing for different melismatic sections in every
index 046fd056da3c1f863a5cc9a3371cb62c8d639322..b4a76cf3fa237a970efea41eb07f4ed03cc285cf 100644 (file)
@@ -635,8 +635,19 @@ additional @code{\relative} inside the @code{\transpose}.
 @subsection Octave check
 
 
-Octave checks make octave errors easier to correct.
-The syntax is 
+Octave checks make octave errors easier to correct:  a note may be
+followed by @code{=}@var{quotes} which indicates what its absolute
+octave should be.  In the following example,
+@example
+  \relative c'' @{ c='' b=' d,='' @}        
+@end example
+
+@noindent
+the @code{d} will generate a warning, because a @code{d''} is
+expected, but a @code{d'} is found.  In the output, the octave is
+corrected this and the following notes.
+
+There is also a syntax that is separate from the notes.
 @example
   \octave @var{pitch}
 @end example
@@ -8490,14 +8501,22 @@ point.
 For linebreaks at regular intervals  use @code{\break} separated by
 skips and repeated with @code{\repeat}:
 @example
-<<  \repeat unfold 7 @{ s1 * 4 \break  @}
+<<  \repeat unfold 7 @{
+         s1 \noBreak s1 \noBreak
+         s1 \noBreak s1 \break  @}
    @emph{the real music}
 >> 
 @end  example
 
 @noindent
 This makes the following 28 measures (assuming 4/4 time) be broken every
-4 measures.
+4 measures, and only there.
+
+@refcommands
+
+@code{\break}, @code{\noBreak}
+@cindex @code{\break}
+@cindex @code{\noBreak}
 
 @seealso
 
index 7eb9d157fc7d7453d09082cad6797710c679e775..6d2b32b3fbae5a293c5b07907faa36b663c3d61a 100644 (file)
@@ -115,48 +115,48 @@ vocalThrough =  \notes\relative c{
        e2 r4 |
 }
 
-lyricVerseOne =  \lyrics{
+lyricVerseOne =  \lyrics {
        Lei -- se fle -- hen mei -- ne Lie -- der
        durch die Nacht zu dir;
        in den stil -- len Hain her nie -- der,
        Lieb -- chen, komm zu mir! 
        
-       Fl\"us -- ternd schlan -- ke Wip -- fel rau -- schen
+       Flüs -- ternd schlan -- ke Wip -- fel rau -- schen
        in des Mon -- des Licht,
        in des Mon -- des Licht;
 
-       des Ver -- r\"a -- ters feind -- lich Lau -- schen
-       f\"urch -- te, Hol -- de, nicht,
-       f\"urch -- te, Hol -- de, nicht.
+       des Ver -- rä -- ters feind -- lich Lau -- schen
+       fürch -- te, Hol -- de, nicht,
+       fürch -- te, Hol -- de, nicht.
 }
        
 lyricVerseTwo =  \lyrics{
-       H\"orst die Nach -- ti -- gal -- len schla -- gen?
+       Hörst die Nach -- ti -- gal -- len schla -- gen?
        ach! sie fle -- hen dich, 
-       mit der T\"o -- ne s\"u -- "\ss en" Kla -- gen
-       fle -- hen sie f\"ur mich. 
+       mit der Tö -- ne sü -- "\ss en" Kla -- gen
+       fle -- hen sie für mich. 
        
        Sie -- ver -- "steh'n" des Bu -- sens Seh -- nen,
        ken -- nen Lieb -- es -- schmerz,
        ken -- nen Lieb -- es -- schmerz,
 
-       r\"uh -- ren mit den Sil -- ber -- t\"o -- nen
+       rüh -- ren mit den Sil -- ber -- tö -- nen
        jed -- es wei -- che Herz,
        jed -- es wei -- che Herz.
 }
 
 lyricThrough =  \lyrics{
        La\ss auch dir die Brust be -- we -- gen 
-       Lieb -- chen, h\"o -- re mich! 
+       Lieb -- chen, hö -- re mich! 
        be -- bend harr' ich dir ent -- ge -- gen! 
        
-       komm, be -- gl\"uk -- ke mich!
-       komm, be -- gl\"uk -- ke mich, __ 
-       be -- gl\"uk -- ke mich!
+       komm, be -- glük -- ke mich!
+       komm, be -- glük -- ke mich, __ 
+       be -- glük -- ke mich!
 }
 
 trebleIntro =  \notes\relative c{
-       r8^"\bf M\\\"a\\ss ig"\pp <g' c>-. <c es>-. <g c>-. <c es>-. <g c>-. |
+       r8^"\bf Mäßig"\pp <g' c>-. <c es>-. <g c>-. <c es>-. <g c>-. |
        r8 <as c>-. <c es>-. <as c>-. <c es>-. <as c>-. |
        r8 <as c>-. <c d>-. <as c>-. <c d>-. <as c>-. |
        r8 <g b>-. <b d>-. <g b>-. <b d>-. <g b>-. |
@@ -380,20 +380,15 @@ global =  \notes{
        \bar "|."
 }
 
-allLyrics = \lyrics {
+allLyrics =  {
        % maybe should be bigger by default, in grob-description.scm ?
-       \property Lyrics . LyricText \override #'font-size = #2
-       \property Lyrics . LyricHyphen \override #'maximum-length = #1.5
-       \context LyricsVoice = "leise-1"  { \lyricVerseOne
-       \lyricVerseTwo
-       \lyricThrough
+       \newaddlyrics "leise" \new LyricsVoice {
+           \lyricVerseOne
+           \lyricVerseTwo
+           \lyricThrough 
 } }
 
-lyricStaff = \context Lyrics {
-       \allLyrics
-}
-               
-vocals = \context Voice \notes {
+vocals = \context Voice = leise \notes {
        \clef treble
        % certainly no auto-beaming for vocals
        \autoBeamOff
@@ -408,82 +403,58 @@ vocals = \context Voice \notes {
        R1 * 3/4 * 6
 }
 
-vocalStaff =  \context Staff = vocal<<
-         \property Staff.midiInstrument = "synth voice"
-       \context Voice = "leise" <<       \global
-         \vocals >>
->>
-
-treble =  {
-       \clef treble
+trebleStaff =  \context Staff = treble<< 
+        \property Staff.midiInstrument = "acoustic grand"
+       \global
+       {\clef treble
        \property Voice.autoBeamSettings \override #'(begin * * * *) = #(ly:make-moment 0 1)
        \trebleIntro 
        \trebleVerseOne 
        \trebleEentje
        \trebleVerseOne 
-       \trebleThrough
-}
+       \trebleThrough }
+>>
 
-trebleStaff =  \context Staff = treble<< 
+bassStaff =  \context Staff = bass<<
         \property Staff.midiInstrument = "acoustic grand"
        \global
-       \treble
->>
-bass =  {
        \clef bass
-       \bassIntro 
+       {\bassIntro 
        \bassVerseOne 
        \bassEentje
        \bassVerseOne 
-       \bassThrough
-}
-
-bassStaff =  \context Staff = bass<<
-        \property Staff.midiInstrument = "acoustic grand"
-       \global
-       \bass
->>
-
-grandStaff =  \context PianoStaff <<
-
-       \trebleStaff
-       \bassStaff
+       \bassThrough}
 >>
 
 
 \score{
-       <<
-
-%{
-       Transpose as you like for your voice
-       Range untransposed is c' to f'' (for tenors and sopranos)
-       \transpose c' a gives a' to d'' (for basses, who sing an octave down)
-
-               \addlyrics 
-                       \notes \transpose c' a \vocalStaff
-                       \lyricStaff
-               \notes \transpose c' a \grandStaff
-%}
-
-               \addlyrics
-                       \vocalStaff
-                       \lyricStaff 
-               \grandStaff
+    <<
+       \new Staff <<
+           \property Staff.midiInstrument = "synth voice"
+           %% insert \transpose if necessary, depending on voice range.
+           \global
+           \vocals
        >>
-       \paper {
-               % Use
-               %   textheight = 280.\mm
-               %   linewidth = 190.\mm
-               % to get this on 3 pages of a4.
-               
-               % Mandatory Mutopia settings yield 4 pages :(
-               textheight = 270.0\mm
-               linewidth = 180.0\mm
-
-               \translator { \RemoveEmptyStaffContext }
-       }
-       \midi{
-               \tempo 4 = 54
-       }
+       \allLyrics
+       \context PianoStaff <<
+           \trebleStaff
+           \bassStaff
+       >>
+    >>
+    \paper {
+                               % Use
+                               %   textheight = 280.\mm
+                               %   linewidth = 190.\mm
+                               % to get this on 3 pages of a4.
+       
+                               % Mandatory Mutopia settings yield 4 pages :(
+       textheight = 270.0\mm
+       linewidth = 180.0\mm
+
+       \translator { \RemoveEmptyStaffContext }
+    }
+    \midi{
+       \tempo 4 = 54
+    }
 }
 
index d8bd7aaeb84ba75434f9580b6ea41249d4c5c709..13aef52ad4a4f1ffa28d52bbfb81cc26df3d7cff 100644 (file)
@@ -234,6 +234,18 @@ stagger_apes (Link_array<Accidental_placement_entry> *apes)
 
 */
 
+/*
+  TODO: there should be more space in the following situation
+
+
+    Natural + downstem
+
+    |_       
+    | |    X
+    |_|   | 
+      |   |
+      
+ */
 SCM
 Accidental_placement::position_accidentals (Grob * me)
 {
index e2689a94825bf4e1dbc5c2f9288636d6508e268a..5b6a134947db86a422ef1eb4956248714044c3e1 100644 (file)
@@ -34,7 +34,7 @@ protected:
   virtual void acknowledge_grob (Grob_info);
   virtual void process_music ();
   void create_items ();
-  TRANSLATOR_DECLARATIONS(  Bar_number_engraver );
+  TRANSLATOR_DECLARATIONS(Bar_number_engraver );
 };
 
 
index dcef533e757d5149fc05d7bfe2481538f5111be2..4742c948a6d3fbe24fada56f758d76506cb9b13f 100644 (file)
@@ -239,7 +239,7 @@ ADD_INTERFACE (Break_aligned_interface, "break-aligned-interface",
               "@table @code\n"
               "@item (minimum-space . @var{spc}))\n"
               "  Pad space until the distance is @var{spc}\n"
-              "@item (fixed-space} . @var{spc})\n"
+              "@item (fixed-space . @var{spc})\n"
               "  Set a fixed space\n" 
               "@item (semi-fixed-space . @var{spc})\n"
               "  Set a space. Half of it is fixed and half is stretchable. \n"
index 75948dac04d13e376988b7d4b7b23346c2f1a83d..ed0a826c697c235ddf4567fcf0f79099ec59e8fd 100644 (file)
@@ -61,6 +61,22 @@ Event::to_relative_octave (Pitch last)
     {
       Pitch new_pit = *old_pit;
       new_pit = new_pit.to_relative_octave (last);
+
+      SCM check = get_mus_property ("absolute-octave");
+      if (gh_number_p (check) &&
+         new_pit.get_octave () != gh_scm2int (check))
+       {
+         String s =_("Failed octave check, got: ");
+         s += new_pit.to_string ();
+         new_pit = Pitch (gh_scm2int (check),
+                          new_pit.get_notename (),
+                          new_pit.get_alteration ());
+
+         s += " expected ";
+         s += new_pit.to_string ();
+         origin ()->warning (s);
+       }
+      
       set_mus_property ("pitch", new_pit.smobbed_copy ());
   
       return new_pit;
index c9850c33a5280ecf95fc2aa1886b9bd8385ca6a3..382a3211fef38d152a78ded71f95cc6dc09565a6 100644 (file)
@@ -69,7 +69,7 @@ public:
 protected:
   virtual void process (Moment);
   virtual Music_iterator *try_music_in_children (Music *) const;
-
+  virtual bool run_always () const;
 protected:
   Moment here_mom_;
   Music_iterator * iter_;
index 9018962644528abe36cdce0f184af532aff9da02..077578e4b3b607aed92063c15fa4be00967d7f89 100644 (file)
@@ -317,6 +317,7 @@ yylex (YYSTYPE *s,  void * v)
 %type <i>      exclamations questions dots optional_rest
 %type <i>       bass_mod
 %type <scm>    grace_head
+%type <scm>    oct_check
 %type <scm>    context_mod_list
 %type <scm>    lyric_element
 %type <scm>    bass_number br_bass_figure bass_figure figure_list figure_spec
@@ -1566,7 +1567,14 @@ direction_reqd_event:
                $$ = a;
        }
        ;
-       
+
+oct_check:
+       /**/ { $$ = SCM_EOL; }
+       | '='  { $$ = gh_int2scm (0); }
+       | '=' sub_quotes { $$ = gh_int2scm ($2); }
+       | '=' sup_quotes { $$ = gh_int2scm ($2); }
+       ;
+
 sup_quotes:
        '\'' {
                $$ = 1;
@@ -1917,21 +1925,26 @@ optional_rest:
        ;
 
 simple_element:
-       pitch exclamations questions optional_notemode_duration optional_rest {
+       pitch exclamations questions oct_check optional_notemode_duration optional_rest {
 
                Input i = THIS->pop_spot ();
                if (!THIS->lexer_->note_state_b ())
                        THIS->parser_error (_ ("Have to be in Note mode for notes"));
 
                Music *n = 0;
-               if ($5)
+               if ($6)
                        n =  MY_MAKE_MUSIC("RestEvent");
                else
                        n =  MY_MAKE_MUSIC("NoteEvent");
                
                n->set_mus_property ("pitch", $1);
-               n->set_mus_property ("duration", $4);
+               n->set_mus_property ("duration", $5);
 
+               if (gh_number_p ($4))
+               {
+                       int q = gh_scm2int ($4); 
+                       n->set_mus_property ("absolute-octave", gh_int2scm (q-1));
+               }
 
                if ($3 % 2)
                        n->set_mus_property ("cautionary", SCM_BOOL_T);
index e8812c486ea859b508e435140fd486677f947636..b2c31269771c5aa7097d7c8af44ebe4163a69c11 100644 (file)
@@ -378,3 +378,9 @@ Sequential_iterator::try_music_in_children (Music *m) const
 }
 
 IMPLEMENT_CTOR_CALLBACK (Sequential_iterator);
+
+bool
+Sequential_iterator::run_always () const
+{
+  return iter_ ? iter_->run_always () : false; 
+}
index 8d5bee514998bea2056a8a4aba76ee4cf32727f2..846acaa28fe1f3331d9b20766d3a77c7f488f803 100644 (file)
@@ -77,13 +77,15 @@ Tie::get_position (Grob*me)
   
   The direction of the Tie is more complicated (See [Ross] p136 and
   further).
+
+  (what about linebreaks? )  
+  
 */
 Direction
 Tie::get_default_dir (Grob*me) 
 {
   Item * sl =  head (me,LEFT) ? Rhythmic_head::get_stem (head (me,LEFT)) :0;
   Item * sr =  head (me,RIGHT) ? Rhythmic_head::get_stem (head (me,RIGHT)) :0;  
-
   if (sl && sr)
     {
       if (get_grob_direction (sl) == UP
index e65a03ff00cef7620de54f0d3904d894bd9aaf2f..6cdf6b929068165d56cd7f34f3b1b96a4daff951 100644 (file)
@@ -183,55 +183,85 @@ fet_beginchar("Quart notehead", "2", "quarthead")
        black_notehead_width# := charwd;
 fet_endchar;
 
+%%%%%%%%%%%%%%%%
+
 fet_beginchar("Quart noteheadPQ", "2PQ", "quartheadPQ")
        draw_outside_ellipse (1.0 - puff_up_factor / 2.0, 32, 0.707, 0);
 fet_endchar;
 
 fet_beginchar("Quart noteheadAA", "2AA", "quartheadAA")
-       draw_outside_ellipse (1.2 - puff_up_factor / 2.0, 32, 0.707, 0);
+       draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 32, 0.707, 0);
 fet_endchar;
 
 fet_beginchar("Quart noteheadAB", "2AB", "quartheadAB")
-       draw_outside_ellipse (1.3 - puff_up_factor / 2.0, 32, 0.707, 0);
+       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 32, 0.707, 0);
        
 fet_endchar;
 fet_beginchar("Quart noteheadAC", "2AC", "quartheadAC")
-       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 32, 0.707, 0);
-       
+       draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 32, 0.707, 0);
 fet_endchar;
+
 fet_beginchar("Quart noteheadAD", "2AD", "quartheadAD")
        draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 32, 0.707, 0);
-       
 fet_endchar;
+
+fet_beginchar("Quart noteheadAD", "2AE", "quartheadAD")
+       draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 32, 0.707, 0);
+fet_endchar;
+
+fet_beginchar("Quart noteheadAD", "2AF", "quartheadAD")
+       draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 32, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadAD", "2AG", "quartheadAD")
+       draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 32, 0.707, 0);
+fet_endchar;
+
+
 fet_beginchar("Quart noteheadBA", "2BA", "quartheadBA")
-       draw_outside_ellipse (1.2 - puff_up_factor / 2.0, 35, 0.707, 0);
-       
+       draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 35, 0.707, 0);
 fet_endchar;
 fet_beginchar("Quart noteheadBB", "2BB", "quartheadBB")
-       draw_outside_ellipse (1.3 - puff_up_factor / 2.0, 35, 0.707, 0);
+       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 35, 0.707, 0);
        
 fet_endchar;
 fet_beginchar("Quart noteheadBC", "2BC", "quartheadBC")
-       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 35, 0.707, 0);
+       draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 35, 0.707, 0);
 fet_endchar;
 fet_beginchar("Quart noteheadBD", "2BD", "quartheadBD")
        draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 35, 0.707, 0);
-       
 fet_endchar;
+fet_beginchar("Quart noteheadBD", "2BE", "quartheadBD")
+       draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 35, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadBD", "2BF", "quartheadBD")
+       draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 35, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadBD", "2BG", "quartheadBD")
+       draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 35, 0.707, 0);
+fet_endchar;
+
+
+
 fet_beginchar("Quart noteheadCA", "2CA", "quartheadCA")
-       draw_outside_ellipse (1.2 - puff_up_factor / 2.0, 38, 0.707, 0);
-       
+       draw_outside_ellipse (1.35 - puff_up_factor / 2.0, 40, 0.707, 0);
 fet_endchar;
 fet_beginchar("Quart noteheadCB", "2CB", "quartheadCB")
-       draw_outside_ellipse (1.3 - puff_up_factor / 2.0, 38, 0.707, 0);
-       
+       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 40, 0.707, 0);
 fet_endchar;
 fet_beginchar("Quart noteheadCC", "2CC", "quartheadCC")
-       draw_outside_ellipse (1.4 - puff_up_factor / 2.0, 38, 0.707, 0);
-       
+       draw_outside_ellipse (1.45 - puff_up_factor / 2.0, 40, 0.707, 0);
 fet_endchar;
 fet_beginchar("Quart noteheadCD", "2CD", "quartheadCD")
-       draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 38, 0.707, 0);
+       draw_outside_ellipse (1.5 - puff_up_factor / 2.0, 40, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadCD", "2CE", "quartheadCD")
+       draw_outside_ellipse (1.55 - puff_up_factor / 2.0, 40, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadCD", "2CF", "quartheadCD")
+       draw_outside_ellipse (1.6 - puff_up_factor / 2.0, 40, 0.707, 0);
+fet_endchar;
+fet_beginchar("Quart noteheadCD", "2CG", "quartheadCD")
+       draw_outside_ellipse (1.65 - puff_up_factor / 2.0, 40, 0.707, 0);
 fet_endchar;
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
index fde1f61f617ef512a751f88b64be4988c943e20f..c368355c2a143f8fd2a25b1737bdde02545dcf7e 100644 (file)
@@ -27,6 +27,8 @@
 (music-property-description 'span-type string? "What kind of spanner should be created?
 
 TODO: consider making type into symbol") 
+(music-property-description 'absolute-octave integer?
+                           "The absolute octave for a octave check note.")
 (music-property-description 'articulations music-list?
                            "Articulation events specifically for this note.")
 (music-property-description 'articulation-type string? "key for script definitions alist.
index 4fd60acdc0c14e492ff70855963a6ebb07c930e5..3c2c55b4a8b5b730d905838338b9d9172fbf8dfa 100644 (file)
@@ -53,7 +53,7 @@ for the reader.
 
 (define-public (simple-markup paper props . rest)
   "A simple text-string; @code{\\markup @{ foo @}} is equivalent with
-@code{\markup @{ \simple #\"foo\" @}}.
+@code{\\markup @{ \\simple #\"foo\" @}}.
 "
   
   (Text_item::interpret_markup paper props (car rest)))