Extensão de arquivo SMF. Formatos SMF Abrir arquivo smf

Se você tem um computador instalado software antivírus posso verificar todos os arquivos no computador, bem como cada arquivo separadamente... Você pode verificar qualquer arquivo clicando com o botão direito do mouse no arquivo e selecionando a opção apropriada para verificar a presença de vírus no arquivo.

Por exemplo, nesta figura, arquivo meu-arquivo.smf, então você precisa clicar com o botão direito neste arquivo e selecionar a opção no menu de arquivo "Verificar com AVG"... Selecionar essa opção abrirá o AVG Antivirus, que verificará a existência de vírus neste arquivo.


Às vezes, um erro pode resultar de instalação incorreta de software, que pode ser devido a um problema encontrado durante o processo de instalação. Pode interferir no seu sistema operacional vincule seu arquivo SMF ao software aplicativo correto influenciando o chamado "Associações de extensão de arquivo".

Às vezes simples reinstalando o Apache OpenOffice pode resolver seu problema ligando corretamente o SMF ao Apache OpenOffice. Em outros casos, problemas com associações de arquivos podem resultar de má programação de software desenvolvedor e você pode precisar entrar em contato com o desenvolvedor para obter mais assistência.


Adendo: Tente atualizar o Apache OpenOffice para a versão mais recente para garantir que os patches e atualizações mais recentes estejam instalados.


Pode parecer muito óbvio, mas muitas vezes o próprio arquivo SMF pode estar causando o problema... Se você recebeu um arquivo por meio de um anexo de e-mail ou baixou de um site e o processo de download foi interrompido (por exemplo, falta de energia ou outro motivo), o arquivo pode estar danificado... Se possível, tente obter uma nova cópia do arquivo SMF e tente abri-lo novamente.


Com cuidado: Um arquivo danificado pode causar danos colaterais a malware anterior ou preexistente em seu PC, por isso é muito importante que você tenha um antivírus atualizado em execução em seu PC o tempo todo.


Se o seu arquivo SMF relacionado ao hardware do seu computador para abrir o arquivo você pode precisar atualizar drivers de dispositivo relacionadas a este equipamento.

Este problema geralmente associado a tipos de arquivos de mídia que dependem do sucesso da abertura do hardware dentro do computador, por exemplo, placa de som ou placa de vídeo... Por exemplo, se você está tentando abrir um arquivo de áudio, mas não consegue abri-lo, pode ser necessário atualizar drivers da placa de som.


Adendo: Se, ao tentar abrir um arquivo SMF, você obter Mensagem de erro relacionada ao arquivo SYS, o problema provavelmente pode ser relacionado a drivers de dispositivos danificados ou desatualizados que precisam ser atualizados. Este processo pode ser facilitado usando um software de atualização de driver, como DriverDoc.


Se as etapas não resolverem o problema e você ainda está tendo problemas para abrir arquivos SMF, pode ser devido a falta de recursos de sistema disponíveis... Algumas versões de arquivos SMF podem exigir uma quantidade significativa de recursos (por exemplo, memória / RAM, capacidade de processamento) para abrir corretamente em seu computador. Esse problema ocorre com frequência se você estiver usando um hardware de computador bastante antigo e, ao mesmo tempo, um sistema operacional muito mais recente.

Esse problema pode ocorrer quando o computador tem dificuldade em concluir uma tarefa, pois o sistema operacional (e outros serviços em execução em segundo plano) podem consumir muitos recursos para abrir o arquivo SMF... Tente fechar todos os aplicativos em seu PC antes de abrir o StarMath Formula File. Ao liberar todos os recursos disponíveis em seu computador, você fornece um ambiente melhor para tentar abrir o arquivo SMF.


Se vocês completou todas as etapas acima e seu arquivo SMF ainda não abrir, talvez seja necessário executar atualização de equipamento... Na maioria dos casos, mesmo com versões de hardware mais antigas, o poder de processamento pode ainda ser mais do que adequado para a maioria dos aplicativos personalizados (a menos que você esteja fazendo muito trabalho intensivo de CPU, como renderização 3D, modelagem financeira / científica ou trabalho pesado de multimídia) ... Desta maneira, é provável que o seu computador não tenha memória suficiente(mais comumente chamado de "RAM" ou memória de acesso aleatório) para executar a tarefa de abrir um arquivo.

Parte 5 de uma série de artigos detalhando o protocolo MIDI.

Uma das três partes do protocolo MIDI é a especificação do formato de armazenamento de dados (lembre-se, as outras duas são o formato da mensagem e a especificação da interface de hardware). O formato da mensagem foi discutido nos três primeiros artigos da série, agora é a vez do formato de armazenamento. Foi proposto pela organização MMA no final de 1987 e foi denominado Arquivos MIDI Padrão (SMF).

O objetivo dos arquivos MIDI é permitir que eventos (ou seja, mensagens MIDI com registro de data e hora) sejam trocados entre vários dispositivos e programas. Antes do advento dos arquivos MIDI padrão, um arranjo preparado em um sequenciador não podia ser carregado em outro devido a incompatibilidades de formato. Isso não quer dizer que, com o advento do SMF, todos os fabricantes de sequenciadores mudaram para esse formato. Existem várias razões para isso, e também falaremos sobre elas hoje.

Uma vez que o armazenamento de informações está diretamente relacionado ao dispositivo dos sequenciadores, nos deteremos neste assunto com mais detalhes, mas apenas na medida em que for necessário para entender o SMF. E, sem dúvida, vamos dedicar um dos próximos artigos do ciclo aos sequenciadores.

