Você está na página 1de 47

Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

barramento serial universal


Definição de classe de dispositivo
para
Dispositivos MIDI

Versão 2.0

5 de maio de 2020

1
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Escopo desta Revisão


Este documento é a definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI versão 2.
Esta versão segue a definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI versão 1.0. A
versão 1.0 suporta todas as especificações MIDI 1.0. O objetivo principal desta atualização da versão 2.0 é
adicionar suporte para especificações MIDI 2.0 publicadas em 2020 pela MIDI Manufacturers Association e pela
Association of Musical Electronics Industry. Outras melhorias também estão incluídas nesta Versão 2.0. A
compatibilidade com versões anteriores é considerada cuidadosamente.

Colaboradores de especificação da versão 1.0


Gal Ashour Corporação IBM
Billy Brackenridge Corporação Microsoft
Mike Kent Corporação Roland
Geert Knapen Philips ITCL-EUA
Oren Tirosh Altec Lansing

Colaboradores de especificação da versão 2.0


Franz Detro Instrumentos nativos
Harumichi Hotta Corporação Yamaha
Mike Kent Roland Corporation – Presidente do Projeto, mikekent@mk2audio.com
Geert Knapen Corporação Knowles
Makoto Komorita Corporação Roland
Daisuke Miura Corporação Yamaha
Matt Mora Corporação Apple
Torrey Walker Corporação Apple
Douglas Wyatt Corporação Apple
Ichiro Yazawa Corporação Roland

Histórico de Revisão
Revisão Data Descrição

1,0 1º de novembro de 1999 Primeira revisão da definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI.

Suporta MIDI 1.0.

2,0 5 de maio de 2020 Segunda revisão da definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI.

Adiciona suporte para MIDI 2.0, MIDI-CI e Universal MIDI Packet.

2
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Definição de classe de dispositivo USB para dispositivos MIDI


Copyright © 1996-2020, Fórum de Implementadores USB
Todos os direitos reservados.

ISENÇÃO DE PROPRIEDADE INTELECTUAL


É CONCEDIDA UMA LICENÇA PARA REPRODUZIR ESTA ESPECIFICAÇÃO SOMENTE PARA USO INTERNO.
NENHUMA OUTRA LICENÇA, EXPRESSA OU IMPLÍCITA, POR ESTOPPEL OU DE OUTRA FORMA, É CONCEDIDA OU
PRETENDIDA AQUI.
USB-IF E OS AUTORES DESTA ESPECIFICAÇÃO REJEITAM EXPRESSAMENTE TODA A RESPONSABILIDADE POR
VIOLAÇÃO DE DIREITOS DE PROPRIEDADE INTELECTUAL RELACIONADOS À IMPLEMENTAÇÃO DE INFORMAÇÕES
NESTA ESPECIFICAÇÃO. A USB-IF E OS AUTORES DESTA ESPECIFICAÇÃO TAMBÉM NÃO GARANTEM OU DECLARAM
QUE TAIS IMPLEMENTAÇÕES NÃO VIOLAREM OS DIREITOS DE PROPRIEDADE INTELECTUAL DE TERCEIROS.

ESTA ESPECIFICAÇÃO É FORNECIDA “NO ESTADO EM QUE SE ENCONTRA” E SEM GARANTIAS, EXPRESSAS OU
IMPLÍCITAS, ESTATUTÁRIAS OU OUTRAS. TODAS AS GARANTIAS SÃO EXPRESSAMENTE REJEITADAS. USB-IF,
SEUS MEMBROS E OS AUTORES DESTA ESPECIFICAÇÃO NÃO FORNECEM NENHUMA GARANTIA DE
COMERCIALIZAÇÃO, NENHUMA GARANTIA DE NÃO VIOLAÇÃO, NENHUMA GARANTIA DE ADEQUAÇÃO A
QUALQUER FIM ESPECÍFICO E NENHUMA GARANTIA DECORRENTE DE QUALQUER PROPOSTA, ESPECIFICAÇÃO
OU AMOSTRA.

EM HIPÓTESE ALGUMA O USB-IF, OS MEMBROS OU OS AUTORES SERÃO RESPONSÁVEIS PERANTE OUTRO PELO
CUSTO DE AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS, LUCROS CESSANTES, PERDA DE USO, PERDA DE
DADOS OU QUAISQUER DANOS INCIDENTAIS, CONSEQUENCIAIS, INDIRETOS OU ESPECIAIS, SEJA SOB CONTRATO,
ATO ILÍCITO, GARANTIA OU DE OUTRA FORMA, DECORRENTES DE QUALQUER FORMA DO USO DESTA
ESPECIFICAÇÃO, TENHA OU NÃO NOTIFICAÇÃO ANTECIPADA DA POSSIBILIDADE DE TAIS DANOS.

NOTA: VÁRIOS MEMBROS DO USB-IF PARTICIPARAM NA ELABORAÇÃO DESTA ESPECIFICAÇÃO.

ALGUNS DESSES MEMBROS PODEM TER RECUSADO A ENTRAR EM UM ACORDO ESPECÍFICO


LICENCIAR DIREITOS DE PROPRIEDADE INTELECTUAL QUE POSSAM SER VIOLADOS NA IMPLEMENTAÇÃO DESTA

ESPECIFICAÇÃO. PESSOAS IMPLEMENTAM ESTA ESPECIFICAÇÃO EM

SEU PRÓPRIO RISCO.

Por favor, envie comentários por e-mail para audio-chair@usb.org

3
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Índice

1 Introdução................................................. .................................................. .....................8

1.1 Antecedentes: MIDI 1.0, MIDI 2.0 e USB ........................................ ...........................8 1.2
Finalidade .................... .................................................. .................................................. 8

Figura 1: Interface MIDI USB Simples ........................................... .................................9

Figura 2: Sintetizador MIDI USB Simples......................................... ............................9 1.3 Documentos


Relacionados ................. .................................................. ....................................10
1.4 Termos e Abreviaturas ............................................. ..............................................10
1.5 Palavras Reservadas e Conformidade com Especificações ........................................... .........11

Tabela 1-1: Palavras relacionadas à conformidade com as especificações................................... ...11

Tabela 1-2: Palavras não relacionadas à conformidade com as especificações...................................11

2 Visão geral da gestão................................................... .................................................. ...12 2.1 Visão geral


do que há de novo ou alterado na especificação de classe da versão 1.0 ...............12
3 Características Funcionais ............................................. ................................................14
3.1 Dispositivo e Topologia............................................. .................................................. ..14 3.1.1 Interface
de streaming MIDI com duas configurações alternativas: Compatibilidade com versões anteriores15 3.2
Formato de dados: Pacote MIDI Universal (UMP) ........................ ...................................15 Formato Básico de
3.2.1 Pacote........ .................................................. ....................................16
3.2.2 Mensagens UMP em um pacote USB: ordenação de bytes...................................... .........17 3.2.3
Campo de tipo de mensagem do UMP e tamanho do pacote .............................. .........................17

Tabela 3-1: Tamanhos de Pacotes Baseados em Tipos de Mensagens ........................................ .............17


3.2.4 Campo e roteamento do grupo UMP.......................... ................................................18 3.3 Interface
de transmissão MIDI ............................................. ...........................................18 3.3.1 MIDI USB
Conversor ................................................... ...........................................18
3.3.2 Terminais de dados de streaming MIDI ........................................... ..............................18 3.3.3
Terminais de grupo e grupos UMP ........... .................................................. .......19 3.3.4 Blocos de terminais
de grupo.................................... .................................................. ..19

4 Modelo Operacional ............................................. .................................................. ..........21 4.1 Comunicação


do Host para USB Função MIDI......................... ........................22
4.2 Comunicação da função MIDI USB para o host......................................... ............22

5 Descritores de configuração................................................... ................................................23 5.1 Núcleo


Descritores.................................................. .................................................. ......23 5.2 Descritores da interface
MIDIStreaming ........................................ ...................................23 Descritor de interface MS
5.2.1 padrão........... .................................................. ..........23

Tabela 5-1: Descritor de interface MIDIStreaming padrão ........................................ ..23 Descritor de


5.2.2 interface MS específico de classe ..................................... ....................24

Tabela 5-2: Descritor de cabeçalho de interface MS específico da classe................................... ...24


5.3 Descritores de endpoint de streaming MIDI................................... ..............................24 Descritor de
5.3.1 endpoint de dados de streaming MIDI padrão............ ..............................24

Tabela 5-3: Descritor padrão de endpoint de dados MS................................... .............25

4
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

5.3.2 Descritor de endpoint de dados de streaming MIDI específico da classe....................25

Tabela 5-4: Descritor de endpoint de dados MS específico da classe ...................................... .......26


5.4 Descritores de blocos terminais de grupo específicos de classe – recuperáveis por uma solicitação Get separada
27
5.4.1 Descritor de cabeçalho de bloco terminal de grupo específico de classe.....................27

Tabela 5-5: Descritor de cabeçalho de terminal de grupo específico de classe...................................27


5.4.2 Descritor do Bloco Terminal de Grupo...................................... ............................27

Tabela 5-6: Descritor do Bloco Terminal de Grupo ..................................... ......................29

6 Comando Específico de Classe: Solicitação de Descritores de Blocos Terminais de Grupo.................31

Apêndice A. Códigos de classe de dispositivos de áudio: MIDIStreaming..................................32


A.1 Tipos de descritores de interface específicos de classe MS ........................................ ...............32
A.1 Subtipos do descritor de interface específico da classe MS................................... ..........32
A.2 Subtipos do descritor de endpoint específico da classe MS................................... ..........32
A.3 Subtipos de descritores de bloco terminal de grupo específico de classe MS.........................32
A.4 Revisão da classe MIDIStreaming do cabeçalho da interface MS ..................................... ...33
A.5 Tipos de conectores MS MIDI IN e OUT ........................................ ...................................33
A.6 Tipo de Bloco Terminal de Grupo...................................... ...........................................33
A.7 Protocolo MIDI padrão do terminal de grupo ............................................. ......................33
A.8 Número do Terminal do Grupo (Grupo de Pacotes MIDI Universal) ..................................33

Apêndice B. Exemplo 1: Instrumento MIDI Simples (Informativo).........................35


B.1 Exemplo 1 Descritor de dispositivo e configuração.......................................... ........36
B.1.1 Descritor do dispositivo ................................................ ...................................................36

Tabela B-1: Descritor do Dispositivo......................................... ...................................................36


B.1.2 Descritor de Configuração............................................. ....................................36

Tabela B-2: Descritor de configuração ........................................... ..................................36


B.2 Exemplo 1 Descritores de Interface AudioControl ............................................. .........37
B.2.1 Descritor de interface CA padrão ............................................. ....................37
B.2.2 Descritor de interface AC específico da classe.......................................... ................37
B.3 Exemplo 1 Descritores de interface MIDIStreaming (na configuração alternativa 0x00 para USB MIDI 1.0)
38
B.3.1 Descritor de interface MS padrão......................................... ....................38
B.3.2 Descritor de interface MS específico da classe ........................................... ...............38
B.3.3 Descritor de entrada MIDI IN................................................ ....................................38
B.3.4 Descritor de entrada MIDI IN................................................ ....................................39
B.3.5 Descritor do conector MIDI OUT ............................................. ................................39
B.3.6 Descritor de conector MIDI OUT (externo).......................................... ...................39
B.4 Exemplo 1 Descritores de endpoint Bulk OUT (na configuração alternativa 0x00 para USB MIDI 1.0)
40
B.4.1 Descritor de endpoint Bulk OUT padrão .................................... ...........40
B.4.2 Descritor de endpoint MS Bulk OUT específico da classe .................................... 40
B.5 Exemplo 1 Descritores de endpoint Bulk IN (na configuração alternativa 0x00 para USB MIDI 1.0)
40
B.5.1 Descritor de endpoint padrão Bulk IN ............................................. ...............40
B.5.2 Descritor de endpoint MS Bulk IN específico da classe .................................... ....41

