|
154 | 154 | The terms <dfn>MIDI</dfn>, <dfn>MIDI device</dfn>, <dfn>MIDI input |
155 | 155 | port</dfn>, <dfn>MIDI output port</dfn>, <dfn>MIDI interface</dfn>, |
156 | 156 | <dfn>MIDI message</dfn>, <dfn>MIDI System Real-Time message</dfn> and |
157 | | - <dfn>system exclusive</dfn> are defined in [[MIDI]]. |
| 157 | + <dfn>System Exclusive</dfn> are defined in [[MIDI]]. |
158 | 158 | </p> |
159 | 159 | </section> |
160 | 160 | <section> |
@@ -218,17 +218,18 @@ <h2> |
218 | 218 | </p> |
219 | 219 | <p> |
220 | 220 | Requesting MIDI access SHOULD prompt the user for access to MIDI |
221 | | - devices, particularly if system exclusive access is requested. In |
222 | | - some scenarios, this permission may have already been implicitly |
223 | | - or explicitly granted, in which case this prompt may not appear. |
224 | | - If the user gives express permission or the call is otherwise |
225 | | - approved, the vended Promise is resolved. The underlying system |
226 | | - may choose to allow the user to select specific MIDI interfaces |
227 | | - to expose to this API (i.e. pick and choose interfaces on an |
228 | | - individual basis), although this is not required. The system may |
229 | | - also choose to prompt (or not) based on whether system exclusive |
230 | | - support is requested, as system exclusive access has greater |
231 | | - privacy and security implications. |
| 221 | + devices, particularly if <a>System Exclusive</a> access is |
| 222 | + requested. In some scenarios, this permission may have already |
| 223 | + been implicitly or explicitly granted, in which case this prompt |
| 224 | + may not appear. If the user gives express permission or the call |
| 225 | + is otherwise approved, the vended Promise is resolved. The |
| 226 | + underlying system may choose to allow the user to select specific |
| 227 | + MIDI interfaces to expose to this API (i.e. pick and choose |
| 228 | + interfaces on an individual basis), although this is not |
| 229 | + required. The system may also choose to prompt (or not) based on |
| 230 | + whether <a>System Exclusive</a> support is requested, as <a>System |
| 231 | + Exclusive</a> access has greater privacy and security |
| 232 | + implications. |
232 | 233 | </p> |
233 | 234 | <p> |
234 | 235 | If the user declines or the call is denied for any other reason, |
|
282 | 283 | Prompt the user in a user-agent-specific manner for |
283 | 284 | permission to provide the entry script's origin with a |
284 | 285 | {{MIDIAccess}} object representing control over user's MIDI |
285 | | - devices. This prompt may be contingent upon whether system |
286 | | - exclusive support was requested, and may allow the user to |
| 286 | + devices. This prompt may be contingent upon whether <a>System |
| 287 | + Exclusive</a> support was requested, and may allow the user to |
287 | 288 | enable or disable that access. |
288 | 289 | </p> |
289 | 290 | <p> |
@@ -358,15 +359,15 @@ <h2 id="MIDIOptions"> |
358 | 359 | <dd> |
359 | 360 | <p> |
360 | 361 | This member informs the system whether the ability to send and |
361 | | - receive system exclusive messages is requested or allowed on a |
362 | | - given {{MIDIAccess}} object. On the option passed to |
| 362 | + receive <a>System Exclusive</a> messages is requested or allowed |
| 363 | + on a given {{MIDIAccess}} object. On the option passed to |
363 | 364 | {{requestMIDIAccess()}}, if this member is set to true, but |
364 | | - system exclusive support is denied (either by policy or by user |
365 | | - action), the access request will fail with a {{"SecurityError"}} |
366 | | - error. If this support is not requested (and allowed), the system |
367 | | - will throw exceptions if the user tries to send system exclusive |
368 | | - messages, and will silently mask out any system exclusive |
369 | | - messages received on the port. |
| 365 | + <a>System Exclusive</a> support is denied (either by policy or by |
| 366 | + user action), the access request will fail with a |
| 367 | + {{"SecurityError"}} error. If this support is not requested (and |
| 368 | + allowed), the system will throw exceptions if the user tries to |
| 369 | + send <a>System Exclusive</a> messages, and will silently mask out |
| 370 | + any <a>System Exclusive</a> messages received on the port. |
370 | 371 | </p> |
371 | 372 | </dd> |
372 | 373 | <dt> |
@@ -528,8 +529,8 @@ <h2 id="MIDIAccess"> |
528 | 529 | <dfn>sysexEnabled</dfn> |
529 | 530 | </dt> |
530 | 531 | <dd> |
531 | | - This attribute informs the user whether system exclusive support is |
532 | | - enabled on this MIDIAccess. |
| 532 | + This attribute informs the user whether <a>System Exclusive</a> |
| 533 | + support is enabled on this MIDIAccess. |
533 | 534 | </dd> |
534 | 535 | </dl> |
535 | 536 | </section> |
@@ -962,9 +963,9 @@ <h3 id="MIDIInput"> |
962 | 963 | </li> |
963 | 964 | <li> |
964 | 965 | <p> |
965 | | - If the {{MIDIAccess}} did not enable system exclusive access, |
966 | | - and the message is a system exclusive message, abort this |
967 | | - process. |
| 966 | + If the {{MIDIAccess}} did not enable <a>System Exclusive</a> |
| 967 | + access, and the message is a <a>System Exclusive</a> message, |
| 968 | + abort this process. |
968 | 969 | </p> |
969 | 970 | </li> |
970 | 971 | <li> |
@@ -1021,9 +1022,9 @@ <h3 id="MIDIOutput"> |
1021 | 1022 | a valid MIDI message, throw a <code>TypeError</code> exception. |
1022 | 1023 | </p> |
1023 | 1024 | <p> |
1024 | | - If <var>data</var> is a system exclusive message, and the |
1025 | | - {{MIDIAccess}} did not enable system exclusive access, throw an |
1026 | | - <code>InvalidAccessError</code> exception. |
| 1025 | + If <var>data</var> is a <a>System Exclusive</a> message, and the |
| 1026 | + {{MIDIAccess}} did not enable <a>System Exclusive</a> access, |
| 1027 | + throw an <code>InvalidAccessError</code> exception. |
1027 | 1028 | </p> |
1028 | 1029 | <p> |
1029 | 1030 | If the port is <a data-lt= |
@@ -1327,11 +1328,12 @@ <h3> |
1327 | 1328 | </section> |
1328 | 1329 | <section> |
1329 | 1330 | <h3> |
1330 | | - Requesting Access to the MIDI System with System Exclusive Support |
| 1331 | + Requesting Access to the MIDI System with <a>System Exclusive</a> |
| 1332 | + Support |
1331 | 1333 | </h3> |
1332 | 1334 | <p> |
1333 | 1335 | This example shows how to request access to the MIDI system, |
1334 | | - including the ability to send and receive system exclusive |
| 1336 | + including the ability to send and receive <a>System Exclusive</a> |
1335 | 1337 | messages. |
1336 | 1338 | </p> |
1337 | 1339 | <pre class="example">var midi = null; // global MIDIAccess object |
@@ -1414,8 +1416,8 @@ <h3> |
1414 | 1416 | A Simple Loopback |
1415 | 1417 | </h3> |
1416 | 1418 | <p> |
1417 | | - This example loops all input messages on the first input port to |
1418 | | - the first output port - including system exclusive messages. |
| 1419 | + This example loops all input messages on the first input port to the |
| 1420 | + first output port - including <a>System Exclusive</a> messages. |
1419 | 1421 | </p> |
1420 | 1422 | <pre class="example">var midi = null; // global MIDIAccess object |
1421 | 1423 | var output = null; |
@@ -1627,24 +1629,24 @@ <h2> |
1627 | 1629 | <li>Sending and Receiving SysEx. This is the biggest concern, because |
1628 | 1630 | it would be possible to write code that looked for system-specific |
1629 | 1631 | responses to sysex messages, which could identify the hardware |
1630 | | - available, and then use it to download data - e.g. samples stored in |
1631 | | - a sampler - or replace that data (erasing sample data or patches in |
1632 | | - the device), although both these scenarios would have to be coded for |
1633 | | - a particular device. It is also possible that some samplers might |
1634 | | - enable a system exclusive message to start recording a sample - so if |
1635 | | - the sampler happened to have a dedicated microphone attached |
1636 | | - (uncommon in practice, but possible), it would be possible to write |
1637 | | - code specific to a particular device that could record a short sample |
1638 | | - of sound and then upload it to the network without further user |
| 1632 | + available, and then use it to download data - e.g. samples stored in a |
| 1633 | + sampler - or replace that data (erasing sample data or patches in the |
| 1634 | + device), although both these scenarios would have to be coded for a |
| 1635 | + particular device. It is also possible that some samplers might enable |
| 1636 | + a <a>System Exclusive</a> message to start recording a sample - so if |
| 1637 | + the sampler happened to have a dedicated microphone attached (uncommon |
| 1638 | + in practice, but possible), it would be possible to write code |
| 1639 | + specific to a particular device that could record a short sample of |
| 1640 | + sound and then upload it to the network without further user |
1639 | 1641 | intervention. (You could not stream audio from the device, and most |
1640 | 1642 | samplers have fairly limited memory, and MIDI Sample Dump sysex is a |
1641 | 1643 | slow way to transfer data - it has to transcode into 7-bit - so it’s |
1642 | 1644 | unlikely you could listen in for long periods.) More explicit |
1643 | 1645 | fingerprinting is a concern, as the patch information/stored |
1644 | 1646 | samples/user configuration could uniquely identify the system |
1645 | | - (although again, this requires much device-specific code; there is |
1646 | | - not standardized “grab all patches and hash it” capability.) This |
1647 | | - does suggest that system exclusive messages are in a security |
| 1647 | + (although again, this requires much device-specific code; there is not |
| 1648 | + standardized “grab all patches and hash it” capability.) This does |
| 1649 | + suggest that <a>System Exclusive</a> messages are in a security |
1648 | 1650 | category of their own. |
1649 | 1651 | </li> |
1650 | 1652 | </ol> |
@@ -1675,14 +1677,14 @@ <h2> |
1675 | 1677 | </li> |
1676 | 1678 | <li>Sending and receiving SysEx - obviously, for more advanced |
1677 | 1679 | communication with high-end hardware devices, SysEx is required. |
1678 | | - Unfortunately, some common MIDI commands are also sent as system |
1679 | | - exclusive messages (MIDI Machine Control, for example - generic |
1680 | | - start/stop/rew/ffw commands) - and many devices use system exclusive |
1681 | | - to program patches, send advanced controller messages, download |
1682 | | - firmware, etc., which are much-demanded scenarios for Web MIDI. Some |
1683 | | - devices use sysex as a direct control protocol, as they can pack more |
1684 | | - data into a single “message”, and most devices use SysEx as way to |
1685 | | - save and restore patches and configuration information on |
| 1680 | + Unfortunately, some common MIDI commands are also sent as <a>System |
| 1681 | + Exclusive</a> messages (MIDI Machine Control, for example - generic |
| 1682 | + start/stop/rew/ffw commands) - and many devices use <a>System |
| 1683 | + Exclusive</a> to program patches, send advanced controller messages, |
| 1684 | + download firmware, etc., which are much-demanded scenarios for Web |
| 1685 | + MIDI. Some devices use sysex as a direct control protocol, as they can |
| 1686 | + pack more data into a single “message”, and most devices use SysEx as |
| 1687 | + way to save and restore patches and configuration information on |
1686 | 1688 | less-expensive computer storage. Several of the major music hardware |
1687 | 1689 | producers have expressed strong interest in using Web MIDI to provide |
1688 | 1690 | web-based configuration and programming interfaces to their hardware. |
@@ -1713,15 +1715,15 @@ <h2> |
1713 | 1715 | not persistently. |
1714 | 1716 | </p> |
1715 | 1717 | <p> |
1716 | | - System Exclusive, on the other hand, has a much less bounded |
| 1718 | + <a>System Exclusive</a>, on the other hand, has a much less bounded |
1717 | 1719 | potential, and it seems that distinguishing requests for SysEx |
1718 | 1720 | separately in the API is a good idea, in order to more carefully |
1719 | 1721 | provide user security hooks. The <a data-lt= |
1720 | 1722 | "Navigator.requestMIDIAccess">suggested security model</a> explicitly |
1721 | | - allows user agents to require the user's approval before giving |
1722 | | - access to MIDI devices, although it is not currently required to |
1723 | | - prompt the user for this approval - but it also detailed that system |
1724 | | - exclusive support must be requested as part of that request. |
| 1723 | + allows user agents to require the user's approval before giving access |
| 1724 | + to MIDI devices, although it is not currently required to prompt the |
| 1725 | + user for this approval - but it also detailed that <a>System |
| 1726 | + Exclusive</a> support must be requested as part of that request. |
1725 | 1727 | </p> |
1726 | 1728 | </section> |
1727 | 1729 | </section> |
|
0 commit comments