Eventos
Uma mensagem MIDI com registro de data e hora é chamada evento... Diferentes unidades podem ser usadas para indicar marcações de tempo, pulsos internos, tempo no formato SMPTE, etc. É importante entender a diferença fundamental entre um evento e uma mensagem. A mensagem "vive" por uma fração de milissegundo de tempo real - desde o momento em que é gerada pela fonte até o momento em que é enviada ao receptor para execução. Ele pode ser detectado no processo de transmissão por um cabo MIDI na forma de um conjunto de pulsos. Um evento são alguns bytes de informação gravados na memória do dispositivo, com base nos quais uma mensagem será gerada no futuro, na hora marcada.

Por exemplo, o sequenciador pode armazenar um evento "escolha uma nota" com um carimbo de data / hora de 100 ms a partir do início da reprodução. Você pode editar este evento em duas dimensões: em primeiro lugar, altere os parâmetros da própria mensagem MIDI (neste caso, a afinação ou dinâmica da nota) e, em segundo lugar, mova a nota ao longo da faixa, ou seja, altere o tempo de execução da mensagem.

Os eventos aparecem na memória do sequenciador durante a gravação de mensagens MIDI. Quando você pressiona o botão Gravar, o sequenciador liga o gerador de pulso de hardware (tiques) e começa a "ouvir" a entrada MIDI especificada. Por exemplo, quando você pressiona uma tecla, a entrada recebe a mensagem "escolha uma nota". O sequenciador olha - aha, a mensagem chegou no vigésimo tique, e a grava na memória com um rótulo 20. Depois de alguns segundos, eles liberaram a tecla - a mensagem "remova a nota" veio, o gerador interno acenou alegremente 64 tiquetaques para o sequenciador naquele momento. O sequenciador salva uma mensagem com o rótulo 64. Agora estamos lidando com dois eventos - Note On e Note Off. O gerador de pulsos é ligado novamente durante a reprodução. Quando o 20º tique aparece, uma mensagem Note On é enviada para a saída MIDI do sequenciador, o 64º tique é um Note Off. Gravamos e depois reproduzimos as ações do artista!

Obviamente, o mesmo pode ser feito offline, ou seja, sem a necessidade de performance ao vivo. Clicando com o mouse no lugar certo da trilha (e tendo selecionado a duração da nota com antecedência), vamos construir na memória do sequenciador exatamente a imagem anterior.

Tipos de memória
Agora é a hora de aplicar dois termos de computador assustadores: memória primária e secundária. A memória primária (ou interna) é a memória do sequenciador onde as mensagens são gravadas e os eventos são armazenados durante toda a sessão. O conteúdo desta memória é apagado quando a alimentação é desligada. Esta interpretação é mais adequada para sequenciadores de hardware. Em sequenciadores de software, a memória primária é simplesmente a RAM do computador. Para armazenar o conteúdo da memória primária por um longo tempo, utiliza-se a memória secundária, ou seja, suportes de dados. Pode ser um disquete, disco rígido, cartão inteligente e assim por diante.

A quantidade de memória primária em sequenciadores de hardware e estações de trabalho (lembre-se, uma estação de trabalho é um gerador de tons e sequenciador em uma caixa) é geralmente expressa no número de notas armazenadas (por exemplo, 200 mil). Às vezes, o volume é expresso em eventos, neste caso você precisa estar em guarda - uma nota requer dois eventos para armazenar (pressionar e soltar uma tecla), e girar a roda de pitch ou aftertouch pode gerar até 100 ou mais eventos. Acontece que o tamanho da memória de um sequenciador é expresso em unidades nativas do computador - kilobytes. Mas isso também não é muito conveniente - um evento pode ocupar um número diferente de bytes (de cinco a várias dezenas).

Nos sequenciadores de software modernos, poucas pessoas se preocupam com a quantidade de memória primária - mesmo em uma máquina com 128 MB de RAM, você pode esquecer todas as restrições ao trabalhar com dados MIDI. Além disso, existem sequenciadores que podem reproduzir um arranjo diretamente do disco, sem carregá-lo na memória primária (e, aliás, gravá-lo também), o que geralmente apaga a distinção entre os dois tipos de memória.

Na memória secundária, os dados geralmente são gravados em um arquivo. A maioria dos sequenciadores tem seu próprio formato proprietário desse arquivo, o que torna difícil a troca de arranjos criados em diferentes dispositivos ou programas. Afirmou-se anteriormente que esta foi a principal razão para a criação do SMF.

Medição de tempo
Na verdade, não há "tiques" dentro do sequenciador. Há um temporizador de hardware que gera pulsos com frequência estritamente constante (por exemplo, a cada microssegundo). Forçar músicos a medir o tempo em microssegundos seria uma zombaria monstruosa, como, aliás, em outras unidades de tempo real (segundos, minutos). Os músicos estão acostumados a pensar em compassos e batidas, e expressar o tempo em unidades relativas (duração das notas), dependendo do andamento atual.

"Sem problemas", responderam os fabricantes, "deixe-os medir como for mais conveniente para eles." Apenas a unidade mínima de medida não terá cerca de 32 a duração, mas um tique convencional (a unidade é ainda menor, de modo que, por exemplo, um trigésimo segundo pode conter 48 tiques). Desde a era clássica, o ritmo era medido pelo número de quartos por minuto (BPM, batimentos por minuto), então eles decidiram tomar um quarto como a duração principal e indicar o número de tiques por trimestre - PPQN (Pulso por Nota semestral). Quanto maior o PPQN, melhor será a resolução do sequenciador e mais preciso no tempo ele pode capturar mensagens durante a gravação e enviá-las para a saída MIDI durante a reprodução. A maioria dos sequenciadores permite definir PPQN arbitrariamente - por exemplo, de 32 a 1536 ticks por trimestre (sequenciadores modernos - até 15.360 PPQN).

