Vous êtes sur la page 1sur 47

WILEY HIROSHI TAKAHASHI

RELATRIO DE ESTGIO

AFINADOR ELETRNICO DE INSTRUMENTOS MUSICAIS UTILIZANDO TRANSFORMADA DE FOURIER

LONDRINA 2006

WILEY HIROSHI TAKAHASHI

AFINADOR ELETRNICO DE INSTRUMENTOS MUSICAIS UTILIZANDO TRANSFORMADA DE FOURIER

Estgio obrigatrio desenvolvido durante o 4 ano do Curso de Graduao em Cincia da Computao, da Universidade Estadual de Londrina, como exigncia parcial e obrigatria para a obteno do ttulo de bacharel. Orientador: Prof. Dr. Alan Salvany Felinto

LONDRINA 2006

ii

WILEY HIROSHI TAKAHASHI

AFINADOR ELETRNICO DE INSTRUMENTOS MUSICAIS UTILIZANDO TRANSFORMADA DE FOURIER

COMISSO EXAMINADORA

Prof. Dr. Alan Salvany Felinto Universidade Estadual de Londrina

Prof. Dr. Cinthyan Renata S. C. Barbosa Universidade Estadual de Londrina

Prof. Ms. Mrcio Shimoda Universidade Estadual de Londrina

Londrina, ______ de _________________ de 2006.

iii

AGRADECIMENTOS

A Deus, que me deu foras pra enfrentar toda essa jornada e sempre estar presente em minha vida.

Ao Prof. Dr. Alan Salvany Felinto, pela pacincia, compreenso e sua grande motivao no desenvolvimento desse trabalho.

Aos professores do Departamento de Computao da Universidade Estadual de Londrina, cujos ensinamentos estaro sempre presentes em minha vida.

minha famlia, meu refgio e meu conforto, com seu amor incondicional.

s grandes amigas Marlia e Maria Alice, pelo imenso carinho e ateno, sempre prestativas e compreensivas.

Aos anjos Suzi e Cynthia, sempre demonstrando todo afeto e o verdadeiro sentido de uma amizade.

Aos

grandes

amigos

Gislaine,

Patrcia,

Rogrio,

Elton

Rafael,

pelo

companheirismo e por tornarem meus dias mais felizes.

A todos que, com boa inteno, colaboraram para a elaborao e finalizao deste trabalho.

iv TAKAHASHI, Wiley Hiroshi. Afinador Eletrnico de Instrumentos Musicais Utilizando Transformada de Fourier. 2006. Estgio obrigatrio. (Graduao em Cincia da Computao) Universidade Estadual de Londrina.

RESUMO

A proposta de trabalho para o estgio consiste em captar as ondas sonoras emitidas por instrumentos musicais e atravs de clculos matemticos fornecer a tonalidade do som captado, indicando se a nota informada corresponde ao resultado esperado. Como resultado, almeja-se um aprofundamento dos conceitos envolvidos e a implementao do software que ir simular um afinador de instrumentos eletrnicos. Palavras-chave: afinador eletrnico, som, Transformada de Fourier, biblioteca de som.

v TAKAHASHI, Wiley Hiroshi. Afinador Eletrnico de Instrumentos Musicais Utilizando Transformada de Fourier. 2006. Estgio obrigatrio. (Graduao em Cincia da Computao) Universidade Estadual de Londrina.

ABSTRACT

The proposal of this work for the trainee consists of catching the sonorous waves emitted by musical instruments and through matematical calculations, supply the tonality of the caught sound, indicating if the informed note corresponds to the waited result. As result, a deepening of the involved concepts and the implementation of the software is longed for that will go to simulate a tuner of electronic instruments.

Key-words: electronic tuner, sound, Fourier Transformation, sound library.

vi SUMRIO

1 INTRODUO ........................................................................................................1 1.1 Justificativa..................................................................................................1 1.2 Objetivos .....................................................................................................1 1.2.1 Objetivos Gerais .............................................................................1 1.2.2 Objetivos Especficos .....................................................................1 1.3 Metodologia.................................................................................................2 1.4 Estrutura do trabalho ...................................................................................2 2 FUNDAMENTAO TERICA ..............................................................................3 2.1 Transformada de Fourier............................................................................3 2.1.1 Introduo......................................................................................3 2.1.2 Analogia Sistema de Coordenadas ............................................4 2.1.3 Transformada de Fourier...............................................................5 2.1.4 Transformada Rpida de Fourier (FFT).......................................10 3 MANIPULAO DE SOM UTILIZANDO O COMPUTADOR ...............................12 3.1 Biblioteca SDL ..........................................................................................12 3.1.1 Estrutura da SDL .........................................................................12 3.1.2 udio na SDL ..............................................................................13 3.2 Biblioteca javax.sound.sampled ...............................................................14 3.2.1 Representao de udio na biblioteca ........................................14 3.2.2 Classe AudioSystem ...................................................................15 3.2.3 Classe AudioFormat ....................................................................16 3.2.4 Classe TargetDataLine................................................................16 3.2.5 Captura de som no programa desenvolvido ................................17 4 MODELAGEM UML ..............................................................................................21 4.1 Definio dos Atores ................................................................................21 4.2 Lista de UseCases (Eventos) ...................................................................21 4.3 Diagrama de UseCases ...........................................................................22 4.3.1 UseCase por Evento ..................................................................22

vii 4.4 Diagrama de Seqncia ...........................................................................25 4.4.1 Diagrama de Seqncia: IniciarCaptura Curso Normal...........25 4.4.2 Diagrama de Seqncia: CapturarSom Curso Normal............25 4.4.3 Diagrama de Seqncia: FinalizarCaputar Curso Normal .......26 4.4.4 Diagrama de Seqncia: VerSobreSoftware Curso Normal ....26 4.4.5 Diagrama de Seqncia: SairPrograma Curso Normal ...........27 4.5 Diagrama de Classe ..................................................................................28 4.6 Interfaces e Utilizao do Sistema ............................................................29 CONSIDERAES FINAIS ......................................................................................33 REFERNCIAS BIBLIOGRFICAS .........................................................................34

