X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Faudio-item.hh;h=b70474385329c45437ffaf707abf9db223cedc10;hb=0b544cfb7332615ef809b71b57ab656741311ae1;hp=11f3cd31f5b90f2211578e0ed5f80c44968f415b;hpb=1314951fce85491d62cb095bf1023f853787a1cb;p=lilypond.git diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index 11f3cd31f5..b704743853 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -1,7 +1,20 @@ /* - audio-item.hh -- declare Audio_items + This file is part of LilyPond, the GNU music typesetter. - (c) 1996--2006 Jan Nieuwenhuizen + Copyright (C) 1996--2014 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef AUDIO_ITEM_HH @@ -11,16 +24,16 @@ #include "moment.hh" #include "pitch.hh" -/** - -Any piece of audio information. We need virtual constructors, let's -try decentralised factory for specific audio implemenations. -*/ class Audio_item : public Audio_element { public: - Audio_item (); Audio_column *audio_column_; + int channel_; + + Audio_item (); + Audio_column *get_column () const; + + virtual void render (); private: Audio_item (Audio_item const &); @@ -30,9 +43,23 @@ private: class Audio_dynamic : public Audio_item { public: - Audio_dynamic (Real volume); + Audio_dynamic (); Real volume_; + bool silent_; +}; + +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 (Real min_volume, Real max_volume); }; class Audio_key : public Audio_item @@ -55,13 +82,19 @@ public: class Audio_note : public Audio_item { public: - Audio_note (Pitch p, Moment m, bool tie_event, int transposing_i); + Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition, int velocity); - void tie_to (Audio_note *); + // 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_; - int transposing_; + Pitch transposing_; + Audio_dynamic *dynamic_; + int extra_velocity_; + Audio_note *tied_; bool tie_event_; }; @@ -77,12 +110,12 @@ class Audio_text : public Audio_item { public: enum Type - { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; + { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + 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_; @@ -91,7 +124,7 @@ public: class Audio_tempo : public Audio_item { public: - Audio_tempo (int per_minute_4_i); + Audio_tempo (int per_minute_4); int per_minute_4_; }; @@ -105,5 +138,41 @@ public: int one_beat_; }; +class Audio_control_function_value_change : public Audio_item +{ +public: + // Supported control functions. + enum Control + { + BALANCE = 0, PAN_POSITION, 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); + #endif // AUDIO_ITEM_HH