X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Faudio-item.hh;h=8c41d18a526c19198687a73d6b63f8374615b1e1;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=dc4bb6efbd3c1073426567205c4401cb9d540718;hpb=bb8a0a5387af94dd2702877256334b160575a730;p=lilypond.git diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index dc4bb6efbd..8c41d18a52 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Jan Nieuwenhuizen + Copyright (C) 1996--2015 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,10 +54,12 @@ class Audio_span_dynamic : public Audio_element public: Direction grow_dir_; vector dynamics_; + Real min_volume_; + Real max_volume_; virtual void render (); void add_absolute (Audio_dynamic *); - Audio_span_dynamic (); + Audio_span_dynamic (Real min_volume, Real max_volume); }; class Audio_key : public Audio_item @@ -80,15 +82,18 @@ public: class Audio_note : public Audio_item { public: - Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition); + Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition, int velocity); // with tieWaitForNote, there might be a skip between the tied notes! void tie_to (Audio_note *, Moment skip = 0); + Audio_note *tie_head (); + virtual string to_string () const; Pitch pitch_; Moment length_mom_; Pitch transposing_; Audio_dynamic *dynamic_; + int extra_velocity_; Audio_note *tied_; bool tie_event_; @@ -110,7 +115,7 @@ public: MARKER, CUE_POINT }; - Audio_text (Audio_text::Type type, string text_string); + Audio_text (Audio_text::Type type, const string &text_string); Type type_; string text_string_; @@ -133,6 +138,38 @@ public: int one_beat_; }; +class Audio_control_function_value_change : public Audio_item +{ +public: + // Supported control functions. + enum Control + { + BALANCE = 0, PAN_POSITION, EXPRESSION, REVERB_LEVEL, CHORUS_LEVEL, + // pseudo value for representing the size of the enum; must be kept last + NUM_CONTROLS + }; + + Audio_control_function_value_change (Control control, Real value); + + // Information about a context property corresponding to a control function + // (name, the corresponding enumeration value, and the allowed range for the + // value of the context property). + struct Context_property + { + const char *name_; + Control control_; + Real range_min_; + Real range_max_; + }; + + // Mapping from supported control functions to the corresponding context + // properties. + static const Context_property context_properties_[]; + + Control control_; + Real value_; +}; + int moment_to_ticks (Moment); Real moment_to_real (Moment); Moment remap_grace_duration (Moment);