viii LISTA DE FIGURAS

Figura 1 Sistema de Coordenadas em IR3 ...............................................................4 Figura 2 Amostragem de udio na biblioteca javax.sound.sampled.......................14 Figura 3 Fluxograma ..............................................................................................20 Figura 4 AtorUsurio ..............................................................................................21 Figura 5 Diagrama de Use Cases ..........................................................................22 Figura 6 Use Case IniciarCaptura ..........................................................................22 Figura 7 Use Case CaputarSom ............................................................................23 Figura 8 Use Case FinalizarCaptura ......................................................................23 Figura 9 Use Case VerSobreSoftware ...................................................................24 Figura 10 Use Case SairPrograma ........................................................................24 Figura 11 Diagrama de Seqncia IniciarCaptura (Curso Normal) ........................25 Figura 12 Diagrama de Seqncia CapturarSom (Curso Normal) .........................25 Figura 13 Diagrama de Seqncia FinalizarCaptura (Curso Normal) ....................26 Figura 14 Diagrama de Seqncia VerSobreSoftware (Curso Normal) .................26 Figura 15 Diagrama de Seqncia SairPrograma (Curso Normal) ........................27 Figura 16 Diagrama de Classe (Parte A) ...............................................................28 Figura 17 Diagrama de Classe (Parte B) ...............................................................29 Figura 18 Tela Inicial ..............................................................................................30 Figura 19 - Tela exibindo a nota musical, freqncia real e ideal de um som qualquer ..................................................................................................................................31 Figura 20 Tela de dados do software .....................................................................32

1 1 INTRODUO

A proposta deste trabalho apresentar uma fundamentao terica atravs da anlise de alguns conceitos matemticos e computacionais, e baseandose nessas informaes implementar um prottipo que simule um afinador eletrnico de instrumentos musicais. 1.1 Justificativa As notas musicais, elementos mnimos de um som, so formadas por um nico modo de vibrao do ar. A cada nota musical est associada uma freqncia, geralmente fornecida em Hertz (Hz), a qual descrever em termos fsicos se a nota mais grave ou mais aguda. O trabalho tem o intuito de manipular essas freqncias das notas musicais, e promover a aplicao prtica dos conceitos envolvidos como ondulatria, teoria musical e bibliotecas de som. 1.2 Objetivos 1.2.1 Objetivos gerais Este trabalho tem como objetivos gerais: aprofundamento nos conceitos de computao aplicada ao som; aprofundamento nos conceitos de Ondulatria, Transformada de Fourier e Biblioteca javax.sound. 1.2.2 Objetivos especficos O objetivo especfico deste trabalho desenvolver um software que ir afinar instrumentos musicais, seguindo as seguintes etapas: para uma dada entrada, o afinador capaz de codificar essa entrada, fornecer em qual tonalidade o

2 som captado est, comparando com as freqncias das notas musicais prestabelecidas. 1.3 Metodologia A metodologia utilizada para o desenvolvimento desse software baseada atravs do UML (Unified Modeling Language). O UML uma linguagem grfica padro para elaborao da estrutura de projetos complexos de software. Pode ser empregada para visualizar, especificar, construir e documentar os artefatos de sistemas de software (I-WEB, 2003). 1.4 Estrutura do trabalho Este trabalho est estruturado da seguinte forma: no captulo 2 ser apresentado um embasamento terico acerca da Transformada de Fourier e da Transformada Rpida de Fourier. no captulo 3 ser abordado o conceito sobre a biblioteca de som javax.sound. no captulo 4 ser efetuado um estudo atravs da modelagem de UML com as seguintes etapas: Definio dos atores; Lista de Use Cases; Diagrama de Use Cases; Diagrama de Seqncias; Descrio do software afinador eletrnico.

3 2 FUNDAMENTAO TERICA Este captulo tem por objetivo fornecer toda a fundamentao terica utilizada no desenvolvimento do afinador eletrnico de instrumentos musicais. 2.1 Transformada de Fourier O objetivo em estudar-se o conceito da transformada de Fourier deve-se ao fato de analisar o comportamento de uma onda sonora, transformando-a de um sinal analgico no domnio do tempo para um sinal digital no domnio das freqncias. 2.1.1 Introduo Conforme Ullmann (2001), a transformada de Fourier baseia-se numa descoberta do matemtico francs Jean Baptiste Joseph Fourier, onde qualquer fenmeno de natureza peridica pode ser decomposto em uma srie infinita de funes senoidais, com amplitudes variveis e freqncias mltiplas de uma fundamental e fases coincidentes, inversas ou variveis. O inconveniente deste processo que ele deve necessariamente lidar com fenmenos que sejam peridicos, ou seja, que se repitam de tempos em tempos Perodo. Aps um estudo mais aprofundado do assunto, Fourier concluiu que se esse perodo fosse extremamente grande, tendendo ao infinito, sua descoberta poderia ser aplicada inclusive a fenmenos com durao mais curta impulsos (ULLMANN, 2001). Ainda, segundo o autor, isto permite que um nico pulso, de durao e intensidades mensurveis, possa ser desmontado em termos das freqncias e intensidades que o compe. Ou seja, transforma-se um fenmeno que existe apenas no domnio do tempo, em um anlogo que passa a existir tambm no domnio da freqncia. Ullmann (2001) ainda ressalta que durante esse processo de transformao, o impulso inicial vai sendo dividido em uma quantidade praticamente infinita de intervalos menores, os quais contm todas as informaes pertinentes composio desse pulso em termos de freqncias, que existem naquele momento

