Behringer V-amp 2 e GNU/Linux

Há pouco tempo comprei um simulador de amplificadores de guitarra da Behringer, o V-amp 2. Gostei dele, bem versátil, ótimo custo-benefício. O problema é que algumas funções dele só podem ser gerenciadas através de um software, via midi. Ok, comprei o tal cabo midi-usb, caríssimo por sinal.

Não foi novidade ver que o fabricante só desenvolve o software pra Windows. Tentei algo com o Wine e nada. Depois de uma pesquisa vi que o uma empresa tinha desenvolvido um software pra MacOS. Proprietário, e não oferece uma das principais utilidades, que é poder baixar presets de outras pessoas e carregar no equipamento via midi. Nem é possível gerar os arquivos com seus presets e poder compartilhar. Cheguei a testar uma versão de demonstração. Ele tem realmente uma ótima interface, mas não fiquei satisfeito, principalmente por ser fechado.

Começa então a luta. Eu deveria entender um pouco da especificação MIDI e das mensagens sysex, que carregam os presets do V-amp 2. Deveria também colocar o cabo MIDI-USB pra ser reconhecido pelo kernel linux, e por fim, tentar entender como o simulador se comunica com o computador, fazendo um dump dos bytes transmitidos.

Primeiro segui as dicas do mestre Eduardo Maçan, e usei um software chamado midisport_firmware pra extrair o firmware do binário SYS do driver original da M-Audio (meu cabo é o Midsport UNO da M-Audio). Com os poderes do hotplug e algumas configurações adicionais no kernel 2.6 (se não me engano, só adicionar os módulos de áudio USB) consegui reconhecer o cabo:


tiago@zadig:~$ amidi -l
Device Name
hw:0,0 CS4281
hw:2,0,0 USB Uno MIDI Interface MIDI 1

Depois fui ler a especificação MIDI e entender um pouco como funciona, principalmente o funcionamento do System Exclusive (ie, SysEx).
Fucei alguns arquivos binários .syx de usuários que compartilham seus patches na rede. Esses arquivos são binários de 58 bytes, que guardam em cada byte uma informação System Exclusive:


tiago@zadig:~/vampux/trunk$ ls -l Pantera.syx
-rw-r--r-- 1 tiago tiago 58 2006-01-02 17:42 Pantera.syx

Fazendo uma leitura em hexadecimal fica fácil detectar que realmente é um arquivo sysex, percebendo os primeiros e últimos bytes, que são os definidos na especificação como bytes de início e fim de uma mensagem, representados por 0xF0 e 0xf7:


00000000: f0 00 20 32 00 11 20 7f 30 73 7e 28 60 6c 5e 24 .. 2.. .0s~(`l^$
00000010: 09 09 01 01 0e 03 07 01 00 01 10 22 40 40 00 20 ..........."@@.
00000020: 00 00 00 00 04 1b 49 40 00 50 61 6e 74 65 72 61 ......I@.Pantera
00000030: 20 20 20 20 20 20 20 20 20 f7 -- -- -- -- -- -- .------

O passo seguinte foi descobrir que função cada byte desse executa no equipamento. Empiricamente fui sacando onde era volume, treble, gain, reverber, amp, etc. E depois percebi que o manual do V-amp 2 coloca esses trecos em ordem, não especificando os bytes, mas numa tabela em que a ordem bateu exatamente com meus testes. Com isso completei o resto. Isso tudo foi feito utilizando o amidi, observando os dumps:


tiago@zadig:~$ amidi -p hw:2,0 -d
F0 00 20 32 00 11 20 7F 30 00 7F 7F 65 7F 7F 36 16 00 01 01 0A 00 00 00 00 00 7F 7F 40 40 01 2A 42 00 2C 53 04 11 42 3E 56 4C 65 67 61 63 79 20 43 6C 65 61 6E 20 20 20 20 F7

O legal é que o amidi pode também enviar arquivos System Exclusive pra um dispositivo MIDI. Hmmm aí começou me estimular a implementar uma interface um pouco melhor pra lidar com o V-amp 2 no GNU/Linux. Comecei a estudar PyGTK e Glade e implementei algo já funcional, porém ainda bastante incompleto em relação ao do fabricante. Fora um gerador de fractais em Delphi que fiz no início da graduação, nunca tinha implementado nada em GUI. Pra variar, o código está tosco, mas está sendo útil pra mim. Espero que com o tempo seja útil pra outras pessoas também. Espero contar com a ajuda do GTKman, Arx Cruz, que já me deu umas dicas nos momentos de desespero.

Segue abaixo os screenshots dos softwares disponíveis pra lidar com o V-amp 2. O primeiro é desenvolvido pelo fabricante e roda somente em Windows. O segundo é feito por uma empresa e roda em MacOS. O terceiro está em desenvolvimento, feito por mim, pra GNU/Linux:

vamp2 for windows

vamp2 for MacOS

vamp2 for GNU/Linux

Os fontes do Vampux (é esse o nome!) estão em http://debian-ba.org/websvn

5 Comments

  1. Jérôme
    Posted October 27, 2007 at 10:13 | Permalink

    bah !
    é muito legal a iniciativa tua !
    como anda o projeto ?

  2. Posted September 17, 2009 at 23:31 | Permalink

    muito bacana mano, obrigado pelas infos🙂

  3. lclaudio
    Posted April 16, 2010 at 16:24 | Permalink

    Impressionante… estou há três dias fazendo exatamente o que descreves no teu blog, só que para o meu Behringer Bass V-Amp e usando um Roland UM-1G como conversor usb-midi🙂

    Fico feliz e não ser o único maluco se aventurando por estas veredas. Aliás, a dica da ordem dos controles no manual é muito boa, já que o Bass V-Amp e o V-Amp2 são diferentes.

    Se eu continuar animado com a brincadeira vou escrever um conversor de syx do V-Amp para o Bass V-amp, assim consigo usar os presets disponíveis por aí.

    Abraço e parabéns pela iniciativa!

  4. Posted March 24, 2014 at 12:22 | Permalink

    por favor entre em contato comigo, gostaria de saber como anda o projeto

  5. Posted May 6, 2014 at 12:58 | Permalink

    Hi all, here every one is sharing these kinds of knowledge, so it’s good to read this webpage,
    and I used to go to see this website everyday.

%d bloggers like this: