Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 1f0b21aa88f3c2c3f7d3ecd7ad1b78e0 > files > 244

festival-speechtools-devel-1.2.96-16.fc13.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>
<HEAD>
   <TITLE>class  EST_Track</TITLE>
   <META NAME="GENERATOR" CONTENT="DOC++ 3.4.6">
</HEAD>
 <body bgcolor="#ffffff" link="#0000ff" 
	vlink="#dd0000" text="#000088" alink="9000ff">

<A HREF = "http://www.cstr.ed.ac.uk/">
   <IMG align=left BORDER=0 SRC = "cstr.gif"></A> 
<A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html">
	<IMG BORDER=0 ALIGN=right SRC="est.jpg" width=150 height=93></A>
<br>

<br clear=left>
<p align=right>

In file ../include/EST_Track.h:<TABLE BORDER=0><TR>
<TD VALIGN=TOP><H2>class  <A HREF="#DOC.DOCU">EST_Track</A></H2></TD></H2></TD></TR></TABLE>
<BLOCKQUOTE>A class for storing time aligned coefficients.</BLOCKQUOTE>
<HR>

<H2>Inheritance:</H2>
<APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=65>
<param name=classes value="CEST_Featured,MEST_Featured.html,CEST_Track,MEST_Track.html">
<param name=before value="M,M">
<param name=after value="Md_,M">
<param name=indent value="0,1">
<param name=arrowdir value="down">
</APPLET>
<HR>

