Estou diante de um desafio complicado: extrair dados binários de um leitor de cartão de fita magnética do iPhone . É assim que a magnetização do cartão se parece:
Aqui está o .WAV que o iPhone recebe quando você passa um cartão (não tenha muitas esperanças, é um cartão de fidelidade bônus;)). A propósito, são três golpes, em velocidades diferentes. Este é o dump SInt16 bruto para o furto que estou usando.
Alguém parece ter feito isso aqui, mas os dados reais que capturo não são particularmente fáceis de processar.
A leitura começa (e termina) com um número indeterminado de 'zeros' - observe que a onda só se repete após a coleta de 2 ZEROS, isso representa NS seguido por SN:
(observe que cada uma das três linhas me representa passando um cartão diferente; o cartão inferior nesta imagem tem 15 anos; portanto, o campo magnético é claramente severamente degradado em alguns lugares, não visível nesta foto)
Isso permitirá que um algoritmo verifique um relógio.
O campo magnético reverte a cada tique do relógio. Também para um binário 1, o campo magnético reverte exatamente no meio de um tique:
A sequência sempre começa com um sentinela inicial 1101 + 0 (bit de paridade). Você pode escolher isso nas três leituras no gráfico acima. É indicado mais claramente no artigo do cosmodro que eu liguei na parte superior da pergunta.
Aqui está um exemplo de degradação magnética (levado adiante na leitura do cartão inferior):
Estou tentando descobrir uma maneira sensata de converter essa forma de onda em sua sequência binária correspondente.
Eu encontrei um PDF que entra em alguns detalhes, mas não consigo descobrir o algoritmo que eles estão usando.
Este PDF contém uma imagem interessante:
Se eu pudesse extrair as linhas vermelha e azul conforme este diagrama, poderia usar qualquer uma delas para extrair os dados, mas não consigo descobrir a lógica por trás da construção.
Portanto, esta é a minha pergunta: como extrair a sequência binária?
PS. Observe que a velocidade do furto não será constante. Assim, uma vez que o relógio tenha sido determinado, é necessário ajustar constantemente o número de um tick para o próximo.
PPS. A autocorrelação pegaria pares de tiques? (visto que os ticks alternarão o NS SN ...)
EDIT (junho '12): Eu precisava de muita ajuda nesse caso, mas finalmente completei um sólido leitor ( http://www.magstripedecoder.com/ ). Obrigado a todos que ajudaram! Eu recomendo #musicdsp no canal efnet do IRC para qualquer pessoa dedicada o suficiente para enfrentar o desafio de entender a matemática - é realmente muito difícil!