142 lines
		
	
	
		
			7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			142 lines
		
	
	
		
			7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | RtMidi - a set of C++ classes that provides a common API for realtime MIDI input/output across Linux (ALSA & JACK), Macintosh OS X (CoreMIDI & JACK), and Windows (Multimedia Library). | ||
|  | 
 | ||
|  | By Gary P. Scavone, 2003-2021 (with help from many others, especially Stephen Sinclair!) | ||
|  | 
 | ||
|  | v.5.0.0: (16 November 2021) | ||
|  | - see git history for complete list of changes | ||
|  | - new Web MIDI API | ||
|  | - iOS support | ||
|  | - new setBufferSize() function | ||
|  | - fixes for WinMM, Jack | ||
|  | - added C API test program | ||
|  | - now requiring C++11 | ||
|  | - build system updates | ||
|  | - midiprobe probes all compiled APIs | ||
|  | - various build system updates and code efficiencies | ||
|  | 
 | ||
|  | v.4.0.0: (17 April 2019) | ||
|  | - see git history for complete list of changes | ||
|  | - updates to test programs to clarify port numbering | ||
|  | - new C API wrapper | ||
|  | - new functions to get API names | ||
|  | - miscellaneous sysex fixes in Jack and ALSA | ||
|  | - new setPortName() method (for Jack and ALSA) | ||
|  | - new setClientName() method (for ALSA) | ||
|  | - various build system updates and code efficiencies | ||
|  | 
 | ||
|  | v.3.0.0: (31 August 2017) | ||
|  | - see git history for complete list of changes | ||
|  | - new sendMessage() function that does not use std::vector | ||
|  | - various std::string updates, including use of UTF8 for port names | ||
|  | - fixes for the MIDI queue | ||
|  | - various build system updates and code efficiencies | ||
|  | 
 | ||
|  | v2.1.1: (11 February 2016) | ||
|  | - updates to automake routines | ||
|  | - added C API (thanks to Atsushi Eno!) | ||
|  | - JACK ringbuffer allocation change | ||
|  | - OSX virtual port closing fix | ||
|  | - OSX sysex sending fix | ||
|  | - moved Windows kernel streaming code to other branch because it is incomplete | ||
|  | - miscellaneous small fixes | ||
|  | 
 | ||
|  | v2.1.0: (30 March 2014) | ||
|  | - renamed RtError class to RtMidiError and embedded it in RtMidi.h (and deleted RtError.h) | ||
|  | - fix to CoreMIDI implementation to support dynamic port changes | ||
|  | - removed global ALSA sequencer objects because they were not thread safe (Martin Koegler) | ||
|  | - fix for ALSA timing ignore flag (Devin Anderson) | ||
|  | - fix for ALSA incorrect use of snd_seq_create_port() function (Tobias Schlemmer) | ||
|  | - fix for international character support in CoreMIDI (Martin Finke) | ||
|  | - fix for unicode conversion in WinMM (Dan Wilcox) | ||
|  | - added custom error hook that allows the client to capture an RtMidi error outside of the RtMidi code (Pavel Mogilevskiy) | ||
|  | - added RtMidi::isPortOpen function (Pavel Mogilevskiy) | ||
|  | - updated OS-X sysex sending mechanism to use normal message sending, which fixes a problem where virtual ports didn't receive sysex messages | ||
|  | - Windows update to avoid lockups when shutting down while sending/receiving sysex messages (ptarabbia) | ||
|  | - OS-X fix to avoid empty messages in callbacks when ignoring sysex messages and split sysexes are received (codepainters) | ||
|  | - ALSA openPort fix to better distinguish sender and receiver (Russell Smyth) | ||
|  | - Windows Kernel Streaming support removed because it was uncompilable and incomplete | ||
|  | 
 | ||
|  | v2.0.1: (26 July 2012) | ||
|  | - small fixes for problems reported by Chris Arndt (scoping, preprocessor, and include) | ||
|  | 
 | ||
|  | v2.0.0: (18 June 2012) | ||
|  | - revised structure to support multiple simultaneous compiled APIs | ||
|  | - revised ALSA client hierarchy so subsequent instances share same client (thanks to Dan Wilcox) | ||
|  | - added beta Windows kernel streaming support (thanks to Sebastien Alaiwan) | ||
|  | - updates to compile as a shared library or dll | ||
|  | - updated license | ||
|  | - various memory-leak fixes (thanks to Sebastien Alaiwan and Martin Koegler) | ||
|  | - fix for continue sysex problem (thanks to Luc Deschenaux) | ||
|  | - removed SGI (IRIX) support | ||
|  | 
 | ||
|  | v1.0.15: (11 August 2011) | ||
|  | - updates for wide character support in Windows | ||
|  | - stopped using std::queue and implemented internal MIDI ring buffer (for thread safety ... thanks to Michael Behrman) | ||
|  | - removal of the setQueueSizeLimit() function ... queue size limit now an optional arguement to constructor | ||
|  | 
 | ||
