CHANGELOG.txt (9494B)
1 /* CHANGELOG FOR PORTMIDI 2 * 3 * 19Oct09 Roger Dannenberg 4 * - Changes dynamic library names from portmidi_d to portmidi to 5 * be backward-compatible with programs expecting a library by 6 * the old name. 7 * 8 * 04Oct09 Roger Dannenberg 9 * - Converted to using Cmake. 10 * - Renamed static and dynamic library files to portmidi_s and portmidi_d 11 * - Eliminated VC9 and VC8 files (went back to simply test.vcproj, etc., 12 * use Cmake to switch from the provided VC9 files to VC8 or other) 13 * - Many small changes to prepare for 64-bit architectures (but only 14 * tested on 32-bit machines) 15 * 16 * 16Jun09 Roger Dannenberg 17 * - Started using Microsoft Visual C++ Version 9 (Express). Converted 18 * all *-VC9.vcproj file to *.vcproj and renamed old project files to 19 * *-VC8.proj. Previously, output from VC9 went to special VC9 files, 20 * that breaks any program or script looking for output in release or 21 * debug files, so now both compiler version output to the same folders. 22 * Now, debug version uses static linking with debug DLL runtime, and 23 * release version uses static linking with statically linked runtime. 24 * Converted to Inno Setup and worked on scripts to make things build 25 * properly, especially pmdefaults. 26 * 27 * 02Jan09 Roger Dannenberg 28 * - Created Java interface and wrote PmDefaults application to set 29 * values for Pm_GetDefaultInputDeviceID() and 30 * Pm_GetDefaultOutputDeviceID(). Other fixes. 31 * 32 * 19Jun08 Roger Dannenberg and Austin Sung 33 * - Removed USE_DLL_FOR_CLEANUP -- Windows 2000 through Vista seem to be 34 * fixed now, and can recover if MIDI ports are left open 35 * - Various other minor patches 36 * 37 * 17Jan07 Roger Dannenberg 38 * - Lots more help for Common Lisp user in pm_cl 39 * - Minor fix to eliminate a compiler warning 40 * - Went back to single library in OS X for both portmidi and porttime 41 * 42 * 16Jan07 Roger Dannenberg 43 * - OOPS! fixed bug where short messages all had zero data 44 * - Makefile.osx static library build now makes universal (i386 + ppc) 45 * binaries 46 * 47 * 15Jan07 Roger Dannenberg 48 * - multiple rewrites of sysex handling code to take care of 49 * error-handling, embedded messages, message filtering, 50 * driver bugs, and host limitations. 51 * - fixed windows to use dwBufferLength rather than 52 * dwBytesRecorded for long buffer output (fix by Nigel Brown) 53 * - Win32 MME code always appends an extra zero to long buffer 54 * output to work around a problem with earlier versions of Midi Yoke 55 * - Added mm, a command line Midi Monitor to pm_test suite 56 * - Revised copyright notice to match PortAudio/MIT license (requests 57 * are moved out of the license proper and into a separate paragraph) 58 * 59 * 18Oct06 Roger Dannenberg 60 * - replace FIFO in pmutil with Light Pipe-based multiprocessor-safe alg. 61 * - replace FIFO in portmidi.c with PmQueue from pmutil 62 * 63 * 07Oct06 cpr & Roger Dannenberg 64 * - overhaul of CoreMIDI input to handle running status and multiple 65 * - messages per packet, with additional error detection 66 * - added Leigh Smith and Rick Taube support for Common Lisp and 67 * - dynamic link libraries in OSX 68 * - initialize static global seq = NULL in pmlinuxalsa.c 69 * 70 * 05Sep06 Sebastien Frippiat 71 * - check if (ALSA) seq exists before closing it in pm_linuxalsa_term() 72 * 73 * 05Sep06 Andreas Micheler and Cecilio 74 * - fixed memory leak by freeing someo objects in pm_winmm_term() 75 * - and another leak by freeing descriptors in Pm_Terminate() 76 * 77 * 23Aug06 RBD 78 * - various minor fixes 79 * 80 * 04Nov05 Olivier Tristan 81 * - changes to OS X to properly retrieve real device name on CoreMidi 82 * 83 * 19Jul05 Roger Dannenberg 84 * - included pmBufferMaxSize in Pm_GetErrorText() 85 * 86 * 23Mar05 Torgier Strand Henriksen 87 * - cleaner termination of porttime thread under Linux 88 * 89 * 15Nov04 Ben Allison 90 * - sysex output now uses one buffer/message and reallocates buffer 91 * - if needed 92 * - filters expanded for many message types and channels 93 * - detailed changes are as follows: 94 * ------------- in pmwinmm.c -------------- 95 * - new #define symbol: OUTPUT_BYTES_PER_BUFFER 96 * - change SYSEX_BYTES_PER_BUFFER to 1024 97 * - added MIDIHDR_BUFFER_LENGTH(x) to correctly count midihdr buffer length 98 * - change MIDIHDR_SIZE(x) to (MIDIHDR_BUFFER_LENGTH(x) + sizeof(MIDIHDR)) 99 * - change allocate_buffer to use new MIDIHDR_BUFFER_LENGTH macro 100 * - new macros for MIDIHDR_SYSEX_SIZE and MIDIHDR_SYSEX_BUFFER_LENGTH 101 * - similar to above, but counts appropriately for sysex messages 102 * - added the following members to midiwinmm_struct for sysex data: 103 * - LPMIDIHDR *sysex_buffers; ** pool of buffers for sysex data ** 104 * - int num_sysex_buffers; ** how many sysex buffers ** 105 * - int next_sysex_buffer; ** index of next sysexbuffer to send ** 106 * - HANDLE sysex_buffer_signal; ** to wait for free sysex buffer ** 107 * - duplicated allocate_buffer, alocate_buffers and get_free_output_buffer 108 * - into equivalent sysex_buffer form 109 * - changed winmm_in_open to initialize new midiwinmm_struct members and 110 * - to use the new allocate_sysex_buffer() function instead of 111 * - allocate_buffer() 112 * - changed winmm_out_open to initialize new members, create sysex buffer 113 * - signal, and allocate 2 sysex buffers 114 * - changed winmm_out_delete to free sysex buffers and shut down the sysex 115 * - buffer signal 116 * - create new function resize_sysex_buffer which resizes m->hdr to the 117 * - passed size, and corrects the midiwinmm_struct accordingly. 118 * - changed winmm_write_byte to use new resize_sysex_buffer function, 119 * - if resize fails, write current buffer to output and continue 120 * - changed winmm_out_callback to use buffer_signal or sysex_buffer_signal 121 * - depending on which buffer was finished 122 * ------------- in portmidi.h -------------- 123 * - added pmBufferMaxSize to PmError to indicate that the buffer would be 124 * - too large for the underlying API 125 * - added additional filters 126 * - added prototype, documentation, and helper macro for Pm_SetChannelMask 127 * ------------- in portmidi.c -------------- 128 * - added pm_status_filtered() and pm_realtime_filtered() functions to 129 * separate filtering logic from buffer logic in pm_read_short 130 * - added Pm_SetChannelMask function 131 * - added pm_channel_filtered() function 132 * ------------- in pminternal.h -------------- 133 * - added member to PortMidiStream for channel mask 134 * 135 * 25May04 RBD 136 * - removed support for MIDI THRU 137 * - moved filtering from Pm_Read to pm_enqueue to avoid buffer ovfl 138 * - extensive work on Mac OS X port, especially sysex and error handling 139 * 140 * 18May04 RBD 141 * - removed side-effects from assert() calls. Now you can disable assert(). 142 * - no longer check pm_hosterror everywhere, fixing a bug where an open 143 * failure could cause a write not to work on a previously opened port 144 * until you call Pm_GetHostErrorText(). 145 * 16May04 RBD and Chris Roberts 146 * - Some documentation wordsmithing in portmidi.h 147 * - Dynamically allocate port descriptor structures 148 * - Fixed parameter error in midiInPrepareBuffer and midiInAddBuffer. 149 * 150 * 09Oct03 RBD 151 * - Changed Thru handling. Now the client does all the work and the client 152 * must poll or read to keep thru messages flowing. 153 * 154 * 31May03 RBD 155 * - Fixed various bugs. 156 * - Added linux ALSA support with help from Clemens Ladisch 157 * - Added Mac OS X support, implemented by Jon Parise, updated and 158 * integrated by Andrew Zeldis and Zico Kolter 159 * - Added latency program to build histogram of system latency using PortTime. 160 * 161 * 30Jun02 RBD Extensive rewrite of sysex handling. It works now. 162 * Extensive reworking of error reporting and error text -- no 163 * longer use dictionary call to delete data; instead, Pm_Open 164 * and Pm_Close clean up before returning an error code, and 165 * error text is saved in a system-independent location. 166 * Wrote sysex.c to test sysex message handling. 167 * 168 * 15Jun02 BCT changes: 169 * - Added pmHostError text handling. 170 * - For robustness, check PortMidi stream args not NULL. 171 * - Re-C-ANSI-fied code (changed many C++ comments to C style) 172 * - Reorganized code in pmwinmm according to input/output functionality (made 173 * cleanup handling easier to reason about) 174 * - Fixed Pm_Write calls (portmidi.h says these should not return length but Pm_Error) 175 * - Cleaned up memory handling (now system specific data deleted via dictionary 176 * call in PortMidi, allows client to query host errors). 177 * - Added explicit asserts to verify various aspects of pmwinmm implementation behaves as 178 * logic implies it should. Specifically: verified callback routines not reentrant and 179 * all verified status for all unchecked Win32 MMedia API calls perform successfully 180 * - Moved portmidi initialization and clean-up routines into DLL to fix Win32 MMedia API 181 * bug (i.e. if devices not explicitly closed, must reboot to debug application further). 182 * With this change, clients no longer need explicitly call Pm_Initialize, Pm_Terminate, or 183 * explicitly Pm_Close open devices when using WinMM version of PortMidi. 184 * 185 * 23Jan02 RBD Fixed bug in pmwinmm.c thru handling 186 * 187 * 21Jan02 RBD Added tests in Pm_OpenInput() and Pm_OpenOutput() to prevent 188 * opening an input as output and vice versa. 189 * Added comments and documentation. 190 * Implemented Pm_Terminate(). 191 * 192 */