quarta-feira, 14 de março de 2018

ALSA MIDI

Instalando as dependências
sudo apt-get install libasound2 libasound2-dev


#include
#include
#include
#include
#include

int keep_walking;

static void sigint_handler(int i){
    keep_walking = 0;
}


int main(int argc, char *argv[]) {

   int note_time = 1000000; // 1 segundo (em microsegundos)

    // Pega o Ctrl+C ou signal de Kill para a aplicação.
   signal(SIGINT, &sigint_handler);
   signal(SIGTERM, &sigint_handler);
   keep_walking = 1;

    // Crio o dispositivo MIDI
   snd_seq_t *seq_handle;
   int portid;
   if (snd_seq_open(&seq_handle, "hw", SND_SEQ_OPEN_DUPLEX, 0) < 0) {
      fprintf(stderr, "Error opening ALSA sequencer.\n");
      exit(1);
   }
   
   snd_seq_set_client_name(seq_handle, "My App Midi");
   if ((portid = snd_seq_create_simple_port(seq_handle, "My Midi Port",
            SND_SEQ_PORT_CAP_READ|SND_SEQ_PORT_CAP_SUBS_READ,
            SND_SEQ_PORT_TYPE_APPLICATION)) < 0) {
      fprintf(stderr, "Error creating sequencer port.\n");
      exit(1);
   }

    snd_seq_event_t ev;
    snd_seq_ev_clear(&ev);
    snd_seq_ev_set_source(&ev, 0);
    snd_seq_ev_set_subs(&ev);
    snd_seq_ev_set_direct(&ev);

  while (keep_walking) {

    
   // Note on 
   snd_seq_ev_set_noteon(&ev, 0, 60, 127);
   snd_seq_event_output(seq_handle, &ev);
   snd_seq_drain_output(seq_handle);
    // Duration
   usleep(note_time);

   // Note off
   snd_seq_ev_set_noteoff(&ev, 0, 60, 0);
   snd_seq_event_output(seq_handle, &ev);
   snd_seq_drain_output(seq_handle);
    // Duration
   usleep(note_time / 6);

  }

   snd_seq_close(seq_handle);
   return 0;
}

Para compilar:


gcc alsamidi.c -o alsamidi -lasound

quinta-feira, 14 de setembro de 2017

Certificados em Latex

Olha que maneiro! Precisamos de 2 arquivos: Um que é o Certificado e outro que é a lista de nomes.

Certificado.tex --------------------------------------------------

\documentclass[a4page]{article}
\usepackage[utf8]{inputenc} 
\usepackage{eurosym}
\usepackage{textmerg} 
\usepackage[left=2cm,right=1cm,bottom=1cm,top=1cm]{geometry}
\usepackage{lscape}
\usepackage{graphicx}
\usepackage{times}
\usepackage{overpic}


\begin{document}
\begin{landscape}
\begin{center}

\Fields{\Name}
\Merge{data.dat}{
\fbox{
\begin{minipage}{1.3\textwidth}
\centering
\vspace{1cm}
\centerline{\includegraphics[scale=.4]{logo}}
\vspace{1cm}
\par
\huge{\textbf{\textsc{Certificate of participation}}}
\\
\vspace{2cm}
{
  \LARGE{\itshape This is to certify that \textbf{\Name }~ has participated\\
    in the 16th Brazilian Symposium on Computer Music\\
    held at the University of São Paulo, Brazil, on September 3-6 2017.\par}

}
\vspace{2cm}
\hbox to 0.9\textwidth{\centering \hfill\includegraphics[scale=0.7]{Assinatura}}
\hbox to 0.9\textwidth{\centering \hfill\Large Marcelo Queiroz}
\hbox to 0.9\textwidth{\centering \hfill\Large\bfseries SBCM 2017 General Chair}
\vspace{0.4cm}
\end{minipage}
}%fbox
\newpage
}%Merge
\end{center}
\end{landscape}
\end{document}

data.dat -------------------------------------------------------------------------

Fulano da Silva

Beltrano de Souza

Cicrano Schiavoni

Teste de Certificado  dos Campos Latex

...


Resultado? Um PDF com várias páginas, uma por nome.



quarta-feira, 19 de julho de 2017

OCR em arquivos PDF

Passo 1: Primeiramente, separei o PDF em vários arquivos, cada um com uma página, com o comando:
pdftk nome_do_arquivo.pdf burst

Fiz isto pois os próximos passos são boatwares e fizeram minha máquina reiniciar algumas vezes. :-)

Passo 2: Depois, converti cada uma destas páginas em uma imagem jpg com o comando:
for i in pg_0*pdf ; do convert -density 400 $i $i.jpg; done

Passo 3: Depois, usei o OCR (Optical Character Recognition) em cada uma das imagens, transformando-as em textos:
for i in pg_0*jpg ; do tesseract -l por $i $i; done

Passo 4: E isto resultou em um arquivo txt para cada página, conforme segue anexo.
Também fiz um arquivo txt com todas as páginas com o comando:
for i in pg_0*txt ; do cat $i >> completo.txt; done

E fiz um arquivo zip com os textos com o comando:
zip todos.zip pg*txt

Ou, em um único comando os passos 2, 3 e 4:

for i in pg_0*pdf ; do
echo "converting $i"
convert -alpha flatten -threshold 50% -background white -density 400 $i $i.png
tesseract -l por $i.png $i;
cat $i.png.txt >> completo.txt;
done

terça-feira, 25 de abril de 2017

Substituindo string em todos os arquivos

sed -i 's/foo/bar/g' *

Para substituir \n-\n

sed -i ':a;N;$!ba;s/\n-\n//g' *

Concatenando string no final de arquivos

echo "my text" | tee -a *.php

segunda-feira, 17 de abril de 2017

Convertendo imagens do libreoffice em PDF com crop

Salve no seu diretório ~/bin, dê permissões de execução e seja feliz!

for f in *odg
do
  if [ -f $f ] ; then
    echo "Checking ${f}"
    name=${f%\.*}
    if test ${name}.pdf -ot ${name}.odg ; then
       echo "Converting ${name}.pdf"
       libreoffice --headless --invisible --convert-to pdf ${name}.odg
       echo "Croping...."
       pdfcrop ${name}.pdf ${name}.pdf
    fi
  fi ;
done

Certamente é necessário instalar o libreoffice, o test (que costuma vir instalado) e o pdfcrop.

sábado, 18 de março de 2017

Convertendo vídeos de MKV para MP4

Convertendo vídeos de MKV para MP4.

avconv -i input.mkv -codec copy output.mp4

sexta-feira, 10 de fevereiro de 2017

Caderno de resumos - SBCM 2015

Caderno de resumos do SBCM 2015

\documentclass[10pt, a5paper, oneside]{book}
\usepackage{wasysym} % Music symbols, baby!
\usepackage{enumitem}
\setlist[itemize,1]{label={\eighthnote}}
\usepackage[utf8x]{inputenc}
\usepackage[brazil]{babel}
\usepackage{cite}
\usepackage{textcomp} %para o greater than
\usepackage{float}
\usepackage{placeins}
\usepackage{enumerate}
\usepackage{xspace}
\usepackage{colortbl}
\usepackage{hyperref}
\usepackage{pdfpages} %Para importar PDFs
\usepackage{afterpage} % Para pular página
\usepackage[absolute,overlay]{textpos} %posicao absoluta (usado na contracapa)
\usepackage{tocloft} % Pontinhos no Sumário
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}}


% Fancy Chapter
%Options: Sonny, Lenny, Glenn, Conny, Rejne, Bjarne, Bjornstrup
\usepackage[Sonny]{fncychap}
\usepackage{titlesec}