4 especfico. Para fins prticos, esse processo no se mostra vantajoso, em razo de utilizar uma quantidade muito grande de amostras e clculos. Mas o autor acredita que, se forem impostas certas restries a esse processo de fatiamento da amostra, possvel trabalhar com relativa rapidez e preciso de clculos. Portanto, a chamada Transformada Rpida de Fourier ou Fast Fourier Transformation (FFT) nada mais do que a prpria transformada, porm envolvendo um alto grau de restries. A mais importante relativa menor quantidade de fatias ou amostras que pode ser feita a partir do sinal analisado, sem que estas percam suas caractersticas e propriedades de ainda permitir a reconstruo do espectro de freqncias daquele sinal (ULLMANN, 2001). 2.1.2 Analogia Sistema de Coordenadas Considerando o sistema de coordenadas da Figura 1, espao IR3.

P(A,B,C)

x
3

FIGURA 1 - Sistema de Coordenadas em IR

Tem-se as componentes x, y e z. As variveis 1, 2 e 3 representam, respectivamente, a participao que cada componente apresenta para encontrar determinado ponto do espao IR3. Para encontrar o ponto P(A, B, C), por exemplo, e considerando o sistema de bases (1.1) conforme a seguir:

5 1 = (1, 0, 0) 2 = (0, 1, 0) 3 = (0, 0, 1) Atravs da equao 1.2, possvel calcular a localizao desse ponto no espao IR3. P(A, B, C) = A * 1 + B * 2 + C * 3 (1.2) Sistema de bases (1.1)

As variveis A, B e C representam os coeficientes do sistema. Assim, o produto escalar do coeficiente com a base resulta na contribuio dessa base para formar o ponto. 2.1.3 Transformada de Fourier Segundo Morse (1953), a Transformada de Fourier F(k) de uma funo f(x) definida por:

(1.3) O teorema integral de Fourier dado por:

(1.4) A frmula de Euler diz que: (1.5)

6 Atravs da equao 1.5, possvel reescrever a Transformada de Fourier utilizando funo trigonomtricas como seno e cosseno, como pode ser observado a seguir.

(1.6)
base da transformada de Fourier

A varivel u representa a freqncia correspondente funo trigonomtrica associada. Considerando um espao de funo, a base de Fourier uma base para o espao de funes integrveis. O cosseno e o seno so as bases da transformada de Fourier. O produto escalar de uma funo com uma das bases de Fourier fornece o clculo de F(u), que corresponde ao coeficiente de Fourier, ou seja, a contribuio da base para formar a funo f(x). Com os coeficientes de Fourier, atravs da combinao linear com a base, obtem-se a transformada inversa de Fourier. Com a utilizao do teorema integral de Fourier possvel construir a Transformada Inversa de Fourier da seguinte maneira:

(1.7)

(1.8)

(1.9)

(2.0) A frmula 2.0 freqentemente referida como frmula de inverso de Fourier ou Transformada Inversa de Fourier. Utilizando novamente as funo trigonomtricas do cosseno e do seno, possvel reescrever a transformada inversa de Fourier como pode ser observado a seguir:

(2.1) Cada F(u) est associado a uma base da transformada de Fourier, e esta, por sua vez, est associada a uma freqncia do cosseno e do seno. No clculo dos coeficientes, o maior valor de F(u) obtido representar a freqncia associada a este valor, correspondendo fundamental. Considere a srie de Fourier do seno para uma funo h(x) na regio 0 x l :

(2.2) onde os coeficientes so escritos como

(2.3) Introduzindo este valor do coeficiente na expanso da srie de Fourier para o seno obtm-se:

(2.4) Deve-se agora considerar o comportamento dessa srie para l .

Para isso, ser introduzida a varivel k, onde para valores discretos kn possui o valor n / l. Com isso, possvel por meio de uma simples manipulao matemtica encontrar que k = / l. Ento

(2.5) Pode-se notar que no limite em que l , k 0, fazendo com que

a soma aparente na expresso anterior se torne uma integral. Assim, tem-se:

(2.6) Esta expresso 2.6 conhecida como Frmula Integral de Fourier do seno. Para o cosseno, com uma deduo matemtica semelhante, porm trocando a srie de Fourier do seno pela do cosseno obtm-se:

(2.7)

(2.8) A expresso 2.8 conhecida como Frmula Integral de Fourier do cosseno. Est claro que em ambas as frmulas integrais de Fourier do seno e do cosseno, as integraes podem ser estendidas de - a +. Logo, as correspondentes expresses para essas frmulas integrais tornam-se:

(2.9) para o seno e

(3.0) para o cosseno. Associadas com essas integrais esto as correspondentes Transformadas de Fourier do seno e do cosseno, que so definidas por

10

(3.1) com frmulas inversas dadas por

(3.2) 2.1.4 Transformada Rpida de Fourier (FFT) O som ambiente definido como um vetor de amplitudes que est no domnio do tempo. O propsito de utilizar-se a transformada rpida de Fourier transformar esse sinal analgico em um sinal digital no domnio das freqncias com um custo computacional menor, comparando-se transformada de Fourier. De acordo com Thomas (2000), a Transformada de Fourier uma tcnica matemtica para converter uma funo de domnio temporal em um espectro de freqncias. Dado um elemento N do vetor x, sua Transformada Discreta de Fourier unidimensional um outro elemento N do vetor y fornecido pela frmula:

(3.3) onde:

(3.4)

11 N refere-se ao nmero de pontos, e N-ponto jkth unidade raiz.

Ento a Transformada de Fourier gasta O(N2) passos para comput-la. A Transformada Rpida de Fourier (FFT) toma proveito das identidades algbricas para calcular a Transformada de Fourier em O(NlogN) passos. O clculo organizado em log2N estgios. Em cada etapa, cada ponto emparelhado com o outro, os mesmos clculos so executados entre ambos, e os valores so sobrescritos na entrada do vetor. Por exemplo, na primeira etapa, x0 e xN/2 so emparelhados e os clculos so como segue:

