System information
kMIDIPropertySingleRealtimeEntity has been added. Some MIDI interfaces cannot route MIDI real time messages to
individual outputs; they are broadcast. On such devices the inverse is usually also true -- incoming real time
messages cannot be identified as originating from any particular source. When this property is set on a device
driver, it specifies the zero-based index of the entity on which incoming real time messages from a device will
appear to have originated from. (r. 2941877).
In actual use, the second argument passed to the CoreMIDI driver's Monitor function did not match its declaration.
The declaration has been updated so it is a pointer to a MIDIEndpointRef rather than the MIDIEndpointRef itself. (r.
2877457).
A problem where CoreMIDI's use of CFRunLoop was allowing runloop sources (such as timers, etc.) to fire during
an API call, causing re-entrancy issues, has been corrected. (r. 2852701).
When using MIDIPacketListAdd() (in CoreMIDI) to construct a MIDIPacketList with one packet. If the
MIDIPacketList's size is exactly large enough to contain this packet, MIDIPacketListAdd() adds a packet with length
zero (instead of the length requested). This issue has been fixed and MIDIPacketListAdd() now works as expected.
(r. 2824218).
A problem where MIDISendSysex was leaking about 200 bytes per call has been corrected. (r. 2823042).
A problem where calls to MIDISend with zero-length packets could hang the MIDI server task has been corrected.
(r. 2812345).
MIDIPacketListAdd will produce MIDI packets consisting of a SYS EX message followed by a channel message. The
documentation for a MIDIPacket says "In the case of system-exclusive messages, a packet may only contain a single
message, or portion of one, with no other MIDI events." This could cause problems for some drivers and/or the
MIDIServer itself and cause them to drop data. This problem has been corrected. (r. 2809230).
Back to top
Sound Manager
The Sound Manager is the Carbon API for playing and recording sound.
A problem where SysBeep did not work if the system output device did not have any mute controls has been
corrected. (r. 2846418).
Back to top
Speech Recognition Manager
This manager provides speech recognition support in applications.
A problem where SRGetIndexedItem() could erroneously generate the error kSRHasNoSubItems has been corrected.
(r. 2959584).
Speech Recognition would occasionally recognize and consume the listen key (ESC by default), even when using
kSRNoFeedbackNoListenModes, preventing that key from reaching the application. We no longer respond to or
consume the listen key in this situation. (r. 2902460).
Back to top
Text-to-Speech
The Text-to-Speech APIs provide facilities for converting text into audible speech.
On occasion, the order of phonemes in a callback (as created using SetSpeechInfo()) would be incorrect after
calling SpeakBuffer() (even though the spoken phoneme is in the correct order). We now return the phonemes in
the correct order to the callback. (r. 2863646).
When creating phonemes to precisely control text-to-speech pronunciation, using a comma (",") would
incorrectly stop the speech. We now correctly pause and continue on a comma. (r. 2769766).
If a developer calls SpeakBuffer with the controlFlag kPreflightThenPause, and never un-pauses the speech
channel, Speech Recognition and Talking Alert would stop working. This no longer occurs. (r. 2940266).
A problem where, in rare circumstances, an application with many speech API calls in a row might encounter a
race condition that resulted in an application crash has been corrected. (r. 2939995).
Back to top