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! 😛

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).

audiolib no hacklaviva no Porto

Amanhã será algo muito parecido com isto que se vai poder ouvir no evento audiolib a começar às 21h30 no hacklaviva:

Acordado Vivo

O Ricardo Lameiro vai mostrar como soa a conjugação do seu Fagote com o software Pure Data. (que será melhor do que o que eu vou fazer 😛 )

*snif* parece que o Ricardo não pode estar lá amanhã… Mas no sábado o Ricardo e o Rui vão lá estar à tarde à conversa. 🙂

azulinho

Jack multi-canal com poucos recursos

Eis uma forma simples e barata de ter N saídas (ou entradas) num servidor jack.

A ideia é usar algumas placas de som USB baratas e configurar o ALSA para juntá-las num interface único. Para isso usamos um ficheiro de configuração do ALSA parecido com este:

$ cat ~/.asoundrc
pcm.geral {
  type multi
  slaves.a.pcm hw:0
  slaves.a.channels 6
  slaves.b.pcm hw:1
  slaves.b.channels 2
  slaves.c.pcm hw:2
  slaves.c.channels 2
# 6 canais da placa 1
  bindings.0.slave a
  bindings.0.channel 0
  bindings.1.slave a
  bindings.1.channel 1
  bindings.2.slave a
  bindings.2.channel 2
  bindings.3.slave a
  bindings.3.channel 3
  bindings.4.slave a
  bindings.4.channel 4
  bindings.5.slave a
  bindings.5.channel 5

# 2 canais da placa 2
  bindings.6.slave b
  bindings.6.channel 0
  bindings.7.slave b
  bindings.7.channel 1

# 2 canais da placa 3
  bindings.8.slave c
  bindings.8.channel 0
  bindings.9.slave c
  bindings.9.channel 1
}

ctl.geral {
  type hw
  card 0
}

Cheguei a esta configuração com base neste tutorial.

Estou a usar esta configuração num portátil, usando a placa interna (que tem 6 canais) e mais duas placas de som USB simples só com 1 entrada e 1 saída, e apenas aproveito as saídas. A mesma ideia podia servir para ter N entradas para gravação de várias fontes (para uma banda, por exemplo).
Não tomei atenção à latência do sistema, mas isto não pretende ser algo que compita com placas dedicadas de som de N entradas e saídas, mas que custam várias centenas ou alguns milhares de euros. Potencia porém quem se queira aventurar no assunto e começar a aprender, mas tenha poucos recursos para investir em equipamento e já tenha um computador relativamente recente.
Com os circuitos simples que estas placas têm é possível também sincronizá-las, soldando ligações do cristal de uma das placas para as outras. Um tutorial a abordar esta modificação pode ser encontrado aqui. Isto será mais importante na gravação de áudio para garantir que a sample rate é igual para todas as origens de áudio.

Depois a partir daqui com o jackd a correr poderão ser necessários alguns ajustes para tudo funcionar bem. Não experimentei com o kernel rt, mas uso permissões de rt para o áudio no limit.conf:

@audio - rtprio 99
@audio - nice -10
@audio - memlock 512000

Para arrancar o jackd uso o seguinte .jackdrc:

/usr/bin/jackd -R -m -dalsa -P -dgeral -r48000 -p1024 -n2 -m

De notar que uso a opção -P para só usar o playback, já que não configurei a captura das placas no ficheiro de configuração do ALSA.

Isto permite usar o mixxx com várias placas de som, basta usar uma versão com suporte para o jack e configurar o master para os canais 6-7 e o monitor para os canais 8-9, para neste exemplo usar as 2 placas externas. Podendo fazer a mistura directamente no mixxx ou usando uma mesa de mistura externa.

Terei que experimentar melhor para saber se este sistema é minimamente estável, mas para quem quer começar a aprender técnicas de DJ ou a criar alguma coisa com os sequenciadores e sintetizadores que suportem o jackd tendo a possibilidade de monitorizar algumas dessas aplicações, este sistema pode ser um ponto de partida.