(3.5) onde uma das unidades raiz. Essa seqncia de clculos ser chamada clculo bsico. possvel perceber que para dados complexos, o clculo bsico envolveria, fazendo uma multiplicao complexa, uma adio complexa e uma subtrao complexa. Na complexidade da FFT, ambos os xis e as unidades raiz so nmeros complexos. Importante lembrar que uma multiplicao complexa envolve quatro mltiplos, uma adio e uma subtrao, enquanto uma complexidade adio/subtrao envolve duas adies/subtraes, uma para a poro real e uma para a poro imaginria. Conseqentemente, para uma FFT complexa, o clculo bsico compreendido de um total de dez operaes aritmticas que so necessrias para computar cada butterfly, ou um novo par de pontos, que correspondem a cinco operaes aritmticas por ponto. Aps abordados os conceitos matemticos, o enfoque ser dado sobre as bibliotecas que manipulam arquivos de udio, que poder ser conferido a seguir.

12 3 MANIPULAO DE SOM UTILIZANDO O COMPUTADOR H vrias bibliotecas que so utilizadas na manipulao de som utilizando o computador. Dentre elas, sero destacadas a biblioteca SDL Simple DirectMedia Layer e a biblioteca javax.sound. 3.1 Biblioteca SDL A SDL Simple DirectMedia Layer uma API (Application Programming Interface), ou seja, um conjunto de rotinas e padres estabelecidos por um software para utilizao de suas funcionalidades, que aparece normalmente no formato de dlls. Trata-se de uma biblioteca multimdia e multiplataforma que apresenta diversas potencialidades direcionadas atravs de API consistente e abertas para mltiplos sistemas operacionais, tais como Windows, GNU/Linux, Mac OS X, BeOS, FreeBSD, OpenBSD, Solaris, QNX, IRIX e diversas outras plataformas no declaradas. A SDL escrita em C, mas diretamente compatvel com C++, e possui interfaces para outras linguagens de programao como Ada, Eiffel, Java, Lua, ML, Perl, PHP, Pike, Python e Ruby. Dentre suas caractersticas, a biblioteca SDL apresenta uma camada de aplicao bem definida, permitindo efetuar aplicaes modulares, podendo assim integrar as aplicaes SDL em diversos sistemas multimdia. Um bom exemplo a utilizao da SDL para udio em ferramentas como player de udio, ou at aplicaes de telefonia ou vdeo, mas o enfoque principal a rea de jogos (MENDES, 2003). O autor original da biblioteca SDL Sam Latinga, principal programador da Loki Entertainment Software. Essa empresa uma companhia devotada traduo de grandes jogos para a plataforma Linux (MONTEIRO, 2002). 3.1.1 Estrutura da SDL No campo de aplicaes multimdia, desenvolvedores normalmente esto habituados a trabalhar com a biblioteca Microsoft DirectX, uma coleo de APIs que tratam de tarefas relacionadas a programao de jogos para o sistema

13 operacional Windows. Porm, a DirectX no gratuita. Dessa forma, h um elevado custo no desenvolvimento de aplicaes multimdia. J a biblioteca SDL gratuita, alm de ser multiplataforma. considerada a melhor biblioteca de desenvolvimento de aplicaes 3D multimdia do mercado. Porm, em relao s aplicaes desenvolvidas com a SDL para plataforma Windows, a SDL dependente da DirectX, pois a Microsoft possui uma poltica de utilizao de suas ferramentas ou APIs caso alguma aplicao seja desenvolvida para sua plataforma. Em relao sua estrutura, a biblioteca SDL dividida em vrios subsistemas, dentre os quais podemos citar: Vdeo, udio, CD-ROM, Joystick, Timers e Eventos. 3.1.2 udio na SDL A biblioteca SDL oferece suporte manipulao de arquivos de udio O subsistema de udio possui diversas funcionalidades que podem ser utilizadas, por exemplo, para: Ajuste o playback de udio em 8-bits e 16-bits, em mono ou stereo, com converso opcional se o formato no suportado pelo hardware; udio funciona independentemente em uma instncia separada, preenchida pelo mecanismo de callback do usurio; Desenhado para usar softwares de mixagem de udio personalizados, mas o exemplo em arquivo contm uma biblioteca de sada de udio e msica.

14 3.2 Biblioteca javax.sound.sampled A biblioteca javax.sound a API de baixo nvel para controlar e manipular a entrada e sada de dados de som, tanto para adio digital quanto para MIDI. A manipulao de udio digital feita pela biblioteca javax.sound.sampled, enquanto qua a manipulao e criao de sons MIDI feita pela biblioteca javax.sound.midi. Como neste trabalho no foi necessrio usar MIDI, ento este captulo tratar apenas do tratamento de adio digital pelo Java. 3.2.1 Representao de udio na biblioteca A biblioteca de som do Java trata o som como um vetor de amostras de amplitude. Para ilustrar isso, a Figura 21 mostra uma onda de som com algumas amostragens.

FIGURA 2 - Amostragem de udio na biblioteca javax.sound.sampled

Como uma onda de som contnua no tempo, ela no pode ser representada fielmente em um meio digital. Para isso, devem ser tiradas amostras do som para que ele possa ser representado digitalmente.

Programmer guide from java.sun. Disponvel em: <http://java.sun.com/j2se/1.4.2/docs/guide/sound/programmer_guide/chapter1.html>. Acesso em 01 nov. 2006.
1

