segunda-feira, 12 de dezembro de 2011

Rotacionando Vídeos com Linux

Se você está aqui é porque deu o celular na mão de alguém para gravar e a pessoa achou que ia ficar bom se colocasse o celular em pé, certo?

Bem, eu quero é rotacionar 180 graus.

Para assistir:

mplayer arquivo_de_entrada -vf flip

Para gerar outro arquivo:

mencoder arquivo_de_entrada -vf flip -oac copy -ovc lavc -lavcopts vcodec=mpeg4 -o arquivo_de_saida

Fonte: Drebs e man do mplayer / mencoder

terça-feira, 15 de novembro de 2011

Corretor ortográfico para latex

Esta dica quem me deu foi o Daniel Batista.

Basta rolar no shell:

aspell -c -l en arquivo.tex

E seguir as instruções.

quinta-feira, 3 de novembro de 2011

Rotacionando a tela do notebook

Já quis seu notebook com a tela de lado, igual de um tablet? Experimente isto:

xrandr -o inverted
xrandr -o left
xrandr -o right
xrandr -o normal

Muito bacana.

Acelerômetro no Linux - HP Pavilion Dv6

Descobri que meu HP tem acelerômetro. Para ler os valores dele:

cat /sys/devices/platform/lis3lv02d/position 

Para manter os valores lidos:

watch -n 1 'cat /sys/devices/platform/lis3lv02d/position' 

Voilá! E o que é mais bacana, ele já está mapeado como joystick:
cat /dev/input/js0

E é possível calibrá-lo:

jscal /dev/input/js0

Maneiríssimo!

quinta-feira, 13 de outubro de 2011

Livros em CHM no Linux

O formato de arquivo CHM (Microsoft Compiled HTML Help) é um formato proprietário de ajuda online. Isto nos dá duas dicas: Ele é HTML e ele é proprietário. Bem, várias pessoas disponibilizam livros online no formato CHM. Como fazer para ler isto no Linux?

Primeiramente, o Linux conta com vários aplicativos que permitem usar este formato. Instalei um chamado xCHM que funciona muito bem. HTML navegável, imagens e tudo o mais.


Screenshot do xCHM no Ubuntu




Bem, isto parece resolver. Mas ainda tem muito a cara do help do Windows. Para converter arquivos chm para PDF há um aplicativo muito bom chamado? chm2pdf!

Viva! A sintaxe dele é a seguinte:

chm2pdf --book arquivo.chm


Simples e eficaz!

Fontes:
  • http://www.karakas-online.de/forum/viewtopic.php?t=10275
  • http://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help

terça-feira, 4 de outubro de 2011

Echo Audio Fire 12 no Jack com Ubuntu

Olha que gracinha!

Foto da interface no rack

Olha a porta MIDI

12 Entradas e 12 saídas

Configuração do Jack*
* Forcei um pouco a barra, né? 128 Frames / Período... Muitos XRuns...

O que mais me impressionou é que ela realmente funcionou, inclusive acendendo o LED de cada Sample Rate conforme o mesmo era configurado no Jack.

Muito bom!

UDP Socket

Eu me bati um pouco para entender o processo e não encontrei nenhum exemplo de envio de streams por UDP. O código ainda não está pronto mas heis um cliente / servidor UDP com multithread e que envia uma estrutura de dados pela rede:

Cliente:





#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct t_medusa_pkt {
    short int pkt_size;
    char data[];
} medusa_pkt;