<DL>
<P><TABLE>
<DT><H3>Public Methods</H3><DD><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Constructor and Destructor functions</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_Track</B> ()<BR>
<I>Default constructor</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_Track</B> (const <!1><A HREF="EST_Track.html#DOC.71.1.2">EST_Track</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.6.1">a</A>)<BR>
<I>Copy constructor</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_Track</B> (int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, int <!1><A HREF="EST_Track.html#DOC.71.10.12">num_channels</A>)<BR>
<I>resizing constructor</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>EST_Track</B> (int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>)<BR>
<I>resizing constructor</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.1.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>~EST_Track</B> ()<BR>
<I>default destructor</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Configuring Tracks</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>resize</B> (int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, int <!1><A HREF="EST_Track.html#DOC.71.10.12">num_channels</A>, bool preserve = 1)<BR>
<I>resize the track to have <TT>num_frames</TT> and <TT>num_channels</TT>.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>resize</B> (int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>, bool preserve = 1)<BR>
<I>resize the track to have <TT>num_frames</TT> and <TT>num_channels</TT>.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>resize_aux</B> (EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>, bool preserve = 1)<BR>
<I>resize the track's auxiliary channels</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_num_channels</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, bool preserve = 1)<BR>
<I>Change the number of channels while keeping the number of frames the same.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_num_frames</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, bool preserve = 1)<BR>
<I>Change the number of frames while keeping the number of channels the same.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_channel_name</B> (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A>)<BR>
<I>set the name of the channel</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_aux_channel_name</B> (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A>)<BR>
<I>set the name of the auxiliary channel</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.2.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_setup</B> (const <!1><A HREF="EST_Track.html">EST_Track</A>&amp; <!1><A HREF="EST_Track.html#DOC.71.6.1">a</A>)<BR>
<I>copy everything but data</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Global track information</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.3.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_String.html">EST_String</A> </TD><TD><B>name</B> () const <BR>
<I>name of track - redundant use access to features</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.3.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_name</B> (const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>)<BR>
<I>set name of track - redundant use access to features</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Functions for sub tracks, channels and frames.</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>frame</B> (<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;fv, int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, int startf=0, int nf=EST_ALL)<BR>
<I>make <TT>fv</TT> a window to frame <TT>n</TT> in the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>channel</B> (<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;cv, int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, int startf=0, int nf=EST_ALL)<BR>
<I>make <TT>fv</TT> a window to channel <TT>n</TT> in the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>channel</B> (<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;cv, const char*  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int startf=0, int nf=EST_ALL)<BR>
<I>make <TT>fv</TT> a window to the named channel in the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>sub_track</B> (<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame, int nframes, const <!1><A HREF="EST_String.html">EST_String</A> &amp;start_chan_name, int nchans=EST_ALL)<BR>
<I>make <TT>st</TT> refer to a portion of the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>sub_track</B> (<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame, int nframes, const <!1><A HREF="EST_String.html">EST_String</A> &amp;start_chan_name, const <!1><A HREF="EST_String.html">EST_String</A> &amp;end_chan_name)<BR>
<I>make <TT>st</TT> refer to a portion of the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>sub_track</B> (<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame=0, int nframes=EST_ALL, int start_chan=0, int nchans=EST_ALL) const <BR>
<I>make <TT>st</TT> refer to a portion of the track.make <TT>st</TT> refer to a portion of the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_sub_track</B> (<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame=0, int nframes=EST_ALL, int start_chan=0, int nchans=EST_ALL) const <BR>
<I>Copy contiguous portion of track into <TT>st</TT>.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_channel_out</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, float* buf, int offset=0, int num=EST_ALL) const <BR>
<I>copy channel <TT>n</TT> into pre-allocated buffer buf </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_frame_out</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, float* buf, int offset=0, int num=EST_ALL) const <BR>
<I>copy frame <TT>n</TT> into pre-allocated buffer buf </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_frame_out</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, <!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;<!1><A HREF="EST_Viterbi_Decoder.html#DOC.90.4">f</A>, int offset=0, int num=EST_ALL) const <BR>
<I>copy frame <TT>n</TT> into EST_FVector </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.11"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_channel_in</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const float* buf, int offset=0, int num=EST_ALL)<BR>
<I>copy buf into pre-allocated channel n of track </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.12"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_channel_in</B> (int c, const <!1><A HREF="EST_Track.html">EST_Track</A> &amp;from, int from_c, int from_offset=0, int offset=0, int num=EST_ALL)<BR>
<I>copy channel buf into pre-allocated channel n of track </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.13"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_frame_in</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const float* buf, int offset=0, int num=EST_ALL)<BR>
<I>copy buf into frame n of track </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.14"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_frame_in</B> (int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const <!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int offset=0, int num=EST_ALL)<BR>
<I>copy t into frame n of track </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.4.15"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>copy_frame_in</B> (int i, const <!1><A HREF="EST_Track.html">EST_Track</A> &amp;from, int from_f, int from_offset=0, int offset=0, int num=EST_ALL)<BR>
<I>copy from into frame n of track </I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Channel information</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.5.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>channel_position</B> (const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0) const <BR>
<I>Return the position of channel <TT>name</TT> if it exists, otherwise return -1</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.5.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>channel_position</B> (<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0) const <BR>
<I>Return the position of channel <TT>name</TT> if it exists, otherwise return -1</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.5.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>has_channel</B> (const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>) const <BR>
<I>Returns true if the track has a channel named <TT>name</TT>,  otherwise  false</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.5.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>has_channel</B> (<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>) const <BR>
<I>Returns true if the track has a channel named <TT>name</TT>,  otherwise  false</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Accessing amplitudes The following functions can be used</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>a</B> (int i, int c=0)<BR>
<I>return amplitude of frame i, channel c</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>a_no_check</B> (int i, int c=0)<BR>
<I>return amplitude of frame i, channel c with no bounds checking.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>a</B> (int i, const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0)<BR>
<I>return amplitude of point i, in the channel named name plus offset.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>a</B> (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int c=0, EST_InterpType interp=it_nearest)<BR>
<I>return amplitude of time t, channel c.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>operator() </B> (int i, int c)<BR>
<I>return amplitude of frame i, channel c.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>operator() </B> (int i)<BR>
<I>return amplitude of frame i, channel 0.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>operator() </B> (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int c)<BR>
<I>return amplitude of frame nearest time t, channel c.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.6.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>operator() </B> (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>)<BR>
<I>return amplitude of frame nearest time t, channel 0.</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Timing</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float&amp; </TD><TD><B>t</B> (int i=0)<BR>
<I>return time position of frame i</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float </TD><TD><B>ms_t</B> (int i) const <BR>
<I>return time of framet i in milli-seconds</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>fill_time</B> (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int <!1><A HREF="EST_Track.html#DOC.71.7.9">start</A> =1)<BR>
<I>set frame times to regular intervals of time <TT>t</TT></I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>fill_time</B> (<!1><A HREF="EST_Track.html">EST_Track</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>)<BR>
<I>fill times with times of other track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>fill</B> (float <!1><A HREF="EST_Hash_Pair.html#DOC.91.2.2">v</A>)<BR>
<I>fill all amplitudes with value <TT>v</TT> </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>sample</B> (float <!1><A HREF="EST_Track.html#DOC.71.7.8">shift</A>)<BR>
<I>resample track at this frame shift, specified in seconds.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>change_type</B> (float nshift, bool <!1><A HREF="EST_Track.html#DOC.71.10.16">single_break</A>)<BR>
<I>REDO</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float </TD><TD><B>shift</B> () const <BR>
<I>return an estimation of the frame spacing in seconds.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float </TD><TD><B>start</B> () const <BR>
<I>return time of first value in track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.7.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>float </TD><TD><B>end</B> () const <BR>
<I>return time of last value in track</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>File i/o functions</B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_read_status.html">EST_read_status</A> </TD><TD><B>load</B> (const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, float ishift = 0.0)<BR>
<I>Load a file called <TT>name</TT> into the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_read_status.html">EST_read_status</A> </TD><TD><B>load</B> (<!1><A HREF="EST_TokenStream.html">EST_TokenStream</A> &amp;ts, float ishift = 0.0)<BR>
<I>Load character data from an already opened tokenstream <TT>ts</TT>  into the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_read_status.html">EST_read_status</A> </TD><TD><B>load</B> (const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Val.html#DOC.102.2.1">type</A>, float ishift = 0.0)<BR>
<I>Load a file called <TT>name</TT> of format <TT>type</TT>  into the track.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_write_status.html">EST_write_status</A> </TD><TD><B>save</B> (const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, const <!1><A HREF="EST_String.html">EST_String</A> EST_filetype = "")<BR>
<I>Save the track to a file <TT>name</TT> of format <TT>type</TT>.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.9.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="EST_write_status.html">EST_write_status</A> </TD><TD><B>save</B> (FILE* fp, const <!1><A HREF="EST_String.html">EST_String</A> EST_filetype = "")<BR>
<I>Save the track to a already opened file pointer<TT>FP</TT>  and write a file of format <TT>type</TT>.</I>
</TD></TR></TABLE></P>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Utility functions </B> <BR>
<I></I>
<P><TABLE>
<TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>empty</B> () const <BR>
<I>returns true if no values are set in the frame </I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_break</B> (int i)<BR>
<I>set frame i to be a break</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>set_value</B> (int i)<BR>
<I>set frame i to be a value</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>val</B> (int i) const <BR>
<I>return true if frame i is a value</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>track_break</B> (int i) const <BR>
<I>return true if frame i is a break</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>prev_non_break</B> (int i) const <BR>
<I>starting at frame i, return the frame index of the first value frame before i.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>next_non_break</B> (int i) const <BR>
<I>starting at frame i, return the frame index of the first value frame after i.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>index</B> (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>) const <BR>
<I>return the frame index nearest time t</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>index_below</B> (float x) const <BR>
<I>return the frame index before time t</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>num_frames</B> () const <BR>
<I>return number of frames in track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.11"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>length</B> () const <BR>
<I>return number of frames in track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.12"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>num_channels</B> () const <BR>
<I>return number of channels in track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.13"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>int </TD><TD><B>num_aux_channels</B> () const <BR>
<I>return number of auxiliary channels in track</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.14"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>rm_excess_breaks</B> ()<BR>
<I>If the contour has multiple break values between sections containing values, reduce the break sections so that each has a single break only.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.15"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>equal_space</B> () const <BR>
<I>return true if track has equal (ie.</I>
</TD></TR><TR>
<TD VALIGN=TOP><A HREF="#DOC.71.10.16"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>bool </TD><TD><B>single_break</B> () const <BR>
<I>return true if track has only single breaks between value sections </I>
</TD></TR></TABLE></P>
</TD></TR></TABLE></P>

</DL>
<HR><H3>Inherited from <A HREF="EST_Featured.html">EST_Featured</A>:</H3>
<DL>
</DL>

<A NAME="DOC.DOCU"></A>
<HR>
<H2>Documentation</H2>
<BLOCKQUOTE>A class for storing time aligned coefficients.

<P>some stuff.</BLOCKQUOTE>
<DL>

<A NAME="Constructor and Destructor functions"></A>
<A NAME="DOC.71.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Constructor and Destructor functions</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="EST_Track"></A>
<A NAME="DOC.71.1.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_Track()</B></TT>
<DD>Default constructor
<DL><DT><DD></DL><P>
<A NAME="EST_Track"></A>
<A NAME="DOC.71.1.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_Track(const <!1><A HREF="EST_Track.html#DOC.71.1.2">EST_Track</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.6.1">a</A>)</B></TT>
<DD>Copy constructor
<DL><DT><DD></DL><P>
<A NAME="EST_Track"></A>
<A NAME="DOC.71.1.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_Track(int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, int <!1><A HREF="EST_Track.html#DOC.71.10.12">num_channels</A>)</B></TT>
<DD>resizing constructor
<DL><DT><DD></DL><P>
<A NAME="EST_Track"></A>
<A NAME="DOC.71.1.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> EST_Track(int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>)</B></TT>
<DD>resizing constructor
<DL><DT><DD></DL><P>
<A NAME="~EST_Track"></A>
<A NAME="DOC.71.1.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> ~EST_Track()</B></TT>
<DD>default destructor
<DL><DT><DD></DL><P></DL>

<A NAME="Configuring Tracks"></A>
<A NAME="DOC.71.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Configuring Tracks</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="resize"></A>
<A NAME="DOC.71.2.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void resize(int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, int <!1><A HREF="EST_Track.html#DOC.71.10.12">num_channels</A>, bool preserve = 1)</B></TT>
<DD>resize the track to have <TT>num_frames</TT> and <TT>num_channels</TT>.
if <TT>preserve</TT> is set to 1, any existing values in the track
are kept, up to the limits imposed by the new number of frames
and channels. If the new track size is bigger, new positions
are filled with 0 
<DL><DT><DD></DL><P>
<A NAME="resize"></A>
<A NAME="DOC.71.2.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void resize(int <!1><A HREF="EST_Track.html#DOC.71.10.10">num_frames</A>, EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>, bool preserve = 1)</B></TT>
<DD>resize the track to have <TT>num_frames</TT> and <TT>num_channels</TT>.
if <TT>preserve</TT> is set to 1, any existing values in the track
are kept, up to the limits imposed by the new number of frames
and channels. If the new track size is bigger, new positions
are filled with 0 
<DL><DT><DD></DL><P>
<A NAME="resize_aux"></A>
<A NAME="DOC.71.2.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void resize_aux(EST_StrList &amp;<!1><A HREF="EST_THash.html#DOC.91.3.15">map</A>, bool preserve = 1)</B></TT>
<DD>resize the track's auxiliary channels
<DL><DT><DD></DL><P>
<A NAME="set_num_channels"></A>
<A NAME="DOC.71.2.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_num_channels(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, bool preserve = 1)</B></TT>
<DD>Change the number of channels while keeping the number of
frames the same.  if <TT>preserve</TT> is set to 1, any existing
values in the track are kept, up to the limits imposed by the
new number of frames and channels. If the new track size is
bigger, new positions are filled with 0 
<DL><DT><DD></DL><P>
<A NAME="set_num_frames"></A>
<A NAME="DOC.71.2.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_num_frames(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, bool preserve = 1)</B></TT>
<DD>Change the number of frames while keeping the number of
channels the same.  if <TT>preserve</TT> is set to 1, any
existing values in the track are kept, up to the limits
imposed by the new number of frames and channels. If the new
track size is bigger, new positions are filled with 0 
<DL><DT><DD></DL><P>
<A NAME="set_channel_name"></A>
<A NAME="DOC.71.2.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_channel_name(const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A>)</B></TT>
<DD>set the name of the channel
<DL><DT><DD></DL><P>
<A NAME="set_aux_channel_name"></A>
<A NAME="DOC.71.2.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_aux_channel_name(const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A>)</B></TT>
<DD>set the name of the auxiliary channel
<DL><DT><DD></DL><P>
<A NAME="copy_setup"></A>
<A NAME="DOC.71.2.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_setup(const <!1><A HREF="EST_Track.html">EST_Track</A>&amp; <!1><A HREF="EST_Track.html#DOC.71.6.1">a</A>)</B></TT>
<DD>copy everything but data
<DL><DT><DD></DL><P></DL>

<A NAME="Global track information"></A>
<A NAME="DOC.71.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Global track information</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="name"></A>
<A NAME="DOC.71.3.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_String.html">EST_String</A> name() const </B></TT>
<DD>name of track - redundant use access to features
<DL><DT><DD></DL><P>
<A NAME="set_name"></A>
<A NAME="DOC.71.3.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_name(const <!1><A HREF="EST_String.html">EST_String</A> &amp;<!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>)</B></TT>
<DD>set name of track - redundant use access to features
<DL><DT><DD></DL><P></DL>

<A NAME="Functions for sub tracks, channels and frames."></A>
<A NAME="DOC.71.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Functions for sub tracks, channels and frames.</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="frame"></A>
<A NAME="DOC.71.4.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void frame(<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;fv, int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, int startf=0, int nf=EST_ALL)</B></TT>
<DD>make <TT>fv</TT> a window to frame <TT>n</TT> in the track. 
<DL><DT><DD></DL><P>
<A NAME="channel"></A>
<A NAME="DOC.71.4.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void channel(<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;cv, int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, int startf=0, int nf=EST_ALL)</B></TT>
<DD>make <TT>fv</TT> a window to channel <TT>n</TT> in the track. 
<DL><DT><DD></DL><P>
<A NAME="channel"></A>
<A NAME="DOC.71.4.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void channel(<!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;cv, const char*  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int startf=0, int nf=EST_ALL)</B></TT>
<DD>make <TT>fv</TT> a window to the named channel in the track. 
<DL><DT><DD></DL><P>
<A NAME="sub_track"></A>
<A NAME="DOC.71.4.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void sub_track(<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame, int nframes, const <!1><A HREF="EST_String.html">EST_String</A> &amp;start_chan_name, int nchans=EST_ALL)</B></TT>
<DD>make <TT>st</TT> refer to a portion of the track. No values
are copied - an internal pointer in st is set to the specified
portion of the the track. After this, st behaves like a normal
track. Its first channel is the same as start_channel and its
first frame is the same as start_frame. Any values written into
st will changes values in the main track. st cannot be resized.

<P>
<DL><DT><DT><B>Parameters:</B><DD><B>start_frame</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.1">frame</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of frames to be included in total
<BR><B>start_channel_name</B> -  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A> of <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>end_channel_name</B> -  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A> of <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track stops<BR><DD></DL><P>
<A NAME="sub_track"></A>
<A NAME="DOC.71.4.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void sub_track(<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame, int nframes, const <!1><A HREF="EST_String.html">EST_String</A> &amp;start_chan_name, const <!1><A HREF="EST_String.html">EST_String</A> &amp;end_chan_name)</B></TT>
<DD>make <TT>st</TT> refer to a portion of the track. No values
are copied - an internal pointer in st is set to the specified
portion of the the track. After this, st behaves like a normal
track. Its first channel is the same as start_channel and its
first frame is the same as start_frame. Any values written into
st will changes values in the main track. st cannot be resized.

<P>
<DL><DT><DT><B>Parameters:</B><DD><B>start_frame</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.1">frame</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of frames to be included in total
<BR><B>start_channel_name</B> -  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A> of <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>end_channel_name</B> -  <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A> of <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track stops<BR><DD></DL><P>
<A NAME="sub_track"></A>
<A NAME="DOC.71.4.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void sub_track(<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame=0, int nframes=EST_ALL, int start_chan=0, int nchans=EST_ALL) const </B></TT>
<DD>make <TT>st</TT> refer to a portion of the track. (const version)
No values
are copied - an internal pointer in st is set to the specified
portion of the the track. After this, st behaves like a normal
track. Its first channel is the same as start_channel and its
first frame is the same as start_frame. Any values written into
st will changes values in the main track. st cannot be resized.

<P>make <TT>st</TT> refer to a portion of the track. No values
are copied - an internal pointer in st is set to the specified
portion of the the track. After this, st behaves like a normal
track. Its first channel is the same as start_channel and its
first frame is the same as start_frame. Any values written into
st will changes values in the main track. st cannot be resized.

<P>
<DL><DT><DT><B>Parameters:</B><DD><B>start_frame</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.1">frame</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of frames to be included in total
<BR><B>start_channel</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of channels to be included in total<BR><B>start_frame</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.1">frame</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of frames to be included in total
<BR><B>start_channel</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of channels to be included in total<BR><DD></DL><P>
<A NAME="copy_sub_track"></A>
<A NAME="DOC.71.4.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_sub_track(<!1><A HREF="EST_Track.html">EST_Track</A> &amp;st, int start_frame=0, int nframes=EST_ALL, int start_chan=0, int nchans=EST_ALL) const </B></TT>
<DD>Copy contiguous portion of track into <TT>st</TT>. Unilike the
normal sub_track functions, this makes a completely new track.
values written into this will not affect the main track and it
can be resized.

<P>
<DL><DT><DT><B>Parameters:</B><DD><B>start_frame</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.1">frame</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of frames to be included in total
<BR><B>start_channel</B> -  <!1><A HREF="first.html">first</A> <!1><A HREF="EST_Track.html#DOC.71.4.2">channel</A> <!1><A HREF="EST_String.html#DOC.75.41.1">at</A> which sub-track starts
<BR><B>nframes</B> -  number of channels to be included in total<BR><DD></DL><P>
<A NAME="copy_channel_out"></A>
<A NAME="DOC.71.4.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_channel_out(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, float* buf, int offset=0, int num=EST_ALL) const </B></TT>
<DD>copy channel <TT>n</TT> into pre-allocated buffer buf 
<DL><DT><DD></DL><P>
<A NAME="copy_frame_out"></A>
<A NAME="DOC.71.4.9"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_frame_out(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, float* buf, int offset=0, int num=EST_ALL) const </B></TT>
<DD>copy frame <TT>n</TT> into pre-allocated buffer buf 
<DL><DT><DD></DL><P>
<A NAME="copy_frame_out"></A>
<A NAME="DOC.71.4.10"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_frame_out(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, <!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;<!1><A HREF="EST_Viterbi_Decoder.html#DOC.90.4">f</A>, int offset=0, int num=EST_ALL) const </B></TT>
<DD>copy frame <TT>n</TT> into EST_FVector 
<DL><DT><DD></DL><P>
<A NAME="copy_channel_in"></A>
<A NAME="DOC.71.4.11"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_channel_in(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const float* buf, int offset=0, int num=EST_ALL)</B></TT>
<DD>copy buf into pre-allocated channel n of track 
<DL><DT><DD></DL><P>
<A NAME="copy_channel_in"></A>
<A NAME="DOC.71.4.12"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_channel_in(int c, const <!1><A HREF="EST_Track.html">EST_Track</A> &amp;from, int from_c, int from_offset=0, int offset=0, int num=EST_ALL)</B></TT>
<DD>copy channel buf into pre-allocated channel n of track 
<DL><DT><DD></DL><P>
<A NAME="copy_frame_in"></A>
<A NAME="DOC.71.4.13"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_frame_in(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const float* buf, int offset=0, int num=EST_ALL)</B></TT>
<DD>copy buf into frame n of track 
<DL><DT><DD></DL><P>
<A NAME="copy_frame_in"></A>
<A NAME="DOC.71.4.14"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_frame_in(int <!1><A HREF="EST_TVector.html#DOC.15.1.20.3">n</A>, const <!1><A HREF="EST_FVector.html">EST_FVector</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int offset=0, int num=EST_ALL)</B></TT>
<DD>copy t into frame n of track 
<DL><DT><DD></DL><P>
<A NAME="copy_frame_in"></A>
<A NAME="DOC.71.4.15"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void copy_frame_in(int i, const <!1><A HREF="EST_Track.html">EST_Track</A> &amp;from, int from_f, int from_offset=0, int offset=0, int num=EST_ALL)</B></TT>
<DD>copy from into frame n of track 
<DL><DT><DD></DL><P></DL>

<A NAME="Channel information"></A>
<A NAME="DOC.71.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Channel information</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="channel_position"></A>
<A NAME="DOC.71.5.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int channel_position(const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0) const </B></TT>
<DD>Return the position of channel <TT>name</TT> if it exists,
otherwise return -1
<DL><DT><DD></DL><P>
<A NAME="channel_position"></A>
<A NAME="DOC.71.5.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int channel_position(<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0) const </B></TT>
<DD>Return the position of channel <TT>name</TT> if it exists,
otherwise return -1
<DL><DT><DD></DL><P>
<A NAME="has_channel"></A>
<A NAME="DOC.71.5.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool has_channel(const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>) const </B></TT>
<DD>Returns true if the track has a channel named <TT>name</TT>, 
otherwise  false
<DL><DT><DD></DL><P>
<A NAME="has_channel"></A>
<A NAME="DOC.71.5.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool has_channel(<!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>) const </B></TT>
<DD>Returns true if the track has a channel named <TT>name</TT>, 
otherwise  false
<DL><DT><DD></DL><P></DL>

<A NAME="Accessing amplitudes The following functions can be used"></A>
<A NAME="DOC.71.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Accessing amplitudes The following functions can be used</B></TT>
<DD>to access to amplitude of the track at certain points. Most of
these functions can be used for reading or writing to this
point, thus

<P>tr.a(10, 5) = 10.3;

<P>can be used to set the 10th frame of the 5th channel and

<P>cout &lt;&lt; tr.a(10, 5);

<P>can be used to print the same information. Most of these functions
have a const equivalent for helping the compiler in
read only operations.
<DL><DT><DD></DL><P><DL>

<A NAME="a"></A>
<A NAME="DOC.71.6.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; a(int i, int c=0)</B></TT>
<DD>return amplitude of frame i, channel c
<DL><DT><DD></DL><P>
<A NAME="a_no_check"></A>
<A NAME="DOC.71.6.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; a_no_check(int i, int c=0)</B></TT>
<DD>return amplitude of frame i, channel c with no bounds
checking. 
<DL><DT><DD></DL><P>
<A NAME="a"></A>
<A NAME="DOC.71.6.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; a(int i, const char* <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, int offset=0)</B></TT>
<DD>return amplitude of point i, in the channel named name plus
offset. If you have a track with say channels called F0 and
voicing, you can access the 45th frame's F0 as t.a(45, "F0");
If there are 20 cepstral coefficients for each frame, the 5th can
be accessed as t.a(45, "cepstrum", 5);
<DL><DT><DD></DL><P>
<A NAME="a"></A>
<A NAME="DOC.71.6.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; a(float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int c=0, EST_InterpType interp=it_nearest)</B></TT>
<DD>return amplitude of time t, channel c. This can be used for
reading or writing to this point. By default the nearest frame
to this time is used. If <TT>interp</TT> is set to <TT>
it_linear</TT>, linear interpolaion is performed between the two
amplitudes of the two frames either side of the time point to
give an estimation of what the amplitude would have been at
time <TT>t</TT>.  If <TT>interp</TT> is set to <TT>it_linear_nz</TT>,
interpolation is as above, unless the time requested is off
the end of a portion of track in which case the nearest
amplitude is returned.
<DL><DT><DD></DL><P>
<A NAME="operator() "></A>
<A NAME="DOC.71.6.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; operator() (int i, int c)</B></TT>
<DD>return amplitude of frame i, channel c. 
<DL><DT><DD></DL><P>
<A NAME="operator() "></A>
<A NAME="DOC.71.6.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; operator() (int i)</B></TT>
<DD>return amplitude of frame i, channel 0. 
<DL><DT><DD></DL><P>
<A NAME="operator() "></A>
<A NAME="DOC.71.6.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; operator() (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int c)</B></TT>
<DD>return amplitude of frame nearest time t, channel c. 
<DL><DT><DD></DL><P>
<A NAME="operator() "></A>
<A NAME="DOC.71.6.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; operator() (float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>)</B></TT>
<DD>return amplitude of frame nearest time t, channel 0. 
<DL><DT><DD></DL><P></DL>

<A NAME="Timing"></A>
<A NAME="DOC.71.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Timing</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="t"></A>
<A NAME="DOC.71.7.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float&amp; t(int i=0)</B></TT>
<DD>return time position of frame i
<DL><DT><DD></DL><P>
<A NAME="ms_t"></A>
<A NAME="DOC.71.7.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float ms_t(int i) const </B></TT>
<DD>return time of framet i in milli-seconds
<DL><DT><DD></DL><P>
<A NAME="fill_time"></A>
<A NAME="DOC.71.7.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void fill_time(float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>, int <!1><A HREF="EST_Track.html#DOC.71.7.9">start</A> =1)</B></TT>
<DD>set frame times to regular intervals of time <TT>t</TT>
<DL><DT><DD></DL><P>
<A NAME="fill_time"></A>
<A NAME="DOC.71.7.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void fill_time(<!1><A HREF="EST_Track.html">EST_Track</A> &amp;<!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>)</B></TT>
<DD>fill times with times of other track
<DL><DT><DD></DL><P>
<A NAME="fill"></A>
<A NAME="DOC.71.7.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void fill(float <!1><A HREF="EST_Hash_Pair.html#DOC.91.2.2">v</A>)</B></TT>
<DD>fill all amplitudes with value <TT>v</TT> 
<DL><DT><DD></DL><P>
<A NAME="sample"></A>
<A NAME="DOC.71.7.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void sample(float <!1><A HREF="EST_Track.html#DOC.71.7.8">shift</A>)</B></TT>
<DD>resample track at this frame shift, specified in seconds. 
This can be used to change a variable frame spaced track into
a fixed frame track, or to change the spacing of an existing
evenly spaced track.
<DL><DT><DD></DL><P>
<A NAME="change_type"></A>
<A NAME="DOC.71.7.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void change_type(float nshift, bool <!1><A HREF="EST_Track.html#DOC.71.10.16">single_break</A>)</B></TT>
<DD>REDO
<DL><DT><DD></DL><P>
<A NAME="shift"></A>
<A NAME="DOC.71.7.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float shift() const </B></TT>
<DD>return an estimation of the frame spacing in seconds. 
This returns -1 if the track is not a fixed shift track 
<DL><DT><DD></DL><P>
<A NAME="start"></A>
<A NAME="DOC.71.7.9"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float start() const </B></TT>
<DD>return time of first value in track
<DL><DT><DD></DL><P>
<A NAME="end"></A>
<A NAME="DOC.71.7.10"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>float end() const </B></TT>
<DD>return time of last value in track
<DL><DT><DD></DL><P></DL>

<A NAME="Auxiliary channels"></A>
<A NAME="DOC.71.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Auxiliary channels</B></TT>
<DD>
Auxiliary information is used to store information that goes
along with frames, but which are not amplitudes and hence
not appropriate for operations such as interpolation, 
smoothing etc. The aux() array is an array of EST_Vals which 
allows points to be int, float or a string. 

<P>The following functions can be used to access to auxiliary
track information. Most of these functions can be used for
reading or writing to this point, thus

<P>tr.aux(10, "voicing") = 1;

<P>can be used to set the 10th frame of the "voicing" channel and

<P>cout &lt;&lt; tr.a(10, "voicing");

<P>can be used to print the same information. Most of these functions
have a const equivalent for helping the compiler in
read only operations.  

<P>Auxiliary channels are usually accessed by name rather than
numerical index. The names are set using the set_aux_channel_names()
function.
<DL><DT><DD></DL><P>
<A NAME="File i/o functions"></A>
<A NAME="DOC.71.9"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> File i/o functions</B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="load"></A>
<A NAME="DOC.71.9.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_read_status.html">EST_read_status</A> load(const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, float ishift = 0.0)</B></TT>
<DD>Load a file called <TT>name</TT> into the track. 
The load function attempts to
automatically determine which file type is being loaded from the
file's header. If no header is found, the function assumes the
file is ascii data, with a fixed frame shift, arranged with rows
representing frames and columns channels. In this case, the
frame shift must be specified as an argument to this function
<DL><DT><DD></DL><P>
<A NAME="load"></A>
<A NAME="DOC.71.9.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_read_status.html">EST_read_status</A> load(<!1><A HREF="EST_TokenStream.html">EST_TokenStream</A> &amp;ts, float ishift = 0.0)</B></TT>
<DD>Load character data from an already opened tokenstream <TT>ts</TT> 
into the track. 
The load function attempts to
automatically determine which file type is being loaded from the
file's header. If no header is found, the function assumes the
file is ascii data, with a fixed frame shift, arranged with rows
representing frames and columns channels. In this case, the
frame shift must be specified as an argument to this function
<DL><DT><DD></DL><P>
<A NAME="load"></A>
<A NAME="DOC.71.9.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_read_status.html">EST_read_status</A> load(const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Val.html#DOC.102.2.1">type</A>, float ishift = 0.0)</B></TT>
<DD>Load a file called <TT>name</TT> of format <TT>type</TT> 
into the track. If no header is found, the function assumes the
file is ascii data, with a fixed frame shift, arranged with rows
representing frames and columns channels. In this case, the
frame shift must be specified as an argument to this function
<DL><DT><DD></DL><P>
<A NAME="save"></A>
<A NAME="DOC.71.9.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_write_status.html">EST_write_status</A> save(const <!1><A HREF="EST_String.html">EST_String</A> <!1><A HREF="EST_Track.html#DOC.71.3.1">name</A>, const <!1><A HREF="EST_String.html">EST_String</A> EST_filetype = "")</B></TT>
<DD>Save the track to a file <TT>name</TT> of format <TT>type</TT>. 
<DL><DT><DD></DL><P>
<A NAME="save"></A>
<A NAME="DOC.71.9.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="EST_write_status.html">EST_write_status</A> save(FILE* fp, const <!1><A HREF="EST_String.html">EST_String</A> EST_filetype = "")</B></TT>
<DD>Save the track to a already opened file pointer<TT>FP</TT> 
and write a file of format <TT>type</TT>. 
<DL><DT><DD></DL><P></DL>

<A NAME="Utility functions "></A>
<A NAME="DOC.71.10"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Utility functions </B></TT>
<DL><DT><DD></DL><P><DL>

<A NAME="empty"></A>
<A NAME="DOC.71.10.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int empty() const </B></TT>
<DD>returns true if no values are set in the frame 
<DL><DT><DD></DL><P>
<A NAME="set_break"></A>
<A NAME="DOC.71.10.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_break(int i)</B></TT>
<DD>set frame i to be a break
<DL><DT><DD></DL><P>
<A NAME="set_value"></A>
<A NAME="DOC.71.10.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void set_value(int i)</B></TT>
<DD>set frame i to be a value
<DL><DT><DD></DL><P>
<A NAME="val"></A>
<A NAME="DOC.71.10.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int val(int i) const </B></TT>
<DD>return true if frame i is a value
<DL><DT><DD></DL><P>
<A NAME="track_break"></A>
<A NAME="DOC.71.10.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int track_break(int i) const </B></TT>
<DD>return true if frame i is a break
<DL><DT><DD></DL><P>
<A NAME="prev_non_break"></A>
<A NAME="DOC.71.10.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int prev_non_break(int i) const </B></TT>
<DD>starting at frame i, return the frame index of the first
value frame before i. If frame i is a value, return i 
<DL><DT><DD></DL><P>
<A NAME="next_non_break"></A>
<A NAME="DOC.71.10.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int next_non_break(int i) const </B></TT>
<DD>starting at frame i, return the frame index of the first
value frame after i. If frame i is a value, return i 
<DL><DT><DD></DL><P>
<A NAME="index"></A>
<A NAME="DOC.71.10.8"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int index(float <!1><A HREF="EST_Track.html#DOC.71.7.1">t</A>) const </B></TT>
<DD>return the frame index nearest time t
<DL><DT><DD></DL><P>
<A NAME="index_below"></A>
<A NAME="DOC.71.10.9"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int index_below(float x) const </B></TT>
<DD>return the frame index before time t
<DL><DT><DD></DL><P>
<A NAME="num_frames"></A>
<A NAME="DOC.71.10.10"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int num_frames() const </B></TT>
<DD>return number of frames in track
<DL><DT><DD></DL><P>
<A NAME="length"></A>
<A NAME="DOC.71.10.11"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int length() const </B></TT>
<DD>return number of frames in track
<DL><DT><DD></DL><P>
<A NAME="num_channels"></A>
<A NAME="DOC.71.10.12"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int num_channels() const </B></TT>
<DD>return number of channels in track
<DL><DT><DD></DL><P>
<A NAME="num_aux_channels"></A>
<A NAME="DOC.71.10.13"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>int num_aux_channels() const </B></TT>
<DD>return number of auxiliary channels in track
<DL><DT><DD></DL><P>
<A NAME="rm_excess_breaks"></A>
<A NAME="DOC.71.10.14"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void rm_excess_breaks()</B></TT>
<DD>If the contour has multiple break values between sections
containing values, reduce the break sections so that each has
a single break only. 
<DL><DT><DD></DL><P>
<A NAME="equal_space"></A>
<A NAME="DOC.71.10.15"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool equal_space() const </B></TT>
<DD>return true if track has equal (ie. fixed) frame spacing */
<DL><DT><DD></DL><P>
<A NAME="single_break"></A>
<A NAME="DOC.71.10.16"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>bool single_break() const </B></TT>
<DD>return true if track has only single breaks between value sections 
<DL><DT><DD></DL><P></DL>
</DL>

<HR><DL><DT><B>This class has no child classes.</B></DL>

<DL><DT><DT><B>Friends:</B><DD>  ostream&amp; operator &lt;&lt; (ostream&amp; s, const <!1><A HREF="EST_Track.html">EST_Track</A> &amp;tr)<BR>  class <!1><A HREF="EST_TIterator.html">EST_TIterator</A>&lt; <!1><A HREF="EST_Track.html">EST_Track</A>, IPointer_f, <!1><A HREF="EST_Track.html">EST_Track</A> &gt;<BR>  class EST_TRwIterator&lt; <!1><A HREF="EST_Track.html">EST_Track</A>, IPointer_f, <!1><A HREF="EST_Track.html">EST_Track</A> &gt;<BR><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR>
<A HREF = "http://www.ed.ac.uk/">
   <IMG align=right BORDER=0 SRC = "edcrest.gif"></A>

<P Align=left><I>This page is part of the 
<A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html">
Edinburgh Speech Tools Library</A> documentation
<br>
Copyright <A HREF="http://www.ed.ac.uk"> University of Edinburgh</A> 1997
<br>
Contact: <A HREF="mailto:speech_toolss@cstr.ed.ac.uk"> 
         speech_tools@cstr.ed.ac.uk </a>
</P>
<br clear=right>