5
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.6 Exemplo 1 Descritores de interface MIDIStreaming (na configuração alternativa 0x01 para USB MIDI 2.0)
41
B.6.1 Descritor de interface MS padrão......................................... ....................41
B.6.2 Descritor de cabeçalho de interface MS específico de classe .................................... ...41
B.7 Exemplo 1 Descritores de endpoint Bulk OUT (na configuração alternativa 0x01 para USB MIDI 2.0)
42
B.7.1 Descritor de endpoint Bulk OUT padrão .................................... ...........42
B.7.2 Descritor de endpoint MS Bulk OUT específico da classe .................................... 42
B.8 Exemplo 1 Descritores de endpoint Interrupt IN (na configuração alternativa 0x01 para USB MIDI 2.0)
42
B.8.1 Descritor de endpoint de interrupção IN padrão.................................. .........42
B.8.2 Descritor MS Interrupt IN Endpoint específico da classe...................................43
B.9 Exemplo 1 Descritores de bloco terminal de grupo (na configuração alternativa 0x01 para USB MIDI 2.0)
43
B.9.1 Descritor de cabeçalho do bloco de terminais de grupo específico de classe ......................43
B.9.2 Descritor do bloco terminal de grupo ............................................. ......................44
B.10 Exemplo 1 Solicitações de Descritor de Obtenção .......................................... ............................44
B.11 Exemplo 1 Descritores de String ........................................... ....................................45

Apêndice C. Limitação da topologia MIDI-CI (informativo) ........................................... ...47

Lista de mesas

Tabela 1-1: Palavras relacionadas à conformidade com as especificações................................... ................11

Tabela 1-2: Palavras não relacionadas à conformidade com as especificações................................... ..........11

Tabela 3-1: Tamanhos de Pacotes Baseados em Tipos de Mensagens ........................................ ...........................17

Tabela 5-1: Descritor de interface MIDIStreaming padrão ........................................ ...............23

Tabela 5-2: Descritor de cabeçalho de interface MS específico da classe................................... ................24

Tabela 5-3: Descritor padrão de endpoint de dados MS ................................... ...........................25

Tabela 5-4: Descritor de endpoint de dados MS específico da classe ...................................... ....................26

Tabela 5-5: Descritor de cabeçalho de terminal de grupo específico de classe ...................................... ...........27

Tabela 5-6: Descritor do Bloco Terminal de Grupo ..................................... ...................................29

Tabela B-1: Descritor do Dispositivo......................................... .................................................. .......36

Tabela B-2: Descritor de configuração ........................................... ................................................36

Tabela B-3: Descritor de interface CA padrão......................................... ...................................37

Tabela B-4: Descritor de interface CA específico da classe................................... ...........................37

Tabela B-5: Descritor de Interface MS Padrão.......................................... ...................................38

Tabela B-6: Descritor de cabeçalho de interface MS específico da classe...................................... ................38

Tabela B-7: Descritor MIDI IN Jack (Incorporado) ...................................... ................................38

Tabela B-8: Descritor de Jack MIDI IN (Externo) ...................................... ...................................39

Tabela B-9: Descritor do conector MIDI OUT (incorporado) ...................................... ...........................39

6
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Tabela B-10: Descritor do conector MIDI OUT (externo) ...................................... ............................39

Tabela B-11: Descritor de endpoint Bulk OUT padrão ........................................ ......................40

Tabela B-12: Descritor de endpoint Bulk OUT específico da classe................................... ...............40

Tabela B-13: Descritor de endpoint Bulk IN padrão ........................................ ...........................40

Tabela B-14: Descritor de endpoint Bulk IN específico da classe................................... ...................41

Tabela B-15: Descritor de interface MS padrão......................................... ................................41

Tabela B-16: Descritor de cabeçalho de interface MS específico da classe...................................... ..............41

Tabela B-17: Descritor de endpoint Bulk OUT padrão ........................................ ......................42

Tabela B-18: Descritor de endpoint Bulk OUT específico da classe ...................................... ................42

Tabela B-19: Descritor de endpoint de interrupção IN padrão................................... ....................42

Tabela B-20: Descritor de endpoint IN de interrupção específico da classe................................... .............43

Tabela B-21: Descritor de cabeçalho do bloco terminal de grupo específico da classe................................... 43

Tabela B-22: Descritor do Bloco Terminal de Grupo.................................. ....................................44

Tabela B-25: ID do descritor de string 0......................................... .................................................. 0,45

Tabela B-26: ID do descritor de string 1......................................... .................................................. 0,45

Tabela B-27: ID do descritor de string 2......................................... .................................................. 0,45

Tabela B-28: ID do descritor de string 3......................................... .................................................. 0,46

Tabela B-29: ID do descritor de string 4......................................... .................................................. 0,46

Lista de Figuras

Figura 1: Interface MIDI USB Simples......................................... ................................................9

Figura 2: Sintetizador MIDI USB Simples......................................... ...........................................9

Figura 3: Topologia de dispositivos e funções USB MIDI 2.0................................... ...................14

Figura 4: Formato Básico da Mensagem.......................................... .................................................. 16

Figura 5: Exemplo de layout de mensagem.......................................... .............................................16

Figura 6: Exemplo de ordenação de bytes.......................................... ....................................................17

Figura 7: Exemplos de blocos de terminais de grupo ........................................... ............................20

Figura 8: Dispositivo USB MIDI 2.0 – Intercalando até 16 grupos em cada endpoint.................21

7
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

1. Introdução
A seguir está a versão 2 da definição de classe de dispositivo USB para dispositivos MIDI. Ele foi projetado para
cobrir a mais ampla gama de aplicações e produtos MIDI possíveis. Este documento deve ser considerado
parte integrante da definição de classe de dispositivo de áudio USB.

1.1 Plano de fundo: MIDI 1.0, MIDI 2.0 e USB


MIDI, introduzido em 1983, é um padrão maduro com muitos produtos e aplicações existentes. É um padrão que
define protocolo de dados e mecanismos de comunicação para troca de informações de controle musical. A
especificação de classe de dispositivo USB original para dispositivos MIDI versão 1.0, adotada pelo USB-IF em 1999,
fornece transporte USB para mensagens MIDI 1.0 (comumente chamado de USB MIDI). A adoção do USB
MIDI cresceu nos últimos 20 anos e o USB MIDI agora é
o transporte mais utilizado para MIDI.
Em 2020, a Association of Musical Electronics Industry e a MIDI Manufacturers Association adotaram um conjunto de
especificações MIDI 2.0. As especificações MIDI 2.0 definem um novo pacote MIDI universal para os protocolos
MIDI 1.0 e MIDI 2.0. Portanto, esta nova especificação de classe de dispositivo USB para dispositivos MIDI versão
2.0 é definida para suportar novos dispositivos MIDI 1.0 e MIDI 2.0 usando o pacote MIDI universal. A transferência
do pacote MIDI universal por USB por meio desta especificação será chamada de USB MIDI 2.0 no restante deste
documento.

1.2 Objetivo
Esta especificação para troca universal de pacotes MIDI por USB foi projetada para ser um método elegante para
permitir uma ampla gama de configurações de sistema MIDI 1.0 e MIDI 2.0, das mais simples às mais
complexas. Além disso, esta especificação expande o MIDI, permitindo aplicações que não são possíveis
com configurações não-USB MIDI 2.0.

8
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

A Figura 1 mostra uma interface MIDI simples, que permitiria que muitos dispositivos MIDI não USB existentes
se conectassem ao USB.

Figura 1: Interface MIDI USB Simples

A Figura 2 mostra um sintetizador MIDI com teclado e gerador de tons.

Figura 2: Sintetizador MIDI USB Simples

9
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

1.3 Documentos Relacionados


• Especificação Universal Serial Bus, revisão final 1.0 (também conhecida como Especificação USB). Em
particular, consulte o Capítulo 9, “Estrutura do dispositivo USB”.
• Especificação Universal Serial Bus, Revisão 2.0 (referida neste documento como Especificação USB 2). Em
particular, consulte o Capítulo 5, “Modelo de fluxo de dados USB” e o Capítulo 9, “Estrutura do dispositivo
USB”.

• Especificação Universal Serial Bus 3.2, Revisão 1.0 (referida neste documento como Especificação USB 3). Este
documento aborda detalhes específicos dos dispositivos SuperSpeed e SuperSpeed+.

