MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=130
-MY_PATCH_LEVEL=jcn5
+MY_PATCH_LEVEL=jcn6
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
\header{
texidoc="
Beams should behave reasonably well, even under extreme circumstances.
-Stems may be short, but noteheads should never touch the beam.
+Stems may be short, but noteheads should never touch the beam. Note that
+under normal circumstances, these beams would get knees; here
+Beam.auto-knee-gap was set to false.
";
}
\version "1.3.117";
\clef treble;
\property Staff.automaticMelismata = ##t
\context Voice = one \transpose c'' {
- \voicOne
+ \voiceOne
\staffBVoiceB
\bar "|.";
}
};
class ostream;
-ostream *open_file_stream (String filename);
+#include <streambuf.h>
+ostream *open_file_stream (String filename, int mode=ios::out);
void close_file_stream (ostream *os);
-//
-// midi-stream.cc
-//
-// source file of the GNU LilyPond music typesetter
-//
-// (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
+/*
+ midi-stream.cc -- implement Midi_stream
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
#include <fstream.h>
+#include "paper-stream.hh"
#include "string.hh"
#include "string-convert.hh"
#include "main.hh"
#include "midi-stream.hh"
#include "debug.hh"
-Midi_stream::Midi_stream (String filename_str)
+Midi_stream::Midi_stream (String filename)
{
- filename_str_ = filename_str;
- os_p_ = 0;
- open ();
+ filename_str_ = filename;
+ os_p_ = open_file_stream (filename, ios::out|ios::bin);
}
Midi_stream::~Midi_stream ()
{
- *os_p_ << flush; // ugh. Share with tex_stream.
- if (!*os_p_)
- {
- warning (_ ("Error syncing file (disk full?)"));
- exit_status_global = 1;
- }
- delete os_p_;
+ close_file_stream (os_p_);
}
Midi_stream&
return *this;
}
-void
-Midi_stream::open ()
-{
- os_p_ = new ofstream (filename_str_.ch_C (),ios::out|ios::bin);
- if (!*os_p_)
- error (_f ("can't open file: `%s'", filename_str_));
-}
const int MAXLINELEN = 200;
ostream *
-open_file_stream (String filename)
+open_file_stream (String filename, int mode)
{
ostream *os;
if ((filename == "-"))
if (!p.dir.empty_b ())
if (mkdir (p.dir.ch_C (), 0777) == -1 && errno != EEXIST)
error (_f ("can't create directory: `%s'", p.dir));
- os = new ofstream (filename.ch_C ());
+ os = new ofstream (filename.ch_C (), mode);
}
if (!*os)
error (_f ("can't open file: `%s'", filename));
exit_status_global = 1;
}
delete os;
+ os = 0;
}
Paper_stream::Paper_stream (String filename)
p.base += "-" + to_str (def);
out = p.str ();
}
+
+ /* Maybe a bit crude, but we had this before */
+ Path p = split_path (out);
+ p.ext = "midi";
+ out = p.str ();
Midi_stream midi_stream (out);
progress_indication ( _f ("MIDI output to %s...", out));
LILYPOND_BOOK = $(script-dir)/lilypond-book.py
LILYPOND_BOOK_INCLUDES = -I $(pwd) -I $(input-dir)/tricks/ -I $(input-dir)/regression/ -I $(input-dir)/test/
PS_TO_GIFS = $(buildscript-dir)/ps-to-gifs.sh
-PS_TO_PNGS = $(buildscript-dir)/ps-to-pgns.sh
+PS_TO_PNGS = $(buildscript-dir)/ps-to-pngs.sh
else
LILYPOND_BOOK = $(shell $(SHELL) -c 'type -p lilypond-book')
LILYPOND_BOOK_INCLUDES = -I. -I.. -I$(outdir)
PS_TO_GIFS = $(shell $(SHELL) -c 'type -p ps-to-gifs')
-PS_TO_PNGS = $(shell $(SHELL) -c 'type -p ps-to-pgns')
+PS_TO_PNGS = $(shell $(SHELL) -c 'type -p ps-to-pngs')
endif
#
%: $(outdir)/%.ps
@echo Making $@ from $<
+
+#
+# Also clean hand-compiled stuff in cwd
+#
+localclean: local-auto-gen-clean
+
+local-auto-gen-clean:
+ rm -f `grep -l 'Generated automacially by' *`
+ rm -f *.dvi *.png
local-convert-ly:
$(PYTHON) $(CONVERT_LY) -e *ly
-#
-# Also clean hand-compiled stuff in cwd
-#
-localclean: local-auto-gen-clean
-
-local-auto-gen-clean:
- rm -f `grep -l 'Generated automacially by' *`
- rm -f *.dvi *.png
-
tar:
mkdir -p $(outdir)/$(tarball)
cp -p *.ly $(outdir)/$(tarball)
(grob-property-description 'ideal-distances list? "(OBJ . (DIST . STRENGTH)) pairs.")
(grob-property-description 'interfaces list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
(grob-property-description 'inversion list? " musical-pitch, optional.")
+(grob-property-description 'invisible-staff boolean? "is staff invisible?")
(grob-property-description 'items-worth-living list? "list of interesting items. If empty in a particular system, clear that system.")
(grob-property-description 'kern number? "amount of extra white space to add.
position 0."
'(
staff-space
- line-count
+ line-count
+ invisible-staff
)))
(define stem-tremolo-interface