Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,21 @@ MidiLogLevel = MidiDebug; // or MidiInfo, MidiWarning, MidiError

All the midi classes are defined using the midi namespace. If you include Midi.h the using namespace is already defined. However, if you include the individual class specific header files you need to add a using namespace midi; in your sketch.

### Class Templates / Alternatives Networking Stacks

The following classes support class templates for selecting the networking stack:

- ```AppleMidiServer``` (= ```AppleMidiServer<WiFiUDP>``` )
- ```MidiIpserver``` (= ```AppleMidiServer<WiFiServer,WiFiClient>``` )
- ```MidiUdp``` (= ```MidiUdp<WiFiUDP>``` )
- ```MidiUdpServer``` (= ```MidiUdpServer<WiFiUDP>``` )

By default the WiFi classes are used. If you want to use it with Ethernet please use the corresponding class template parameters:

- ```AppleMidiServer<EthernetUDP>```
- ```MidiIpserver<EthernetServer, EthernetClient>```
- ```MidiUdp<EthernetUDP>```
- ```MidiUdpServer<EthernetUDP>```


### Installation in Arduino
Expand Down
259 changes: 183 additions & 76 deletions docs/html/_apple_midi_server_8h_source.html

Large diffs are not rendered by default.

47 changes: 24 additions & 23 deletions docs/html/_midi_common_8h_source.html

Large diffs are not rendered by default.

