X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Faudio-item.hh;h=da0abbce385a5ab090e1c73a666140898b447626;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=84cdcdada2f34c0307e549833d734331e0ed2004;hpb=e24df7c27635dc996c466295eacf2981bddccaf7;p=lilypond.git diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index 84cdcdada2..da0abbce38 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -1,8 +1,21 @@ /* - audio-item.hh -- declare Audio_items + This file is part of LilyPond, the GNU music typesetter. - (c) 1996--2005 Jan Nieuwenhuizen - */ + Copyright (C) 1996--2011 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 #define AUDIO_ITEM_HH @@ -11,30 +24,44 @@ #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_column *audio_column_; + int channel_; + Audio_item (); - Audio_column* audio_column_; + Audio_column *get_column () const; + + virtual void render (); private: - Audio_item (Audio_item const&); - Audio_item& operator = ( Audio_item const&); + Audio_item (Audio_item const &); + Audio_item &operator = (Audio_item const &); }; 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_; + + + virtual void render (); + void add_absolute (Audio_dynamic*); + Audio_span_dynamic (); }; + class Audio_key : public Audio_item { public: @@ -47,51 +74,54 @@ public: class Audio_instrument : public Audio_item { public: - Audio_instrument (String instrument_string); + Audio_instrument (string instrument_string); - String str_; + string str_; }; - + class Audio_note : public Audio_item { -public: - Audio_note (Pitch p, Moment m, int transposing_i = 0); +public: + Audio_note (Pitch p, Moment m, bool tie_event, Pitch transposition); - void tie_to (Audio_note*); + // with tieWaitForNote, there might be a skip between the tied notes! + void tie_to (Audio_note *, Moment skip = 0); Pitch pitch_; Moment length_mom_; - Moment delayed_mom_; - Moment delayed_until_mom_; - int transposing_; - Audio_note* tied_; + Pitch transposing_; + Audio_dynamic* dynamic_; + + Audio_note *tied_; + bool tie_event_; }; class Audio_piano_pedal : public Audio_item { public: - String type_string_; + string type_string_; Direction dir_; }; class Audio_text : public Audio_item { public: - enum Type { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; - - Audio_text (Audio_text::Type type, String text_string); + enum Type + { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; + + Audio_text (Audio_text::Type type, string text_string); Type type_; - String text_string_; + string text_string_; }; 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 +135,9 @@ public: int one_beat_; }; +int moment_to_ticks (Moment); +Real moment_to_real (Moment); +Moment remap_grace_duration (Moment); + #endif // AUDIO_ITEM_HH