int main(int argc, char**argv) {
    int sockfd, n;
    struct sockaddr_in servaddr, cliaddr;

    if (argc != 2) {
        printf("usage:  udpcli \n");
        exit(1);
    }

    sockfd = socket(AF_INET, SOCK_DGRAM, 0);

    bzero(&servaddr, sizeof (servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);
    servaddr.sin_port = htons(32000);
    sendto(sockfd, "IM HERE", 7, 0, (struct sockaddr *) &servaddr,
           sizeof (servaddr));
    printf("HERE WE GO!\n");
    while (1) {
        medusa_pkt pkt;
        n = recvfrom(sockfd, &pkt, 100, 0, NULL, NULL);
        pkt.data[n - sizeof (short int) ] = 0;
        printf("RECEIVED %d BYTES ", n);
        printf("pkt_size: %d ", pkt.pkt_size);
        printf("data: %s \n", pkt.data);
    }
}



Servidor:

 

#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>


typedef struct t_medusa_pkt { // Struct do send
    short int pkt_size;
    char data[];
} medusa_pkt;

typedef struct t_udp_thread_data { //Data to thread
    int sockfd;
    struct sockaddr_in cliaddr;
} udp_thread_data;

pthread_t udp_wait_for_receive; // The thread id

void * send_data(void * args) {
    udp_thread_data *my_data;
    my_data = (udp_thread_data *) args;
    int sockfd = my_data->sockfd;
    struct sockaddr_in cliaddr = my_data->cliaddr;

    int i, n;
    char mesg[100];
    for (;;) {
        sprintf(mesg, "%d", i);
        medusa_pkt pkt; // struct to send heterogeneous data
        memcpy(pkt.data, mesg, strlen(mesg)); //
        pkt.data[strlen(mesg)] = 0;
        pkt.pkt_size = sizeof (short int) +strlen(mesg);
        n = sendto(sockfd, &pkt, pkt.pkt_size, 0,
                 (struct sockaddr *) &cliaddr, sizeof (cliaddr));
        printf("SENT %d BYTES pkt_size: %d  data: %s\n", n,
                 pkt.pkt_size, pkt.data);
        usleep(1000);
        i += 1000;
    }
}

int main(int argc, char**argv) {
    int sockfd, n;
    struct sockaddr_in servaddr, cliaddr;
    socklen_t len;
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    bzero(& servaddr, sizeof (servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(32000);
    bind(sockfd, (struct sockaddr *) &servaddr, sizeof (servaddr));
    len = sizeof (cliaddr);
    char * mesg = malloc(100);
    while (1) {
        n = recvfrom(sockfd, mesg, 7, 0, (struct sockaddr *) &cliaddr, &len);
        printf("Cliente conectado\n");
        udp_thread_data thread_data;
        thread_data.sockfd = sockfd;
        thread_data.cliaddr = cliaddr;
        pthread_create(&udp_wait_for_receive, NULL, 
                send_data, (void *) &thread_data);
    }
}


Umas referências ou exemplos que usei:
  • http://www.tenouk.com/Module40c.html
  • http://www.cs.ucsb.edu/~almeroth/classes/W01.176B/hw2/examples/

quarta-feira, 28 de setembro de 2011

Session Handlers - O Jack fará o serviço.

Trabalhar com o Jack as vezes é um problema. Um monte de software conectado de determinada maneira e com configurações e arquivos próprios abertos. Dá trabalho reabrir para continuar o trabalho em outro momento. Isto é chamado de sessão de áudio. Houveram várias tentativas de criar um Session Handler. Heis um histórico breve e bagunçado tal qual a informação sobre:

  • LADCCA (http://savannah.nongnu.org/projects/ladcca/) Mudou de mantenedor e virou LASH.
  • LASH (http://savannah.nongnu.org/projects/lash) Morreu para virar LADISH.
  • LADISH (http://ladish.org) Que não vingou.

Brigas. Muitas brigas. Enfim o Paul Davis (criador do Jack e do Ardour) tomou a decisão e fez o que precisava ser feito. O Jack irá gerenciar sessões. Viva!

Como o assunto é novo (Março de 2011), os aplicativos ainda não suportam este recurso. Agora é questão de tempo para resolver um dos maiores problemas de trabalhar com o Jack e vários aplicativos.
 
Fontes:
  • http://old.nabble.com/Ladcca---lash--td3322840.html
  • http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-November/025630.html (Esta discussão compensa ler inteira!)
  • http://jackaudio.org/node/51 
  • http://trac.jackaudio.org/wiki/WalkThrough/Dev/JackSession

    terça-feira, 27 de setembro de 2011

    Removendo "Figure" do nome da Figura (Beamer)

    Forma 1:

    \begin{center}
    \includegraphics[width=45mm]{figure1}\\
    This is a figure
    \end{center}


    Forma 2:
    \usepackage{caption}
    \captionsetup{labelformat=empty,labelsep=none}

    Fonte: http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2008-10/msg01250.html

    Hifenização no Latex

    Não sou expert no Latex. Muito longe disto. Na verdade é comum eu apanhar para usá-lo. Mas o texto fica bonito, heim? Vale a pena. Por isto vou anotar aqui os comandos que vou aprendendo. Se servirem para outras pessoas, melhor.

    Para funcionar a hifenização em português, o texto latex deve primeiramente usar os seguintes preâmbulos:

    \usepackage[brazilian]{babel} 
    \usepackage[T1]{fontenc}
    \usepackage{ae}
    \usepackage[ansinew]{inputenc}

    Fonte: http://www.feferraz.net/br/P/Localizacao_do_LaTeX

    Isto só vai resolver se a hifenização em português estiver habilitada em seu latex. Para isto:

    sudo texconfig hyphen latex

    E adicione as linhas:

    portuguese loadhyph-pt.tex
    =portuges


    Claro que isto só faz sentido se tiver instalado o pacote Linux correto:

    sudo apt-get install texlive-lang-portuguese

    Fonte: https://lists.ubuntu.com/archives/ubuntu-pt/2008-December/005882.html

    That's all Folks!

    quarta-feira, 31 de agosto de 2011

    Medindo o desempenho do seu HD

    Sei que há uma grande diferença entre velocidades do HD principalmente quando precisamos carregar vários arquivos de áudio simultaneamente. Estava com dúvida de como descobrir os dados do meu HD no linux. Olha que surpresa. Nada de comandos texto. Clique em Sistema > Administração > Utilitário de Unidades.
    Utilitário de unidades
    Este aplicativo, além de ser bonitão, trouxe várias informações sobre o meu HD, como a velocidade do disco. Além disto, ele permite fazer vários testes interessantes como verificar a temperatura do HD.
    Utilitário de disco

    Estes são os testes SMART.

    Dados do SMART
    E este é o benchmark de leitura do disco.

    Benchmark de apenas leitura
    Maneiro! Super simples fazer as contas e dizer exatamente quantos canais de áudio com qual amostragem seu HD será capaz de trabalhar simultaneamente. Pra reclamar, ficou faltando apenas o tamanho da cache...

    segunda-feira, 11 de julho de 2011

    Escrevendo no PDF

    É muito bom a possibilidade de poder fazer anotações em um arquivo PDF. E este aplicativo faz isto:

    http://xournal.sourceforge.net/

    Vale a pena instalá-lo. Ele salva em um formato próprio mas te opção para exportar para PDF. O Xournal permite escrever, rabiscar, sublinhar (como uma destas canetas grifa texto amarelo). Tem ainda opções bonitas como fazer linhas retas, adicionar nova página em branco, remover páginas. Ferramenta essencial para correção de artigos ou coisas assim. 

    Segue screenshot:


    domingo, 22 de maio de 2011

    Concerto para Lanhouse #01

    Concerto para Lanhouse é uma instalação audiovisual para computadores conectados em uma rede local (LAN - Local Area Network). O trabalho surgiu de experimentações realizadas durante oficinas e hacklabs de áudio e vídeo interativo ministrados em salas de acesso livre à internet pelo Brasil.

    A instalação foi programada-composta em duas partes. A primeira, se desenvolve num jogo de  especialização sonora, ilusão de movimento e sincronia combinando as luzes dos monitores e o som dos alto-falantes dos computadores espalhados pela sala. Na segunda parte, as variações de cores seguem um encadeamento extendido de “acordes temporais horizontais”.

    Considerando o computador um instrumento que reúne diferentes mídias (metamídia), capaz de articular som, luz e máquinas num fluxo de metadados pela rede, Concerto para Lanhouse nos provoca pensar a LAN como um metainstrumento. A construção desse metainstrumento pode ser entendida como um trabalho artesanal análogo ao trabalho do lutier. A luteria digital se realizaria no plano combinado de hardwar e software, da rede de computadores e de ambientes de programação audiovisual como o Pure Data.

    A instalação enfatiza uma espécie de “performatização midiática” da rede local de computadores. Concerto para Lanhouse é um pequeno exercício estético "performidiático” e também uma singela homenagem às 108 mil lanhouses espalhadas pelo Brasil atualmente (dez 2010).

    Instalação feita pelo artista e amigo Giuliano Obici Lambert no MIS-SP (Museu da Imagem e do Som) em 12/12/2010. Mais trabalhos do mesmo artista em http://giulianobici.com/site/arte.html.



    Instalação do Concerto para Lanhouse #01 no Linux Audio Conference 2011 em Dublin, Irlanda.
    A instalação ficou aberta a visitação durante todo o evento entre os dias 6, 7 e 8 de maio de 2011.
    Veja mais no site do evento:
    http://lac.linuxaudio.org/2011/

    Artista: Giuliano Obici
    Video: John Lato
    Edição: Robin Gareus

    OGV 2 AVI 2 OGV

    O formato ogv é cool mas as vezes é necessário convertê-lo para, por exemplo, assistir ao filme no PlayStation 2.

    Segue os comandos:


    $ mencoder -idx video.ogv -ovc lavc -oac mp3lame -o video.avi

    E o inverso :

    $ mencoder video.mpeg -ovc lavc -o video.ogv

    Fonte:

    • http://www.vivaolinux.com.br/dica/Convertendo-formato-de-video-*.ogv-para-*.avi-no-Linux

    terça-feira, 17 de maio de 2011

    Usando nomes para placas no Jack

    No meu estúdio eu tinha um problema: duas placas de som no mesmo computador. Uma era a onboard, que eu não conseguia desativar nem pagando, e a outra um Delta LT 1010. Mesmo usando dois presets diferentes sempre havia o problema de o computador colocar as vezes uma e as vezes outra como hw:0. No LAC 2011 eu aprendi como fazer isto ser mais inteligente: usar o nome da placa.

    Veja só. Primeiro use o comando: 

    cat /proc/asound/cards

    Isto irá retornar o nome de suas placas. No meu caso:

     0 [Intel          ]: HDA-Intel - HDA Intel
                          HDA Intel at 0xda500000 irq 49

    Bem, agora é só colocar o nome dela na linha de comando do jack, ou, se preferir, no qjackctl.bin.

    Tela do qjackctl.bin usando o nome da placa de som

    Fonte:

    http://jackaudio.org/device_naming



    segunda-feira, 4 de abril de 2011

    Ardour + Korg Kontrol + Automation

    Peguei emprestado do Giu um controlador MIDI. Tem horas que é bem chato mixar usando o mouse e não tenho tal equipamento. Bem, o equipamento em questão é este:

    Korg Nano Kontrol
    A conexão é USB e foi apenas conectá-lo que o mesmo já apareceu no Jack:

    nano Kontrol no QJack

    Conectei ao Ardour e defini no Ardour que ele iria usar o Generic MIDI:

    Configuração do Ardour

    Feito isto, agora basta associar cada controle do Kontrolador com um botão do Ardour. Para isto, clique com o botão do meio do Mouse pressionando o Ctrl  sobre o botão que quer controlar. Vai aparecer um diálogo pedindo que você opere o controle. Ao mover um dos botões do Kontrolador o mesmo será associado ao seu botão da Interface. Pronto! Associado.

    Ctrl + Clique do Scroll do mouse
    Para os que não usam mouse como eu, uma dica, o canto superior direito de seu touch pad costuma funcionar como clique do scroll do mouse.

    Bem, associado o controlador MIDI ao botão agora vamos gravar a automação. No caso eu quero poder mudar o volume bruscamente de um efeito durante a música. Clique o botão contrário sobre a pista e selecione a automação. No caso, FADER.

    Adicionando automação a faixa


    Uma nova pista de automação aparecerá. Nesta pista, coloque o modo em Write de modo que você possa "escrever" a automação.

    Colocando a automação no modo "gravar"




    Agora basta tocar a música e controlar o volume. No caso vou usar o controlador.


    Automação
    Pronto. Automação criada. Dá para fazer com o mouse. Não esqueça de tirar do modo write ou a próxima vez que você apertar o play irá escrever sobre sua atual automação. E se quiser ouvir a automação, coloque no modo "Reproduzir".

    Se quiser usar um controlador para controlar os parâmetros do LADSPA, o procedimento é o mesmo: Ctrl + Clique do Scroll sobre o parâmetro.

    Controlador para parâmetro de plugin




    Como diria o Sr.Éderson Amorim: Foi Ontem!

    sexta-feira, 1 de abril de 2011

    Linux poderá deixar de ser gratuíto em 2041

    Por favor, leia este post até o final.

    No Brasil, a lei de licença de software é muito similar a lei de patentes e de direitos autorais. Não sei se em outros países também é assim, sei que no Brasil é. O prazo de validade de uma licença de software no Brasil é de 50 anos. A lei está disposta assim:


    Art 2 - § 2º Fica assegurada a tutela dos direitos relativos a programa de computador pelo prazo de cinqüenta anos, contados a partir de 1º de janeiro do ano subseqüente ao da sua publicação ou, na ausência desta, da sua criação.


    Bem, sabendo que o Linux teve seu lançamento oficial em outubro de 1991 e que o mesmo já foi lançado com a licença GPL, sua licença GPL poderá vencer em 2041 e o mesmo poderá deixar de ser gratuíto em 2041.

    Tal conta assusta um pouco. O Android, sistema operacional para celulares da Google, é baseado em Linux. O MacOS X é baseado em FreeBSD (para alguns ele é mais Linux que FreeBSD). O novo Windows 7 tem um tal Super shell que parece demais como o nosso bom e velho pinguim. Até os Linux são baseados em Linux. A ideia de um sistema operacional apenas em todos os computadores do mundo não parece ruim sabendo que o mesmo é livre. Mas, o que aconteceria se em 30 anos ele deixasse de ser?

    Será que a lei cobre isto? Se um software pago passa a ser gratuito quando sua licença vence, o que acontece com um software gratuito?

    Eu acho que 30 anos é um bom tempo para pensar nisto. Talvez não precisemos esperar tanto para concluir. Esta discussão tem data para acabar. Amanhã. Discussão como esta, só em primeiro de abril...

    quarta-feira, 30 de março de 2011

    The power of metadata

    Code is data, data is code. Everything is data. And data can drive behavior.





    Meta data simply describes other data.


    (When should you consider Meta-Architecture? - "Joseph W. Yoder)
    Seminário IME - 30/03/2011 - 14:00

    quarta-feira, 16 de fevereiro de 2011

    Credicard Hall - Lembre-se: Credicard é um cartão de crédito!

    Normalmente escrevo posts técnicos. Hoje é desabafo.

    Tentei comprar o ingresso para o show do Ozzy em Sampa (Abril/2011). Primeiro pela Internet. Descobri que há uma "taxa de serviço" de 80 reais + taxa de envio. Isto é quase o preço do ingresso. Há apenas um local para a venda sem esta taxa: Estacionamento do Credicard Hall.

    Fui até lá. Qual a surpresa? Para comprar no ponto de vendas tem de apresentar a carteirinha de estudante. De todos os ingressos a serem comprados. E a atendente anota a caneta o nome do estudante no verso do ingresso. Como faria para comprar para os colegas de Maringá que me pediram? Não pode ser xerox, cópia, scanner. Documento original ou um atestado de matrícula original com carimbo e assinatura da instituição. Piada. Porque piada? Na compra pela Internet não tem de apresentar carteirinha de estudante. Basta pagar a tal taxa...

    Fui hoje comprar o ingresso. Carteirinha de estudante na mão. A chuva tinha parado. Então veio o trânsito. O trajeto que tinha demorado 20 minutos na primeira vez demorou 40. Entrei as 20:02. Bilheteria fechada. Não dá para vender. Pior, no meu relógio era 20:04, no do segurança era 20:06, no do carinha da bilheteria, 20:05. E o carinha riu. Bastante. Deve ser algum tipo de aposta de fim de expediente: Quantos vamos deixar sem ingressos hoje?

    Logo após chegou um casal. Tinham ido comprar sem carteirinha. Foram em casa buscar suas carteirinhas e chegaram, segundo o vigia, 20:07. Atrasado demais.


    Sentei para relaxar e fumar um cigarro. Pode apostar que há um pouco de tensão. O vigia se aproximou e me pediu para ir embora. Ao ver que não me dispunha a sair (fumando, de moto, na chuva) "alisou" o seu revólver e pediu novamente. Pra terminar a jornada insólita fui tratado por bandido. Fantástico.

     Situação as 20:52, quando cheguei em casa e o trânsito já tinha "acalmado".



    Complicado é ficar com esta certeza de que todo este atendimento ridículo, todo este protocolo bizarro é só por conta da tal "taxa de serviço". Parabéns ao Credicard! Quase conseguiu me desmotivar a ver o Ozzy. Parabéns aos funcionários que devem receber um ótimo salário ou uma boa comissão sobre vendas na Internet.


    Fonte da imagem: http://cetsp1.cetsp.com.br/monitransmapa/painel/

    sexta-feira, 4 de fevereiro de 2011

    Arduino - the documentary

    Foi lançado no começo de janeiro de 2011 um documentário sobre o Arduino. O documentário encontra-se disponível para download ou para assistir on line no site:

    http://arduinothedocumentary.org/
      
    Veja o poster:
    
    
    
    
    Para assistir, siga o link:
    http://arduinothedocumentary.org/
     
    Agradecimentos ao Julian Jaramillo que me enviou a notícia do lançamento. 
    
    

    segunda-feira, 31 de janeiro de 2011

    Transformando seu Ubuntu em um Access Point

    Recentemente precisamos de uma conexão de rede wireless e não tínhamos um access point. Na falta de um roteador que fizesse isto, coloquei meu Linux para fazer. Bem, segue aqui um tutorial de como realizar tão complexa configuração.

    Normalmente os usuários de Ubuntu utilizam um programa chamado "nm-applet" que é o applet do network-manager. Ele costuma aparecer na bandeja do sistema.

    Ícone do nm-applet
    Bem, clique nele e aparecerá a opção "Criar nova rede sem fio...."

    Criar nova rede sem fio

    Feito isto, aparecerá uma janela com a opção para ser colocado o nome da rede, o tipo de segurança e também a chave de segurança.

    Janela para criar nova rede sem fio

     Pronto! Este tutorial pode terminar aqui. Veja o resultado:

    Nova rede na lista e já conectada
    Como esta configuração é muito complexa, aproveito para sugerir uma alteração na mesma. Se você criou esta rede é bem provável que seu computador sempre conecte-se nela pois, afinal de contas, sempre será a melhor rede para ele. Para evitar que isto aconteça, clique o botão contrário no nm-applet e aparecerá a opção "Editar conexões...".

    Alteração na conexão criada

    Selecione a rede que você acabou de criar e, se necessário, exclua-a. Ou então clique no "Editar".


    Editar conexões de rede

    Se a intenção for manter esta configuração mas evitar que o computador sempre utilize-a, basta deixar configurado que o computador não se conecte automaticamente nesta rede.

    Editando as configurações da rede

    Desta maneira ela estará sempre disponível mas só se conectará quando for necessário.

    Caso queira ver como fazer no Windows XP, segue o link para um tutorial. Não experimentei mas parece funcionar:

    http://rodrigoguariento.sites.uol.com.br/rede_wireless_sem_ap.htm