construir sobre o simplenZAR, um step sequencer para arduino

Depois de usar vários programas diferentes para criar música, desde uma conjugação de programas diferentes ligados pelo jack, a alguns DAW mais ou menos complexos (neil modular tracker foi o que usei mais tempo), queria montar um sistema baseado em hardware totalmente focado na improvisação.

Para começar a juntar o material para este projeto, queria começar por montar um sintetizador, e foi o que fiz há algumas semanas com um kit meeblip micro. A montagem foi pacífica, e como não tinha ainda forma de tocá-lo, andei à procura ou de um interface para usar com algum software, ou de uma forma de o tocar com outra solução de hardware. Encontrei nessa altura o simplenZAR, e decidi tornar o projeto seguinte a montagem de um clone do simplenZAR.

Não correu como esperava, dado que o código era para uma versão anterior do IDE do arduino, e precisou de alguns retoques. Depois parecia que nunca conseguia comunicar com o meeblip por MIDI, ou não havia comunicação, ou o som que saía não era o que esperava. Aprendi que carregar o sketch no arduino com o pin 1 ligado ao MIDI do meeblip era uma má ideia, e causava com que o meeblip ficasse com os parâmetros errados, e daí o som sair diferente do esperado! :-P

Depois deste processo todo e de ter o simplenZAR montado e a funcionar (e de ter que fazer o flash do meeblip algumas vezes), comecei a modificá-lo para o tornar mais próximo do que procurava.

Atualmente mantém os modos de 8 passos, 16 passos, ou 8 passos mais 8 passos de slide para as notas todas. Adicionei-lhe mais 2 botões para poder ligar e desligar nota a nota sem entrar no menu, e definir o pitch da nota também sem entrar no menu, e o tempo de espera (ou a velocidade com que avança para o passo seguinte) também é definido sem entrar em nenhum menu.
Mudei o modo de espera do delay original para a utilização da função millis(), que deixa mais espaço para fazer mais coisas.

Algumas coisas que quero implementar de seguida:

  1. mudar a direcção do sequenciador
  2. tempo variável (alguns modos de tempo variável para os passos)
  3. arpeggios

Outras possibilidades:

  1. tap tempo e/ou
  2. midi sync
  3. passar os leds para o shift register e passar para 16 passos
  4. outras coisas que me lembre entretanto :)

Assim que tenha possibilidade coloco o código num repositório qualquer para ser mais fácil manter atualizado com o que for alterando.

O meu avançando centro de controlo num pedaço de cartão ;-) :

Depois tiro mais fotografias decentes ao que tenho feito até agora.

O código que tenho até ao momento blueSTEP.

O nome deve mudar um destes dias. Assim que chegue a uma versão do código mais estável, ou assim que faça um shield para o arduino com o circuito final (espero já ter atualizado o circuito para usar shift registers nessa altura).

Thunderbird Lightning + Provider for Google Calendar

Depois de perder moooontes de tempo a tentar perceber porque razão a extensão que que devia permitir a sincronização nos dois sentidos do calendário Lightning no Thunderbird não funcionava, lembrei-me que tinha ativado a autenticação em 2 passos do Google! :-P

O problema de usar a autenticação em 2 passos é a sincronização dos calendários falhar de forma silenciosa! :x

A solução foi a mesma que para outras aplicações, criar uma password dedicada para esta aplicação na definições de conta do Google:
https://accounts.google.com/b/0/IssuedAuthSubTokens

Natty, Unity, Ralink USB, misc

Atualizei o desktop e o laptop para a última versão do Ubuntu. A nova barra superior é algo que eu já estava a tentar obter com o painel do gnome anteriormente, e até ao momento parece que cumpre os objetivos.

Gosto da simplificação geral, embora o launcher não seja algo que me agrade particularmente. Depois de estar habituado ao gnome-do, depois synapse, o menu de pesquisa de aplicações e ficheiros parece-me ainda limitado (nas pesquisas, na usabilidade, na eficiência), o que me fará provavelmente voltar a um dos anteriores para já.

Não sei ainda se me agrada o menu geral tipo OS X, mas talvez seja porque, apesar de usar atalhos de teclado para a maior parte das coisas, e ultimamente, nem tinha uma lista de janelas na barra, porque me habituei a usar o Scale do compiz, nunca me habituei a usar atalhos para os menus das aplicações. Talvez isto agora me ajude a criar esse hábito… :P