Um tique é uma unidade dependente da taxa: quanto mais rápida a taxa, menor o intervalo entre os tiques em unidades de tempo real. Esse intervalo pode ser encontrado pela fórmula da Fig. 1.

Por exemplo, a 120 BPM e 96 PPQN, os tiques ocorrerão a cada 5,208 milissegundos. Na mesma resolução e 180 BPM, o intervalo entre os tiques será reduzido para 3.472 ms. Como um sequenciador conta tiquetaques se seu cronômetro interno pulsa a cada microssegundo? É muito simples: com base no andamento atual e resolução em um quarto, exatamente de acordo com a fórmula especificada. Uma vez que um milissegundo contém 1000 microssegundos, no último exemplo, o sequenciador irá gerar outro tique ao receber 3472 pulsos do cronômetro.

Quando a alta resolução não faz sentido
Se o sequenciador e o gerador de tons estiverem "sob o mesmo teto" (uma estação de trabalho ou computador com um software sequenciador e sintetizador em uma placa de som ou um sintetizador virtual), então a resolução interna de tal sistema pode ser arbitrariamente alta (15360 PPQN é impressionante). Isso permite que você sincronize dados de MIDI e áudio com precisão de amostra. Mas assim que conectamos o sequenciador e o gerador de tons com um cabo MIDI por meio de uma interface MIDI, a alta resolução se torna irrelevante.

Por quê? Deixe-me lembrá-lo de que um byte é transmitido pela interface MIDI em 320 microssegundos. Isso significa que, por exemplo, uma mensagem de anotações (consistindo em três bytes) será transmitida por 960 μs, ou quase um milissegundo inteiro. Agora imagine que no sequenciador a 120 BPM e 2048 PPQN, duas notas são programadas com dois tiques separados. Em unidades de tempo real, isso é 488 microssegundos. Portanto: o gerador de tons não será capaz de receber a segunda nota 488 microssegundos após a primeira, mas na realidade - somente após 960 microssegundos. Portanto, ele o executará não depois de dois tiques, mas de quase quatro.

Daí a conclusão: ao trabalhar por meio de uma interface MIDI (quando o sequenciador e o gerador de tons são separados), a resolução do sequenciador de mais de um tick por 960 microssegundos não faz sentido. Para saber quanto será no PPQN, você pode usar a fórmula da Fig. 2

A tabela da Fig. 3 mostra os valores PPQN para ritmos diferentes, que é inútil exceder.

A posição de um evento na linha do tempo é definida no sequenciador, geralmente no formato "barras: batidas: marcações", por exemplo, 22: 3: 152. Isto é: o vigésimo segundo compasso, o terceiro tempo, o 152º tique desde o início do terceiro tempo. Este princípio de tempo (o termo em inglês - Base de tempo) é chamado musical, porque é familiar e conveniente para músicos. Observe que você precisa saber a fórmula de compasso atual para trabalhar neste formato. Ou seja, quantas batidas o compasso contém e a que cada batida é igual.

Portanto, com uma fórmula de compasso 4/4, uma batida é igual a um quarto e um compasso contém quatro batidas. Na resolução de 384 PPQN, haverá 384 ticks em uma batida e 1536 ticks em cada tick (384 x 4). Em 6/8 e a mesma resolução, uma batida terá 192 ticks (um oitavo tem a metade do comprimento de um quarto), e um compasso terá seis batidas ou 1152 ticks (192 x 6). Assim, 22: 3: 152 no primeiro caso significa 35096 ticks desde o início da música (22 x 1536 + 3 x 384 + 152), e no segundo - 26072 ticks (22 x 1152 + 3 x 192 + 152) .

Portanto, para determinar a posição de um evento em unidades de tempo real com base no formato "barras: batidas: tiques", você precisa conhecer três parâmetros: o tempo atual, a fórmula de compasso e a resolução em tiques por trimestre (PPQN).

Existe outra possibilidade de temporização, quando a posição de um evento em uma trilha é expressa em unidades absolutas que não dependem do andamento, mais frequentemente no formato de hora SMPTE - "horas: minutos: segundos: quadros". Este princípio de temporização é denominado "baseado em código de tempo" (baseado em código de tempo, absoluto). A necessidade surge quando o sequenciador está trabalhando em conjunto com um gravador ou equipamento de filme / vídeo. É mais conveniente realizar operações de edição com filme, vídeo e material de áudio, especificando as posições de início e fim da gravação, estando vinculado a uma escala absoluta, e não a compassos e batidas.

Neste caso, a coordenada do evento na régua de tempo depende do tempo atual. Assim, com um tempo de 120 BPM, a primeira batida do segundo compasso pode ter um tempo SMPTE de 00: 00: 02: 00 e com um tempo de 60 BPM - 00: 00: 04: 00. Quando um evento é posicionado dentro de um quadro (entre segundos), sua coordenada também será diferente com um formato de quadro diferente (número de quadros por segundo). Você pode ler mais sobre SMPTE e MIDI Time Code no artigo anterior da série.

Quantidades de comprimento variável
Chega de digressões líricas, agora nossa tarefa é entender o formato de armazenamento de dados. E o primeiro desafio que os desenvolvedores SMF enfrentaram foi como manter o cronograma do evento.

Existem duas opções aqui: para armazenar para cada evento a hora desde o início da música, ou do último evento antes dela (no mesmo canal). Porém, a primeira opção não é racional, pois na maioria das vezes o intervalo entre os eventos é pequeno, eventos vizinhos possuem tempos de execução próximos entre si. Assim, em uma passagem de três notas, a primeira pode ter um tempo, digamos, 22: 3: 152, a segunda - 22: 3: 244, a terceira - 22: 3: 288. Para armazenar esses números (traduzidos em ticks desde o início da música), você precisa reservar pelo menos quatro bytes para cada um. Se você seguir pelo segundo caminho, então, em vez de três números grandes, você pode salvar um grande começando (22: 3: 152), e depois dele - dois pequenos, a diferença em marcações entre o primeiro e o segundo, e o segundo e terceira notas (neste caso, 92 e 44), um byte é suficiente para eles. Mesmo assim, o problema permanece: dependendo do evento, você precisa alocar um número diferente de bytes para economizar tempo.

Se o SMF estivesse sendo desenvolvido atualmente (e até mesmo pela Microsoft, que geralmente se preocupa pouco com o tamanho de seus arquivos e a memória necessária), este problema passaria despercebido. Alocamos um campo fixo para economizar tempo, digamos, 8 bytes por evento, e não sofremos. No entanto, em 1988, a memória primária (RAM) era muito cara, cada byte era contado e a secundária (mídia de disco) tinha um tamanho muito modesto. Portanto, os desenvolvedores SMF queriam obter o formato mais compacto possível.

Foi decidido manter tempo delta, ou seja, a diferença em ticks entre este evento e o anterior (ou o início da música). Por exemplo, se o primeiro evento - a batida da nota na primeira oitava - ocorreu no tempo de 40 ticks desde o início da música, então seu delta time será 40. Se após quatro ticks a nota F for tocada, então, seu tempo delta será 4. Se dois eventos ocorrerem simultaneamente, um deles terá um tempo delta igual a zero. Se o evento ocorrer exatamente no início da música, também terá um tempo delta zero. No entanto, o próximo evento pode acontecer em uma hora e meia (ou seja, em vários milhões de tiques). Como ser neste caso? Afinal, a memória precisa ser salva e não é desejável alocar um campo fixo de vários bytes para o tempo delta.

O assim chamado comprimentos variáveis... Eles fornecem uma maneira conveniente de escrever inteiros, do menor ao maior, sem ter que alocar um número fixo de bytes para o número. Os bits do número original são compactados em um ou mais bytes: cada byte possui sete bits (à direita, bits de 0 a 6). O bit mais significativo em um byte é o serviço; todos os bytes da série, exceto o último, devem conter um, o último - zero. Vários exemplos de embalagens são mostrados na Fig. 4

Por exemplo, você precisa empacotar o número 64 (hex 0x40) em um formato de comprimento variável. Na forma binária, este número é escrito como 0100 0000. Existem apenas sete bits significativos, portanto, este número é compactado em um byte sem alterações - 0100 0000 (é também o último byte da série), o bit mais significativo é 0 .

Agora o número é 128 (0x80). Na forma binária, é escrito como 1000 0000. Existem oito bits significativos, então nem tudo caberá em um byte, você precisa dividi-lo em dois. O primeiro byte deve ter um no bit mais significativo, o segundo (como o byte final da série) - zero. No segundo byte colocamos os sete bits menos significativos do número original, o resultado é 0 000 0000. Colocamos o bit (um) restante no lado direito do primeiro byte - obtemos 1000 0001. Como resultado, o número 0x80 é escrito como dois bytes: 0x81 0x00. Descompactar é muito simples. Não sabemos com antecedência quantos bytes existem na série. Lemos o primeiro byte - 1000 0001. O bit de serviço mais significativo (1) indica que este não é o último byte da série, há mais bytes. Descartamos a unidade de serviço, deixando sete bits - 000 0001. Lê o segundo byte - 0000 0000. O bit de serviço mais significativo (0) indica que este é o byte final da série (ou seja, há apenas dois bytes no Series). Nós descartamos o bit de serviço. Também há sete bits restantes - 000 0000. Adicionamos a eles sete bits alocados à esquerda do primeiro byte, obtemos 000 0001 000 0000. Descartando os primeiros seis zeros, obtemos o número necessário 1000 0000 (0x80).

Portanto, o método de comprimentos variáveis ​​permite que diferentes números de bytes sejam alocados para diferentes números: para números no intervalo de 0 a 127 - um byte, de 128 a 16383 - dois bytes, e assim por diante. O número máximo representado desta forma não é, em princípio, limitado. No entanto, no SMF, o comprimento do burst é limitado a quatro bytes (três com o conjunto de bits mais significativo e um terminando com um zero). Como resultado, o tempo delta máximo pode ser 0x0FFFFFFF (ou 268 435 455 ticks), que a uma taxa de 500 BPM e uma resolução de 96 PPQN é de cerca de quatro dias. Mais do que suficiente!

Na forma de valores de comprimento variável, o SMF indica não apenas o tempo delta, mas também a duração de alguns eventos.

Formato de arquivo de intercâmbio (IFF)
A estrutura do arquivo MIDI padrão é quase inteiramente derivada do IFF (Interchange File Format), desenvolvido em 1985 pela Electronic Arts. É um formato de armazenamento e troca de dados que facilitou a vida de usuários e desenvolvedores de software por quase vinte anos. A Electronic Arts não apenas forneceu documentação de código aberto, mas também o código-fonte C para ler e escrever arquivos IFF.

