From: Han-Wen Nienhuys Date: Sat, 5 Oct 2002 00:08:14 +0000 (+0000) Subject: * lily/include/midi-stream.hh: use stdio.h iso. iostream.h X-Git-Tag: release/1.7.2~6 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=4f614af85a13f7a74e96d6b4dbc38a0bfbca1136;p=lilypond.git * lily/include/midi-stream.hh: use stdio.h iso. iostream.h * lily/parser.yy: remove \dynamicscript. * ly/dynamic-scripts-init.ly: redo the dynamic scripts definitions. --- diff --git a/ChangeLog b/ChangeLog index 71699b26c6..f8268e65eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2002-10-05 Han-Wen Nienhuys + * lily/include/midi-stream.hh: use stdio.h iso. iostream.h + + * lily/parser.yy: remove \dynamicscript. + + * ly/dynamic-scripts-init.ly: redo the dynamic scripts + definitions. + * python/midi.c (midi_error): take two arguments. * Merge 1.6.5 changes: diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 1bad82b1f6..660efc4921 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -95,11 +95,11 @@ Dynamic_engraver::start_translation_timestep () bool Dynamic_engraver::try_music (Music * m) { - if (m->is_mus_type ("dynamic-event")) + if (m->is_mus_type ("absolute-dynamic-event")) { - /* - TODO: probably broken. - */ + /* + TODO: probably broken. + */ script_req_ = m; return true; } @@ -440,7 +440,7 @@ which takes care of vertical positioning. ", /* creats*/ "DynamicLineSpanner DynamicText Hairpin TextSpanner", -/* accepts */ "text-script-event crescendo-event decrescendo-event", +/* accepts */ "absolute-dynamic-event crescendo-event decrescendo-event", /* acks */ "note-column-interface script-interface", /* reads */ "", /* write */ ""); diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index cb405a599a..a8940aa288 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -13,11 +13,10 @@ /* TODO: + handle multiple events - */ -/** - perform absolute (text) dynamics + perform absolute (text) dynamics */ class Dynamic_performer : public Performer { @@ -33,8 +32,6 @@ private: Audio_dynamic* audio_; }; - - Dynamic_performer::Dynamic_performer () { script_req_ = 0; @@ -124,7 +121,7 @@ Dynamic_performer::try_music (Music* r) { if (!script_req_) { - if (r->is_mus_type ("dynamic-event")) // fixme. + if (r->is_mus_type ("absolute-dynamic-event")) // fixme. { script_req_ = r; return true; @@ -136,7 +133,7 @@ Dynamic_performer::try_music (Music* r) ENTER_DESCRIPTION(Dynamic_performer, /*descr*/ "", /* creats*/ "", - /* accepts */ "note-column-interface script-interface", + /* accepts */ "absolute-dynamic-event", /* acks */ "", /*reads */"dynamicAbsoluteVolumeFunction midiMaximumVolume midiMinimumVolume midiInstrument instrumentEqualizer", /*writes*/""); diff --git a/lily/event-chord-iterator.cc b/lily/event-chord-iterator.cc index ea9636d3b9..7216d2aa38 100644 --- a/lily/event-chord-iterator.cc +++ b/lily/event-chord-iterator.cc @@ -73,7 +73,7 @@ Event_chord_iterator::process (Moment m) bool gotcha = try_music (mus); if (!gotcha) - mus->origin ()->warning (_f ("Junking event: `%s'", classname (mus))); + mus->origin ()->warning (_f ("Junking event: `%s'", mus->name())); } } skip (m); diff --git a/lily/include/midi-stream.hh b/lily/include/midi-stream.hh index 67a5bac7a1..879f744740 100644 --- a/lily/include/midi-stream.hh +++ b/lily/include/midi-stream.hh @@ -7,7 +7,7 @@ #ifndef MIDI_STREAM_HH #define MIDI_STREAM_HH -#include +#include #include "string.hh" /// Midi outputfile @@ -21,7 +21,7 @@ struct Midi_stream { void open (); - std::ostream* os_; + FILE *out_file_; String filename_string_; }; diff --git a/lily/include/music.hh b/lily/include/music.hh index ac462525ee..d804cfa685 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -47,7 +47,7 @@ public: bool internal_is_music_type (SCM) const; virtual Pitch to_relative_octave (Pitch); - + String name ()const; /// The duration of this piece of music virtual Moment get_length () const; virtual Moment start_mom () const; diff --git a/lily/midi-stream.cc b/lily/midi-stream.cc index 95f956dea5..a89622fa00 100644 --- a/lily/midi-stream.cc +++ b/lily/midi-stream.cc @@ -20,12 +20,12 @@ Midi_stream::Midi_stream (String filename) { filename_string_ = filename; - os_ = open_file_stream (filename, std::ios::out|std::ios::binary); + out_file_ = fopen (filename.to_str0(), "wb"); } Midi_stream::~Midi_stream () { - close_file_stream (os_); + fclose (out_file_); } Midi_stream& @@ -33,7 +33,10 @@ Midi_stream::operator << (String str) { Byte * b = str.get_bytes (); for (int sz = str.length (); sz--;) - *os_ << *b ++; + { + fputc (*b, out_file_); + b++; + } return *this; } @@ -59,7 +62,10 @@ Midi_stream::operator << (Midi_item const& midi_c_r) { Byte * b = str.get_bytes (); for (int sz = str.length (); sz--;) - *os_ << *b++; + { + fputc (*b, out_file_); + b++; + } } return *this; diff --git a/lily/music.cc b/lily/music.cc index 2b85a4f423..4dcaee74a2 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -39,6 +39,20 @@ Music::internal_is_music_type (SCM k)const return scm_memq (k, ifs) != SCM_BOOL_F; } +String +Music::name ()const +{ + SCM nm = get_mus_property ("name"); + if (gh_string_p (nm)) + { + return ly_scm2string (nm); + } + else + { + return classname (this); + } +} + void Music::transpose (Pitch) { diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 925cc607d8..39ffb03042 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -7,7 +7,6 @@ */ #include - #include #include "lily-proto.hh" @@ -50,7 +49,6 @@ static Keyword_ent the_key_tab[]={ {"default", DEFAULT}, {"denies", DENIES}, {"duration", DURATION}, - {"dynamicscript", DYNAMICSCRIPT}, {"grobdescriptions", GROBDESCRIPTIONS}, {"figures",FIGURES}, {"grace", GRACE}, diff --git a/lily/parser.yy b/lily/parser.yy index ed572e7182..981c221005 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -159,7 +159,6 @@ yylex (YYSTYPE *s, void * v) %token ALIAS %token APPLY %token ARPEGGIO -%token DYNAMICSCRIPT %token ACCEPTS %token ALTERNATIVE %token BAR @@ -1399,17 +1398,6 @@ verbose_event: $$ = unsmob_music ($1)->clone (); $$->set_spot (THIS->here_input ()); } - | DYNAMICSCRIPT embedded_scm { - /* - TODO: junkme, use text-type == dynamic - */ - Music *d = MY_MAKE_MUSIC("TextScriptEvent"); - SCM dyn = ly_symbol2scm ("dynamic"); - d->set_mus_property ("text-type" , dyn); - d->set_mus_property ("text", $2); - d->set_spot (THIS->here_input ()); - $$ = d; - } | SPANREQUEST bare_int STRING { Music * sp = make_span_req ($3); diff --git a/lily/span-dynamic-performer.cc b/lily/span-dynamic-performer.cc index db2523d289..89f236ade3 100644 --- a/lily/span-dynamic-performer.cc +++ b/lily/span-dynamic-performer.cc @@ -173,7 +173,8 @@ Span_dynamic_performer::start_translation_timestep () bool Span_dynamic_performer::try_music (Music* r) { - if (r->is_mus_type ("dynamic-event")) // fixme. + if (r->is_mus_type ("crescendo-event") + || r->is_mus_type ("decrescendo-event")) { Direction d = to_dir (r->get_mus_property ("span-direction")); span_req_l_drul_[d] = r; @@ -183,5 +184,5 @@ Span_dynamic_performer::try_music (Music* r) } ENTER_DESCRIPTION (Span_dynamic_performer, "", "", - "dynamic-event", + "crescendo-event decrescendo-event", "", "", ""); diff --git a/ly/dynamic-scripts-init.ly b/ly/dynamic-scripts-init.ly index 42cfe49641..7e1b3e35dc 100644 --- a/ly/dynamic-scripts-init.ly +++ b/ly/dynamic-scripts-init.ly @@ -3,25 +3,30 @@ % % declare the standard dynamic identifiers. % -ppppp = \dynamicscript #"ppppp" -pppp = \dynamicscript #"pppp" -ppp = \dynamicscript #"ppp" -pp = \dynamicscript #"pp" -p = \dynamicscript #"p" -mp = \dynamicscript #"mp" -mf = \dynamicscript #"mf" -f = \dynamicscript #"f" -ff = \dynamicscript #"ff" -fff = \dynamicscript #"fff" -ffff = \dynamicscript #"ffff" -fp = \dynamicscript #"fp" -sf = \dynamicscript #"sf" -sfp = \dynamicscript #"sfp" -sff = \dynamicscript #"sff" -sfz = \dynamicscript #"sfz" -fz = \dynamicscript #"fz" -sp = \dynamicscript #"sp" -spp = \dynamicscript #"spp" -rfz = \dynamicscript #"rfz" +#(define (make-dynamic-script str) + (let* ((m (make-music-by-name 'AbsoluteDynamicEvent))) + (ly-set-mus-property! m 'text str) + m + )) +ppppp = #(make-dynamic-script "pppp") +pppp = #(make-dynamic-script "pppp") +ppp = #(make-dynamic-script "ppp") +pp = #(make-dynamic-script "pp") +p = #(make-dynamic-script "p") +mp = #(make-dynamic-script "mp") +mf = #(make-dynamic-script "mf") +f = #(make-dynamic-script "f") +ff = #(make-dynamic-script "ff") +fff = #(make-dynamic-script "fff") +ffff = #(make-dynamic-script "ffff") +fp = #(make-dynamic-script "fp") +sf = #(make-dynamic-script "sf") +sfp = #(make-dynamic-script "sfp") +sff = #(make-dynamic-script "sff") +sfz = #(make-dynamic-script "sfz") +fz = #(make-dynamic-script "fz") +sp = #(make-dynamic-script "sp") +spp = #(make-dynamic-script "spp") +rfz = #(make-dynamic-script "rfz") diff --git a/scm/music-types.scm b/scm/music-types.scm index 32522e672a..9c69c6f0f2 100644 --- a/scm/music-types.scm +++ b/scm/music-types.scm @@ -8,6 +8,12 @@ (span-type . "abort") (types . (general-music event abort-event)) )) + (AbsoluteDynamicEvent + . ( + (description . "") + (internal-class-name . "Event") + (types . (general-music event dynamic-event absolute-dynamic-event)) + )) (ArpeggioEvent . ( (description . "Make an arpeggio on this note. Syntax: @@ -95,7 +101,8 @@ (internal-class-name . "Event") (types . (general-music dynamic-event decrescendo-event event)) - )) + )) + (ExtenderEvent . ( (description . "")