X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fperformance.cc;h=439d9489f175727bc3ad0624179acaa49b8145d2;hb=87eedcd59f4082cb0841528ad5bc82cb1d1191e3;hp=0bfe37ee826581ccab7815b50afd71930725740f;hpb=645b1fa5e767ffda3e45df33e2348729526eef90;p=lilypond.git diff --git a/lily/performance.cc b/lily/performance.cc index 0bfe37ee82..439d9489f1 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2006 Jan Nieuwenhuizen + (c) 1997--2007 Jan Nieuwenhuizen */ #include "performance.hh" @@ -34,15 +34,14 @@ Performance::~Performance () } void -Performance::output (Midi_stream &midi_stream) +Performance::output (Midi_stream &midi_stream) const { int tracks_ = audio_staffs_.size (); - // ugh - int clocks_per_4 = 384; - - midi_stream << Midi_header (1, tracks_, clocks_per_4); - message (_ ("Track...") + " "); + midi_stream.write (Midi_header (1, tracks_, 384)); + if (be_verbose_global) + progress_indication (_ ("Track...") + " "); + int channel = 0; for (vsize i = 0; i < audio_staffs_.size (); i++) { @@ -50,30 +49,37 @@ Performance::output (Midi_stream &midi_stream) if (be_verbose_global) progress_indication ("[" + to_string (i)); - /* - MIDI players tend to ignore instrument settings on - channel 10, the percussion channel by default. - */ - if (channel % 16 == 9) - channel++; + int midi_channel = s->channel_; + + if (midi_channel < 0) + { + midi_channel = channel; + channel ++; + /* + MIDI players tend to ignore instrument settings on + channel 10, the percussion channel. + */ + if (channel % 16 == 9) + channel ++; + } /* Huh? Why does each staff also have a separate channel? We should map channels to voices, not staves. --hwn. */ - if (channel > 15) + if (midi_channel > 15) { warning (_ ("MIDI channel wrapped around")); warning (_ ("remapping modulo 16")); + + midi_channel = midi_channel % 16; } - s->output (midi_stream, channel); - channel ++; + s->output (midi_stream, midi_channel); if (be_verbose_global) progress_indication ("]"); } } - void Performance::add_element (Audio_element *p) { @@ -81,7 +87,7 @@ Performance::add_element (Audio_element *p) } void -Performance::write_output (string out) +Performance::write_output (string out) const { if (out == "-") out = "lelie.midi"; @@ -99,3 +105,7 @@ Performance::write_output (string out) } +void +Performance::process () +{ +}