O formato IFF é compatível com versões anteriores e extensível. O primeiro significa que a nova versão do programa pode ler arquivos criados pela versão anterior sem problemas. Em segundo lugar, você não precisa inventar um novo formato para armazenar informações adicionais; basta inserir sua própria extensão no IFF. A estrutura do formato permite que programas de diferentes fabricantes troquem dados que não possuem acordos comerciais apropriados entre si. Tudo isso agrada os usuários - depois de salvar os dados no formato IFF, eles não ficam mais presos ao formato fechado de seu sistema e podem usar os dados em qualquer ambiente de software e hardware compatível com IFF.

Um arquivo IFF é uma coleção de dados organizados de forma que programas diferentes e não relacionados possam lê-los. Por outro lado, o programa pode armazenar informações específicas no IFF que são significativas apenas para ele. A estrutura IFF torna isso fácil. Outros programas que não sabem lidar com tais informações podem ignorá-las sem comprometer a leitura do conteúdo principal.

Existem vários tipos de arquivos IFF. Por exemplo, os arquivos ILBM e GIFF contêm informações gráficas, os arquivos SMUS contêm notação musical e os arquivos AIFF e WAVE contêm áudio digital.

Um arquivo IFF é composto de elementos semelhantes chamados chunks. Um bloco é uma estrutura de dados que consiste em um identificador alfabético (quatro caracteres ASCII), um tamanho de bloco (quatro bytes) e os próprios dados (Figura 5). É conveniente pensar em um bloco como um shell no qual os dados são "empacotados". Os dados em si podem conter qualquer coisa: gráficos, texto, animação, som, um conjunto de objetos 3D e assim por diante.

Os blocos no arquivo IFF podem ser aninhados, fig. 6. Na verdade, um arquivo IFF nada mais é do que um bloco de nível superior contendo um ou mais blocos dentro dele. Este princípio de armazenamento de dados permite que você "empacote" vários dados heterogêneos em um arquivo, incluindo vários arquivos IFF, que já se parecem com um sistema de arquivos dentro de um arquivo. É verdade que, com a organização de dados aninhados, há uma desvantagem - o arquivo se torna difícil de interpretar, para isolar blocos dele.

A maioria dos arquivos IFF contém um bloco de nível superior com o identificador "FORM". Inclui outros blocos (Fig. 7). Os únicos dados no bloco FORM são quatro bytes que descrevem o tipo de arquivo (por exemplo, "ILBM", Mapa de bits intercalados). Imediatamente atrás deles estão blocos aninhados como "BMHD" (cabeçalho da imagem), "CMAP" (paleta) e "BODY" (os próprios pixels). Os nomes dos blocos e o formato dos dados são inventados pelo desenvolvedor do tipo de arquivo específico. Outros programas, se encontrarem um bloco com um nome desconhecido, podem pulá-lo com segurança, guiados pelo campo que contém o comprimento do bloco.

Todos os dados numéricos em arquivos IFF são armazenados na ordem big-endian, ou seja, o byte mais significativo do número (MSB) é armazenado primeiro e, em seguida, o byte menos significativo. Veja a barra lateral para mais informações. Os blocos em um arquivo devem sempre começar com um byte par. Se o bloco anterior contiver um número ímpar de bytes, ele será preenchido com um byte nulo para ser par.

De que lado salvar?
A memória do computador consiste em células, cada uma contendo exatamente um byte. Para acessar uma célula (escrever ou ler um byte), o processador usa o chamado o endereço em mente. É simplesmente um número inteiro atribuído a uma célula pelo sistema operacional (que os especialistas em computador me perdoem por essa simplificação excessiva). Na vida real, um byte geralmente não é suficiente. Mesmo para armazenar inteiros, são utilizadas palavras, ou seja, grupos de dois bytes, palavras duplas ou quádruplas (respectivamente, quatro ou oito bytes, consulte a primeira parte do ciclo para mais detalhes). Ou seja, o número é armazenado em vários bytes adjacentes.

Na fig. 8 mostra duas maneiras possíveis de colocá-los na memória, usando o exemplo de uma palavra dupla. A primeira forma - os bytes são armazenados na memória sequencialmente, o byte mais significativo no menor endereço. Ou seja, o MSB da palavra alta é armazenado no endereço N, então o LSB da palavra alta (N + 1), o MSB da palavra baixa (N + 2), LSB da palavra baixa (N + 3) . Este método geralmente é chamado big-endian(ou "alocação direta de bytes"). No segundo método, tudo é exatamente o oposto, o byte alto é armazenado no endereço mais alto: LSB da palavra baixa (N), MSB da palavra baixa (N + 1), LSB da palavra alta (N + 2 ), MSB da palavra alta (N + 3) ... Este método geralmente é chamado pequeno endian- "alocação reversa de bytes".

Ou seja, a diferença é "a partir de qual extremidade" o valor multibyte é armazenado. Os termos "big-endian" e "little-endian" foram cunhados em um artigo sobre o assunto com referência ao livro de Jonathan Swift, The Adventures of Gulliver. Como você sabe, um movimento de big-endians surgiu em Lilliput, que não queria cumprir o decreto do imperador ordenando que os ovos cozidos fossem quebrados apenas pela ponta afiada. No mundo da informática, o confronto big / little-endian é muito semelhante.

Os proponentes do little-endian argumentam que a ordem reorganizada dos bytes na memória torna mais fácil realizar operações aritméticas em valores multibyte, uma vez que os bytes menos significativos adicionados primeiro são armazenados nos bytes menos significativos.

