X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fperformance.cc;h=379e024793d9f112d0b20e84c1acf9ab5f024113;hb=f4ff2e488239d66830ac8b3ae5771358a917b58f;hp=71a84ddb5a3bc3cd75161754a9a9a38aa3503a85;hpb=1b401824fa6fa77ba5ba52cc9b1735a9aa43eb20;p=lilypond.git diff --git a/lily/performance.cc b/lily/performance.cc index 71a84ddb5a..379e024793 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -7,21 +7,20 @@ */ #include -#include "warn.hh" -#include "string.hh" -#include "string-convert.hh" -#include "main.hh" -#include "midi-def.hh" -#include "midi-item.hh" -#include "midi-stream.hh" + #include "audio-column.hh" #include "audio-item.hh" #include "audio-staff.hh" +#include "file-name.hh" +#include "lily-version.hh" +#include "main.hh" +#include "midi-item.hh" +#include "midi-stream.hh" #include "performance.hh" #include "score.hh" -#include "input-file-results.hh" -#include "file-path.hh" -#include "lily-version.hh" +#include "string-convert.hh" +#include "string.hh" +#include "warn.hh" #include "killing-cons.tcc" @@ -60,10 +59,21 @@ Performance::output (Midi_stream& midi_stream) MIDI players tend to ignore instrument settings on channel 10, the percussion channel by default. */ - if (channel == 9) + 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 (s->channel_ < 0) - s->channel_ = channel; + { + s->channel_ = channel % 16; + if (channel > 15) + warning ("MIDI channel wrapped around. Remapping modulo 16."); + } + s->output (midi_stream, channel++); if (verbose_global_b) progress_indication ("]"); @@ -139,10 +149,6 @@ Performance::add_element (Audio_element *p) { audio_staffs_.push (s); } - else if (Audio_column *c = dynamic_cast (p)) - { - c->performance_ = this; - } audio_elem_p_list_ = new Killing_cons (p, audio_elem_p_list_); } @@ -153,15 +159,13 @@ Performance::process (String out) out = "lelie.midi"; /* Maybe a bit crude, but we had this before */ - Path p = split_path (out); - p.ext = "midi"; - out = p.to_string (); + File_name file_name (out); + file_name.ext_ = "midi"; + out = file_name.to_string (); Midi_stream midi_stream (out); progress_indication (_f ("MIDI output to `%s'...", out)); - global_input_file->target_strings_.push (out); - output (midi_stream); progress_indication ("\n"); return SCM_UNDEFINED;