<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>RAUL: Raul::SMFWriter Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><b>Raul</b> </li> <li><a class="el" href="classRaul_1_1SMFWriter.html">Raul::SMFWriter</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#pro-static-attribs">Static Protected Attributes</a> </div> <div class="headertitle"> <h1>Raul::SMFWriter Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="Raul::SMFWriter" --><!-- doxytag: inherits="Raul::MIDISink" --> <p>Standard Midi File (Type 0) Writer. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="SMFWriter_8hpp_source.html">SMFWriter.hpp</a>></code></p> <p>Inherits <a class="el" href="classRaul_1_1MIDISink.html">Raul::MIDISink</a>.</p> <div class="dynheader"> Collaboration diagram for Raul::SMFWriter:</div> <div class="dyncontent"> <div class="center"><img src="classRaul_1_1SMFWriter__coll__graph.png" border="0" usemap="#Raul_1_1SMFWriter_coll__map" alt="Collaboration graph"/></div> <map name="Raul_1_1SMFWriter_coll__map" id="Raul_1_1SMFWriter_coll__map"> <area shape="rect" id="node2" href="classRaul_1_1MIDISink.html" title="Pure virtual base for anything you can write MIDI to." alt="" coords="5,101,117,131"/><area shape="rect" id="node4" href="classRaul_1_1Deletable.html" title="Something with a virtual destructor." alt="" coords="5,5,117,35"/><area shape="rect" id="node6" href="classRaul_1_1TimeStamp.html" title="A real-time time stamp (possible units: frame, absolute (s), or beat)." alt="" coords="219,101,341,131"/><area shape="rect" id="node8" href="classRaul_1_1TimeUnit.html" title="A type of time stamp." alt="" coords="165,5,275,35"/></map> </div> <p><a href="classRaul_1_1SMFWriter-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#a185959984f5f29d4640a6e46c1c18787">SMFWriter</a> (<a class="el" href="classRaul_1_1TimeUnit.html">TimeUnit</a> unit)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new SMF writer. <a href="#a185959984f5f29d4640a6e46c1c18787"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#ac1acff193e31f2fe434262fd8da7e4ab">start</a> (const std::string &filename, <a class="el" href="classRaul_1_1TimeStamp.html">TimeStamp</a> start_time) throw (std::logic_error)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Start a write to an SMF file. <a href="#ac1acff193e31f2fe434262fd8da7e4ab"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a018f6463d15f7d6027047ac05ad52f5a"></a><!-- doxytag: member="Raul::SMFWriter::unit" ref="a018f6463d15f7d6027047ac05ad52f5a" args="() const " --> <a class="el" href="classRaul_1_1TimeUnit.html">TimeUnit</a> </td><td class="memItemRight" valign="bottom"><b>unit</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#a8715eb2b1ce7720e3fcc32350ef6e68c">write_event</a> (<a class="el" href="classRaul_1_1TimeStamp.html">TimeStamp</a> time, size_t ev_size, const unsigned char *ev) throw (std::logic_error)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Write an event at the end of the file. <a href="#a8715eb2b1ce7720e3fcc32350ef6e68c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e1f5daaa5d5c87f4700061d2251ab06"></a><!-- doxytag: member="Raul::SMFWriter::flush" ref="a3e1f5daaa5d5c87f4700061d2251ab06" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>flush</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58081c94fa92ef2f3921b6d8ab28e557"></a><!-- doxytag: member="Raul::SMFWriter::finish" ref="a58081c94fa92ef2f3921b6d8ab28e557" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>finish</b> () throw (std::logic_error)</td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cff2f79499ce06ae1bc2ae15f923d6b"></a><!-- doxytag: member="Raul::SMFWriter::write_header" ref="a1cff2f79499ce06ae1bc2ae15f923d6b" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>write_header</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b49950fcbde6605fb42eb9b4ffc4ae8"></a><!-- doxytag: member="Raul::SMFWriter::write_footer" ref="a3b49950fcbde6605fb42eb9b4ffc4ae8" args="()" --> void </td><td class="memItemRight" valign="bottom"><b>write_footer</b> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2b3d5e2e82728133536370d1c28c73b"></a><!-- doxytag: member="Raul::SMFWriter::write_chunk_header" ref="af2b3d5e2e82728133536370d1c28c73b" args="(const char id[4], uint32_t length)" --> void </td><td class="memItemRight" valign="bottom"><b>write_chunk_header</b> (const char id[4], uint32_t length)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e144e71ba5e6e214ebee0696122b859"></a><!-- doxytag: member="Raul::SMFWriter::write_chunk" ref="a2e144e71ba5e6e214ebee0696122b859" args="(const char id[4], uint32_t length, void *data)" --> void </td><td class="memItemRight" valign="bottom"><b>write_chunk</b> (const char id[4], uint32_t length, void *data)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#ae7351869ccd72bef021acc93414d120c">write_var_len</a> (uint32_t val)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Write an SMF variable length value. <a href="#ae7351869ccd72bef021acc93414d120c"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a202a9048f1ea329b6c49be6ad4ad0726"></a><!-- doxytag: member="Raul::SMFWriter::_filename" ref="a202a9048f1ea329b6c49be6ad4ad0726" args="" --> std::string </td><td class="memItemRight" valign="bottom"><b>_filename</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72b3f4b765808e2ae24678657159acce"></a><!-- doxytag: member="Raul::SMFWriter::_fd" ref="a72b3f4b765808e2ae24678657159acce" args="" --> FILE * </td><td class="memItemRight" valign="bottom"><b>_fd</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add40364590f7bc342f4c88d828dd9cdb"></a><!-- doxytag: member="Raul::SMFWriter::_unit" ref="add40364590f7bc342f4c88d828dd9cdb" args="" --> <a class="el" href="classRaul_1_1TimeUnit.html">TimeUnit</a> </td><td class="memItemRight" valign="bottom"><b>_unit</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b37539301cdadcf6662d0f492573c4d"></a><!-- doxytag: member="Raul::SMFWriter::_start_time" ref="a4b37539301cdadcf6662d0f492573c4d" args="" --> <a class="el" href="classRaul_1_1TimeStamp.html">Raul::TimeStamp</a> </td><td class="memItemRight" valign="bottom"><b>_start_time</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf832bdc5796f180ba9cd8744a656977"></a><!-- doxytag: member="Raul::SMFWriter::_last_ev_time" ref="acf832bdc5796f180ba9cd8744a656977" args="" --> <a class="el" href="classRaul_1_1TimeStamp.html">Raul::TimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#acf832bdc5796f180ba9cd8744a656977">_last_ev_time</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Time last event was written relative to _start_time. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67d390357aa310b10756ef5d314e3b42"></a><!-- doxytag: member="Raul::SMFWriter::_track_size" ref="a67d390357aa310b10756ef5d314e3b42" args="" --> uint32_t </td><td class="memItemRight" valign="bottom"><b>_track_size</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0947832044f05a9ec51b04f8a880431d"></a><!-- doxytag: member="Raul::SMFWriter::_header_size" ref="a0947832044f05a9ec51b04f8a880431d" args="" --> uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classRaul_1_1SMFWriter.html#a0947832044f05a9ec51b04f8a880431d">_header_size</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">size of SMF header, including MTrk chunk header <br/></td></tr> <tr><td colspan="2"><h2><a name="pro-static-attribs"></a> Static Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7db0235877c1152417b9ad445982a28a"></a><!-- doxytag: member="Raul::SMFWriter::VAR_LEN_MAX" ref="a7db0235877c1152417b9ad445982a28a" args="" --> static const uint32_t </td><td class="memItemRight" valign="bottom"><b>VAR_LEN_MAX</b> = 0x0FFFFFFF</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Standard Midi File (Type 0) Writer. </p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a185959984f5f29d4640a6e46c1c18787"></a><!-- doxytag: member="Raul::SMFWriter::SMFWriter" ref="a185959984f5f29d4640a6e46c1c18787" args="(TimeUnit unit)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Raul::SMFWriter::SMFWriter </td> <td>(</td> <td class="paramtype"><a class="el" href="classRaul_1_1TimeUnit.html">TimeUnit</a> </td> <td class="paramname"> <em>unit</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new SMF writer. </p> <p><em>unit</em> must match the time stamp of ALL events passed to write, or terrible things will happen.</p> <p>*** NOTE: Only beat time is implemented currently. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="ac1acff193e31f2fe434262fd8da7e4ab"></a><!-- doxytag: member="Raul::SMFWriter::start" ref="ac1acff193e31f2fe434262fd8da7e4ab" args="(const std::string &filename, TimeStamp start_time)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Raul::SMFWriter::start </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>filename</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classRaul_1_1TimeStamp.html">Raul::TimeStamp</a> </td> <td class="paramname"> <em>start_time</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> throw (std::logic_error)</td> </tr> </table> </div> <div class="memdoc"> <p>Start a write to an SMF file. </p> <p><em>filename</em> Filename to write to. <em>start_time</em> Beat time corresponding to t=0 in the file (timestamps passed to write_event will have this value subtracted before writing). </p> </div> </div> <a class="anchor" id="a8715eb2b1ce7720e3fcc32350ef6e68c"></a><!-- doxytag: member="Raul::SMFWriter::write_event" ref="a8715eb2b1ce7720e3fcc32350ef6e68c" args="(TimeStamp time, size_t ev_size, const unsigned char *ev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void Raul::SMFWriter::write_event </td> <td>(</td> <td class="paramtype"><a class="el" href="classRaul_1_1TimeStamp.html">Raul::TimeStamp</a> </td> <td class="paramname"> <em>time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>ev_size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const unsigned char * </td> <td class="paramname"> <em>ev</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> throw (std::logic_error)</td> </tr> </table> </div> <div class="memdoc"> <p>Write an event at the end of the file. </p> <p><em>time</em> is the absolute time of the event, relative to the start of the file (the start_time parameter to start). Must be monotonically increasing on successive calls to this method. </p> </div> </div> <a class="anchor" id="ae7351869ccd72bef021acc93414d120c"></a><!-- doxytag: member="Raul::SMFWriter::write_var_len" ref="ae7351869ccd72bef021acc93414d120c" args="(uint32_t val)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t Raul::SMFWriter::write_var_len </td> <td>(</td> <td class="paramtype">uint32_t </td> <td class="paramname"> <em>value</em></td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Write an SMF variable length value. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>size (in bytes) of the value written. </dd></dl> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="SMFWriter_8hpp_source.html">SMFWriter.hpp</a></li> <li>SMFWriter.cpp</li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Oct 6 2010 for RAUL by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>