~ubuntu-branches/ubuntu/raring/portmidi/raring

1.1.1 by Paul Brossier
Import upstream version 131
1
/* CHANGELOG FOR PORTMIDI
2
 *
1.1.2 by Paul Brossier
Import upstream version 184
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
 *
1.1.1 by Paul Brossier
Import upstream version 131
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
 */