O circuito little-endian é usado em processadores compatíveis com Intel que vão desde o Intel 8080 ao Intel Pentium IV. Colocação direta (big-endian) - em processadores Sun Spark, Motorola 68000 (linha inicial de computadores Apple) e muitos processadores RISC. Mas os processadores PowerPC e Intel Itanium entendem os dois formatos de dados ao mesmo tempo (às vezes são chamados de "bi-endian").

Porém, o importante não é tanto como o computador armazena os dados "dentro de si", mas como os armazena "fora", em arquivos. Isso é muito mais importante do ponto de vista prático. Por exemplo, se a palavra "UNIX" for salva em um arquivo big-endian pelo sistema (como duas palavras de byte duplo), o sistema little-endian a lerá como "NUXI". Isso é o que o jargão da informática chama de "problema NUXI". Dificuldades semelhantes podem surgir ao salvar gráficos porque as cores são codificadas com números multibyte. Por exemplo, os arquivos Adobe Photoshop e JPEG usam o esquema big-endian, enquanto os arquivos GIF e BPM usam o little-endian.

O formato de arquivo MIDI padrão "não-plataforma" (SMF) usa o método big-endian, ou seja, o byte mais significativo de uma palavra (MSB) é armazenado primeiro.

Estrutura SMF
Arquivos MIDI padrão, como arquivos IFF, são compostos de blocos. Existem dois tipos de blocos no total: Bloco do cabeçalho e Bloco da trilha. Pode haver apenas um bloco de cabeçalho e um ou mais blocos de trilha em um arquivo SMF. O bloco tem uma estrutura IFF típica: os primeiros quatro bytes são o identificador, os próximos quatro bytes são o comprimento do bloco em bytes, excluindo o tipo / comprimento de oito bytes. O identificador de bloco de cabeçalho tem quatro caracteres "MThd" e o identificador de bloco de trilha tem quatro caracteres "MTrk". Essa estrutura permitirá que novos tipos de bloco sejam definidos no futuro, e um bloco desconhecido pode ser facilmente ignorado com base em seu comprimento. A especificação SMF avisa: "Os programas devem ser preparados para ignorar blocos de tipos desconhecidos quando os encontrarem."

O bloco de cabeçalho contém informações gerais sobre o arquivo, o bloco de trilha contém o fluxo de mensagens MIDI com carimbos de data / hora. Além disso, o arquivo MIDI armazena informações adicionais necessárias para sequenciadores: tempo, fórmula de compasso, tonalidade, configurações do metrônomo e assim por diante. Essas informações não são transmitidas por meio da interface MIDI e os eventos que as formam são chamados de metaeventos.

Um arquivo MIDI sempre começa com um bloco de cabeçalho seguido por um ou mais blocos de trilha (Figura 9). Ou seja, qualquer arquivo MIDI padrão começa com as quatro letras "M", "T", "h", "d". Isso significa que o arquivo MIDI não está de acordo com a especificação IFF (que exige que todo arquivo compatível com IFF comece com um bloco de nível superior de um dos três tipos - "FORM", "CAT" ou "LIST"). Existem outras diferenças: os SMFs não podem conter blocos aninhados e o comprimento do bloco não precisa ser uniforme. No entanto, converter um SMF em um arquivo compatível com IFF é simples. Basta preencher os blocos de comprimento ímpar com um byte zero (se houver) e colocar todo o conteúdo no bloco FORM. Uma operação semelhante é usada no formato RMID proposto pela Microsoft (consulte a barra lateral).


Você está aqui porque tem um arquivo que tem uma extensão de arquivo que termina em .smf. Arquivos com a extensão de arquivo .smf só podem ser iniciados por alguns aplicativos. É possível que os arquivos .smf sejam arquivos de dados em vez de documentos ou mídia , o que significa que eles não devem ser vistos de forma alguma.

o que é um & nbsp.smf & nbspfile?

Os arquivos no formato SMF contêm dados de áudio com efeitos, e este formato de arquivo é integrado com tecnologias e funcionalidades semelhantes aos arquivos com a extensão MID. Faixas de áudio com extensão .smf podem ser reproduzidas usando o aplicativo Apple QuickTime, e este programa multimídia possui uma versão compatível com os sistemas baseados no Microsoft Windows, além de outra versão desenvolvida para usuários Mac. A MIDI Manufacturers Association integrou as especificações MIDI no formato de arquivo SMF durante seu desenvolvimento. Isso significa que os arquivos SMF também podem conter diferentes faixas combinadas de diferentes faixas de áudio armazenadas em vários arquivos SMF, o que também significa que os arquivos no formato .smf podem ser combinados e convertidos em uma faixa de áudio em formatos mais populares que podem ser visualizados e usados ​​com mais vídeo digital e software de desenvolvimento de apresentação de documentos, aplicativos de multimídia e reprodutores de áudio digital. Isso fornece aos usuários um meio de adicionar efeitos separadamente a cada trilha e fazer modificações em outras antes de combiná-las para tocar como uma única trilha de áudio. Alguns desses efeitos e modificações podem incluir ajustes de volume e pitch, distorções e reverberação, panning e edições de temporização, entre outros. Existem aplicativos de terceiros que podem converter arquivos SMF no formato MIDI para um suporte de compatibilidade cruzada mais amplo para mais aplicativos de edição de áudio.

como abrir um arquivo .smf?