15 Na Figura 2, a onda de som de cor azul amostrada em intervalos de tempo iguais atravs dos pontos vermelhos. Estes pontos, se forem amostrados em uma frequncia rpida o suficiente, podem representar o som de maneira que o ouvido humano no conseguir diferenciar o som digital de um som natural. 3.2.2 Classe AudioSystem A biblioteca Java abstrai ao mximo o acesso aos dispositivos do sistema pois os programas escritos nesta linguagem devem ser executados em diversos sistemas operacionais. Para isso, existe a classe AudioSystem, que fornece acesso aos recursos do computador para captura e execuo de udio. Como exemplo possvel realizar uma consulta sobre todas as linhas de entrada e sada disponveis e verificar as informaes sobre elas. Se um programa precisar de um mixer ou uma linha de entrada com uma determinada configurao, esta classe pode informar se esta linha existe, e se existir, ela pode reservar a linha e abr-la para que o programa possa utiliz-la. Os tipos de recursos que podem ser acessados pelo AudioSystem so: mixers de entrada e sada de udio; linhas de udio associada aos mixers; converso de formatos de udio; arquivos e streams de udio. No programa desenvolvido do afinador eletrnico de instrumentos musicais foi necessrio solicitar uma linha de gravao de som, a qual foi feita atravs do mtodo getLine(LineInfo.info info) da classe AudioSystem. O argumento info indica o tipo de linha que se deseja solicitar. No caso do programa em questo, a linha deveria ser do tipo TargetDataLine, que ser posteriormente melhor detalhado.

16 3.2.3 Classe AudioFormat A classe AudioFormat tem como objetivo armazenar as informaes sobre o formato do som digital. A seguir esto listadas as informaes armazenadas por um objeto desta classe: Nmero de Canais: nmero de canais, sendo 1 para mono e 2 para estreo; Taxa de Frames: nmero de frames por segundo; Tamanho do Frame: nmero de bytes em cada frame; Taxa de Amostragem: nmero de amostras por segundo; Tamanho da Amostra: nmero de bits usados por amostra. Para o afinador eletrnico foi usado um formato de som com apenas 1 canal e 16.000 amostras por segundo. A cada amostra, foram usados 8 bits, sendo que os valores armazenados para cada amostra pode variar de -127 a +127. 3.2.4 Classe TargetDataLine A classe TargetDataLine representa um tipo de linha de udio onde os dados podem ser lidos. O microfone seria o exemplo mais comum de linha de captura de dados. Para obter uma linha deste tipo, deve-se usar o mtodo getLine da classe AudioSystem. Aps isso, a linha pode ser aberta atravs do mtodo open. No entanto, a linha pode estar ocupada por uma outra aplicao, e ao tentar abri-la, ser lanada uma exceo, que deve ser capturada e tratada pelo programa. Os argumentos deste mtodo so: um objeto AudioFormat indicanto o formato do som que ser capturado; o tamanho do buffer de captura de som. O tamanho do buffer deve ser escolhido com cuidado, pois buffers muito grandes demoram para ser preenchidos, o que pode causar tempos de espera muito longos. Por outro lado, buffers pequenos podem ser preenchidos numa

17 velocidade maior que o processador pode process-los, o que pode causar a descontinuidade no som. 3.2.5 Captura de som no programa desenvolvido Nesta seo apresentado o trecho de cdigo da classe Captura, que responsvel por gravar o som a partir da entrada do microfone do computador e calcular a frequncia do som capturado. A seguir so apresentados os campos da classe captura que esto relacionados com o formato do som. /** Nmero de Samples por segundo na Wave */ private final float SAMPLES_POR_SEGUNDO = 16000; /** Nmero de bits por sample */ private final int BITS_SAMPLE = 8; /** Nmero de canais captados */ private final int NUM_CANAIS = 1; /** Flag para uso de nmeros com sinal na wave */ private final boolean FLAG_SIGNED = true; /** Informaes sobre a linha de gravao */ private DataLine.Info info; /** Armazena o formato da entrada de udio */ private AudioFormat formato; /** Linha de gravao de udio */ private TargetDataLine line; No trecho de cdigo apresentado, so definidas quatro constantes que representam a taxa de amostragem, o tamanho de bits por sample e o nmero de canais. A ltima constante FLAG_SIGNED do tipo booleano e indica que os

18 valores armazenados devem possuir sinal, ou seja, -127 a +127. Se esta constante fosse falsa, ento os valores armazenados variariam entre 0 e 255. Alm destas constantes, so definidos os campos privados line, que indica a linha de gravao, o campo formato que indica o formato de gravao dos dados e as informaes sobre a linha de entrada, que so armazenadas em info. O campo formato inicializado a partir do seguinte mtodo: public AudioFormat getFormato () { return new AudioFormat(SAMPLES_POR_SEGUNDO, BITS_SAMPLE, NUM_CANAIS, FLAG_SIGNED, FLAG_BIGENDIAN); } Neste mtodo criado um objeto do tipo AudioFormat com o formato utilizado pela classe que foi definido nas constantes apresentadas. A seguir apresentado o trecho de cdigo que abre a linha de gravao de udio: // Testa se a linha est disponvel e abre ela if (!AudioSystem.isLineSupported(info)) { // A linha de gravao no suportada System.out.println("ERRO: Linha de gravao no suportada"); flag_gravando = false; return; } // Abre a linha de gravao try { line = (TargetDataLine) AudioSystem.getLine(info); line.open(formato); // Inicia a captura de som propriamente dita line.start(); } catch (LineUnavailableException ex) { // A linha de gravao no est disponvel System.out.println("ERRO: Linha de gravao no disponvel"); flag_gravando = false;