Actualmente as aplicações que estou a usar com este sistema são o seq24 (sequenciador) a activar o hydrogen (drumbox com samples), o zynaddsubfx (sintetizador multi-canal, polifónico e com efeitos) e o nekobee (emulador da 303), o som destas 3 aplicações entra no jackeq (mesa de mistura virtual com equalizador e 4 canais), o monitor deste liga a uma placa externa e o master entra no jamin (equalizador e compressor). Do jamin sai para a placa principal que liga ao sistema de som, ou uso o timemachine para gravações. Tudo isto é ligado com a ajuda do patchage. Cheguei a usar o qjackctl mas o patchage suporta o lash e tem um interface mais simples.
Estas aplicações têm quase todas suporte para o gestor de sessão lash, o que simplifica a preparação do sistema quando queremos voltar a um estado usável, ou à última configuração. Além disso permite configurar várias sessões com diferentes aplicações. As aplicações sem suporte para o lash (jackeq, jack-dssi-host para correr o nekobee e o jamin) podem ser arrancadas com o lash_wrap para ficarem associadas à sessão. Algumas configurações podem não ficar guardadas, mas na globalidade funciona suficientemente bem.

Com várias aplicações e tantos controlos, sinto que o rato se torna um bocado ineficiente… mas com a ajuda de vários desktops virtuais e como a máquina é suficientemente rápida, o compiz também dá alguma ajuda com os plugins cube, expo e scale, por exemplo. Tenho que experimentar isto com o whiteboard para o wiimote quando tiver acesso a um projector… 😎 Não sei se seria funcional, mas não deixa de ser uma ideia engraçada. Os controladores nano da Korg também parecem ser uma alternativa de baixo custo para tornar o sistema mais fácil de gerir.

Mashups

Saiu o álbum de Girl Talk há pouco tempo e entretanto descobri outro artista de mashups, Poj Masta.

Mixes de mashups deixam-me com um “warm feeling inside”. 8)

Curti à brava as misturas que estão disponíveis no site dele com tracklists e tudo.

Esta é mais uma situação em que as licenças Creative Commons fazem sentido, para evitar que alguém que crie obras a partir de obras de outras pessoas sinta que tem uma nuvem negra a pairar por cima da cabeça.

“Greed killed FM broadcast radio”

Music lovers are leaving FM broadcast radio in droves because of greed.

All the FM stations got bought out by Clearchannel and other conglomerates, and they all play the same songs broadcast from a central location. No more local DJs, no more local news, no more local weather, no more local music.

FM radio puts an emphasis on back catalog – rarely is there any new music that appeals to me. I do not care for hip hop, rap, etc. There is no variety in music, and there is a lot of music out there (esp independent labels) that is not getting played on FM radio.

Payola has pushed the independents out of FM radio. Nobody wants to admit that there is a white elephant in the room. Because the radio conglomerates have gotten greedy, the music variety suffers.

The obesity of advertising – way too much of it – has driven listeners away from FM radio. They are tired of the high ad-to-program ratio of program time. Radio conglomerates got too greedy when they consolidated all the FM stations and then tried to raise revenue through advertising.

The end result is a mass exodus of listeners away from FM radio. Many of my friends no longer listen to radio and they listen to songs on their ipods, their mp3 car radios, their internet radios, etc.

Independent labels found an outlet through internet radio and former FM radio listeners are embracing it enthusiastically. The FM radio lobby is extremely powerful and they conspired to use the royalty fees to drive the internet radio out of the market. That is not how capitalism is supposed to work.

in Slashdot, Internet Radio’s “Last Stand”

Sintetizadores, caixas de ritmos e outros sons famosos

Enquanto fazia umas pesquisas um destes dias, encontrei este interessante resumo sobre vários sintetizadores, caixas de ritmos e outros sons e excertos musicais de alguma forma famosos que decerto já ouvimos nalguma música por vezes até sem dar conta. 🙂

Tenho que assumir o sonho de ter a hipótese de estender as brincadeiras com caixas de ritmos e sintetizadores em software a algo físico cheio de cabos, botões e luzes cintilantes (foi uma experiência significativa por si só a entrada em palco do equipamento dos The Chemical Brothers no Hype@Tejo).

Isto fez-me recordar o excelente mapa (numa applet Java) que tenta mostrar a história do sampling na música (mas não carrega com o plugin do java 1.6 aqui…). [Via BoingBoing em 2005]