Inicie um arquivo .smf, ou qualquer outro arquivo em seu PC, clicando duas vezes nele. Se suas associações de arquivo estiverem configuradas corretamente, o aplicativo que pretende abrir seu arquivo .smf irá abri-lo. É possível que você precise baixar ou comprar o aplicativo correto. Também é possível que você tenha o aplicativo correto no seu PC, mas os arquivos .smf ainda não estão associados a ele. Nesse caso, ao tentar abrir um arquivo .smf, você pode informar ao Windows qual aplicativo é o correto para aquele arquivo. A partir de então, abrir um arquivo .smf abrirá o aplicativo correto.

aplicativos que abrem um arquivo .smf

Apple QuickTime Player

Apple QuickTime Player

O Apple QuickTime Player é um software reprodutor de multimídia que gerencia uma variedade de arquivos de diferentes formatos, desde fotos digitais a imagens panorâmicas, áudios a vídeos, bem como interatividade. Este programa reprodutor multimídia está disponível para computadores Mac OS X, bem como versões posteriores de computadores Windows. Este produto de software da Apple possui kits de desenvolvimento de software ou SDKs que estão disponíveis ao público, desde que sejam assinados com o Apple Developer Connection ou ADC. Possui framework QuickTime, que é compatível com outros aplicativos de reprodutores gratuitos, que oferecem diversas funções. Isso inclui a codificação de áudios e vídeos, transcodificação desses mesmos arquivos, decodificação com a opção de enviar um fluxo decodificado para subsistema gráfico ou subsistema de áudio e uma arquitetura de plug-in de componente para oferecer suporte a outros codecs (terceiros como DivX). A versão mais recente deste software é QuickTime Player 7, que pode ser baixado gratuitamente para computadores Mac e Windows.

uma palavra de alerta

Tenha cuidado para não renomear a extensão em & nbsp.smf & nbspfiles ou em qualquer outro arquivo. Isso não mudará o tipo de arquivo. Somente software de conversão especial pode alterar um arquivo de um tipo para outro.

o que é uma extensão de arquivo?

Uma extensão de arquivo é o conjunto de três ou quatro caracteres no final de um nome de arquivo; neste caso, & nbsp.smf. & nbspAs extensões de arquivo informam o tipo de arquivo e informam ao Windows quais programas podem abri-lo. O Windows geralmente associa um programa padrão a cada extensão de arquivo, de modo que, quando você clica duas vezes no arquivo, o programa é iniciado automaticamente. Quando esse programa não está mais no seu PC, às vezes você pode obter um erro ao tentar abrir o arquivo associado.


Normalmente, os sequenciadores usam seu próprio formato de armazenamento de arranjo. Isso se deve ao fato de que uma estrutura de dados projetada para as capacidades de um determinado programa é muito mais eficiente, é simplesmente mais fácil de trabalhar com ela. Você pode gravar dados adicionais em seu formato, por exemplo, na personalização da interface do usuário (posição e tamanho da janela, fonte e assim por diante). Além disso, a compactação dos arquivos MIDI padrão (em particular, comprimentos variáveis ​​para armazenar o tempo de ocorrência dos eventos) torna-se um inconveniente: para trabalhar com o arranjo, todos os tempos delta no arquivo devem ser "descompactados", e quando o o arquivo é salvo, "compactado" novamente.

Por outro lado, SMF é um formato de plataforma cruzada portátil, no qual você pode definir quaisquer blocos adicionais para armazenar dados específicos. Por exemplo, um sequenciador pode armazenar o metrônomo ligado ou desligado em um bloco denominado “Mtr”. Este bloco não é um obstáculo para outro sequenciador, ele pode definir vários de seus blocos específicos no mesmo arquivo. Portanto, alguns sequenciadores usam o formato SMF diretamente, é "nativo" para eles. Outros permitem que você importe e exporte arquivos MIDI conforme necessário.

Para oferecer suporte a diferentes tipos de sequenciadores e outros equipamentos, os arquivos MIDI padrão são classificados em três tipos ou formatos: 0, 1 e 2.

O formato de arquivo 0 contém uma trilha, que contém eventos de todos os dezesseis canais MIDI. Este é o formato mais simples para a troca de dados, já que não leva em consideração a estrutura original das trilhas no sequenciador (qual trilha é atribuída a qual canal MIDI). O arquivo de formato 0 é mais adequado para transferir dados para dispositivos como mixers e processadores de efeitos do que para armazenar arranjos. Ao gravar um arquivo no formato 0, o sequenciador simplesmente mescla todas as mensagens de todos os canais MIDI em uma trilha. Assim, ao carregar um arquivo, obtemos uma faixa, na qual é problemático editar eventos, uma vez que eventos para diferentes canais são intercalados entre si. A maioria dos sequenciadores tem a função de dividir tal "mix" em trilhas separadas, cada uma contendo eventos para um canal MIDI.

O arquivo de formato 1 contém uma trilha separada para cada canal MIDI, que reflete a estrutura familiar de um arranjo em um sequenciador. O arquivo de formato 2 contém várias peças independentes (ou padrões completos), cada padrão consiste em uma trilha contendo mensagens em todos os 16 canais. Esse formato deveria ser usado naqueles sequenciadores que podem trabalhar com padrões independentes tocados por vários instrumentos ao mesmo tempo. No entanto, o Formato 2 foi amplamente ignorado e atualmente é considerado na especificação como "não destinado a sequenciadores".

Uma das principais diferenças entre os formatos 0 e 1 é a maneira como os meta eventos são colocados. No formato 0, os meta eventos de tempo e fórmula de compasso (chamados de mapa de tempo) são misturados com outras mensagens MIDI. Além disso, os títulos das faixas não são salvos neste formato. No formato 1, a primeira faixa no arquivo é reservada exclusivamente para o mapa de tempo e outros meta-eventos, como Sequência / Nome da Faixa, Número da Sequência, Marcador, SMPTE Offset (veja abaixo).