19 return; } } Quando a captura iniciada, este trecho de cdigo responsvel por testar primeiramente se a linha de gravao suportada atravs do mtodo isLineSupported da classe AudioSystem. Caso no seja suportada, um erro impresso na sada padro e a execuo da captura finalizada. Caso exista suporte para gravao, ento a linha solicitada atravs do mtodo getLine da classe AudioSystem e em seguida aberta pelo mtodo open da classe TargetDataLine. Conforme mencionado anteriormente, a abertura da linha pode causar o lanamento de uma exceo caso a linha no esteja disponvel. Esta exceo tratada no cdigo atravs da impresso de um erro na sada padro e o trmino da execuo da captura. Caso nenhum problema ocorra ao abrir, o mtodo start inicia a captura de som propriamente dita e os bytes capturados pela entrada do microfone so gravados no buffer de entrada. A leitura e o processamento dos dados feita dentro de um loop onde executado o seguinte comando. byte [] buffer = new byte[TAM_FFT]; int nBytesRead = line.read(buffer, 0, TAM_FFT); O mtodo read da classe TargetDataLine l os dados do buffer de entrada e joga dentro da varivel buffer, que um vetor de bytes. A constante TAM_FFT informa o tamanho da amostra que ser usada para a transformada de Fourier, que no caso deste programa 4096 bytes. Quando este valor passado como parmetro do mtodo read, ele indica o nmero de bytes que devem ser lidos. O valor de retorno do mtodo o nmero de bytes realmente lidos, pois em um determinado momento pode ser que no existam exatamente 4096 bytes disponveis para leitura. Os bytes capturados pela funo read podem ser vistos como uma srie temporal, que pode ser processada pela Transformada de Fourier. Por isso, aps a leitura dos bytes, estes so passados para a funo que computa a

20 Transformada Rpida de Fourier, e em seguida o espectro da onda analisada para verificar qual a frequncia predominante na onda capturada. 3.2.6 Fluxograma Atravs do esquema abaixo (Figura 3) ser possvel verificar o funcionamento, na prtica, do afinador eletrnico de instrumentos musicais.
Usurio Btn iniciar iniciaCaptura calculaFFT retornaFFT Calcula Freqncia VerificaNota(freqncia) retornaNota Mostra Nota Afinador GUI Captura FFT Escala Temperada

retornaFreqncia

FIGURA 3 Fluxograma

21 4 MODELAGEM UML 4.1 Definio dos Atores Um ator representa qualquer entidade que interage com o sistema durante sua execuo. O seguinte ator interage com o sistema:

FIGURA 4 AtorUsuario

AtorUsuario Qualquer pessoa que utilize o Afinador Eletrnico de Instrumentos Musicais.

4.2 Lista de Use Cases (Eventos)

N. 01

Use Case IniciarCaptura

Descrio do Use Case Usurio inicia a captura do som executando o boto Iniciar Usurio captura o som atravs do microfone Usurio encerra a captura do som, executando o boto Finalizar Usurio executa o boto Sobre Usurio executa o boto Sair

Entrada Execuo do boto Iniciar Som do instrumento musical Execuo do boto Finalizar Execuo do boto Sobre Execuo do boto Sair

Resposta Incio da captura do som do instrumento musical Nota musical, freqncia capturada e freqncia ideal Cessao da captura do som do instrumento musical Tela com os dados do software e o autor Trmino do programa

02

CapturarSom

03

FinalizarCaptura

04 05

VerSobreSoftware SairPrograma

22 4.3 Diagrama de Use Cases

FIGURA 5 - Diagrama de Use Cases

4.3.1 Use Case por Evento Nmero: 01 Use case: IniciarCaptura Descrio: Usurio inicia a captura do som executando o boto Iniciar Ator: AtorUsuario

FIGURA 6 - Use Case IniciarCaptura

23 Curso Normal: 1. Usurio clica o boto Iniciar. 2. Programa inicia a captura do som do instrumento musical.

Nmero: 02 Use case: CapturarSom Descrio: Usurio captura o som atravs do microfone Ator: AtorUsuario

FIGURA 7 - Use Case CapturarSom

Curso Normal: 1. Programa captura o som do instrumento musical. 2. Analisa a freqncia capturada e faz comparaes com freqncias prestabelecidas. 3. Programa exibe a nota musical, a freqncia capturada e a freqncia ideal.

Nmero: 03 Use case: FinalizarCaptura Descrio: Usurio encerra a captura do som, executando o boto Finalizar Ator: AtorUsuario

FIGURA 8 - Use Case FinalizarCaptura

24 Curso Normal: 1. Usurio clica o boto Finalizar. 2. Programa cessa a captura do som do instrumento musical.

Nmero: 04 Use case: VerSobreSoftware Descrio: Usurio executa o boto Sobre Ator: AtorUsuario

FIGURA 9 - Use Case VerSobreSoftware

Curso Normal: 1. Usurio clica o boto Sobre. 2. Programa exibe uma tela com os dados do software e o autor.

Nmero: 05 Use case: SairPrograma Descrio: Usurio executa o boto Sair Ator: AtorUsuario

FIGURA 10 - Use Case SairPrograma

25 Curso Normal: 1. Usurio clica o boto Sair. 2. Programa encerrado.

4.4 Diagramas de Seqncia 4.4.1 Diagrama de Seqncia: IniciarCaptura Curso Normal

FIGURA 11 - Diagrama de Seqncia IniciarCaptura (Curso Normal )

4.4.2 Diagrama de Seqncia: CapturarSom Curso Normal

FIGURA 12 - Diagrama de Seqncia CapturarSom (Curso Normal )

26 4.4.3 Diagrama de Seqncia: FinalizarCaptura Curso Normal

FIGURA 13 - Diagrama de Seqncia FinalizarCaptura (Curso Normal )

4.4.4 Diagrama de Seqncia: VerSobreSoftware Curso Normal

FIGURA 14 - Diagrama de Seqncia VerSobreSoftware (Curso Normal )

27 4.4.5 Diagrama de Seqncia: SairPrograma Curso Normal

FIGURA 15 - Diagrama de Seqncia SairPrograma (Curso Normal )

28 4.5 Diagrama de Classe

FIGURA 16 - Diagrama de Classe (Parte A)

29

FIGURA 17 - Diagrama de Classe (Parte B)

4.6 Interfaces e Utilizao do Sistema Nesta sesso sero exibidas as interfaces do software bem como uma breve descrio de seu funcionamento. Ao executar o Afinador Eletrnico de Instrumentos Musicais, o usurio vai deparar-se com a seguinte interface inicialmente:

30

FIGURA 18 - Tela inicial

