Commit Graph

402 Commits

Author SHA1 Message Date
lathoub f1ad860efb removed references to USB in the test scripts 2020-03-23 14:03:04 +01:00
lathoub 240082c0fb Removed Undefined_F9 (Tick) as an invalid token (so it valid now) 2020-03-23 13:56:35 +01:00
lathoub 9a644aca25 Simplified NoteValues
Need need for extra index (that is the same as the noteName anyway)
2020-03-22 23:29:13 +01:00
lathoub 050e9c9160 added Tick (0xF9) 2020-03-22 23:03:39 +01:00
lathoub ef878344cd moved code to avoid doc clash 2020-03-22 21:29:39 +01:00
lathoub 8f492ec456 shorter syntax using iif 2020-03-22 21:24:57 +01:00
lathoub e78c51a1d9 adding comment section 2020-03-22 21:23:31 +01:00
lathoub e292118e8e moved #version to MIDI.h
#version of the library does not belong in general MIDI definitions
(making midi_Defs.h as generic as possible - usable on other platforms)
2020-03-22 20:36:27 +01:00
lathoub 0f74f054b6 Create NoteNames.ino
demonstrate use of MIDI_NAMESPACE::NoteValues[inNote].strptr
2020-03-22 20:30:37 +01:00
lathoub e79fb67d17 Update Bench.ino 2020-03-22 20:16:58 +01:00
lathoub 07b6f17cc6 move bridge example to other Transport mechanisms 2020-03-22 20:09:16 +01:00
lathoub a707548fd3 removed typedef
when instanciating multiple instances of SerialMIDI, a redefinition error accors because of typing of the serial##Name.
Fix: removed the typdef, a bit harder to read, but avoided complex #ifdef
2020-03-22 20:06:52 +01:00
lathoub 28e9a8cb97 added header 2020-03-22 19:35:47 +01:00
lathoub 1737eb10ab Removed USB examples 2020-03-22 17:41:26 +01:00
lathoub c7195d9522 updating authors 2020-03-22 17:33:18 +01:00
lathoub 575beb5526 prepare for v5 2020-03-22 17:32:37 +01:00
lathoub d7f323435f getting ready for v5 2020-03-22 17:28:17 +01:00
lathoub a1de741e8a removed deprecated MidiFilterMode (to be removed for v5) 2020-03-22 17:27:53 +01:00
lathoub 3db2424fc9 cleanup 2020-03-22 17:26:22 +01:00
lathoub c43d92d649 use #defined value, not the literal 2020-03-22 17:23:08 +01:00
lathoub d4b692ab76 UseSenderActiveSensing & UseReceiverActiveSensing to enable/disable Active Sensing
UseSenderActiveSensing & UseReceiverActiveSensing in Settings are global switches to turn on/off ActiveSensing (and save memory)
2020-03-22 17:19:15 +01:00
lathoub 8730ae0bde added SendCommon, consistent with SendRealTime
including:

sendClock, sendStart, sendStop, sendContinue, sendActiveSensing, sendSystemReset
2020-03-22 15:39:21 +01:00
lathoub 0ab711a067 + noteValues 2020-03-22 15:37:41 +01:00
lathoub 1a025ce79d + Manufacturer System Exclusive ID (incomplete) 2020-03-22 15:37:12 +01:00
lathoub 5699e3fe00 cleanup of basic example
use LED_BUILTIN
2020-03-22 15:34:12 +01:00
lathoub d6ac0f6b82 + receiver ActiveSensing, + error Callback
1) Active Sensing:
Once an ActiveSensing message is received, the system checks for timeouts: if no message is received within the specified 300ms (see in _Defs), an error is set and the checks for timeout stop.

2) added a callback for errors. 2 errors are defined: parse error and ActiveSensing timeout
2020-03-22 15:33:42 +01:00
lathoub 874b44e6f3 Fixed "FML" case: fall down here with an overflown SysEx..
Splitting larger incoming messages into smaller SysEx packets - using an RrtpMidi trick:
            //   first:  0xF0 .... 0xF0
            //   midlle: 0xF7 .... 0xF0
            //   last:   0xF7 .... 0xF7

see: https://tools.ietf.org/html/rfc4695#section-3.2

(Understanding this is not part of the original MIDI spec, but does allow for receiving very very large SysEx messages on a small footprint (does require some 'handy' parsing))