• Definição de Classe de Dispositivo Universal Serial Bus para Dispositivos de Áudio Versão 1.0.
• Definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI Versão 1.0.
• A especificação detalhada completa do MIDI 1.0, versão do documento 96.1, terceira edição, (disponível
em http://www.midi.org).
• Visão geral das especificações MIDI 2.0 (disponível em http://www.midi.org).
• Especificação MIDI Capability Inquiry (MIDI-CI) (disponível em http://www.midi.org).
• Formato de Pacote MIDI Universal e Protocolo MIDI 2.0 (disponível em http://www.midi.org).

MIDI é um padrão para instrumentos musicais e dispositivos de áudio se comunicarem entre si e com
computadores. Para obter mais informações, entre em contato com a Associação de Fabricantes MIDI em
https://www.midi.org/ ou Association of Musical Electronics Industry (Japão) em
http://www.amei.or.jp/.

1.4 Termos e Abreviações


Grupo: Em cada pacote MIDI universal há um campo Grupo de 4 bits após o campo Tipo de mensagem, endereçando
cada mensagem MIDI UMP (e cada UMP compreendendo qualquer mensagem MIDI) para um dos 16
grupos. Os 16 grupos são intercalados em um fluxo MIDI.

MIDI-CI: Consulta de capacidade MIDI. Um mecanismo MIDI para consultas e negociações bidirecionais.
Requer um par de entrada MIDI e saída MIDI. Ao usar o pacote MIDI universal, como é o formato desta
especificação USB MIDI 2.0, o MIDI-CI requer um par de um terminal de grupo IN e um terminal de grupo OUT.

Mensagem MIDI: (1) Uma mensagem MIDI 1.0 completa conforme especificado na Especificação detalhada
MIDI 1.0 completa, incluindo quaisquer atualizações, adendos ou erratas); ou (2) Uma mensagem MIDI 1.0
completa ou uma mensagem MIDI 2.0 completa conforme especificado no formato de pacote MIDI universal e na
especificação do protocolo MIDI 2.0. Observe que para o USB nesta especificação, uma única mensagem
MIDI pode abranger vários pacotes de transporte ou um único pacote de transporte pode conter várias
mensagens MIDI.

Tipo de mensagem: Os 4 bits mais significativos em cada pacote MIDI universal contêm o campo Tipo de
mensagem . Indica a área funcional geral da mensagem (por exemplo, Utility, mensagens de voz do canal MIDI
1.0, mensagens de voz do canal MIDI 2.0), bem como o tamanho do UMP.

MS: Transmissão MIDI.


UMP: Pacote MIDI Universal.

10
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Pacote MIDI Universal: O Pacote MIDI Universal é um formato de contêiner de dados que suporta todas as
mensagens do Protocolo MIDI 1.0 e todas as mensagens do Protocolo MIDI 2.0 e é destinado ao uso em todos os
transportes definidos. Consulte Formato de pacote MIDI universal e Especificação do protocolo MIDI 2.0 para
definição detalhada.

USB MIDI 1.0: A definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI, versão 1.0

USB MIDI 2.0: A definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI, versão 2.0 (esta
especificação).

1.5 Palavras reservadas e conformidade com especificações


Neste documento, as palavras a seguir são usadas apenas para distinguir o que é necessário para estar em
conformidade com esta especificação, o que é recomendado, mas não exigido para conformidade, e o que
é permitido, mas não obrigatório para conformidade:
Tabela 1-1: Palavras relacionadas à conformidade da especificação

Palavra reservada para Relação com a conformidade das especificações

podemos Declarações de Obrigatório.


requisitos Uma implementação compatível está em conformidade com todas as declarações 'deverá'.

deveria Declarações de recomendação Recomendado, mas não obrigatório.


Uma implementação que não está em conformidade com alguns ou todos os 'deveria'
declarações ainda estão em conformidade, desde que todas as declarações 'devem' estejam
em conformidade.

poderia Declarações de Opcional.


permissão Uma implementação que não esteja em conformidade com algumas ou todas as declarações 'may'
ainda estará em conformidade, desde que todas as declarações 'shall' estejam em conformidade.

Por outro lado, neste documento, as palavras a seguir nunca são usadas para declarações de conformidade de
especificações; eles são usados apenas para fins descritivos e explicativos:
Tabela 1-2: Palavras não relacionadas à conformidade com as especificações

Palavra reservada para notas

deve Declarações de Descreve uma ação a ser tomada que, embora não seja exigida (ou pelo menos não seja diretamente exigida)
inevitabilidade por esta especificação, é inevitável.
Não utilizado para declarações de requisitos de conformidade (ver 'deve' acima).

vai Declarações de fato Descreve uma condição que, por uma questão de fato, necessariamente será verdadeira, ou uma ação que,
por uma questão de fato, necessariamente ocorrerá, mas não como um requisito (ou pelo menos não como um
requisito direto) desta especificação.
Não utilizado para declarações de requisitos de conformidade (ver 'deve' acima).

pode Declarações de Descreve uma condição ou ação que um elemento do sistema é capaz de possuir ou realizar.
capacidade
Não usado para declarações de permissão de conformidade (veja 'pode' acima).

poder Declarações de Descreve uma condição ou ação que um elemento do sistema é capaz de optar por possuir ou realizar.
possibilidade
Não usado para declarações de permissão de conformidade (veja 'pode' acima).

11
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

2 Visão Geral da Gestão


A especificação de classe de dispositivo USB para dispositivos MIDI versão 1.0, adotada pelo USB-IF em 1999,
fornece transporte USB para mensagens MIDI 1.0 (comumente chamado de USB MIDI). Esta especificação
da versão 2.0 adiciona suporte para mensagens MIDI 2.0 e outras mensagens futuras contidas em um pacote MIDI
universal.
USB é adequado para conectar interfaces MIDI e instrumentos MIDI a computadores. MIDI é um protocolo reconhecido
para controle de música que atende muito bem ao mercado. A adoção do USB MIDI cresceu nos últimos 20
anos e o USB MIDI é agora o transporte mais utilizado para MIDI.

Esta versão 2.0 da especificação de classe de dispositivo USB para dispositivos MIDI adiciona suporte para os
novos recursos definidos pelo MIDI 2.0, principalmente pela adoção do pacote MIDI universal definido pelo MIDI
2.0. Ele também adiciona alguns recursos adicionais além daqueles encontrados na versão original da especificação
de classe e descontinua alguns recursos que foram substituídos ao longo dos anos por mecanismos
superiores.
Em princípio, um barramento versátil como o USB oferece muitas maneiras de lidar com dados MIDI. Para a
indústria, porém, é muito importante que os mecanismos de transporte MIDI sejam bem definidos e padronizados
em USB. Somente desta forma podemos prever a interoperabilidade, garantir um desempenho confiável e manter
a boa imagem do próprio MIDI no mercado. Mecanismos de transporte MIDI padronizados também ajudam a
manter os drivers de software tão genéricos quanto possível. A classe de interface MIDIStreaming descrita neste
documento atende a esses requisitos. Ele foi escrito e revisado por especialistas na área de MIDI. Outras
classes de dispositivos que abordam MIDI de alguma forma devem consultar este documento para obter suas
especificações MIDI.
Este documento contém todas as informações necessárias para um designer construir um dispositivo compatível com
USB que incorpore a funcionalidade MIDI 1.0 e/ou MIDI 2.0. Ele especifica os descritores padrão e específicos
de classe que devem estar presentes em cada função USB MIDI. Explica ainda a transferência de eventos
MIDI, usando o Pacote MIDI Universal para transferência padronizada por USB e para fácil manuseio por dispositivos
MIDI. Os próprios dados MIDI são transferidos de forma transparente, sem quaisquer alterações. Além disso, se a
especificação MIDI 2.0 for atualizada, novos eventos MIDI ou definições que usam o Pacote MIDI Universal
serão totalmente suportados.

2.1 Visão geral do que há de novo ou alterado na especificação


de classe da versão 1.0
• Substituído o pacote de eventos MIDI USB de 32 bits pelo pacote MIDI universal para suportar
protocolo MIDI 1.0 e protocolo MIDI 2.0. • Conectores
MIDI IN/OUT substituídos por terminais de grupo IN/OUT
• Terminais de Grupo IN/OUT representados em Blocos para mostrar a associação entre múltiplos Terminais
de Grupo IN/OUT.
• Adicionados descritores de largura de banda para uso mais previsível de velocidades
mais altas. • Adicionado suporte para transações de interrupção e também para Bulk (USB MIDI 1.0 usa
somente Bulk) para controle mais determinístico sobre jitter e taxa
de transferência. • Removida a entidade funcional Element. Os recursos do Element raramente eram suportados
e foram substituídos por mecanismos melhores na configuração de perfil MIDI-CI e na troca de
propriedades MIDI-CI. Esta remoção tem o efeito colateral de remover a associação do Elemento aos
Terminais de Áudio.

12
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

• Removido os pontos finais de transferência. Eles nunca foram suportados e a aplicação alvo é melhor alcançada
por mecanismos USB mais recentes, incluindo a classe Mass Storage.
• Exponha quaisquer pares fixos de grupos/portas IN/OUT ao sistema operacional host para uso com MIDI-
CI. • Definir como os dispositivos MIDI 2.0 também podem se conectar a sistemas legados apenas com suporte
a USB MIDI 1.0. Os dispositivos serão limitados à funcionalidade MIDI 1.0 quando conectados a um host
USB MIDI 1.0.

13
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

3 características funcionais
A funcionalidade USB MIDI reside no nível da interface na hierarquia do USB Device Framework.
A interface MIDI Streaming representa toda a funcionalidade da função USB MIDI.
É definido como uma subclasse da Classe de Interface de Áudio. Mas esta atribuição de subclasse permanece
apenas para compatibilidade legada com a classe USB MIDI anterior.

3.1 Dispositivo e Topologia


Dispositivos USB MIDI 2.0 usam uma interface de streaming MIDI para suportar funções USB MIDI 1.0 e funções
USB MIDI 2.0.
• Topologia, descritores e outros detalhes da função USB MIDI 2.0 são definidos neste
especificação.
• Topologia, descritores e outros detalhes da função USB MIDI 1.0 são definidos no
Especificação de classe de dispositivo USB para dispositivos MIDI versão 1.0.

Figura 3: Dispositivo USB MIDI 2.0 e topologia de função


Um dispositivo declara se cada configuração alternativa inclui descritores e funcionalidades para a versão 1.0 ou
versão 2.0 da especificação de classe de dispositivo USB para dispositivos MIDI, definindo o

14
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

valor do campo bcdMSC no cabeçalho da interface de streaming MIDI específico da classe para 0x0100 (versão 1.0) ou
0x0200 (versão 2.0).

3.1.1 Interface de streaming MIDI com duas configurações alternativas: compatibilidade com versões
anteriores

Esta versão 2.0 da especificação de classe de dispositivo USB para dispositivos MIDI não é compatível com versões
anteriores da mesma especificação.
No entanto, para garantir a interoperabilidade mais ampla possível entre novos dispositivos USB MIDI 2.0 e hosts USB MIDI 1.0
legados, esta especificação define que um dispositivo compatível com USB MIDI 2.0 deve fazer o seguinte:

A primeira interface de streaming MIDI exposta pelo dispositivo deve conter uma configuração alternativa 0 que seja
compatível com a especificação de classe de dispositivo USB para dispositivos MIDI versão 1.0. Em outras
palavras, se o software Host selecionar a primeira configuração alternativa indexada na interface de streaming MIDI, o
dispositivo deverá expor uma função MIDI compatível com USB MIDI 1.0. O campo bcdMSC no cabeçalho da interface de
streaming MIDI específico da classe deve ser definido como 0x0100. Este requisito permite que a função MIDI
interopere com hosts existentes exatamente da mesma forma que as funções MIDI 1.0 legadas atuais.

A primeira interface de streaming MIDI exposta pelo dispositivo deve conter uma configuração alternativa 1 que
contém a implementação de dispositivo preferida que está em conformidade com o novo design definido por esta
especificação USB MIDI 2.0. O campo bcdMSC no cabeçalho da interface de streaming MIDI específico da classe deve ser
definido como 0x0200. Outras configurações alternativas que estejam em conformidade com o novo design definido por
esta especificação USB MIDI 2.0 podem ser incluídas na configuração alternativa 2 ou superior.

Hosts USB MIDI capazes de suportar um dispositivo USB MIDI 2.0 podem procurar uma função MIDI que esteja em
conformidade com a especificação de classe de dispositivo USB para dispositivos MIDI versão 2.0 na configuração
alternativa 1. Se tal configuração alternativa for encontrada no dispositivo, o host poderá instalar o dispositivo como um
dispositivo USB MIDI 2.0 usando os descritores encontrados na Configuração Alternativa 1.
A definição de classe de dispositivo USB para dispositivos MIDI versão 1.0 implementada na configuração alternativa #0
oferece suporte a dispositivos MIDI 1.0 usando mensagens MIDI 1.0.
A definição de classe de dispositivo USB para dispositivos MIDI versão 2.0 implementada na configuração alternativa nº 1
oferece suporte a dispositivos MIDI 1.0 usando mensagens MIDI 1.0 e dispositivos MIDI 2.0 usando mensagens MIDI 1.0
ou mensagens MIDI 2.0.
Deve ficar claro que a parte da discussão que envolve o comportamento do Host existe apenas para completar o quadro
completo e não impõe quaisquer regras de implementação ao software do Host.
Esta especificação está limitada apenas à especificação do comportamento da função USB MIDI.

3.2 Formato de dados: Pacote MIDI Universal (UMP)

Os dados MIDI são transferidos por USB usando pacotes MIDI universais conforme definido pelas especificações MIDI
2.0. O Pacote MIDI Universal contém dois campos de 4 bits que são essenciais para o design do USB MIDI 2.0:

1. Campo de tipo de mensagem


2. Campo de grupo

15
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

3.2.1 Formato Básico de Pacote

Cada mensagem MIDI está contida em um pacote MIDI universal. O Pacote MIDI Universal consiste de uma
a quatro palavras de 32 bits. Cada pacote MIDI universal contém uma mensagem do protocolo MIDI 1.0 ou uma
mensagem do protocolo MIDI 2.0.
Os diagramas dos Pacotes MIDI Universais são apresentados com uma palavra de 32 bits por linha.

Figura 4: Formato Básico de Mensagem

Os diagramas nesta especificação mostram uma visão lógica onde os bits mais à esquerda são os bits mais
significativos na palavra e em cada campo.

3.2.1.1 Exemplo de mensagens MIDI no formato de pacote MIDI universal

Figura 5: Exemplo de layout de mensagem

O USB MIDI 2.0 só precisa saber sobre os campos Tipo de Mensagem e Grupo de mensagens no Pacote MIDI
Universal para transportar mensagens MIDI. USB MIDI 2.0 não

16
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

compreender ou interagir com o conteúdo de qualquer outro campo em um pacote MIDI universal, como campos
de status, canal, índice e dados de mensagens.

3.2.2 Mensagens UMP em um pacote USB: ordenação de bytes


Cada palavra de 32 bits de um pacote MIDI universal é enviada primeiro com o byte menos significativo. Se
um pacote MIDI universal tiver mais de uma palavra de 32 bits, a ordem das palavras será mantida.

Figura 6: Exemplo de ordenação de bytes

3.2.3 Campo de tipo de mensagem do UMP e tamanho do pacote


Os 4 bits mais significativos de cada mensagem contêm o Tipo de Mensagem (MT). Todas as mensagens
dentro de um tipo de mensagem têm o mesmo tamanho de pacote MIDI universal. O USB MIDI 2.0 precisa saber o
tamanho do pacote com base no tipo de mensagem.
Quando um Pacote MIDI Universal é enviado no USB e sempre que possível, todo o Pacote MIDI Universal deve
ser mantido junto e enviado dentro da mesma Transação de Transferência em Massa USB ou dentro da mesma
Transação de Transferência de Interrupção USB.
Quando o USB está usando transferências burst, a divisão de pacotes MIDI universais em transações
USB geralmente está fora do controle do dispositivo (e do driver específico da classe). Mas os dispositivos
com suporte para transferências burst são geralmente processadores mais poderosos, capazes de reter
parte de um pacote MIDI universal até que o restante do pacote MIDI universal chegue.

Tabela 3-1: Tamanhos de pacotes baseados em tipos de mensagens

Mensagem Pacote Descrição


Tipo Tamanho

0x0 32 bits Mensagens utilitárias

0x1 32 bits Mensagens comuns do sistema e em tempo real do sistema (exceto exclusivas do sistema)

0x2 32 bits Mensagens de voz do canal MIDI 1.0

0x3 64 bits Mensagens de dados (incluindo exclusivas do sistema)

0x4 64 bits Mensagens de voz do canal MIDI 2.0

0x5 128 bits Mensagens de dados

0x6 32 bits Reservado

0x7 32 bits Reservado

0x8 64 bits Reservado

0x9 64 bits Reservado

0xA 64 bits Reservado

17
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Mensagem Pacote Descrição


Tipo Tamanho

0xB 96 bits Reservado

0xC 96 bits Reservado

0xD 128 bits Reservado

0xE 128 bits Reservado

0xF 128 bits Reservado

3.2.4 Campo e roteamento do grupo UMP


Cada pacote possui um campo Grupo de 4 bits após o campo Tipo de mensagem. O formato Universal MIDI
Packet usa 16 grupos como mecanismo para criar dezesseis fluxos intercalados de dados MIDI.
Por uma questão de clareza, esta especificação refere-se a estes grupos como grupos UMP.
• 0x0 a 0xF = Grupo 1 a Grupo 16
USB MIDI 2.0 usa o campo Grupo de mensagens MIDI em um fluxo intercalado para rotear mensagens MIDI de
uma fonte para um destino associado. Cada grupo UMP ativo é representado por um terminal de grupo na fronteira
entre a função USB MIDI e o conversor USB MIDI.
O valor do campo Grupo em cada Pacote MIDI Universal indica o Número do Terminal do Grupo associado
para onde o Pacote MIDI Universal é enviado ou recebido.

3.3 Interface de transmissão MIDI


Dispositivos USB MIDI 2.0 contêm vários componentes de dispositivos. Todas as funções USB MIDI devem
conter alguns pontos finais de dados de streaming MIDI conectados a alguns terminais de grupo. Os Terminais
de Grupo incluem Terminais de Grupo IN e Terminais de Grupo OUT. A função USB MIDI contém alguns blocos
de terminais de grupo. Cada Bloco Terminal de Grupo declara Terminais de Grupo como membros desse Bloco
Terminal de Grupo para indicar que esses Terminais de Grupo estão associados entre si. Um terminal de dados de
streaming MIDI se conecta a um terminal de grupo declarando o ID do bloco de terminais de grupo que tem esse
terminal de grupo como membro. Consulte o diagrama de topologia de dispositivo anterior (Figura 3: Topologia
de dispositivo e função USB MIDI 2.0).

3.3.1 Conversor MIDI USB

O USB MIDI Converter é o coração de toda função USB MIDI, pois fornece a ligação entre o Host e a função
USB MIDI. Portanto, é um alicerce obrigatório. Por um lado, ele faz interface com os canais USB que são usados
para trocar fluxos de dados MIDI entre o Host e os pontos de extremidade de dados MIDI da função USB MIDI. Por
outro lado, ele se conecta a vários terminais de grupo. O Terminal de Grupo é um conceito lógico para representar
um único grupo de dados UMP para verdadeira conectividade MIDI com a função USB MIDI. O conversor MIDI USB
fornece o link entre um terminal MIDI OUT e terminais de grupo IN associados. Da mesma forma, ele converte entre
um terminal de grupo OUT e o terminal MIDI IN correspondente.

3.3.2 Terminais de dados de streaming MIDI


O conversor USB MIDI contém um ou mais pontos finais de dados de streaming MIDI que funcionam como pontos
finais MIDI IN e/ou MIDI OUT. Cada terminal de dados de streaming MIDI transfere um único fluxo de pacote MIDI
universal com até dezesseis grupos UMP de dados MIDI.

18
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Um descritor de terminal de dados de streaming MIDI específico da classe declara o número de identificação exclusivo de
um ou mais blocos terminais de grupo associados no campo bAssoGrpTrmBlkID . O conjunto de todos os blocos terminais de
grupo associados ao terminal de dados de streaming MIDI tem um total coletivo de um a dezesseis terminais de grupo
como membros para representar um a dezesseis grupos UMP no fluxo de pacotes MIDI universais.

Somente um único MIDI IN Endpoint pode ser associado a qualquer bloco terminal de grupo específico. Apenas um único
MIDI OUT Endpoint pode ser associado a qualquer bloco terminal de grupo específico. No entanto, um único ponto final
MIDI IN e um único ponto final MIDI OUT podem associar-se simultaneamente a um bloco de terminais de grupo compartilhado
para fins de criação de pares de entrada/saída MIDI-CI de terminais de grupo.

Os pontos finais de dados de streaming MIDI usam transferências em massa ou de interrupção para trocar dados com o Host.
Conseqüentemente, uma grande quantidade de dados MIDI pode ser enviada simultaneamente por um aplicativo sem perder
nenhum evento MIDI. Portanto, os aplicativos de música podem realizar operações MIDI complexas, incluindo o envio de muitas
mensagens MIDI Note On ao mesmo tempo para reproduzir com mais suavidade as músicas mais complexas.

Os descritores MIDI Streaming Data Endpoint são detalhados na Seção 5.3 deste documento.

3.3.3 Terminais de Grupo e Grupos UMP

Terminais de grupo são entidades que passam dados MIDI de entrada/saída da função USB MIDI de/para os pontos finais de
streaming MIDI no conversor USB MIDI.
Cada terminal de grupo é um conceito lógico para representar uma conexão para um único grupo UMP de dados MIDI. Dentro
da função USB MIDI 2.0, cada grupo UMP é tratado como um fluxo roteável separadamente para fornecer a maior
flexibilidade de roteamento para vários componentes do dispositivo e para aplicativos MIDI no host.

Cada grupo UMP de dados que sai da função USB MIDI é representado por um OUT
Terminal de grupo.
Cada grupo UMP de dados que vai para a função USB MIDI é representado por um terminal IN Group.

O número de cada terminal de grupo é o número do grupo UMP de mensagens MIDI nessa conexão:

• 0x0 a 0xF = Agrupar Terminal 1 a Agrupar Terminal 16


• O Grupo Terminal 1 para o Grupo Terminal 16 transporta respectivamente dados do Grupo 1 para o Grupo 16.
Os dispositivos devem implementar Terminais de Grupo começando com o Grupo 1 e aumentando a partir daí (ou seja, um
dispositivo com apenas um Terminal de Grupo deve usar dados do Grupo 1).
Cada Terminal de Grupo é membro de um bloco de Terminais de Grupo, um Bloco Terminal de Grupo.
Os terminais de grupo são declarados em um descritor de bloco de terminais de grupo. Consulte a Seção 3.3.4.

3.3.4 Blocos de terminais de grupo

Os blocos terminais de grupo são entidades na função USB MIDI.


Um bloco de terminais de grupo possui um ou mais terminais de grupo como membros. Se um bloco de terminais de grupo
tiver mais de um terminal de grupo como membros, esses terminais de grupo terão algum relacionamento funcional.
As relações funcionais incluem:

19
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

1. Pares de entrada/saída correspondentes de terminais de grupo para uso em transações MIDI-CI


2. Mais de um terminal de grupo em uso por um componente do dispositivo USB MIDI.
3. Uma combinação de 1) e 2) acima dentro do mesmo bloco.
O relacionamento entre os Terminais de Grupo deve ser descrito em um descritor de string para o Bloco Terminal
de Grupo. O relacionamento descrito geralmente é a fonte ou coletor MIDI, como um sintetizador ou controlador.

Cada bloco terminal de grupo dentro da função USB MIDI recebe um número de identificação exclusivo, contido
no campo bGroupTrmBlkID do descritor. O valor 0x00 é reservado para ID indefinido, restringindo efetivamente o
número total de blocos de terminais de grupo endereçáveis na função USB MIDI a 255.

Além de identificar exclusivamente todos os blocos terminais de grupo endereçáveis em uma função USB MIDI, os
IDs também servem para descrever conexões de dados entre pontos finais de dados de streaming MIDI e terminais
de grupo membros de cada bloco terminal de grupo.
A Figura 7 mostra exemplos de implementações de blocos terminais de grupo:

Figura 7: Exemplos de Blocos Terminais de Grupo

O descritor do Group Terminal Block é detalhado na Seção 5.4 deste documento.

20
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

4 Modelo Operacional
A função USB MIDI expõe uma única interface MIDIStreaming que é usada pelo software Host para interagir e
controlar toda a funcionalidade MIDI da função. Como todas as mensagens de controle são executadas em banda
(incorporadas no fluxo de dados MIDI), não há necessidade de uma interface separada de controle e status. A
interface MIDIStreaming contém um ou mais pontos finais MIDI, que usam transferências em massa ou de
interrupção para trocar dados MIDI com o Host.
Os parágrafos a seguir descrevem os caminhos de dados envolvidos quando a comunicação ocorre entre vários
aplicativos MIDI no Host e vários componentes USB MIDI ou dispositivos MIDI externos, conectados à função USB
MIDI. No entanto, deve ficar claro que a parte da discussão que envolve o comportamento do Host existe apenas
para completar o quadro completo e não impõe quaisquer regras de implementação ao software do Host. Esta
especificação está limitada apenas à especificação do comportamento da função USB MIDI.

Figura 8: Dispositivo USB MIDI 2.0 – Intercalando até 16 grupos em cada endpoint

21
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

4.1 Comunicação do Host para Função MIDI USB


Os dados MIDI enviados de aplicativos no Host para conexões de saída MIDI no Host são
transportado por USB para IN Group Terminais na função USB MIDI:

Vários aplicativos podem querer enviar fluxos de dados MIDI para a função USB MIDI. O formato de dados utilizado
para comunicação é o Pacote MIDI Universal que suporta até 16 Grupos UMP no dispositivo. Para enviar
fluxos de dados MIDI para a função USB MIDI, os aplicativos Host se conectam a qualquer terminal IN Group
exposto pelo dispositivo por meio de uma porta de saída Host MIDI. O conversor MIDI USB recebe os pacotes
MIDI universais recebidos do host. Ele roteia os fluxos de dados MIDI originais para o Terminal de Grupo IN
adequado, de acordo com o campo Grupo incorporado em cada Pacote MIDI Universal. Existe um relacionamento
individual entre o valor do campo Grupo no Pacote MIDI Universal e o Terminal IN Group. O IN Group Terminal é
membro de um Group Terminal Block que está associado a um único MIDI OUT Endpoint. Uma vez presente no
Terminal IN Group, a função USB MIDI roteia e utiliza os dados de acordo com seu design interno.

4.2 Comunicação da função USB MIDI para o host


Dados MIDI enviados de funções na função MIDI USB para terminais de grupo OUT no USB
A função MIDI é transportada por USB para conexões de entrada MIDI no Host:

Várias entidades na função USB MIDI podem querer enviar fluxos de dados MIDI para o Host. Em geral, vários
grupos UMP de fluxos de dados MIDI, originados de diferentes componentes dentro da função USB MIDI de
acordo com o campo Grupo incorporado em cada pacote MIDI universal, chegam aos diferentes terminais do
grupo OUT. Existe um relacionamento individual entre o valor do campo Grupo no Pacote MIDI Universal e no
Terminal de Grupo OUT. O OUT Group Terminal é membro de um Group Terminal Block que está associado a
um único MIDI IN Endpoint. O USB MIDI Converter multiplexa todos os fluxos de dados MIDI em um único fluxo de
dados MUX MIDI. Este fluxo de dados MUX MIDI é enviado por um canal USB para o Host. O software Host então
inspeciona os pacotes de dados MIDI USB MUX-MIDI recebidos, extrai os dados MIDI dos pacotes e roteia os
fluxos de dados MIDI originais para os aplicativos apropriados.

via portas de entrada Host MIDI, de acordo com o valor do campo Group no Universal MIDI
Pacotes.

22
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

5 descritores de configuração
5.1 Descritores Principais
Um conjunto de descritores USB principais descreve o tipo de dispositivo e a classe básica de funcionalidade. Todos os
dispositivos devem incluir estes descritores obrigatórios:

1. Descritor de dispositivo
• Conforme definido pela especificação USB
2. Descritor de configuração
• Conforme definido pela especificação USB

Se um dispositivo contiver uma configuração alternativa compatível com a especificação de classe de


dispositivo USB para dispositivos MIDI versão 1.0, o dispositivo também deverá incluir estes descritores:

3. Descritor de interface AudioControl (AC) padrão


• Conforme definido pelas especificações de classe de áudio USB
• Para fins legados, MIDI é definido como uma subclasse de classe de áudio.
4. Descritor de interface AudioControl (AC) específico da classe
• Conforme definido pelas especificações de classe de áudio USB
• Declara a interface MIDIStreaming (MS) que pertence a este controle de áudio
Interface.

5.2 Descritores de Interface MIDIStreaming

5.2.1 Descritor de interface MS padrão

O descritor de interface MIDIStreaming (MS) padrão é idêntico ao descritor de interface padrão definido na Seção 9.6.3
da Especificação USB, exceto que alguns campos agora possuem valores dedicados.

Tabela 5-1: Descritor de interface MIDIStreaming padrão

Desvio Campo Descrição do valor do tamanho


0 comprimento 1 Número Tamanho deste descritor, em bytes: 9

1 bDescriptorType 1 Tipo de descritor INTERFACE constante

2 bInterfaceNumber 1 Número Número da interface. Um valor baseado em zero


identificar o índice na matriz de interfaces
simultâneas suportadas por esta configuração.

3 bAlternateSetting 1 Número Valor usado para selecionar uma configuração


alternativa para a interface identificada no campo anterior.

4 bNumEndpoints 1 Number Número de endpoints MIDI usados por esta interface


(excluindo o endpoint 0).

5 bInterfaceClass 1 Classe ÁUDIO. Código de classe da interface de áudio. Definir como 0x01

6 bInterfaceSubClass 1 Subclasse MIDISTREAMING. Interface de áudio


Código da subclasse. Defina como 0x03.

23
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Desvio Campo Descrição do valor do tamanho


7 bInterfaceProtocolo 1 Protocolo Não utilizado. Deve ser definido como 0x00.

8 iInterface 1 Índice Índice de um descritor de string que descreve esta


interface.

5.2.2 Descritor de interface MS específico de classe

O descritor de interface MS específico de classe contém apenas* o descritor de cabeçalho de interface MS específico de classe.

*No USB MIDI 1.0 contém a concatenação de todos os descritores usados para descrever completamente a
interface.

5.2.2.1 Descritor de cabeçalho de interface MS específico de classe

O campo bcdMSC identifica o lançamento da especificação de subclasse MIDIStreaming com a qual esta função USB
MIDI e seus descritores são compatíveis. O campo bDescriptorType identifica o descritor como sendo um descritor de
interface específico de classe. O bDescriptorSubtype
campo qualifica ainda mais a natureza exata do descritor. O campo wTotalLength preenche uma função crítica no USB
MIDI 1.0, portanto, o campo é incluído para conformidade, embora não tenha função no USB MIDI 2.0.

A tabela a seguir define o descritor de cabeçalho de interface MS específico da classe.


Tabela 5-2: Descritor de cabeçalho de interface MS específico de classe

Desvio Campo Descrição do valor do tamanho

0 comprimento 1 Número Tamanho deste descritor, em bytes: 7

1 bDescriptorType 1 Tipo de descritor CS_INTERFACE constante.

2 bDescriptorSubtype 1 Subtipo do descritor MS_HEADER constante.

3 bcdMSC 2 Número de versão da especificação da subclasse BCD


MIDIStreaming em decimal codificado em
binário. Defina como 0x0200.

5 wComprimentoTotal 2 Número definido como 7. Este campo não é usado neste 2.0
versão da classe USB MIDI, mas está aqui para
conformidade com a classe USB MIDI 1.0. Nesta
versão, defina para corresponder ao valor do campo
bLength deste cabeçalho de interface MS
específico da classe. (Ver Seção 5.2.2)

5.3 Descritores de endpoint de streaming MIDI


Os parágrafos a seguir descrevem os descritores que caracterizam completamente o(s) endpoint(s) usado(s) para
transportar fluxos de dados MIDI de e para a função USB MIDI. Os dispositivos podem usar endpoints em massa ou de
interrupção para transportar fluxos de dados MIDI.

5.3.1 Descritor de endpoint de dados de streaming MIDI padrão

O descritor de endpoint de dados de streaming MIDI padrão é idêntico ao descritor de endpoint padrão definido na
Seção 9.6.4, “Endpoint”, da especificação USB e expandido conforme definido na especificação de classe de barramento
serial universal. D7 do campo bEndpointAddress indica se o endpoint é uma fonte de dados MIDI (D7 = 1) ou um
coletor de dados MIDI (D7 = 0). O

24
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

bmAttributes Os bits do campo são definidos para declarar se o tipo de terminal é em massa ou interrompido. O tipo de
sincronização é indicado por D3..2 e deve ser definido como Nenhum.
Tabela 5-3: Descritor padrão de endpoint de dados MS

Desvio Campo Descrição do valor do tamanho


0 comprimento 1 Número Tamanho deste descritor, em bytes: 7

1 bDescriptorType 1 Tipo de descritor ENDPOINT constante

2 bEndpointAddress 1 Endpoint O endereço do endpoint no dispositivo USB descrito por


este descritor. O endereço é codificado da seguinte
forma:
D7: Direção.
0 = ponto final de SAÍDA
1 = ponto final IN
D6..4: Reservado, zerado
D3..0: O número do terminal,
determinado pelo projetista.

3 atributos bm 1 Mapa de bits D7..4: Reservado


D3..2: Tipo de sincronização
00 = Nenhum
D1..0: Tipo de transferência
10 = Massa
D1..0: Tipo de transferência
11 = Interromper

4 wMaxPacketSize 2 Número Tamanho máximo do pacote que este endpoint é


capaz de enviar ou receber quando esta configuração
é selecionada.

6 bIntervalo 1 Intervalo numérico para endpoint de sondagem para interrupção de


transferências de dados.

Para endpoints em massa, esse campo é ignorado e


deve ser redefinido como 0.

Nota: Na especificação USB MIDI 1.0, o Standard MIDI Streaming Data Endpoint Descriptor
inclui dois campos adicionais, bRefresh e bSynchAddress. Esses campos não estão incluídos no USB MIDI 2.0.

5.3.2 Descritor de endpoint de dados de streaming MIDI específico da classe

Cada terminal de dados de streaming MIDI deve relatar conexões de streaming de dados para terminais de grupo,
declarando associação aos blocos de terminais de grupo. O campo bNumGrpTrmBlock contém o número de blocos
terminais de grupo associados a este endpoint de dados de streaming MIDI.

A matriz baAssocGrpTrmBlkID() contém os IDs dos blocos terminais de grupo associados


para este endpoint de streaming MIDI. O número de blocos terminais de grupo na função USB MIDI e os IDs de todos os
blocos terminais de grupo são declarados na coleção de todos os descritores de endpoint MS específicos de classe
disponíveis.
O número de membros de terminais de grupo em todos os blocos de terminais de grupo associados de um endpoint de
streaming MIDI deve ser de pelo menos 1 e não mais que 16 terminais de grupo.

25
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Tabela 5-4: Descritor de endpoint de dados MS específico da classe

Desvio Campo Valor do tamanho Descrição

0 comprimento 1 Número Tamanho deste descritor, em bytes: 4+n


1 bDescriptorType 1 Constante CS_ENDPOINT
2 bDescriptorSubType 1 Constante MS_GENERAL_2_0
3 1 Número Número de blocos terminais do grupo: n.
bNumGrpTrmBlock
4 baAssoGrpTrmBlkID(1) 1 ID do número do primeiro bloco terminal de grupo
associado a esse terminal.
... ... ... ... ...

3+n baAssoGrpTrmBlkID(n) 1 ID do número do último bloco terminal de grupo associado


a esse terminal.

26
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

5.4 Descritores de blocos terminais de grupo específicos de classe –


Recuperável por uma solicitação Get separada
Os descritores a seguir são recuperados por um comando Get Descriptors (consulte a Seção 6).
A função USB MIDI deve ter um ou mais blocos terminais de grupo. Dois tipos de descritores de bloco terminal de grupo
representam e descrevem os terminais de grupo da função USB MIDI.

1. Um descritor de cabeçalho de bloco terminal de grupo declara o tamanho total de todos os descritores de bloco terminal
de grupo.
2. Os descritores do Bloco Terminal de Grupo declaram quais Terminais de Grupo são membros desse Bloco e
descrevem as características funcionais compartilhadas desses Terminais de Grupo membros.
Os IDs do bloco terminal de grupo são encontrados em descritores de endpoint de dados MS específicos de
classe.
Os primeiros três campos são comuns aos descritores de cabeçalho do bloco terminal de grupo e a todos os descritores do
bloco terminal de grupo. Eles contêm o comprimento do descritor, o tipo do descritor e o subtipo do descritor.

5.4.1 Descritor de cabeçalho do bloco terminal de grupo específico de classe

A função USB MIDI deve fornecer um descritor de cabeçalho de bloco de terminal de grupo que declara o tamanho total de
todos os descritores de bloco de terminal de grupo.
Tabela 5-5: Descritor de cabeçalho de terminal de grupo específico de classe

Desvio Campo Descrição do valor do tamanho

0 comprimento 1 Número Tamanho deste descritor, em bytes: 5

1 bDescriptorType 1 Constante CS_GR_TRM_BLOCK

2 bDescriptorSubtype 1 Constante GR_TRM_BLOCK_HEADER

3 wComprimentoTotal 2 Número Número total de bytes retornados para os


descritores do Bloco Terminal de Grupo
específicos da classe. Inclui o comprimento
combinado deste descritor de cabeçalho e de
todos os descritores do bloco terminal de grupo.

5.4.2 Descritor do Bloco Terminal de Grupo

A função USB MIDI deve fornecer um descritor de bloco terminal de grupo para cada bloco terminal de grupo declarado
pelos pontos finais de dados de streaming MIDI. Cada Descritor de Bloco Terminal de Grupo descreve a coleção de
Terminais de Grupo que são membros desse Bloco Terminal de Grupo.

Cada bloco terminal de grupo recebe um número de identificação exclusivo, o bGrpTrmBlkID.


O valor 0x00 é reservado para ID indefinido, restringindo efetivamente o número total de blocos de terminais de
grupo endereçáveis na função USB MIDI para 255
Os descritores do bloco terminal de grupo incluem as seguintes informações específicas da classe:

• Tipo de bloco terminal de grupo (bGrpTrmBlkType) – declara se todos os membros


Os terminais de grupo são configurados como:

o Conexões bidirecionais 0x00 usadas para par de entrada/saída MIDI-CI. Cada grupo IN
O membro do terminal possui um terminal de grupo OUT correspondente.

27
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Nota: Se existir uma conexão bidirecional, mas não funcionar como um par para fins de MIDI-CI,
o dispositivo deverá usar dois blocos de terminais de grupo separados, um bloco de
terminais de grupo para terminais de grupo IN e um bloco de terminais de grupo separado para
grupos OUT. Terminais.
o 0x01 Somente terminais de grupo IN

o 0x02 OUT apenas terminais de grupo

• Número do primeiro terminal de grupo (nGroupTrm) – Cada bloco de terminais de grupo declara um conjunto de um
ou mais terminais de grupo como membros do bloco de terminais de grupo. Este valor é o número do Terminal do
Grupo, 0x0 a 0xF, com o número mais baixo que é membro deste Bloco Terminal do Grupo.

o 0x0 a 0xF = Agrupar Terminal 1 para Grupo Terminal 16. Agrupar Terminal 1 para Grupo
O Terminal 16 transporta respectivamente dados do Grupo 1 ao Grupo 16.
• Número de números de terminais de grupo (nNumGroupTrm) – A contagem de números de terminais de grupo
Números de terminais para membros do bloco terminal de grupo. Os membros do bloco terminal de grupo são
numerados de [nGroupTrm] a [nGroupTrm + (nNumGroupTrm -
1)].
Nota: A contagem de terminais de grupo (vs. números de terminais de grupo) no bloco de terminais de
grupo é igual a este valor quando bGrpTrmBlkType é definido como 0x01 IN Group Terminals
Only ou definido como 0x02 OUT Group Terminals Only. Quando bGrpTrmBlkType é definido
como 0x00 Conexões bidirecionais usadas para par de entrada/saída MIDI-CI, cada par de entrada/
saída compartilha um número de terminal de grupo e a contagem de terminais de grupo no bloco de
terminais de grupo é (valor x 2).

Exemplos usando bGrpTrmBlkType, nGroupTrm e nNumGroupTrm


• bGrpTrmBlkType = 0x01, nGroupTrm = 0x00 e nNumGroupTrm = 3:
Existem três membros do terminal do grupo IN, numerados 1, 2 e 3. Esses terminais de grupo recebem
pacotes MIDI universais com valores de campo de grupo de 1, 2 e 3, respectivamente.

• bGrpTrmBlkType = 0x02, nGroupTrm = 0x06 e nNumGroupTrm = 5:


Existem cinco membros terminais do grupo OUT numerados 7, 8, 9, 10 e 11. Esses terminais de grupo enviam
pacotes MIDI universais com valores de campo de grupo de 7, 8, 9, 10 e 11, respectivamente.

• bGrpTrmBlkType = 0x00, nGroupTrm = 0x00 e nNumGroupTrm = 3:


Existem seis terminais de grupo. Existem três membros do terminal do grupo IN, numerados 1, 2 e 3. Esses
terminais de grupo recebem pacotes MIDI universais com campo de grupo
valores de 1, 2 e 3 respectivamente. Há também três membros do Terminal do Grupo OUT,
numerados 1, 2 e 3. Esses terminais de grupo enviam pacotes MIDI universais com valores de campo de grupo
de 1, 2 e 3, respectivamente.

• Protocolo padrão (bMIDIProtocol) – Os terminais de grupo que são membros do bloco de terminais de grupo
podem ter um protocolo MIDI padrão. Se o protocolo padrão de um terminal de grupo for desconhecido, a
negociação do protocolo MIDI-CI poderá ser usada para descobrir o protocolo atual. MIDI-CI também pode ser
usado para definir uma escolha de protocolo diferente naquele terminal de grupo.

28
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

o 0x00 = Desconhecido (Use MIDI-CI)


o 0x01 = MIDI 1.0, suporta UMP de até 64 bits. (padrão)
o 0x02 = MIDI 1.0, suporta UMP de até 64 bits. Usa redução de jitter
Carimbos de data e hora.

o 0x03 = MIDI 1.0, suporta UMP de até 128 bits.


o 0x04 = MIDI 1.0, suporta UMP de até 128 bits. Usa redução de jitter
Carimbos de data e hora.

o 0x11 = MIDI 2.0


o 0x12 = MIDI 2.0. Usa carimbos de data e hora de redução de jitter.
• Capacidade máxima de largura de banda (wMaxInputBandwidth) – Esta é a largura de banda
capacidade de recepção dos componentes MIDI conectados aos terminais do grupo IN neste bloco de terminais do
grupo. A largura de banda é compartilhada por todos os terminais do grupo. Isto é independente dos
mecanismos de transporte USB que determinam ou influenciam a largura de banda no transporte, como tamanho
máximo do pacote, intervalo de serviço, NAK e nova tentativa, etc. Este valor geralmente reflete os recursos de
análise da função MIDI para ajudar os aplicativos no host a otimizar seu uso. de dados MIDI. Valores permitidos:

o 0x0000 = A capacidade de largura de banda é desconhecida ou não é um valor fixo.


o 0x0001 a 0xFFFF = número de 4KB/segundo

o 0x0001 = Representação arredondada da taxa de transmissão clássica do MIDI de 31,25kb/s.

• Capacidade máxima de largura de banda (wMaxOutputBandwidth) – Esta é a largura de banda


capacidade de envio dos componentes MIDI conectados aos terminais do grupo OUT neste bloco de terminais
do grupo. A largura de banda é compartilhada por todos os terminais do grupo. Isto é independente dos
mecanismos de transporte USB que determinam ou influenciam a largura de banda no transporte, como tamanho
máximo do pacote, intervalo de serviço, NAK e nova tentativa, etc. Este valor reflete os recursos de geração da
função MIDI para ajudar os aplicativos no host a otimizar seu uso de Dados MIDI. Valores permitidos:

o 0x0000 = A capacidade de largura de banda é desconhecida ou não é um valor fixo.


o 0x0001 a 0xFFFF = número de 4KB/segundo

o 0x0001 = Representação arredondada da taxa de transmissão clássica do MIDI de 31,25kb/s.

5.4.2.1 Descritor do Bloco Terminal de Grupo


Tabela 5-6: Descritor do Bloco Terminal de Grupo

Desvio Campo Descrição do valor do tamanho


0 comprimento 1 Tamanho constante deste descritor, em bytes: 13

1 bDescriptorType 1 Constante CS_GR_TRM_BLOCK

2 bDescriptorSubtype 1 Constante GR_TRM_BLOCK

3 bGrpTrmBlkID 1 ID constante deste bloco terminal de grupo

4 bGrpTrmBlkType 1 Tipo de bloco terminal de grupo constante:


0x00:bidirecional
0x01: Somente terminais do grupo IN
0x02: Somente terminais do grupo OUT

29
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Desvio Campo Descrição do valor do tamanho


5 nGroupTrm 1 Número O primeiro terminal de grupo membro neste bloco,
com Número que é o valor do campo Grupo UMP para todas as
mensagens nesse Terminal de Grupo. 0x00 – 0x0F
nNumGroupTrm
6 1 Número Número de terminais do grupo membro estendidos.
Os terminais de grupo incluídos possuem números
incrementais contíguos.

7 iBlockItem 1 ID do número do descritor STRING para representação da UI de


Bloquear item

8 protocolo bMIDI 1 Protocolo MIDI padrão constante, todos os terminais de grupo.


0x00 = Desconhecido (Use MIDI-CI)
0x01 = MIDI 1.0, suporta UMP de até 64 bits
tamanho.

0x02 = MIDI 1.0, suporta UMP de até 64 bits. Usa carimbos


de data e hora de redução de jitter.
0x03 = MIDI 1.0, suporta UMP de até 128 bits
tamanho.

0x04 = MIDI 1.0, suporta UMP de até 128 bits. Usa carimbos
de data e hora de redução de jitter.
0x11 =MIDI 2.0

0x12 =MIDI 2.0. Usa redução de jitter


Carimbos de data e hora.

9 wMaxInputBandwidth 2 Capacidade máxima de largura de banda de entrada em


4 KB/segundo. 0x0000 – 0xFFFF. A largura de banda é total para
este Bloco, compartilhada entre todos os Terminais do
Grupo IN.
0x0000 = Desconhecido ou Não Corrigido.

0x0001 = Versão arredondada de 31,25kb/s

11 wMaxOutputBandwidth 2 Capacidade máxima de largura de banda de saída em


4 KB/segundo. 0x0000 – 0xFFFF. A largura de banda é total para
este Bloco, compartilhada entre todos os Terminais do
Grupo OUT.
0x0000 = Desconhecido ou Não Corrigido.

0x0001 = Versão arredondada de 31,25kb/s

30
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

6 Comando Específico de Classe: Blocos Terminais de Grupo


Solicitação de Descritores

Essa solicitação recupera o conjunto completo de todos os descritores do Group Terminal Block.
A aplicação geral é comumente definida por USB. Um Host pode enviar esta solicitação com wLength
definido como 0x05 para recuperar o descritor de cabeçalho de terminal de grupo específico da classe, que inclui um
valor wTotalLength. Em seguida, o Host pode usar a mesma solicitação com wLength definido como o valor
wTotalLength do descritor de cabeçalho de terminal de grupo específico da classe para recuperar o conjunto completo
de todos os descritores de bloco de terminais de grupo.

bmRequestType 0b10000001

bSolicitar GET_DESCRIPTOR (0x06)

wValor CS_GR_TRM_BLOCK em byte alto (0x26), número de configuração alternativo em byte baixo

wIndex Número da interface

comprimento Comprimento dos dados a serem recuperados.

Fornecer o número de configuração alternativa correspondente no byte inferior permite larguras de banda
ajustadas em diferentes configurações alternativas. (Configurações alternativas de endpoint em massa e de interrupção.)

31
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Apêndice A. Códigos de classe de dispositivos de áudio: MIDIStreaming

A.1 Tipos de descritores de interface específicos de classe MS

Subtipo do descritor Valor


CS_UNDEFINED 0x20

CS_DEVICE 0x21

CS_CONFIGURAÇÃO 0x22

CS_STRING 0x23

CS_INTERFACE 0x24

CS_ENDPOINT 0x25

CS_GR_TRM_BLOCK 0x26

A.1 Subtipos de descritores de interface específicos de classe MS

Subtipo do descritor Valor


MS_DESCRIPTOR_UNDEFINED 0x00

MS_HEADER 0x01

MIDI_IN_JACK 0x02

MIDI_OUT_JACK 0x03

ELEMENTO 0x04

A.2 Subtipos de descritores de endpoint específicos da classe MS

Subtipo do descritor Valor


DESCRIPTOR_UNDEFINED 0x00

MS_GENERAL 0x01

MS_GENERAL_2_0 0x02

A.3 Subtipos de descritores de bloco terminal de grupo específico


de classe MS

Subtipo do descritor Valor


GR_TRM_BLOCK_UNDEFINED 0x00

GR_TRM_BLOCK_HEADER 0x01

GR_TRM_BLOCK 0x02

32
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

A.4 Revisão da classe MIDIStreaming do cabeçalho da interface MS


Revisão da classe MIDIStreaming Valor

MS_MIDI_1_0 0x0100

MS_MIDI_2_0 0x0200

A.5 Tipos de conectores MS MIDI IN e OUT


Tipo de entrada MIDI IN e OUT Valor

JACK_TYPE_UNDEFINED 0x00

INTEGRADO 0x01

EXTERNO 0x02

A.6 Tipo de Bloco Terminal de Grupo


Tipo de bloco terminal de grupo Valor

BIDIRECIONAL 0x00

INPUT_ONLY 0x01

SAÍDA_ONLY 0x02

A.7 Protocolo MIDI padrão do terminal de grupo


Protocolo MIDI padrão Valor

USE_MIDI_CI 0x00

MIDI_1_0_UP_TO_64_BITS 0x01

MIDI_1_0_UP_TO_64_BITS_AND_JRTS 0x02

MIDI_1_0_UP_TO_128_BITS 0x03

MIDI_1_0_UP_TO_128_BITS_AND_JRTS 0x04

MIDI_2_0 0x11

MIDI_2_0_AND_JRTS 0x12

A.8 Número do Terminal do Grupo (Grupo de Pacotes MIDI Universal)


Número do terminal do grupo Valor

GRUPO 1 0x00

GRUPO_2 0x01

GRUPO_3 0x02

33
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Número do terminal do grupo Valor

GRUPO_4 0x03

GRUPO_5 0x04

GRUPO_6 0x05

GRUPO_7 0x06

GRUPO_8 0x07

GRUPO_9 0x08

GRUPO_10 0x09

GRUPO_11 0x0A

GRUPO_12 0x0B

GRUPO_13 0x0C

GRUPO_14 0x0D

GRUPO_15 0x0E

GRUPO_16 0x0F

34
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Apêndice B. Exemplo 1: Instrumento MIDI Simples


(Informativo)
O exemplo a seguir mostra os descritores para um dispositivo MIDI simples, que com um conjunto de descritores,
é projetado para ser conectado a:
1. Um host USB com um driver para USB MIDI 1.0, usando a configuração alternativa nº 0 na interface nº 1
ou
2. Um host USB com um driver para USB MIDI 2.0, usando a configuração alternativa nº 1 na interface nº 1.

Descritores para a implementação USB MIDI 1.0 na configuração alternativa 0:


1. Os descritores de endpoint relatam conexões com conectores MIDI incorporados
2. Descritores de Jack MIDI incorporados relatam conexões de topologia de ou para cada Jack para o Elemento
Sintetizador.
3. O descritor Element relata os recursos do Sintetizador.

Descritores para a implementação USB MIDI 2.0 na Configuração Alternativa 1:


1. Descritores de terminais relatam associações a blocos de terminais de grupo que possuem terminais
de grupo como membros dos blocos de terminais de grupo.
2. O descritor do bloco terminal de grupo relata a associação do par de entrada e saída de grupos
Terminais. Esta associação de entrada e saída atende transações MIDI-CI bidirecionais. As
capacidades do Sintetizador podem ser descobertas pelo uso de mensagens MIDI-CI trocadas nos
fluxos MIDI de e para o Terminal de Grupo associado.

35
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.1 Exemplo 1 Descritor de Dispositivo e Configuração


B.1.1 Descritor de dispositivo
Tabela B-1: Descritor do Dispositivo

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x12 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x01 Descritor de DISPOSITIVO.

2 bcdUSB 2 0x0110 1.10 - Revisão da especificação USB.

4 bDeviceClass 1 0x00 Dispositivo definido no nível da interface.

5 bDeviceSubClass 1 0x00 Não utilizado.

6 bDeviceProtocol 1 0x00 Não utilizado.

7 bMaxPacketSize0 1 0x08 8 bytes.

8 idVendor 2 0xXXXX ID do fornecedor.

10 idProduto 2 0xXXXX ID do produto.

12 bcdDispositivo 2 0xXXXX Código de liberação do dispositivo.

14 iFabricante 1 0x01 Índice para o descritor de string que contém a string


<Your Name> em Unicode.

15 iProduto 1 0x02 Índice para o descritor de string que contém a string


<Your Product Name> em Unicode.

16 iSerialNumber 1 0x03 Índice para o descritor de string que contém o


número de série do dispositivo.

17 bNumConfigurações 1 0x01 Uma configuração.

B.1.2 Descritor de Configuração


Tabela B-2: Descritor de Configuração

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x02 Descritor de CONFIGURAÇÃO.

2 wComprimentoTotal 2 0x00XX Comprimento do bloco de configuração total,


incluindo este descritor, em bytes.

4 bNumInterfaces 1 0x02 Duas interfaces. Interface de controle de áudio


e interface de streaming MIDI.

5 bConfigurationValor 1 0x01 ID desta configuração.

6 iConfiguração 1 0x00 Não utilizado.

7 atributos bm 1 0x80 Dispositivo alimentado por barramento, não com alimentação


própria, sem capacidade de ativação remota.

8 Poder maximo 1 0x32 100 mA máx. consumo de energia.

36
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.2 Exemplo 1 Descritores de Interface AudioControl


A interface AudioControl descreve a estrutura do dispositivo (topologia da função de áudio) e é usada para manipular
os Controles de Áudio. Este dispositivo não possui função de áudio incorporada. No entanto, a interface AudioControl
é obrigatória e, portanto, tanto o descritor de interface AC padrão quanto o descritor de interface AC específico da
classe devem estar presentes. O descritor de interface AC específico da classe contém apenas o descritor
de cabeçalho.

B.2.1 Descritor de interface CA padrão


A interface AudioControl não possui terminais dedicados associados a ela. Ele usa o pipe padrão (ponto final 0) para
todos os fins de comunicação. Solicitações AudioControl específicas da classe são enviadas usando o canal
padrão. Não há endpoint de interrupção de status fornecido.
Tabela B-3: Descritor de interface CA padrão

Desvio Campo Valor do tamanho Descrição

0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x04 Descritor de INTERFACE.

2 bInterfaceNumber 1 0x00 Índice desta interface.

3 bAlternateSetting 1 0x00 Índice desta configuração.

4 bNumEndpoints 1 0x00 0 pontos finais.

5 bInterfaceClass 1 0x01 ÁUDIO.

6 bInterfaceSubclasse 1 0x01 ÁUDIO_CONTROL.

7 bInterfaceProtocolo 1 0x00 Não utilizado.

8 iInterface 1 0x00 Não utilizado.

B.2.2 Descritor de interface AC específico da classe


O descritor de interface AC específico da classe é sempre encabeçado por um descritor Header que contém
informações gerais sobre a interface AudioControl. Ele contém todos os ponteiros necessários para descrever
a Coleção de Interface de Áudio, associada à função de áudio descrita. Somente o descritor Header está presente
neste dispositivo porque ele não contém nenhuma funcionalidade de áudio propriamente dita.

Tabela B-4: Descritor de interface CA específico da classe

Desvio Campo Valor do tamanho Descrição

0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 CS_INTERFACE.

2 bDescriptorSubtype 1 0x01 subtipo HEADER.

3 bcdADC 2 0x0100 Revisão da especificação da classe de áudio - 1.0

5 wComprimentoTotal 2 0x0009 Tamanho total dos descritores específicos da classe.

7 bInCollection 1 0x01 Número de interfaces de streaming.

8 baInterfaceNr(1) 1 0x01 A interface MIDIStreaming 1 pertence a esta


interface AudioControl.

37
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.3 Exemplo 1 Descritores de interface MIDIStreaming (na configuração


alternativa 0x00 para USB MIDI 1.0)

B.3.1 Descritor de interface MS padrão


Tabela B-5: Descritor de interface MS padrão

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x04 Descritor de INTERFACE.

2 bInterfaceNumber 1 0x01 Índice desta interface.

3 bAlternateSetting 1 0x00 Índice desta configuração alternativa.

4 bNumEndpoints 1 0x02 2 pontos finais.

5 bInterfaceClass 1 0x01 ÁUDIO.

6 bInterfaceSubclasse 1 0x03 MIDISTREAMING.

7 bInterfaceProtocolo 1 0x00 Não utilizado.

8 iInterface 1 0x00 Não utilizado.

B.3.2 Descritor de interface MS específico de classe


Tabela B-6: Descritor de cabeçalho de interface MS específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x07 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x01 Subtipo MS_HEADER.

3 bcdMSC 2 0x0100 Revisão desta especificação de classe.

5 wComprimentoTotal 2 0x0041 Tamanho total dos descritores específicos da classe.

B.3.3 Descritor de tomada MIDI IN


Tabela B-7: Descritor MIDI IN Jack (incorporado)

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x06 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x02 Subtipo MIDI_IN_JACK.

3 bJackType 1 0x01 INCORPORADO.

4 bJackID 1 0x01 ID deste Jack.

5 iJack 1 0x00 Não utilizado.

38
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.3.4 Descritor de tomada MIDI IN


Tabela B-8: Descritor MIDI IN Jack (Externo)

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x06 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x02 Subtipo MIDI_IN_JACK.

3 bJackType 1 0x02 EXTERNO.

4 bJackID 1 0x02 ID deste Jack.

5 iJack 1 0x00 Não utilizado.

B.3.5 Descritor do conector MIDI OUT


Tabela B-9: Descritor de tomada MIDI OUT (incorporado)

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x03 Subtipo MIDI_OUT_JACK.

3 bJackType 1 0x01 INCORPORADO.

4 bJackID 1 0x03 ID deste Jack.

5 bNrInputPins 1 0x01 Número de pinos de entrada deste conector.

6 BaFonteID(1) 1 0x02 ID da Entidade à qual este Pin está


conectado.

7 BaSourcePin(1) 1 0x01 Número do Pin de Saída da Entidade à qual


este Pin de Entrada está conectado.

8 iJack 1 0x00 Não utilizado.

B.3.6 Descritor do conector MIDI OUT (externo)


Tabela B-10: Descritor do conector MIDI OUT (externo)

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x03 Subtipo MIDI_OUT_JACK.

3 bJackType 1 0x02 EXTERNO.

4 bJackID 1 0x04 ID deste Jack.

5 bNrInputPins 1 0x01 Número de pinos de entrada deste conector.

6 BaFonteID(1) 1 0x01 ID da Entidade à qual este Pin está


conectado.

7 BaSourcePin(1) 1 0x01 Número do Pin de Saída da Entidade à qual


este Pin de Entrada está conectado.

8 iJack 1 0x00 Não utilizado.

39
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.4 Exemplo 1 Descritores de endpoint Bulk OUT (na configuração


alternativa 0x00 para USB MIDI 1.0)

B.4.1 Descritor de endpoint Bulk OUT padrão


Tabela B-11: Descritor de endpoint Bulk OUT padrão

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x05 Descritor ENDPOINT.

2 bEndpointAddress 1 0x01 SAÍDA Ponto final 1.

3 atributos bm 1 0x02 Em massa, não compartilhado.

4 wMaxPacketSize 2 0x0040 64 bytes por pacote.

6 bIntervalo 1 0x00 Ignorado para massa. Defina como zero.

7 bAtualizar 1 0x00 Não utilizado.

8 bSynchAddress 1 0x00 Não utilizado.

B.4.2 Descritor de endpoint MS Bulk OUT específico da classe


Tabela B-12: Descritor de endpoint Bulk OUT específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x05 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 Descritor 0x25 CS_ENDPOINT

2 bDescriptorSubtype 1 0x01 Subtipo MS_GENERAL.

3 bNumEmbMIDIJack 1 0x01 Número de conectores MIDI IN incorporados.

4 BaAssocJackID(1) 1 0x01 ID do conector MIDI IN incorporado.

B.5 Exemplo 1 Descritores de endpoint Bulk IN


(Na configuração alternativa 0x00 para USB MIDI 1.0)

B.5.1 Descritor de endpoint padrão Bulk IN


Tabela B-13: Descritor de endpoint padrão Bulk IN

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x05 Descritor ENDPOINT.

2 bEndpointAddress 1 0x81 NO Ponto Final 1.

3 atributos bm 1 0x02 Em massa, não compartilhado.

4 wMaxPacketSize 2 0x0040 64 bytes por pacote.

6 bIntervalo 1 0x00 Ignorado para massa. Defina como zero.

40
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Desvio Campo Valor do tamanho Descrição


7 bAtualizar 1 0x00 Não utilizado.

8 bSynchAddress 1 0x00 Não utilizado.

B.5.2 Descritor de endpoint MS Bulk IN específico da classe


Tabela B-14: Descritor de endpoint Bulk IN específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x05 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 Descritor 0x25 CS_ENDPOINT

2 bDescriptorSubtype 1 0x01 Subtipo MS_GENERAL.

3 bNumEmbMIDIJack 1 0x01 Número de conectores MIDI OUT incorporados.

4 BaAssocJackID(1) 1 0x03 ID do conector MIDI OUT incorporado.

B.6 Exemplo 1 Descritores de interface MIDIStreaming (na configuração alternativa 0x01


para USB MIDI 2.0)

B.6.1 Descritor de interface MS padrão


Tabela B-15: Descritor de interface MS padrão

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x09 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x04 Descritor de INTERFACE.

2 bInterfaceNumber 1 0x01 Índice desta interface.

3 bAlternateSetting 1 0x01 Índice desta configuração alternativa.

4 bNumEndpoints 1 0x02 2 pontos finais.

5 bInterfaceClass 1 0x01 ÁUDIO.

6 bInterfaceSubclasse 1 0x03 MIDISTREAMING.

7 bInterfaceProtocolo 1 0x00 Não utilizado.

8 iInterface 1 0x00 Não utilizado.

B.6.2 Descritor de cabeçalho de interface MS específico de classe


Tabela B-16: Descritor de cabeçalho de interface MS específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x07 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x24 Descritor CS_INTERFACE.

2 bDescriptorSubtype 1 0x01 Subtipo MS_HEADER.

41
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Desvio Campo Valor do tamanho Descrição


3 bcdMSC 2 0x0200 MS_MIDI_2_0 - Revisão desta especificação de
classe.

5 wComprimentoTotal 2 0x0007 Defina como 7. Este campo não é usado neste 2.0
versão da classe USB MIDI, mas está aqui para
conformidade com a classe USB MIDI 1.0.
Nesta versão, defina para corresponder ao valor
do campo bLength deste cabeçalho de interface
MS específico da classe.

B.7 Exemplo 1 Descritores de endpoint Bulk OUT (na configuração


alternativa 0x01 para USB MIDI 2.0)

B.7.1 Descritor de endpoint Bulk OUT padrão


Tabela B-17: Descritor de endpoint Bulk OUT padrão

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x07 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 0x05 Descritor ENDPOINT.

2 bEndpointAddress 1 0x01 SAÍDA Ponto final 1.

3 atributos bm 1 0x02 Em massa, não compartilhado.

4 wMaxPacketSize 2 0x0040 64 bytes por pacote.

6 bIntervalo 1 0x00 Ignorado para massa. Defina como zero.

B.7.2 Descritor de endpoint MS Bulk OUT específico da classe


Tabela B-18: Descritor de endpoint Bulk OUT específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x05 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 Descritor 0x25 CS_ENDPOINT

2 bDescriptorSubtype 1 0x02 Subtipo MS_GENERAL_2_0.

3 bNumGrpTrmBlock 1 0x01 Número de blocos terminais de grupo.

4 baAssoGrpTrmBlkID(1) 1 0x01 ID do bloco terminal de grupo associado a


esse terminal.

B.8 Exemplo 1 Descritores de endpoint Interrupt IN (na configuração


alternativa 0x01 para USB MIDI 2.0)

B.8.1 Descritor de endpoint de interrupção IN padrão


Tabela B-19: Descritor de endpoint de interrupção IN padrão

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x07 Tamanho deste descritor, em bytes.

42
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Desvio Campo Valor do tamanho Descrição


1 bDescriptorType 1 0x05 Descritor ENDPOINT.

2 bEndpointAddress 1 0x81 NO Ponto Final 1.

3 atributos bm 1 0x03 Interromper.

4 wMaxPacketSize 2 0x0040 64 bytes por pacote.

6 bIntervalo 1 0x01 Intervalo de pesquisa: 1ms.*

*O intervalo de pesquisa 0x01 é igual a 1ms neste caso porque este dispositivo de amostra é um dispositivo USB
Fullspeed. O valor e a faixa de valores podem ter um significado diferente em outras implementações de dispositivos que
usam outras velocidades de transferência USB, como Alta Velocidade ou Supervelocidade. Consulte Especificações USB.

B.8.2 Descritor MS Interrupt IN Endpoint específico da classe


Tabela B-20: Descritor de endpoint de interrupção IN específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x05 Tamanho deste descritor, em bytes.

1 bDescriptorType 1 Descritor 0x25 CS_ENDPOINT

2 bDescriptorSubtype 1 0x02 Subtipo MS_GENERAL_2_0.

3 bNumGrpTrmBlock 1 0x01 Número de blocos terminais de grupo.

4 baAssoGrpTrmBlkID (1) 1 0x01 ID do bloco terminal de grupo associado a esse


terminal.

B.9 Exemplo 1 Descritores de bloco terminal de grupo (na configuração alternativa 0x01
para USB MIDI 2.0)
Quando o Host envia uma Solicitação de Descritores de Blocos de Terminais de Grupo, o dispositivo retorna o
número de bytes solicitados do seguinte conjunto de descritores:

B.9.1 Descritor de cabeçalho de bloco terminal de grupo específico de classe


Tabela B-21: Descritor de cabeçalho do bloco terminal de grupo específico da classe

Desvio Campo Valor do tamanho Descrição


0 comprimento 1 0x05 Tamanho deste descritor, em bytes: 5

1 bDescriptorType 1 0x26 Tipo de descritor CS_GR_TRM_BLOCK.

2 bDescriptorSubtype 1 0x01 Subtipo do descritor GR_TRM_BLOCK_HEADER.

3 wComprimentoTotal 2 0x0012 Número total de bytes retornados para os descritores


do Group Terminal Block específicos da
classe. Inclui o comprimento combinado deste
descritor de cabeçalho e de todos os descritores
do bloco terminal de grupo.

43
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

B.9.2 Descritor do Bloco Terminal de Grupo


Tabela B-22: Descritor do Bloco Terminal de Grupo

Desvio Campo Valor do tamanho Descrição

0 comprimento 1 0x0D Tamanho deste descritor, em bytes: 13

1 bDescriptorType 1 0x26 Tipo de descritor CS_GR_TRM_BLOCK.

2 bDescriptorSubtype 1 0x02 Subtipo GR_TRM_BLOCK.

3 bGrpTrmBlkID 1 0x01 ID deste bloco terminal de grupo

4 bGrpTrmBlkType 1 0x00 bidirecional

5 nGroupTrm 1 0x00 Terminal de grupo número 1 (todos os dados do


o primeiro terminal usa o valor do grupo 0x00 = 1)

6 nNumGroupTrm 1 0x01 Número de terminais de grupo membros


abrangidos. = 1

7 iBlockItem 1 0x04 ID do descritor STRING para


representação da UI do item Block em Unicode.

8 protocolo bMIDI 1 0x00 Protocolo padrão desconhecido. Use a negociação


do protocolo MIDI-CI.

9 wMaxInputBandwidth 2 0x0001 Capacidade máxima de largura de banda de entrada em


4 KB/segundo. 0x0001 = 32kb/s (versão arredondada
de 31,25kb/s)

11 wMaxOutputBandwidth 2 0x0000 Capacidade máxima de largura de banda de saída em


4 KB/segundo. 0x0000 = Desconhecido ou Não
Corrigido.

B.10Exemplo 1 Obter solicitações de descritor


A seguir estão as solicitações do Host usadas para recuperar os descritores em B.9.1 e B.9.2 acima.

Tabela B-23: Primeira solicitação de descritores de blocos terminais do grupo Get

Campo Valor do tamanho Descrição

bmRequestType 1 0x81 Tipo de solicitação. Direção=Dispositivo para Host,


Tipo=Padrão, Destinatário=Interface

bSolicitar 1 0x06 Solicitação GET _DESCRIPTOR.

wValor 2 0x2601 Byte alto (0x26) = Tipo de descritor:


CS_GR_TRM_BLOCK

Byte baixo (0x01) = Número de configurações


alternativas.

wIndex 2 0x0001 Número da interface.

comprimento 2 0x0005 Comprimento do descritor solicitado. (0x05 = obter apenas


cabeçalho)*

44
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

A primeira solicitação descobre que o tamanho total de todos os descritores do bloco terminal de grupo neste
dispositivo de exemplo = 0x0012 (consulte a Seção B.9.1). Este valor é usado em uma segunda solicitação abaixo
para recuperar 18 bytes de todos os descritores do Group Terminal Block.

Tabela B-24: Segunda Solicitação de Descritores de Blocos Terminais do Grupo Get

Campo Valor do tamanho Descrição

bmRequestType 1 0x81 Tipo de solicitação. Direção=Dispositivo para Host,


Tipo=Padrão, Destinatário=Interface

bSolicitar 1 0x06 Solicitação GET_DESCRIPTOR.

wValor 2 0x2601 Byte alto (0x26) = Tipo de descritor:


CS_GR_TRM_BLOCK

Byte baixo (0x01) = Número de configurações


alternativas.

wIndex 2 0x0001 Número da interface.

comprimento 2 0x0012 Comprimento do descritor solicitado.

B.11Exemplo 1 Descritores de String


Quando o Host solicita um tipo de descritor String com um ID para um descritor String, o dispositivo de exemplo
retorna o descritor para esse ID dentre os seguintes descritores String:

Tabela B-25: ID do descritor de string 0

Desvio Campo Tamanho Valor Descrição

0 comprimento 1 0x04 Tamanho deste descritor, em bytes: 4

1 bDescriptorType 1 0x03 Descritor de string

2 wLANGS 2 0x0409 Código de idioma suportado


(0x0409 = Inglês - Estados Unidos)

Tabela B-26: ID do descritor de string 1

Desvio Campo Tamanho Valor Descrição

0 comprimento 1 0x24 Tamanho deste descritor, em bytes: 36

1 bDescriptorType 1 0x03 Descritor de string

2 bString 34 "Nome do fabricante" em Unicode

Tabela B-27: ID do descritor de string 2

Desvio Campo Tamanho Valor Descrição

0 comprimento 1 0x1A Tamanho deste descritor, em bytes: 26

1 bDescriptorType 1 0x26 Descritor de string.

2 bString 24 "Nome do Produto" em Unicode

45
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Tabela B-28: ID do descritor de string 3

Desvio Campo Tamanho Valor Descrição


0 comprimento 1 0x1C Tamanho deste descritor, em bytes: 28
1 bDescriptorType 1 0x03 Descritor de string
2 bString 26 "Número de série" em Unicode

Tabela B-29: ID do descritor de string 4

Desvio Campo Tamanho Valor Descrição


0 comprimento 1 0x18 Tamanho deste descritor, em bytes: 24
1 bDescriptorType 1 0x03 Descritor de string
2 bString 22 "Sintetizador" Descreve a função associada a este
bloco terminal de grupo, em
Unicode

46
Machine Translated by Google

Definição de classe de dispositivo USB para dispositivos MIDI, versão 2.0

Apêndice C. Limitação de topologia MIDI-CI (informativo)


Todos os terminais de grupo em um bloco devem ter NENHUM par de entrada/saída MIDI-CI ou TODOS os pares de
entrada/saída MIDI-CI para todos os grupos UMP membros.

47

Você também pode gostar