Quando o boto Iniciar clicado, inicia-se a captura do som do instrumento atravs de um microfone. A medida que o som capturado, o programa encarrega-se de determinar qual a freqncia capturada, a nota musical e qual seria a freqncia ideal. Esse procedimento se d da seguinte forma: a cada 0,256 segundos capturada uma amostra de som com 4096 bytes. Esse tempo calculado dividindo-se o tamanho da transformada de Fourier pelo nmero de amostras por segundo do formato de udio. Portanto temos 4096 / 16000 = 0,256. Aps isso, o vetor de bytes contendo esta amostra de som passado para o algoritmo que realiza a transformada de Fourier Rpida (FFT) sobre eles. O resultado da transformada uma representao dos dados no domnio da freqncia. Com isso, pode-se analisar o resultado da transformada para verificar qual a freqncia predominante no som capturado. Uma limitao do algoritmo est relacionada com a sua preciso. Como o tamanho da transformada 4096, cada posio do vetor resultante da transformada corresponde a 16000 / 4096 = 3,9 Hz. Portanto, quando a freqncia determinada, deve-se considerar um erro de no mximo +/- 3,9Hz. Para acabar com este problema, deveria-se usar uma FFT de tamanho 16384 e um buffer de mesmo tamanho. Nesse caso, a preciso seria na casa de 1Hz. No entanto, isso no seria bom, pois o programa teria que esperar 1 segundo para encher cada buffer, o que causaria um grande tempo de espera. Alm disso, se o programa for executado em computadores mais lentos, pode ser que uma transformada de tamanho demore muito para ser executada e a captura pode

31 perder alguns bytes devido a essa espera, ou seja, poder ocorrer uma descontinuidade do som. Aps a definio da freqncia do som capturado, esta freqncia comparada com as freqncias da escala temperada para definir qual nota ela corresponde. Alm disso, mostrada tambm a freqncia ideal da nota para que o usurio do software possa calibrar seu equipamento e atingir a nota desejada. Como exemplo, se a nota tocada tiver a freqncia 50.7 Hz, ela corresponde nota G#. Mas a freqncia ideal para esta nota 51,913 Hz, pois a informao verificada na Escala Temperada. Ento o usurio do software pode ajustar seu instrumento at que a freqncia ideal seja atingida. A Figura 18 exemplifica um som capturado pelo software e como exibido ao usurio.

FIGURA 19 - Tela exibindo a nota musical, freqncia real e ideal de um som qualquer

Se o usurio desejar saber os dados a respeito do software ou do autor, basta clicar sobre o boto Sobre. Tais dados so exibidos conforme a Figura 19:

32

FIGURA 20 - Tela de dados do software

33 CONSIDERAES FINAIS

A Computao Musical desperta grande interesse para estudiosos continuarem a explorar esse campo to vasto. Atravs de todo embasamento terico envolvendo conceitos como Transformada Rpida de Fourier e manipulao de freqncias atravs da biblioteca de som javax.sound, almeja-se ter contribudo para estudiosos no somente da rea da Computao, como tambm profissionais da Fsica e da Msica, fornecendo embasamento torico-prtico. possvel citar diversas aplicaes onde os conceitos abordados podem ser aplicados como Modelagem Acstica e Difuso, Bibliotecas Digitais de udio, Hardware para udio, Integrao de Multimeios, dentre outros. Como trabalhos futuros, baseados na teoria musical, ressalta-se a construo de um compilador que efetue a leitura de partituras musicais e produza a msica conforme o instrumento escolhido. Dessa forma, ressalta-se a importncia de um projeto multidisciplinar, que vise a abrangncia de todos os conhecimentos pertinentes ao assunto, mostrando assim a integrao entre reas cientficas.

34 REFERNCIAS BIBLIOGRFICAS

ALVIRA,

Jos

Rodriguez.

Music

Theory

Web.

Disponvel

em:

<http://www.musicaeadoracao.com.br/tecnicos/teoria_musical/teoria_online/teoria _leitura/leitura_01.htm>. Acesso em 14 out. 2006. BARTOLONI, Gicomo; SANTANA, Cludio. Curso de Violo Lio 6. Disponvel em: <http://www.correiomusical.com.br/cursoonline6.htm>. Acesso em 18 out. 2006. BASSALO, Jos M. F. Fsica Aplicada. Departamento de Fsica, Universidade Federal do Par, 2006. Disponvel em: <http://www.ufpa.br/ccen/fisica/aplicada/frequenc.htm>. Acesso em 18 out. 2006. BENNETT, Roy. Uma Breve Histria da Msica. 2 ed. Jorge Zahar Editor, Rio de Janeiro, 1986. BERTULANI, C. A. Movimento Ondulatrio. Ensino de Fsica Distncia. Disponvel em: <http://www.if.ufrj.br/teaching/fis2/ondas1/ondulatorio.html>. Acesso em 18 out. 2006. BISCEGLI, Clvis Isberto. Conceitos da fsica do ultra-som. So Carlos, SP: Embrapa out 2006. BOSQUETTI, Digenes; MAREGA JR, Euclydes. Curso de Mecnica Ondulatria Via Internet. Universidade de So Paulo. Disponvel em: <http://www.cdcc.sc.usp.br/ondulatoria/apresent.html>. Acesso em 18 out. 2006. Instrumentao Agropecuria, USP, 2004. Disponvel em: <http://www.cnpdia.embrapa.br/publicacoes/DOC08_2003.pdf>. Acesso em 22

35 CALDEIRA, Almir. O. A Fsica Quntica: o que , e para que serve. Instituto de Fsica 2006. CINTRA, Mrcio. Pauta, Nota e Claves. ndice Estao Msica. Disponvel em: <http://www2.uol.com.br/bibliaworld/musica/workshop/teo0002.htm>. Acesso em 17 out. 2006. CUNHA, Andr; QUEIR, Pedro. Ondas Sonoras. Ncleo de Fsica do Instituto Superior Tcnico, 2006. Disponvel em: <http://www.nfist.ist.utl.pt/sf/sf3/musica/ondas.htm>. Acesso em 19 out. 2006. Equipe KBr. Histria da Msica. Som & Tom, 2002. Disponvel em: Gleb Wataghin, UNICAMP, 2001. Disponvel em: <http://www.comciencia.br/reportagens/fisica/fisica02.htm>. Acesso em 15 out.