\let\oldchapter\chapter
\renewcommand{\chapter}[1]{
\oldchapter*{#1}
\addcontentsline{toc}{section}{\protect #1}
}

% Para controlar margens e etc:
\textwidth 4.7in
\textheight 7.2in
\topmargin -0.8in
\oddsidemargin -0.40in
\evensidemargin -0.40in

\begin{document}
\pagenumbering{gobble}% Remove page numbers (and reset to 1)
% ------------------------------------------------------------------------------
% Capa

\include{Capa}

% ------------------------------------------------------------------------------
% Prologo
\include{prologue}

% Sumário
\tableofcontents

% ------------------------------------------------------------------------------
% Conteúdo
\pagenumbering{arabic}% Arabic page numbers (and reset to 1)

% Resumos
\part{Technical Papers and Posters}

\chapter{Copista - Sistema de OMR para a recuperação de acervo histórico musical}
Autor:
\begin{itemize}
   \item Avner Paulo (Universidade de São João del Rei)
   \item Flávio Schiavoni (Federal University of São João Del Rei)
   \item Marcos Laia (Universidade de São Paulo)
   \item Daniel Madeira (Universidade de São João del Rei)
\end{itemize}

The Optical Music Recognition (OMR) is a Computer Science field aplied to Music and has opening problems to recognize handwriten scores. This paper presents a project called ``Copista'' that is investigating techniques to develop a software to recognize handwriten scores.


% ------------------------------------------------------------------------------
%   CONTRA CAPA
\clearpage
\thispagestyle{empty}

\clearpage
% ------------------------------------------------------------------------------
\include{ContraCapa}
\end{document}

Anais do V Ubimus

Proceedings do V Ubimus - 2014

Template latex utilizado para gerar o proceedings do V Ubimus.



\documentclass[11pt, a4paper]{book}

\usepackage[utf8x]{inputenc}
\usepackage[brazil]{babel}

\usepackage{cite}
\usepackage{textcomp} %para o greater than
\usepackage{float}
\usepackage{placeins}

\usepackage{enumerate}
\usepackage{xspace}
\usepackage{colortbl}
\usepackage{hyperref}

\usepackage{pdfpages} %Para importar PDFs

\usepackage{afterpage} % Para pular página
\usepackage[dvipsnames]{xcolor}    % Para cor de fundo na página
\usepackage{color}
\usepackage{tikz} % para desenhar o retangulo lateral na capa
\usepackage{lipsum}  % Para testes
\usepackage[absolute,overlay]{textpos}

\usepackage{tocloft} % Pontinhos no Sumário


% Cabecalho com nome da secao
\usepackage{fancyhdr}

\fancyhf{}
\fancyhead[LE,RO]{\fancyplain{}{V Ubimus - 2014} }
\fancyhead[LO,RE]{\fancyplain{}{From Digital Arts to Ubiquitous Music} }
\fancyfoot[LE,RO]{\fancyplain{}{Vitória - ES - Brazil} }
\fancyfoot[LO,RE]{\fancyplain{}{\thepage} }
\renewcommand{\footrulewidth}{1pt}

%\fancyhf{}
%\fancyhead[LE,RO]{\thepage}
%\fancyhead[LO,RE]{\textit{\nouppercase{\leftmark}} }

\renewcommand{\chaptermark}[1]{\markboth{\thechapter.\space#1}{}} 

% --- My Include command
\newcommand{\includepaper}[2]{
\includepdf[pages={1},scale=1,pagecommand={\addcontentsline{toc}{chapter}{#1}}]{#2}
\includepdf[pages={2-},scale=1,pagecommand={}]{#2}
}

\newcommand{\includepaperOP}[2]{ % One page paper
\includepdf[pages={1},scale=1,pagecommand={\addcontentsline{toc}{chapter}{#1}}]{#2}
}


% Para controlar margens e etc:
\textwidth 6.5in
\textheight 10.2in
\topmargin -0.8in
\oddsidemargin -0.20in
\evensidemargin -0.20in

\usepackage{titlesec}

%\titleformat{\chapter}[display]
%  {\normalfont\huge\bfseries}{}{0pt}{\Huge}
%\titlespacing*{\chapter}
%  {0pt}{10pt}{40pt}

\begin{document}
\pagenumbering{gobble}% Remove page numbers (and reset to 1)

% ------------------------------------------------------------------------------
%   CAPA
\clearpage
\thispagestyle{empty}
\definecolor{Roxo}{HTML}{593662}
\definecolor{Marrom}{HTML}{2c2c28}

\pagecolor{Roxo}

% Quadrado Esquerdo
\begin{textblock}{20}(-3,0)
\tikz \fill [Marrom] (0,0) rectangle (5,40);
\end{textblock}


\vspace*{\fill}

\begin{center}
\begin{minipage}{.6\textwidth}
{\color{white}
\vspace{3.7cm}

\begin{flushleft}
\large{\textbf{Anais do V Workshop de Música Ubíqua}}
\linebreak
\large{Proceedings of V Workshop on Ubiquitous Music}
\linebreak
\end{flushleft}
\centerline{\includegraphics[width=1\columnwidth]{logo-PT-small_1_2_0_0}}
\Huge{2014 - Vitória - ES - Brazil}
\vspace{2cm}
\begin{flushright}
\normalsize{
Das Artes Digitais à Música Ubíqua

From Digital Arts to Ubiquitous Music
}
\end{flushright}

\vspace{8cm}

\normalsize{
29 de Outubro a 1 de Novembro

October 29th - November 1st
}

}
\end{minipage}
\end{center}
\vfill % equivalent to \vspace{\fill}
\afterpage{\nopagecolor}
\clearpage

% ------------------------------------------------------------------------------
% Folha de rosto
\includepdf[pages={-},scale=1]{Rosto}

% ------------------------------------------------------------------------------
% Prologo
\include{prologue}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} % for chapters
\tableofcontents
\clearpage
% ------------------------------------------------------------------------------

\pagenumbering{arabic}% Arabic page numbers (and reset to 1)
\pagestyle{fancy}


\includepaper{Música ubiqua e paisagens sonoras. Possíveis contribuições}{1.pdf}
\includepaper{Exploring the potential of mobile technology for creating music collaboratively}{2.pdf}
\includepaperOP{DroneUnknown: An experiment in embracing unpredictability in live electronic performance}{3.pdf}
\includepaper{Suporte para a Criatividade Musical Cotidiana: Mixdroid Segunda Geração}{4.pdf}
\includepaper{Making meaningful musical experiences accessible using the iPad}{5.pdf}
\includepaperOP{Música Ubíqua no Colégio de Aplicação da UFRGS e Centro de Tecnologia Acadêmica e Ciência Cidadã Jr: transversalidades em pesquisa em ensino}{6.pdf}
\includepaper{The Beathealth Project: Synchronising Movement and Music}{7.pdf}
\includepaper{Characterizing Resources in Ubimus Research: Volatility and Rivalry}{8.pdf}
\includepaper{Prototyping of Ubiquitous Music Ecosystems}{10.pdf}
\includepaper{Ubiquitous Computing meets Ubiquitous Music}{11.pdf}
\includepaperOP{Progressive Disclosure}{12.pdf}
\includepaper{Computação Ubíqua e a interação corporal na aprendizagem de execução rítmica}{13.pdf}
\includepaperOP{Balance: um estudo sobre a tradução digital do corpo em equilíbrio}{14.pdf}


% ------------------------------------------------------------------------------
%   CONTRA CAPA
\clearpage
\thispagestyle{empty}
\pagecolor{Roxo}
\newpage
\vspace*{\fill}

% Quadrado Esquerdo
\begin{textblock}{20}(14,0)
\tikz \fill [Marrom] (0,0) rectangle (5,40);
\end{textblock}

{\color{white}
\centerline{\includegraphics[width=0.3\columnwidth]{logo-PT-small_1_2_0_0}}
\vspace{1cm}
2014 - Vitória - ES - Brazil
}

\clearpage
% ------------------------------------------------------------------------------

\end{document}

segunda-feira, 16 de novembro de 2015

Marca d'água em PDF

pdftk arquivo.pdf background background.pdf output out.pdf

terça-feira, 9 de junho de 2015

Separando arquivos PDFs

Para separar arquivos PDF no Linux em linha de comando com o pdf jam

pdfjam proceedings.pdf 13-26 -o papers/artigo01_01-14.pdf
pdfjam proceedings.pdf 27-28 -o papers/artigo02_15-16.pdf
pdfjam proceedings.pdf 29-29 -o papers/artigo03_17-17.pdf
pdfjam proceedings.pdf 30-41 -o papers/artigo04_18-29.pdf
pdfjam proceedings.pdf 42-56 -o papers/artigo05_30-44.pdf
pdfjam proceedings.pdf 57-57 -o papers/artigo06_45-45.pdf
pdfjam proceedings.pdf 58-68 -o papers/artigo07_46-56.pdf
pdfjam proceedings.pdf 69-80 -o papers/artigo08_57-68.pdf
pdfjam proceedings.pdf 81-92 -o papers/artigo09_69-80.pdf
pdfjam proceedings.pdf 93-95 -o papers/artigo10_81-83.pdf
pdfjam proceedings.pdf 96-96 -o papers/artigo11_84-84.pdf
pdfjam proceedings.pdf 97-98 -o papers/artigo12_85-86.pdf
pdfjam proceedings.pdf 99-99 -o papers/artigo13_87-87.pdf


E Zaz! Heis o proceedings do V Ubimus separado e pronto para ser publicado!

domingo, 19 de abril de 2015

Sobre sistemas de governo, modelos econômicos e liberdade

Dado que volta e meia preciso explicar isto em uma discussão, resolvi fazer algumas anotações aqui no blog para poder retomá-las quando preciso. Normalmente elas são necessárias quando cito o exemplo da Suécia como socialismo e alguém me chuta dizendo que a Suécia é monarquista e não socialista. Bem, vamos lá.

Monarquia é uma forma de governo de Estado que possui um monarca. Pode ser comparada a outras formas de governo como Anarquia, República, Democracia e OIigarquia. Vale lembrar ainda que República pode ser presidencialista ou parlamentarista e que ambas são (ou costumam ser) democráticas. Houve na história Repúblicas Aristocráticas que eram democráticas mas que só uma minoria (os aristocratas) votava.

Socialismo é um regime econômico baseado em organizações sociais onde estas organizações sociais decidem quanto a produção e distribuição. O Estado se torna proprietário das grandes indústrias e dos serviços básicos fornecidos à população como transporte, saneamento, saúde e energia. Pode ser comparado ao fascismo, nazismo, comunismo e livre mercado.

No caso de uma monarquia, o Estado é Sua Majestade a Rainha, e ela fica com 1% de toda e qualquer transação. Se o regime econômico for socialista, a Rainha irá bancar os serviços básicos para a população. O Estado é a Rainha e não há Estado sem ela. No caso de uma república, o Estado é representado pelo Presidente da República.

Uma confusão comum é achar que socialismo é comunismo. Ou que socialismo depende de um ditador malvado que irá impor sua vontade à população. Ao vermos modelos como o da Suécia podemos colocar alguns pontos para evitar esta confusão.  Socialismo não é contra a propriedade privada. Isto é uma forma de comunismo. O mesmo quanto a ter vários partidos políticos ou o direito de ir e vir. O que o Estado tenta assegurar no socialismo é a propriedade dos serviços básicos, como educação, transporte, saúde, segurança, energia, ... e as indústrias estratégicas para a nação.

É bastante difícil manter as empresas privadas destes serviços públicos e pois sempre há empresas privadas tentando colocar a mão nestes setores considerados vitais para a população. Obviamente que o lucro de tais setores seria certo mas é questionável se tais serviços deveriam ser fonte de lucro.

Há ainda uma terceira questão que entra em pauta e que não envolve nem forma de governo nem regime econômico. Trata-se da liberdade. Tanto liberdade para empresas fazerem negócio e operarem livremente quanto liberdade individual (para os indivíduos). Ou, se preferir, liberdade econômica e liberdade civil. Boa parte do pensamento chamado atualmente de neo-liberal prega liberdade econômica para as empresas mas não se pronuncia quanto a liberdade civil. Liberdade civil quase sempre envolverá questões polêmicas como descriminalização de drogas, aborto, casamento homoafetivo e coisas assim.

Apesar de minha visão de socialismo não ser exatamente o que é pregado por Marx (e chamado de comunismo) ou por vários outros escritores de esquerda, eu prefiro a ideia de Estado com compromisso social ser chamado de socialista e entender os detalhes de como isto é implementado apenas como estudos de caso.

Por fim, não tenho muitas dúvidas que a Suécia é uma monarquia constitucional parlamentar socialista e com grande liberdade tanto civil quanto econômica, ou seja, de economia neoliberal. Tilt?

Fontes:


  • https://www.portalbrasil.net/2006/colunas/politica/maio_01.htm
  • http://www.coladaweb.com/politica/conceito-geral-de-republica-e-monarquia
  • http://pt.wikipedia.org/wiki/Forma_de_governo
  • http://pt.wikipedia.org/wiki/Socialismo



terça-feira, 14 de abril de 2015

Criando uma página para projeto no GIT


Como criar uma página para o projeto em um branch separado:

Clone o projeto
git clone github.com/user/repository.git
cd repository

Crie um branch órfão (Sem conexão com o branch master)
git checkout --orphan gh-pages

Apague os arquivos do branch master
git rm -rf .

Crie a página
echo "My Page" > index.html
git add index.html
git commit -a -m "First pages commit"
git push origin gh-pages

A página do projeto ficará no endereço
http(s)://.github.io/

Para editar o branch com o site
git clone -b gh-pages --single-branch git://sub.domain.com/repo.git

Fonte:


sexta-feira, 5 de dezembro de 2014

Problema de DNS no Ubuntu

Meu Ubuntu estava com um problema que em determinadas redes e principalmente após hibernar, ele parava de resolver domínios. Descobri que algo alterou minha configuração de DNS de forma que o mesmo passou a ser estático e não mais dinâmico. Nem ideia do que possa ter sido. De qualquer forma, o comando abaixo permite voltar o DNS para dinâmico:

sudo dpkg-reconfigure resolvconf