93 changes: 45 additions & 48 deletions docs/html/_midi_ip_server_8h_source.html

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions docs/html/_midi_server_8h_source.html
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">bool</span> begin(Stream &amp;stream){</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; MIDI_LOGI( __PRETTY_FUNCTION__);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; in.setup(&amp;stream, <span class="keyword">new</span> <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a>(p_action), <span class="keyword">true</span>);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; out.setup(&amp;stream);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; in.<a class="code" href="classmidi_1_1_midi_stream_in.html#a0d28ac77f721f80b1a2c6e812b3804a9">setup</a>(&amp;stream, <span class="keyword">new</span> <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a>(p_action), <span class="keyword">true</span>);</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; out.<a class="code" href="classmidi_1_1_midi_stream_out.html#a3d9f4f789bd9e65c43e660f8b19fb704">setup</a>(&amp;stream);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
Expand Down Expand Up @@ -124,7 +124,9 @@
<div class="ttc" id="aclassmidi_1_1_midi_parser_html"><div class="ttname"><a href="classmidi_1_1_midi_parser.html">midi::MidiParser</a></div><div class="ttdoc">A simple Midi Parser which calls the corresponding events. It supports Midi and BLE Midi messages....</div><div class="ttdef"><b>Definition:</b> MidiParser.h:29</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_server_html"><div class="ttname"><a href="classmidi_1_1_midi_server.html">midi::MidiServer</a></div><div class="ttdoc">A simple Serial Server which which receives and creates MIDI messages.</div><div class="ttdef"><b>Definition:</b> MidiServer.h:20</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_in_html"><div class="ttname"><a href="classmidi_1_1_midi_stream_in.html">midi::MidiStreamIn</a></div><div class="ttdoc">Input of Midi Messages from the Aruduino HardwareSerial port. You need to give the default MidiParser...</div><div class="ttdef"><b>Definition:</b> MidiStreamIn.h:27</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_in_html_a0d28ac77f721f80b1a2c6e812b3804a9"><div class="ttname"><a href="classmidi_1_1_midi_stream_in.html#a0d28ac77f721f80b1a2c6e812b3804a9">midi::MidiStreamIn::setup</a></div><div class="ttdeci">void setup(Stream *stream, MidiParser *handler, bool releaseHandler)</div><div class="ttdoc">Call setup when created with empty constructor.</div><div class="ttdef"><b>Definition:</b> MidiStreamIn.cpp:25</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_out_html"><div class="ttname"><a href="classmidi_1_1_midi_stream_out.html">midi::MidiStreamOut</a></div><div class="ttdoc">Output of Midi Messages to an Arduino Stream (eg output to Serial, UDP or IP).</div><div class="ttdef"><b>Definition:</b> MidiStreamOut.h:17</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_out_html_a3d9f4f789bd9e65c43e660f8b19fb704"><div class="ttname"><a href="classmidi_1_1_midi_stream_out.html#a3d9f4f789bd9e65c43e660f8b19fb704">midi::MidiStreamOut::setup</a></div><div class="ttdeci">virtual void setup(Print *stream)</div><div class="ttdoc">Call setup when created with empty constructor.</div><div class="ttdef"><b>Definition:</b> MidiStreamOut.cpp:12</div></div>
<div class="ttc" id="astructmidi_1_1_midi_message_html"><div class="ttname"><a href="structmidi_1_1_midi_message.html">midi::MidiMessage</a></div><div class="ttdoc">The content of the midi message: timestamp, status, arg1 and arg2.</div><div class="ttdef"><b>Definition:</b> MidiCommon.h:48</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
Expand Down
46 changes: 19 additions & 27 deletions docs/html/_midi_stream_in_8h_source.html
Original file line number Diff line number Diff line change
Expand Up @@ -85,40 +85,32 @@
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/***************************************************/</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classmidi_1_1_midi_stream_in.html"> 27</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a> : <span class="keyword">public</span> <a class="code" href="classmidi_1_1_midi_common.html">MidiCommon</a> {</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>(Stream &amp;stream, <a class="code" href="classmidi_1_1_midi_action.html">MidiAction</a> &amp;action);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>(Stream &amp;stream, <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> &amp;handler);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html#aadf64b3479f9b35bf466c49595622131">~MidiStreamIn</a>();</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">// Parse/Process the next midi message</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">bool</span> loop();</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmidi_1_1_midi_server.html">MidiServer</a>;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmidi_1_1_midi_ip_server.html">MidiIpServer</a>;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmidi_1_1_midi_udp_server.html">MidiUdpServer</a>;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> getLastStatusPos(uint8_t *buffer, <span class="keywordtype">int</span> endPos);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; Stream *pStream = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> *pHandler = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">bool</span> ownsHandler = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint8_t buffer[BUFFER_LEN];</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">int</span> startPos = 0;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>(Stream &amp;stream, <a class="code" href="classmidi_1_1_midi_action.html">MidiAction</a> &amp;action);</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>(Stream &amp;stream, <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> &amp;handler);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html#aadf64b3479f9b35bf466c49595622131">~MidiStreamIn</a>();</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">// Parse/Process the next midi message</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">bool</span> loop(); </div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classmidi_1_1_midi_stream_in.html#a0d28ac77f721f80b1a2c6e812b3804a9">setup</a>(Stream *stream, <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> *handler, <span class="keywordtype">bool</span> releaseHandler);</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">int</span> getLastStatusPos(uint8_t *buffer, <span class="keywordtype">int</span> endPos);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; Stream *pStream = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> *pHandler = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> ownsHandler = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; uint8_t buffer[BUFFER_LEN];</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> startPos = 0;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;};</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classmidi_1_1_midi_stream_in.html">MidiStreamIn</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;} <span class="comment">// namespace</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">void</span> setup(Stream *stream, <a class="code" href="classmidi_1_1_midi_parser.html">MidiParser</a> *handler, <span class="keywordtype">bool</span> releaseHandler);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;} <span class="comment">// namespace</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassmidi_1_1_midi_action_html"><div class="ttname"><a href="classmidi_1_1_midi_action.html">midi::MidiAction</a></div><div class="ttdoc">Abstract class for a MidiAction.</div><div class="ttdef"><b>Definition:</b> MidiAction.h:15</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_common_html"><div class="ttname"><a href="classmidi_1_1_midi_common.html">midi::MidiCommon</a></div><div class="ttdoc">The common methods provided by all Arduino Midi subclasses which can be used to generate Midi message...</div><div class="ttdef"><b>Definition:</b> MidiCommon.h:75</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_ip_server_html"><div class="ttname"><a href="classmidi_1_1_midi_ip_server.html">midi::MidiIpServer</a></div><div class="ttdoc">A simple IP Server which which receives and creates MIDI messages.</div><div class="ttdef"><b>Definition:</b> MidiIpServer.h:21</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_parser_html"><div class="ttname"><a href="classmidi_1_1_midi_parser.html">midi::MidiParser</a></div><div class="ttdoc">A simple Midi Parser which calls the corresponding events. It supports Midi and BLE Midi messages....</div><div class="ttdef"><b>Definition:</b> MidiParser.h:29</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_server_html"><div class="ttname"><a href="classmidi_1_1_midi_server.html">midi::MidiServer</a></div><div class="ttdoc">A simple Serial Server which which receives and creates MIDI messages.</div><div class="ttdef"><b>Definition:</b> MidiServer.h:20</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_in_html"><div class="ttname"><a href="classmidi_1_1_midi_stream_in.html">midi::MidiStreamIn</a></div><div class="ttdoc">Input of Midi Messages from the Aruduino HardwareSerial port. You need to give the default MidiParser...</div><div class="ttdef"><b>Definition:</b> MidiStreamIn.h:27</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_in_html_a0d28ac77f721f80b1a2c6e812b3804a9"><div class="ttname"><a href="classmidi_1_1_midi_stream_in.html#a0d28ac77f721f80b1a2c6e812b3804a9">midi::MidiStreamIn::setup</a></div><div class="ttdeci">void setup(Stream *stream, MidiParser *handler, bool releaseHandler)</div><div class="ttdoc">Call setup when created with empty constructor.</div><div class="ttdef"><b>Definition:</b> MidiStreamIn.cpp:25</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_stream_in_html_aadf64b3479f9b35bf466c49595622131"><div class="ttname"><a href="classmidi_1_1_midi_stream_in.html#aadf64b3479f9b35bf466c49595622131">midi::MidiStreamIn::~MidiStreamIn</a></div><div class="ttdeci">~MidiStreamIn()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> MidiStreamIn.cpp:17</div></div>
<div class="ttc" id="aclassmidi_1_1_midi_udp_server_html"><div class="ttname"><a href="classmidi_1_1_midi_udp_server.html">midi::MidiUdpServer</a></div><div class="ttdoc">A simple UDP Server which receives and creates MIDI messages.</div><div class="ttdef"><b>Definition:</b> MidiUdpServer.h:21</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Expand Down
Loading