<http://www.edukbr.com.br/artemanhas/historiadamusica.asp>. Acesso em 19 out. 2006. FREEMAN, Ira. M. Som e Ultra Som. 2 ed. Rio de Janeiro: Distribuidora Record, 1964. GALVO, 2006. HENRIQUE, Lus L. Acstica Musical. Fundao Calouste Gulbenkian. Lisboa, 2002. IAZZETTA, Fernando. Tutoriais de udio e Acstica. Departamento de Msica, ECA, Universidade de So Paulo. Disponvel em: <http://www.eca.usp.br/prof/iazzetta/tutor/>. Acesso em 06 out. 2006. I-WEB, 2003. Disponvel em: <http://www.iweb.com.br/iweb/pdfs/20031008-uml01.pdf>. Acesso em 12 out. 2006. JOHNSON, Tore Nils Olof Folmer. Acstica. So Paulo: Livraria Nobel S, 1968. Rodrigo. Teoria Quntica, 1997. Disponvel em:

<http://www.geocities.com/HotSprings/Spa/5011/quant.htm>. Acesso em 03 out.

36

LACERDA, Osvaldo. Compndio de Teoria Elementar da Msica. 12 ed. Ricordi Brasileira S/A, 1966. MARTINS, Eric Aversari. Introduo ao Mtodo de Teoria Musical (Aplicada Viola Caipira). Disponvel em: <http://www.ericmartins.mus.br/teoria/teorprinc.htm>. Acesso em 15 out. 2006. MASSA, Luciano. O que uma onda?. 2000. Disponvel em:

<http://br.geocities.com/galileon/1/ondas/ondas.htm>. Acesso em 19 out. 2006. MENDES, John Anderson Freitas. SDL Uma nova API de altssima performance para jogos. The Cyclops Project, 2003. Disponvel em: <http://www.inf.ufsc.br/~awangenh/CG/sdl.html>. Acesso em 03 nov. 2006. MESQUITA FILHO, Alberto. A Natureza da Luz e o Princpio da Superposio, 1997. Disponvel em: <http://www.ecientificocultural.com/ECC2/artigos/polar03.htm>. Acesso em 18 out. 2006. MONTEIRO, Daniel. Simple DirectMedia Layer: Table Of Contents. Universidade Federal Fluminense, 2002. Disponvel em: <http://www.libsdl.org/cgi/docwiki.cgi/> Acesso em 02 nov. 2006. MORSE, Philip M.; FESHBACH, Herman. Methods of Theoretical Physics. New York: McGraw-Hill Book Company Inc., 1953. NEPOMUCENO, Lauro Xavier. Acstica. So Paulo: Edgard Blcher, 1977. PCORA, Jesus Djalma; GUERISOLI, Danilo M. Zanello. Ultra-som, 2004. Disponvel em: <http://www.forp.usp.br/restauradora/us01.htm#Ondas>. Acesso em 04 out. 2006.

37 PIEPER, Josef [traduo Sivar Hoepner Ferreira]. Sobre a Msica. ber die Musik, 1988. Disponvel em: <http://www.hottopos.com/videtur8/piepermu.htm>. Acesso em 15 set. 2006.

PINHO, Lus Jorge dos Santos. Melody Assistant Reviso da Teoria Musical. Disponvel 2006. PRSS, Alberto Ricardo. Tipos de Ondas. Fsica.NET O canal da Fsica na Internet. em 13 out. 2006. Programmer guide from java.sun. Disponvel em: Disponvel em: Acesso <http://www.terra.com.br/fisicanet/cursos/tipos_de_ondas/index.html>. em: <http://www.myriadonline.com/resources/docs/melody/portugues/solfege.htm>. Acesso em 12 out.

<http://java.sun.com/j2se/1.4.2/docs/guide/sound/programmer_guide/chapter1.ht ml>. Acesso em 01 nov. 2006. RECCO, Cludio. A Msica na Grcia Antiga. Historianet, a nossa Histria, 2003. Disponvel em: <http://www.historianet.com.br/conteudo/default.aspx?codigo=545>. Acesso em 06 ago. 2006. ROSCHEL, Renato. Histria da Msica. Almanaque Msica. Disponvel em: <http://almanaque.folha.uol.com.br/musicaoquee.htm>. Acesso em 13 set. 2006. SAMPAIO, Rafael de Assuno; DIAS, Paulo Clio Di Cellio et al. Ondulatria. Ondas, 2001. Disponvel em: <http://ww2.unime.it/weblab/awardarchivio/ondulatoria/ondas.htm#Leis%20da%2 0Reflexo>. Acesso em 16 out. 2006.

38 SILVA, Luiz Carlos Marques. Fenmenos Sonoros. Sala de Fsica. Disponvel em: <http://br.geocities.com/saladefisica6/som/fenomenos_sonoros.htm>. Acesso em 02 out. 2006. TAVARES, Romero; CABRAL, Lucdio. Ondas Uma viagem conceitual. Disponvel em:<http://www.fisica.ufpb.br/~romero/objetosaprendizagem/7Ondas/index.html>. Acesso em 16 out. 2006. THOMAS, Randi. An Architectural Performance Study of the Fast Fourier Transform on Vector IRAM. Computer Science Division (EECS), University of Berkeley, 2000. ULLMANN, Walter. Descrio de Processos e Termos Utilizados com Ferramentas de Medio FFT. So Paulo: dBW Ltda / Active Media Ltda, 2001.

Vous aimerez peut-être aussi