|  | v1.0.14: (17 April 2011) | ||
|  | - bug fix to Jack MIDI support (thanks to Alexander Svetalkin and Pedro Lopez-Cabanillas) | ||
|  | 
 | ||
|  | v1.0.13: (7 April 2011) | ||
|  | - updated RtError.h to the same version as in RtAudio | ||
|  | - new Jack MIDI support in Linux (thanks to Alexander Svetalkin) | ||
|  | 
 | ||
|  | v1.0.12: (17 February 2011) | ||
|  | - Windows 64-bit pointer fixes (thanks to Ward Kockelkorn) | ||
|  | - removed possible exceptions from getPortName() functions | ||
|  | - changed sysex sends in OS-X to use MIDISendSysex() function (thanks to Casey Tucker) | ||
|  | - bug fixes to time code parsing in OS-X and ALSA (thanks to Greg) | ||
|  | - added MSW project file to build as library (into lib/ directory ... thanks to Jason Champion) | ||
|  | 
 | ||
|  | v1.0.11: (29 January 2010) | ||
|  | - added CoreServices/CoreServices.h include for OS-X 10.6 and gcc4.2 compile (thanks to Jon McCormack) | ||
|  | - various increment optimizations (thanks to Paul Dean) | ||
|  | - fixed incorrectly located snd_seq_close() function in ALSA API (thanks to Pedro Lopez-Cabanillas) | ||
|  | - updates to Windows sysex code to better deal with possible delivery problems (thanks to Bastiaan Verreijt) | ||
|  | 
 | ||
|  | v1.0.10: (3 June 2009) | ||
|  | - fix adding timestamp to OS-X sendMessage() function (thanks to John Dey) | ||
|  | 
 | ||
|  | v1.0.9: (30 April 2009) | ||
|  | - added #ifdef AVOID_TIMESTAMPING to conditionally compile support for event timestamping of ALSA sequencer events. This is useful for programs not needing timestamps, saving valuable system resources. | ||
|  | - updated functionality in OSX_CORE for getting driver name (thanks to Casey Tucker) | ||
|  | 
 | ||
|  | v1.0.8: (29 January 2009) | ||
|  | - bug fixes for concatenating segmented sysex messages in ALSA (thanks to Christoph Eckert) | ||
|  | - update to ALSA sequencer port enumeration (thanks to Pedro Lopez-Cabonillas) | ||
|  | - bug fixes for concatenating segmented sysex messages in OS-X (thanks to Emmanuel Litzroth) | ||
|  | - added functionality for naming clients (thanks to Pedro Lopez-Cabonillas and Axel Schmidt) | ||
|  | - bug fix in Windows when receiving sysex messages if the ignore flag was set (thanks to Pedro Lopez-Cabonillas) | ||
|  | 
 | ||
|  | v1.0.7: (7 December 2007) | ||
|  | - configure and Makefile changes for MinGW | ||
|  | - renamed midiinfo.cpp to midiprobe.cpp and updated VC++ project/workspace | ||
|  | 
 | ||
|  | v1.0.6: (9 March 2006) | ||
|  | - bug fix for timestamp problem in ALSA  (thanks to Pedro Lopez-Cabanillas) | ||
|  | 
 | ||
|  | v1.0.5: (18 November 2005) | ||
|  | - added optional port name to openVirtualPort() functions | ||
|  | - fixed UNICODE problem in Windows getting device names (thanks Eduardo Coutinho!). | ||
|  | - fixed bug in Windows with respect to getting Sysex data (thanks Jean-Baptiste Berruchon!) | ||
|  | 
 | ||
|  | v1.0.4: (14 October 2005) | ||
|  | - added check for status byte == 0xF8 if ignoring timing messages | ||
|  | - changed pthread attribute to SCHED_OTHER (from SCHED_RR) to avoid thread problem when realtime cababilities are not enabled. | ||
|  | - now using ALSA sequencer time stamp information (thanks to Pedro Lopez-Cabanillas) | ||
|  | - fixed memory leak in ALSA implementation | ||
|  | - now concatenate segmented sysex messages in ALSA | ||
|  | 
 | ||
|  | v1.0.3: (22 November 2004) | ||
|  | - added common pure virtual functions to RtMidi abstract base class | ||
|  | 
 | ||
|  | v1.0.2: (21 September 2004) | ||
|  | - added warning messages to openVirtualPort() functions in Windows and Irix (where it can't be implemented) | ||
|  | 
 | ||
|  | v1.0.1: (20 September 2004) | ||
|  | - changed ALSA preprocessor definition to __LINUX_ALSASEQ__ | ||
|  | 
 | ||
|  | v1.0.0: (17 September 2004) | ||
|  | - first release of new independent class with both input and output functionality | ||
|  | 
 |