SysExMaxSize in Settings can be reduced significatly (16bytes works fine - pending use case)
2020-03-21 19:51:53 +01:00
lathoub e4ad19d40e cleanup setHandleMessage
unfortunately, not using aliases yet (too complex)
2020-03-18 07:06:02 +01:00
lathoub c09c8e8148 aliasing for callbacks (and default initializers 2020-03-18 06:55:45 +01:00
lathoub bc4e940701 strong typing Channel in the callbacks 2020-03-17 23:44:24 +01:00
lathoub 8fc25fa8f9 DefaultPlatform for Arduino 2020-03-17 09:22:24 +01:00
lathoub 2734894485 mPendingMessageExpectedLength as before
mMessage.length is reset to 0 before the callback, so bring back mPendingMessageExpectedLength as before, and set mMessage.length (and not reset it)
2020-03-15 16:57:01 +01:00
lathoub e7588b906d return a *pointer* (not a ref) to the transport layer 2020-03-15 01:59:12 +01:00
lathoub 4da4538cd3 return reference to Transport layer 2020-03-15 01:46:13 +01:00
lathoub ee4e7b3942 changed based on Franky47's feedback
- send: pass the message as a const ref, to avoid copies
- add mSerial.begin (with Baudrate - added Settings)
- ThruActivated defaults to true
- class name serialMIDI => SerialMIDI
2020-03-11 22:46:06 +01:00
lathoub 8893642b27 added send(MidiMessage), added (untested) bridge example
added send(MidiMessage) for Bridge application (that convert MIDI transport x into MIDI transport y), avoiding parsing entry a stream, setting up all callback - whilst this allows for passing the content, without to much processing/parsing.

Had to move mPendingMessageExpectedLenght into MidiMessage to avoid parsing the data again, just to know the size

Added Bridge example (untested)
2020-03-09 23:05:44 +01:00
lathoub 8905d36c0e added callback for Message
before the specific callback are called, a generic mMessage callback can be fired to inform the user that 'a' message has been received.
2020-03-09 09:40:44 +01:00
lathoub 7bb64074e1 renamed Encoder -> Transport, added MidiType to beginTransmission in serialMIDI 2020-03-09 09:00:17 +01:00
lathoub 08ab5b93de added namespace reference 2020-03-07 10:26:47 +01:00
lathoub 35d1d6216a set ActiveSensing Periodicity in ms
Gives more control over the bool value. Typical value is 300 (ms) - an Active Sensing command is send every 300ms; or 0 (zero) to disable sending ActiveSensing
2020-03-07 10:15:59 +01:00
lathoub 771f923223 active sensing defaults to false, to avoid spamming devices 2020-03-07 08:37:04 +01:00
lathoub 1b6a755c58 add MidiType to beginTransmission
Avoids reparsing of the stream in the transport layer, in order to get the MidiType
2020-03-07 08:25:16 +01:00
lathoub 1325c23329 added Platform class to abstract millis() 2020-03-05 19:58:49 +01:00
lathoub fc752bc834 lift and shift of the Serial code into a seperate class, allowing for other serializers
lift and shift of the Serial code into a seperate class, allowing for other serializers as AppleMIDI, USBMIDI, ipMIDI, BLE-MIDI
2020-03-04 19:49:27 +01:00
lathoub 0d596066b4 added support for receiving SysEx command segments
Very long SysEx mesaages are cut in to multiple command segments
Where a normal SysEx starts with F0 and ends with F7, the first segment will start with F0 and end with F0, the middle section (optional) start with F7 and ends with F7 - the last segments starts with F7 and ends with F0
2020-02-10 15:04:45 +01:00
lathoub 5fab6b3fc3 replaced ActiveSensing with Sender Active Sensing
Receiver active Sensing is not implemented (yet)
2020-02-04 10:46:14 +01:00
lathoub 7f9934b1aa added support for ActiveSensing
From: https://www.midi.org/specifications/item/table-1-summary-of-midi-message

Active Sensing. This message is intended to be sent repeatedly to tell the receiver that a connection is alive. Use of this message is optional. When initially received, the receiver will expect to receive another Active Sensing message each 300ms (max), and if it does not then it will assume that the connection has been terminated. At termination, the receiver will turn off all voices and return to normal (non- active sensing) operation.
2020-01-26 11:05:10 +01:00
lathoub a1bff07a1e Update midi_Defs.h 2019-08-18 11:40:00 +02:00
lathoub fabf4293f9 stuff to ignore list 2019-08-18 11:38:46 +02:00
Francois Best 96b7fd4537 chore: Config file update 2018-11-07 12:09:47 +01:00