/*************************************************************************/ /* */ /* Centre for Speech Technology Research */ /* University of Edinburgh, UK */ /* Copyright (c) 1995,1996 */ /* All Rights Reserved. */ /* */ /* Permission is hereby granted, free of charge, to use and distribute */ /* this software and its documentation without restriction, including */ /* without limitation the rights to use, copy, modify, merge, publish, */ /* distribute, sublicense, and/or sell copies of this work, and to */ /* permit persons to whom this work is furnished to do so, subject to */ /* the following conditions: */ /* 1. The code must retain the above copyright notice, this list of */ /* conditions and the following disclaimer. */ /* 2. Any modifications must be clearly marked as such. */ /* 3. Original authors' names are not deleted. */ /* 4. The authors' names are not used to endorse or promote products */ /* derived from this software without specific prior written */ /* permission. */ /* */ /* THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK */ /* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */ /* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT */ /* SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE */ /* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */ /* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */ /* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */ /* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */ /* THIS SOFTWARE. */ /* */ /*************************************************************************/ /* Author : Paul Taylor */ /* Date : July 1995 */ /*-----------------------------------------------------------------------*/ /* Event class header file */ /* */ /*=======================================================================*/ // Warning: These event classes can be used as items in the EST_Stream // int he normal way. However, the EventSI class has internal pointers to // adjacent events which it uses to work out various parameters. Thus, // when making a EST_Stream of events, it is important to link the events // pointers as well. #ifndef __Event_H__ #define __Event_H__ #include #ifndef FALSE # define FALSE (0) #endif #ifndef TRUE # define TRUE (1) #endif class RFCelement{ float amp; float dur; float start_amp; float start_pos; EST_String type; }; class EventBase{ private: public: EST_String type; int save(EST_String filename, EST_String type = ""); }; class EventRFC: public EventBase{ public: void init() {rise_amp = 0.0; rise_dur = 0.0; start_amp =0.0; fall_amp = 0.0; fall_dur = 0.0; start_pos = 0.0; peak_pos = 0.0; type = ""; } float rise_amp; float rise_dur; float fall_amp; float fall_dur; float peak_pos; float start_amp; float start_pos; friend ostream& operator << (ostream& s, EventRFC &e) { s << e.type << " " << e.rise_amp << " " << e.rise_dur << " " << e.fall_amp << " " << e.fall_dur << " " << e.start_amp << " " << e.start_pos << endl; return s; } }; class EventSI: public EventBase { private: float s_f0; float s_pos; float p_f0; float p_pos; float e_pos; float e_f0; public: void init(); float amp(); float dur(); float rise_amp(); float rise_dur(); float fall_amp(); float fall_dur(); float start_f0(); float start_pos(); float peak_f0(); float peak_pos(); float end_f0(); float end_pos(); void set_start_f0(float a); void set_start_pos(float a); void set_peak_f0(float a); void set_peak_pos(float a); void set_end_f0(float a); void set_end_pos(float a); EventSI *sn; EventSI *sp; friend ostream& operator << (ostream& s, EventSI &e) { s << e.type << " ra:" << e.rise_amp() << " rd:" << e.rise_dur() << "fa: " << e.fall_amp() << " fd:" << e.fall_dur() << " sf0:" << e.start_f0() << " spos:" << e.start_pos() << " pf0:" << e.peak_f0() << " ppos:" << e.peak_pos() << " ef0:" << e.end_f0() << " epos:" << e.end_pos() << endl; return s; } }; class EventTilt: public EventBase{ private: float samp; float sdur; float stilt; float spos; float s_f0; float s_pos; public: void init(); float amp(); float dur(); float tilt(); float pos(); void set_amp(float a); void set_dur(float a); void set_tilt(float a); void set_pos(float a); float start_f0(); float start_pos(); void set_start_f0(float a); void set_start_pos(float a); friend ostream& operator << (ostream& s, EventTilt &e) { s << e.type << " " << e.amp() << " " << e.dur() << " " << e.tilt() << " " << e.pos() << " sf0 " << e.start_f0() << " " << e.start_pos() << endl; return s; } }; void gc_eventsi(void *w); void gc_eventtilt(void *w); void gc_eventrfc(void *w); #endif // __Event_H__