Escolar Documentos
Profissional Documentos
Cultura Documentos
Versão 2.0
5 de maio de 2020
1
Machine Translated by Google
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.
2,0 5 de maio de 2020 Segunda revisão da definição de classe de dispositivo Universal Serial Bus para dispositivos MIDI.
2
Machine Translated by Google
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.
3
Machine Translated by Google
Índice
1.1 Antecedentes: MIDI 1.0, MIDI 2.0 e USB ........................................ ...........................8 1.2
Finalidade .................... .................................................. .................................................. 8
4
Machine Translated by Google
5
Machine Translated by Google
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
Lista de mesas
Tabela 5-5: Descritor de cabeçalho de terminal de grupo específico de classe ...................................... ...........27
6
Machine Translated by Google
Tabela B-18: Descritor de endpoint Bulk OUT específico da classe ...................................... ................42
Lista de Figuras
Figura 8: Dispositivo USB MIDI 2.0 – Intercalando até 16 grupos em cada endpoint.................21
7
Machine Translated by Google
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.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
A Figura 1 mostra uma interface MIDI simples, que permitiria que muitos dispositivos MIDI não USB existentes
se conectassem ao USB.
9
Machine Translated by Google
• 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/.
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.
10
Machine Translated by Google
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).
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
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
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.
12
Machine Translated by Google
• 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
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.
14
Machine Translated by Google
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.
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:
15
Machine Translated by Google
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.
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.
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
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.
0x1 32 bits Mensagens comuns do sistema e em tempo real do sistema (exceto exclusivas do sistema)
17
Machine Translated by Google
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.
18
Machine Translated by Google
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.
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:
19
Machine Translated by Google
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:
20
Machine Translated by Google
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
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.
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
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
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.
5 bInterfaceClass 1 Classe ÁUDIO. Código de classe da interface de áudio. Definir como 0x01
23
Machine Translated by Google
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.
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.
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)
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
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
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.
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.
25
Machine Translated by Google
26
Machine Translated by Google
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.
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
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.
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
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
• 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).
• 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
29
Machine Translated by Google
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
30
Machine Translated by Google
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
wValor CS_GR_TRM_BLOCK em byte alto (0x26), número de configuração alternativo em byte baixo
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
CS_DEVICE 0x21
CS_CONFIGURAÇÃO 0x22
CS_STRING 0x23
CS_INTERFACE 0x24
CS_ENDPOINT 0x25
CS_GR_TRM_BLOCK 0x26
MS_HEADER 0x01
MIDI_IN_JACK 0x02
MIDI_OUT_JACK 0x03
ELEMENTO 0x04
MS_GENERAL 0x01
MS_GENERAL_2_0 0x02
GR_TRM_BLOCK_HEADER 0x01
GR_TRM_BLOCK 0x02
32
Machine Translated by Google
MS_MIDI_1_0 0x0100
MS_MIDI_2_0 0x0200
JACK_TYPE_UNDEFINED 0x00
INTEGRADO 0x01
EXTERNO 0x02
BIDIRECIONAL 0x00
INPUT_ONLY 0x01
SAÍDA_ONLY 0x02
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
GRUPO 1 0x00
GRUPO_2 0x01
GRUPO_3 0x02
33
Machine Translated by Google
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
35
Machine Translated by Google
36
Machine Translated by Google
37
Machine Translated by Google
38
Machine Translated by Google
39
Machine Translated by Google
40
Machine Translated by Google
41
Machine Translated by Google
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.
42
Machine Translated by Google
*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.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:
43
Machine Translated by Google
44
Machine Translated by Google
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.
45
Machine Translated by Google
46
Machine Translated by Google
47