Se não houver mapa de tempo no arquivo, o tempo é considerado 120 BPM e a fórmula de compasso é 4/4.

A organização MMA pode desenvolver outros formatos SMF no futuro para suportar novas estruturas de dados em sequenciadores.

Bloco de título ("MThd")

O bloco de cabeçalho contém informações básicas sobre o arquivo. A estrutura do bloco é mostrada na Fig. 11. O campo de comprimento sempre contém o número 6, com base no número de bytes de dados de cabeçalho após este campo. Os dados do cabeçalho são três palavras de 16 bits. A primeira palavra (formato) - formato SMF, pode assumir um de três valores - 0, 1 e 2. A segunda palavra (ntrks) - o número de blocos de trilha (ou seja, as próprias trilhas) no arquivo. Para um arquivo de formato 0, será sempre igual a um.

A última palavra do bloco de título de divisão especifica como o tempo é medido (base de tempo). Conforme mencionado anteriormente, existem duas maneiras: musical (compassos / batidas) e absoluta (baseada no código de tempo), com base no tempo absoluto no formato SMPTE. Em qualquer caso, o delta time no arquivo SMF é medido por ticks: com o método musical, o número de ticks por trimestre (isto é, PPQN) é definido, com o absoluto, o número de ticks em um quadro SMPTE. Se o bit mais significativo (15º) do campo de divisão for definido como zero, o método musical será usado e os 15 bits restantes conterão PPQN (até 32767), Fig. 12. Se o bit mais significativo for definido como um, o modo absoluto será usado. O byte baixo (bits 0 a 7) armazena o número de tiques por quadro, o byte alto (bits 8 a 15) armazena o formato do quadro SMPTE, expresso como valores negativos (-24, -25, -29, -30 ) Nesse caso, o número -29 corresponde ao formato Soltar Quadro de 30 fps (consulte o artigo anterior do ciclo).

Os números negativos são escolhidos porque são escritos como complemento de dois (veja o artigo anterior), ou seja, eles contêm um no bit mais significativo. E esta unidade é apenas um sinal da forma absoluta de contar o tempo. O número de ticks por frame é armazenado de forma positiva e geralmente assume um dos seguintes valores: 4 (resolução como em MIDI Time Code, quando há quatro mensagens de Quarter Frame por frame), 8, 10, 80 (resolução de um bit em um Frame SMPTE) ou 100 ...

Este sistema permite indicar o tempo absoluto de ocorrência do evento com uma precisão de 1/128 frame. Além disso, se você definir o formato do quadro para 25 fps e a resolução para 40 tiques por quadro, cada tique corresponderá a um milissegundo. O campo de divisão neste caso terá o valor 0xE728, o byte 0xE7 é um número de complemento de dois -25 e 0x28 é 40 em notação hexadecimal.

Bloco de trilha ("MTrk")

O bloco de trilhas armazena os próprios eventos, ou seja, mensagens MIDI com registro de data e hora. O bloco deve conter pelo menos um evento. A estrutura do track block é a mesma para arquivos MIDI de qualquer formato (0, 1 e 2), Fig. Treze.

O evento consiste em um tempo delta e na própria mensagem MIDI, Fig. 14. Deixe-me lembrá-lo de que o tempo delta é armazenado como um comprimento variável.

Esperamos tê-lo ajudado a resolver o problema com o arquivo SMF. Se você não sabe onde pode baixar um aplicativo de nossa lista, clique no link (este é o nome do programa) - você encontrará informações mais detalhadas sobre o local de onde você pode baixar a versão de instalação segura do necessário aplicativo.

A visita a esta página deve ajudá-lo a responder especificamente a estas ou a perguntas semelhantes:

  • Como abrir arquivos com extensão SMF?
  • Como posso converter um arquivo SMF para um formato diferente?
  • Qual é a extensão do formato de arquivo SMF?
  • Quais programas suportam o arquivo SMF?

Se após visualizar o conteúdo deste site você ainda não recebeu uma resposta satisfatória para nenhuma das perguntas acima, isso significa que as informações sobre o arquivo SMF aqui apresentadas não estão completas. Contacte-nos através do formulário de contacto e escreva as informações que não encontrou.

O que mais poderia estar causando o problema?

Pode haver mais motivos pelos quais você não pode abrir um arquivo SMF (não apenas a ausência de um aplicativo correspondente).
em primeiro lugar- O arquivo SMF pode estar vinculado incorretamente (incompatível) com o aplicativo instalado para exibi-lo. Nesse caso, você mesmo precisa alterar este link. Para tanto, clique com o botão direito no arquivo SMF que deseja editar, clique na opção "Para abrir com" e selecione o programa que você instalou na lista. Após tal ação, os problemas ao abrir o arquivo SMF devem desaparecer completamente.
Em segundo lugar- o arquivo que você deseja abrir pode simplesmente estar danificado. Então, a melhor solução é encontrar uma nova versão ou baixá-la novamente da mesma fonte de antes (talvez por algum motivo na sessão anterior o download do arquivo SMF não foi concluído e não pode ser aberto corretamente).

Você quer ajudar?

Se você tiver informações adicionais sobre a extensão do arquivo SMF, ficaremos gratos se você as compartilhar com os usuários de nosso site. Utilize o formulário fornecido e envie-nos seus dados sobre o arquivo SMF.