Cabeçalho: ? 32 bits (16 bits unsigned seria suficiente - grande diferença no arquivo, pois muita coisa depende do timestamp - aparecerá como ) 8 bits (unsigned - indicam quantos caracteres compoem o texto) 8 bits (unsigned - indicam quantos caracteres compoem o texto) 8 bits (unsigned - indicam quantos caracteres compoem o texto) 8 bits (unsigned - indicam quantos caracteres compoem o texto) 8 bits (unsigned - indicam quantos caracteres compoem o texto) 16 bits (unsigned) 8 bits (verificar padrão a ser utilizado) 16 bytes (signed - cada um indica o intrumento do canal) 16 bytes (signed - cada um indica o intrumento do canal) 8 bits (unsigned - indicam quantos caracteres compoem o texto) Letra: 16 bits (unsigned) indicam quantos caracteres possui a letra. (2^16 = 65536 = 819 linhas de 80 colunas cada) Acordes: 8 bits (unsigned - acho que é suficiente...) Cada Acorde possui: 4 bits (unsigned) que indicam o tamanho do nome do acorde 6x 4 bits que indicam a casa 3 bits para o dedo da mão direita 3 bits para o dedo da mão esquerda total de bits do acorde: 64 bits + o nome o que deixou de existir: * o indice - passou a ser a ordem em que aparece * o indicador base/arquivo - todos os acordes estarão no arquivo Ritmos: (aqui eu realmente fiquei em dúvida...) 8 bits (unsigned - será que é suficiente???) Cada ritmo possui: 8 bits (unsigned) que indicam o tamanho do nome do ritmo bits indica o timestamp final do ritmo 8 bits pro compasso (4 bits para figura e 4 para o numero de figuras) bits indicam o número de eventos (teoricamente pode ser bem maior que o timestamp final) Eventos: 1 bit indicando se é On ou Off 3 bits indicando o dedo 8 bits indicando o volume (apenas se for On) Como o pra cada On deve haver um Off (teoricamente) o tamanho final do ritmo continua sendo multiplo de 8 (tem como garantir isso???) o que deixou de existir: * o indice - passou a ser a ordem em que aparece * o indicador base/arquivo - todos os ritmos estarão no arquivo Eventos: (os eventos viriam sempre nesta mesma ordem) Andamentos On: 8 bits (unsigned) indicando o número de eventos Eventos: 8 bits (unsigned) para indicar o andamento (é suficiente???) Acordes On: 16 bits (unsigned) indicando o número de eventos Eventos: 8 bits (unsigned) indicando o indice do acorde Ritmos On: 16 bits (unsigned) indicando o número de eventos Eventos: 8 bits (unsigned) indicando o indice do acorde Letras On: 16 bits (unsigned) indicando o número de eventos Eventos: 16 bits (unsigned) indicando o início da seleção 8 bits (unsigned) indicando o tamanho da seleção Notas: 32 bits (unsigned) (ou quem sabe o ) indicando numero de eventos (Como o número de eventos On deve ser o mesmo do Off, só precisa ser colocado 1 vez e o loop é percorrido 1 vez para cada tipo) Eventos Off's: 4 bits (unsigned) para o canal 8 bits (unsigned) para a frequencia MIDI (é suficiente???) On's: 4 bits (unsigned) para o canal 8 bits (unsigned) para a frequencia MIDI (é suficiente???) 8 bits para o volume Solos: 16 bits (unsigned) (ou quem sabe o ) indicando numero de eventos (Como o número de eventos On deve ser o mesmo do Off, só precisa ser colocado 1 vez e o loop é percorrido 1 vez para cada tipo) Off's: 4 bits para casa 3 bits para corda 3 bits para o dedo On's: 4 bits para casa 3 bits para corda 3 bits para o dedo * O problema aqui é garantir que, no final, terá um número de bits multiplo de 8... Alternativas ao timestamp * Usar um tamanho maximo (em bytes) variavel * Usar o delta time do MIDI * Usar tamanho maximo variavel + um MDC