Fico de alguma forma preocupado com uma certa instabilidade do Unity. Fiz upgrade, e deduzo que uma instalação de raiz elimine problemas devidos a configurações antigas. Depois de fazer uma limpeza a tais configurações, isto parece mais estável, mas depois de ler, e de experimentar que é fácil rebentar com isto, fico a pensar se terá sido boa ideia lançar isto como a shell pré definida. Mas talvez isso aumente a pressão para que se torne algo melhor e mais estável mais rapidamente, com muita gente a usar e a comunicar problemas. Com o meu sistema, apenas por alterar algumas configurações simples no compiz, tive as barras do Unity a deixaram de funcionar a desaparecer, o compiz a ir ao ar… Parece que aparte disso agora está estável.

O único verdadeiro problema que tive foi com a placa de rede USB que uso: TP-LINK TL-WN321G – que usa um chip Ralink, que não é pacífico de usar em Linux. No meu caso, além do módulo rt73usb que suporta o chip da minha placa, estava a ser carregado também o rt2500usb, que por algum motivo fazia com que a placa não funcionasse corretamente. Bastou colocar este módulo em blacklist e tudo se resolveu.

Já agora, e nada relacionado com o Ubuntu, foi finalmente lançada há umas semanas a compilação de música feita em 2010 com Linux pelo Dj Kotau, onde constam algumas faixas feitas por mim. :)

GPT + MBR c/ rEFIt

Estava a usar no MacBook uma tabela de partições híbrida GPT/MBR para poder correr Linux. Para facilitar instalei o rEFIt que permite colocar o boot directo para o SO não Mac OS (legacy), e mostra o menu por omissão sem precisar estar a carregar no Option.

Tinha preparado para montar um disco maior e tinha-lhe instalado o mesmo esquema, com o Ubuntu Karmic Koala. Ora quando tive oportunidade de trocar os discos, actualizei o Ubuntu desse disco maior para o Lucid Lynx que trouxe com ele o grub2. Ao reiniciar, o grub dava um erro que tornava impossível arrancar o sistema, a shell do grub era a de rescue, e não conseguia carregar o módulo com a shell normal. Como o rEFIt não arranca o Linux directamente de uma pen usb (dá um erro qualquer que me parece ser limitação dos Macs, que só arrancam o Mac OS dessa forma), fiquei bloqueado até ter um CD/DVD do Ubuntu à mão. :(

Quando arranjei o CD, pensava que o problema era do grub estar mal instalado. Voltei a instalá-lo na partição onde tinha a root e continuava a ter erro. Como esta partição era a 5ª e o MBR só mostra as 4 primeiras, deduzi que talvez o problema estivesse relacionado. Decidi remover uma partição genérica que estava antes mais a swap (2GB de RAM com desenhos grandes no Inkscape por vezes precisam da swap) e mover a root para trás. Como não apaguei a root, ficou com o mesmo número. O problema do grub manteve-se, embora não saiba ao certo se exactamente por isso. Como o MBR é independente da GPT, acabei por resolver o problema instalando o grub no MBR. Não afectou o boot principal e ficou reconhecido pelo rEFIt, carregando o Linux correctamente.

Como tinha instalado o grub primeiro para a partição, acabei com 2 entradas no menu do rEFIt, uma do MBR (que ficou a funcionar) e outra da partição que também tinha o grub e não funcionava. Como no rEFIt ele não indicava qual era qual, seria interessante remover o grub da partição para eliminar a opção de boot que não interessava.
Procurei se alguém tinha tido esta necessidade, mas a maioria dos resultados da pesquisa era alguém a procurar uma solução para remover o grub do MBR, e as soluções indicadas para remover de uma partição passavam por apagá-la, que não era de todo uma solução que me servisse, dado que a partição já tinha o sistema instalado.

Acabei por decidir experimentar fazer o mesmo procedimento usado para limpar o MBR, mas com a partição, usar o dd e limpar o sector inicial da partição em causa: dd if=/dev/zero of=/dev/sda5 bs=512 count=1 e funcionou. :-) No MBR apenas os primeiros 446B são usados para guardar o boot loader, por isso limpar o sector todo implica apagar também a tabela de partições (daí 446B em vez de 512B), assumi que esse não era o caso com o sector da partição independente, dado que este não necessita guarda essa informação.

Entretanto enquanto estava pesquisar alguma informação para escrever este post, encontrei uma página que explica uma situação semelhante, de instalar o stage1 do grub numa partição por engano.

Será possível usar o grub2 na vez do rEFIt (dado que já suporta GPT) e deixar de ter este esquema do MBR no GPT :?: