stringlessguitarapp.files.wordpress.com€¦ · Web viewde produção musical; GarageBand, para a...
Transcript of stringlessguitarapp.files.wordpress.com€¦ · Web viewde produção musical; GarageBand, para a...
Pontifícia Universidade Católica de São Paulo
Centro de Ciências Exatas e Tecnologia
Ciência da Computação
THIAGO DE ASSIS CARDOSO VIDAL
STRINGLESSGUITAR APP: SOFTWARE MUSICAL PARA AUXILIAR
A PERCEPÇÃO SONORA DE MÚSICOS INICIANTES
São Paulo, Dezembro de 2014
THIAGO DE ASSIS CARDOSO VIDAL
STRINGLESSGUITAR APP: SOFTWARE MUSICAL PARA AUXILIAR
A PERCEPÇÃO SONORA DE MÚSICOS INICIANTES
Monografia apresentada ao curso de Ciência da Computação da Pontifícia Universidade Católica de São Paulo como requisito parcial para obtenção do título de bacharel em Ciência da Computação, orientado pelo Prof. Dr. Carlos Eduardo de Barros Paes.
São Paulo, Dezembro de 2014
STRINGLESSGUITAR APP: SOFTWARE MUSICAL PARA AUXILIAR
A PERCEPÇÃO SONORA DE MÚSICOS INICIANTES
THIAGO DE ASSIS CARDOSO VIDAL
Monografia defendida e aprovada, em 06/12/2014, pela banca examinadora:
Professor Dr. Carlos Eduardo de Barros Paes
Orientador
Professor Dr. Julio Arakaki
Professor do curso de Ciência da Computação
Professor Ms. Jefferson Oliveira da Silva
Professor do curso de Sistemas de Informação
Dedico este trabalho aos meus pais, que estiveram sempre do meu lado em todos os momentos e à minha família que também exerceu um apoio sempre presente. Ao Professor Ítalo, que me ajudou na concepção do modelo deste trabalho; aos meus colegas músicos e
professores de música e aos bons amigos que fiz na Pontifícia Universidade Católica.
Agradeço primeiramente a Deus, que possibilitou essa história estar acontecendo; ao Professor Carlos, meu orientador, ao Professor Cláudio Ayabe, que me ajudou a aprimorar a comunicação oral; à
Fernando, que introduziu a música em minha vida e à Larissa, uma amiga excepcional para mim.
"Eu sei o preço do sucesso: dedicação, trabalho duro e uma devoção incessante para as coisas
que você quer ver acontecer." Frank Lloyd Wright
LISTA DE FIGURAS
Figura 2: Semitom entre as notas Dó e Ré no braço do violão................................................17
Figura 3.1: Interface do Aplicativo GarageBand.....................................................................20
Figura 3.2.1: Diagrama de Atividades do Processo de Remoção de Ruídos...........................22
Figura 3.2.2: Amplificando o som de uma faixa com volume baixo.......................................23
Figura 3.2.3: Aplicando o Efeito de Remoção de Ruído.........................................................23
Figura 3.2.4: Eliminando Ruídos remanescentes da gravação................................................24
Figura 3.2.5: Cortando o excesso de uma faixa sem som............................................... ........24
Figura 3.3: Adicionando arquivos áudio no arquivo de recursos do projeto...........................25
Figura 4.1: Modelo de Domínio da Aplicação........................................................................28
Figura 4.2: Diagrama de Classes da Aplicação.......................................................................29
Figura 4.3.1: Diagrama de Comunicação para Seleção de Tom.............................................30
Figura 4.3.2: Diagrama de Comunicação da instanciação dos botões da tela.........................31
Figura 4.3.3: Diagrama de Comunicação para a configuração de propriedades de botões.....32
Figura 4.3.4: Diagrama de Comunicação para o posicionamento de botões na tela...............33
Figura 4.3.5: Diagrama de Comunicação para Tocar Acorde.................................................34
Figura 6.1: Trecho de código com a localização e tamanho dos botões..................................36
Figura 6.2: Trecho do método SetButtonsProperties...............................................................37
Figura 6.3: Método SetLabels para configuração dos rótulos de tom selecionado..................37
Figura 6.4: Trecho do método AssignEvents da classe ButtonHandler...................................38
Figura 6.5: Método PlaySound que toca um acorde.................................................................39
Figura 6.6: Trecho do método SetResouceItem........................................................................39
Figura 7.1: Primeiro Rascunho da Interface
Gráfica.................................................................40
Figura 7.2: Interface Gráfica implementada em
Java................................................................41
Figura 7.3: Versão final da Interface Gráfica implementada em C# (Windows
Forms)...........41
LISTA DE TABELAS
Tabela 2.1: Relação de Notas Musicais com as Letras do Alfabeto..................17
Tabela 2.2: Legenda para Nomeação de Acordes..............................................18
Tabela 2.3: Tons Maior......................................................................................19
Tabela 2.4: Tons Menor.....................................................................................19
Tabela 2.5: Acordes Maiores.............................................................................19
Tabela 2.6: Acordes Menores............................................................................19
LISTA DE SIGLAS
C# Linguagem de Programação C#
m4a Formato de áudio m4a
IDE Integrated Development Environment
wav Formato de áudio wave
UML Unified Modeling Language
RF Requisito funcional
API Application Programming Interface
RESUMO
Este trabalho tem como objetivo criar uma aplicação de software para auxiliar o músico com a dificuldade de reconhecer acordes. Enquanto partituras apresentam-se como um recurso visual importante para treinar a capacidade de leitura e interpretação de notas musicais e acordes, notou-se uma necessidade de complementar o aprendizado do aluno com um apoio sonoro. Seja o usuário autodidata ou frequentador de aulas particulares, o intuito do software é permitir a ele se familiarizar com os sons dos acordes de um violão. No experimento foram utilizados dois softwares de produção musical; GarageBand, para a gravação dos acordes (por meio de um gravador de áudio) e Audacity, para a edição dos mesmos. Os acordes foram previamente pré-carregados na aplicação e são disponibilizados para consulta. A percepção sonora é uma habilidade isenta de talento musical que pode ser desenvolvida e aprimorada ao longo do tempo, se praticada com frequência com um instrumento real. Sendo o diferencial da aplicação não requerer conhecimento avançado em teoria musical, espera-se que seu uso contínuo aliado ao hábito de praticar com um violão, o aluno consiga melhorar sua capacidade de reconhecer acordes sem ter de recorrer a recursos auxiliares.
Palavras-chave: acorde, aplicação, tom.
ABSTRACT
This study aims to create a software application to assist the musician with the difficulty of recognizing chords. While scores are presented as an important visual resource to train the ability to read and interpret musical notes and chords, it has been noticed a need to supplement student learning with a sound support. Be the user a self-taught or a private lessons goer, the purpose of the software is to allow him become familiar with the sounds of the chords of a guitar. In this experiment, two softwares of music production were used; GarageBand for recording of the chords (via an audio recorder) and Audacity to edit them. The chords were previously preloaded into the application and are available for consultation. Sound perception is a musical skill free of talent that can be developed and improved over time, if frequently practiced with a real instrument. The differential of the application is that it does not require advanced knowledge of music theory. It is expected that its continued use coupled with the habit of practicing with an acoustic guitar the student can improve his ability to recognize chords without resorting to auxiliary resources.
Keywords: application, chord, tone.
SUMÁRIO
1 Introdução....................................................................................................................... 13
2 Conceitos sobre Teoria Musical.......................................................................................15
2.1 Tons e Acordes.........................................................................................................16
2.2 Padrão de Nomenclatura Americana......................................................................17
2.3 Lista de Tons e Acordes Utilizados...........................................................................19
3 Processos de Desenvolvimento.......................................................................................20
3.1 Gravação de Acordes...............................................................................................20
3.2 Edição de Acordes: Remoção de Ruídos nas Gravações de Áudio..........................22
3.3 Importação de Arquivos de Áudio no Visual Studio...............................................26
4 Arquitetura do Software..................................................................................................28
4.1 Modelo de Domínio.................................................................................................29
4.2 Diagrama de Classes................................................................................................30
4.3 Diagramas de Comunicação.....................................................................................31
5 Requisitos da Aplicação...................................................................................................36
Requisitos Funcionais..............................................................................................36
6 Implementação................................................................................................................37
7 Interface Gráfica..............................................................................................................41
8 Conclusões e Trabalhos Futuros......................................................................................43
Referências Bibliográficas................................................................................................44
Webgrafia........................................................................................................................ 45
14
1 INTRODUÇÃO
É sabido que, segundo professores de música, para se tornar um bom músico é preciso
dominar não só técnicas inerentes ao instrumento de estudo, o violão, mas o principal, saber
reconhecer notas musicais e acordes. Sendo essas técnicas, por exemplo, como posicionar os
dedos nas cordas ou como segurar o braço do violão, apresenta-se como uma grande
dificuldade a percepção de reconhecer os acordes sem o auxílio de um aparato textual, como
uma partitura.
Seja o músico um frequentador de aulas particulares ou autodidata, após conversas
com professores de música foi percebida a necessidade de amparar a dificuldade do aluno
iniciante em reconhecer o acorde apenas pelo som. O acorde é um elemento básico que
permite a criação de músicas, por isso foi concebida a ideia de uma aplicação de software que
pudesse servir como um complemento ao aprendizado. Entretanto, ressalta-se que o trabalho
não é um sistema de software educativo. Apesar de ser uma ferramenta que facilita o
aprendizado de música, o aplicativo não ensina ao usuário como executar os acordes de um
violão.
A habilidade de reconhecer sons musicais é isenta de talento e pode ser aprimorada
com o tempo se houver a prática com frequência. O objetivo da aplicação é, portanto, permitir
ao usuário ouvir os sons dos acordes de um violão sempre que quiser. Recomenda-se, aliado
ao uso deste software, o acompanhamento de um violão para que o intuito de familiarização
de acordes seja atingido; uma vez que o aluno pode comparar o som do acorde pré-gravado na
aplicação com o som que ele mesmo reproduz em seu instrumento.
Existem softwares que auxiliam o aprendizado de música, como o “Advanced Fretpro”
[http://www.tabguitarlessons.com/advanced-fretpro.htm – acesso em 12.05.2014], que mostra
com rigor como construir acordes no braço do violão e o próprio “GarageBand”, utilizado
nessa aplicação para a gravação de acordes; assim como a aplicação web “JamStudio”
[http://www.jamstudio.com – acesso em 29/11/14], não é necessário o usuário ter experiência
prévia com música.
Este estudo se originou como um subprojeto de Iniciação Científica no início de 2012,
com sua conclusão na metade de 2013. O projeto principal era criar uma guitarra que não
precisasse de cordas para ser tocada utilizando a plataforma open-source Arduino. Foi
15
idealizada, naquela época, uma interface gráfica que, quando fosse conectada via USB ao
instrumento desenvolvido, mostraria ao usuário em tempo real as notas tocadas. Não havia
opção de tocar acordes com a guitarra. Entretanto, após pesquisas acerca da documentação da
API de comunicação com o hardware do computador, denominada RXTX, e orientações do
Professor Ítalo em relação às possibilidades efetivas de implementação, foi proposta como
alternativa uma ideia mais simples que vingaria o propósito da interação entre músico e
máquina, ampliando o horizonte no que se refere a auxiliar o aluno de música com uma
dificuldade de seu dia a dia.
Intitulada de StringlessGuitar App, trata-se de uma aplicação desktop desenvolvida
com a linguagem de programação C# com a tecnologia Windows Forms da Microsoft.
Anteriormente, quando ainda era Iniciação Científica, este aplicativo foi desenvolvido em
Java e a arquitetura do software foi em partes aproveitada; como o modelo de domínio, que
não teve alteração, o diagrama de classes e um diagrama de comunicação. Em relação à
Iniciação Científica, foram alterados efetivamente o código fonte e os diagramas de
comunicação. Além disso, o layout dos dois permaneceu praticamente o mesmo, mas os
acordes foram regravados e editados.
1.1 Organização do Trabalho
O trabalho será dividido em oito capítulos, sendo este introdutório e mais sete. No
capítulo 2, são apresentados conceitos fundamentais da Teoria Musical, que explica os
principais elementos que torneiam este trabalho, como tons e acordes. No capítulo 3, são
explicados detalhadamente os processos de desenvolvimento da aplicação, isto é, como os
acordes foram gravados e editados e, em seguida, importados na aplicação. No capítulo 4, a
arquitetura do software é explorada, destacando a estrutura e comportamento do sistema. O
capítulo 5 retrata os requisitos da aplicação e o capítulo 6, da implementação do aplicativo. O
capítulo 7 faz um comparativo da interface gráfica da aplicação quando era projeto de
Iniciação Científica com a interface gráfica final deste trabalho mais o primeiro esboço da
tela. O capítulo 8 apresenta as conclusões da pesquisa e trabalhos futuros.
16
2 CONCEITOS SOBRE TEORIA MUSICAL
Música é a arte de combinar os sons simultaneamente e sucessivamente, com ordem,
equilíbrio e proporção, dentro do tempo (Nobre, 2006). Das principais partes que constituem a
música, a combinação dos sons sucessivos, ou seja, tocados uns após os outros, é o que se
conhece como melodia. Em relação aos sons simultâneos, ou seja, dados de uma só vez,
constituem uma harmonia.
Uma nota musical é um som que possui uma variação de tonalidade entre grave e
agudo, assim como os sons produzidos por instrumentos musicais. Esse tipo de som é
denominado som tonante. O som cuja variação de tonalidade não é possível distinguir é
denominado não-tonante. Popularmente, estes sons são conhecidos como ruídos.
Altura é uma propriedade do som. Ela permite diferenciar um som grave de um som
agudo, a partir da frequência das vibrações. Se o som tiver poucas vibrações, tem-se um som
grave, caso contrário, tem-se um som agudo. Notas musicais são sons que vibram em uma
altura definida; já os ruídos têm uma vibração irregular, portanto, sem altura definida.
As notas musicais são usadas para representar a altura dos sons musicais. As notas
musicais naturais, ou seja, as básicas no sistema musical ocidental são dó, ré, mi, fá, sol, lá, si.
Neste sistema há 5 outras notas musicais além das naturais as quais são chamadas de
acidentadas. Na música, o termo “acidente” é utilizado para descrever uma nota natural que
teve uma ligeira alteração sonora. Os acidentes, símbolos que ora podem ser “sustenido" ou
ora “bemol”, se encontram entre as notas dó e ré, ré e mi, fá e sol, sol e lá, e por último, lá e
si.
Entende-se como escala uma sequência finita e organizada de notas. As escalas
organizam as notas do som mais grave para o som mais agudo. Todavia, existem diversos
tipos de escala, empregadas para cada estilo musical como gospel, blues, jazz, rock, entre
outros. As principais escalas são a natural e a cromática. A natural, também chamada escala
de Dó Maior, é composta pelas notas nesta sequência: dó, ré, mi, fá, sol, lá, si, dó. À medida
que lê-se as notas de uma escala da esquerda para a direita (forma ascendente), o som das
notas se torna mais agudo. Da mesma forma, quando lê-se da direita para a esquerda (forma
descendente), o som das notas se torna mais grave.
17
A escala utilizada neste trabalho é a cromática, que compreende as 12 notas do sistema
musical ocidental, isto é, as notas naturais incluindo as notas acidentadas. A escala cromática,
em comparação à escala de Dó Maior, quando é introduzida os acidentes ela será composta
pelas notas em sequência: Dó – dó sustenido – ré – ré sustenido – mi – fá – fá sustenido – sol
– sol sustenido – lá – lá sustenido - si – dó. (retirado de:
http://www.guitarbattle.com.br/licoes/3351-escalas-musicais-parte-1-definicao-penta-m7-
modos-gregos.html).
É a partir de uma escala que são construídos os acordes. A primeira nota em uma
escala é denominada raiz. A escala começa e termina com a nota raiz. Por exemplo, a escala
apresentada acima começa com dó e termina com dó. Um acorde construído a partir desta
escala, por exemplo, é o Dó Maior. (retirado de:
http://violaoeguitarra.musicblog.com.br/82443/O-QUE-E-EXATAMENTE-UMA-ESCALA).
2.1 Tons e Acordes
Um acorde é a reunião simultânea de no mínimo três notas, isto é, tocadas ao mesmo
tempo. Por exemplo, o acorde “Dó Maior” é formado pelas notas dó, mi e sol.
O termo tom se refere a uma nota em relação à qual se constrói uma escala que
seleciona acordes que tenham relação entre si para formar a sequência deles nas músicas. Por
exemplo, quando uma música está no tom de Dó Maior, isso significa que os acordes
selecionados, isto é, os acordes possíveis de serem tocados respeitando a escala são: Mi
Menor, Lá Menor, Ré Menor, Sol Maior, Dó Maior, Fá Maior, Si Bemol, e Si diminuto.
Um outro significado para o conceito de tom é o intervalo que existe entre duas notas
musicais quaisquer. Ao menor intervalo possível tem-se um semitom, que equivale a distância
de uma casa (ou traste) no braço do violão. Por exemplo, da nota dó à nota dó sustenido, tem-
se um semitom. Ao intervalo que equivale a soma de dois semitons tem-se um tom. Por
exemplo, da nota dó à nota ré, da nota ré à nota mi, etc.
18
Figura 2: Semitom entre as notas Dó e Ré no braço do violão (retirada de: http://jodayemidio.blogspot.com.br/2010/01/dicas-de-violao-e-guitarra-3.html)
Diz-se que um tom ou um acorde é maior quando a distância entre as notas (ou
intervalo) é equivalente a um tom. Por exemplo, da nota dó à nota ré o intervalo é de um tom,
pois contabiliza-se duas casas (trastes) até a próxima nota, conforme a figura acima. Diz-se
que um tom ou acorde é menor quando os intervalos entre as notas são de um semitom. Por
exemplo, da nota mi à nota fá o intervalo é de um semitom, ou seja, é contabilizada uma casa
para a próxima nota.
A alteração sonora que uma nota pode ter é representada pelos acidentes sustenido e
bemol. Se uma nota teve um aumento sonoro, seu nome será sucedido da palavra sustenido.
Por exemplo, ao aumento da nota dó, tem-se a nota dó sustenido. O mesmo vale para quando
uma nota tem uma diminuição sonora, exceto ao fato que seu nome será sucedido pela palavra
bemol. Por exemplo, se a nota ré teve uma diminuição, então será chamada de ré bemol. O
que marca essa elevação ou diminuição sonora é o semitom. Ao elevar um semitom, tem-se
uma nota sustenida. Ao abaixar um semitom, tem-se uma nota bemol. De fato, os semitons
existem no intervalo das notas que são marcadas pelos acidentes.
2.2 Padrão de Nomenclatura Americana
Cada nota musical é representada por uma letra do alfabeto. Segundo o padrão de
nomenclatura americana, utiliza-se as sete primeiras letras do alfabeto para designar as notas:
19
A LáB SiC DóD RéE MiF FáG Sol
Tabela 2.1 – Relação de Notas Musicais com Letras do Alfabeto(retirada de GarageBand - adaptado)
As letras podem fazer referências a acordes, inclusive. Esse tipo de representação é
utilizado em cifras. Os acidentes musicais (bemol e sustenido) são representados,
respectivamente, pela letra b minúscula e o símbolo #. Para os acordes, há uma legenda
adicional:
m menor# sustenido#m sustenido menorb bemolbm bemol menordim (ou °) diminuto
Tabela 2.2 – Legenda para Nomeação de Acordes (retirada de GarageBand - adaptado)
A representação dos acordes em formato de cifra é composta por pelo menos uma
letra. Por exemplo, o acorde Ré Maior é representado pela letra D. É possível utilizar o
caractere ‘M’ para frisar que o acorde é maior, contudo, não é necessário e nesse estudo esse
artifício foi descartado. Os acordes menores, porém, precisam ser sucedidos do caractere ‘m’
após uma letra correspondente a uma nota musical. Por exemplo, o acorde Lá Menor é
representado pela sigla “Am”, que corresponde a Lá (A) mais o ‘m’ relativo ao menor. O
número máximo de siglas para representação de um acorde é dois. Por exemplo, o acorde Fá
sustenido bemol é escrito como “F#m”. Um acorde não pode ser menor e diminuto ao mesmo
tempo.
20
2.3 Lista de Tons e Acordes Utilizados
Há uma série de possibilidades de formação de acordes. Nesse estudo, no entanto, esse
conceito não é determinante, e sim os acordes possíveis de serem tocados para cada tom que
define as notas relacionadas em uma música. Para cada tom é possível tocar oito acordes.
Segue abaixo a lista de tons maior e tons menor:
C Db D Eb E F F# G Ab A Bb B
Tabela 2.3 – Tons Maior (retirada de GarageBand)
C C# D Eb E F F# G G# A Bb B
Tabela 2.4 – Tons Menor (retirada de GarageBand)
Abaixo seguem os acordes relacionados aos respectivos tons:
Tabela 2.5 –
Acordes Maiores
(retirada de GarageBand - adaptado)
C Maior Em Am Dm G C F Bb BdimDb Maior
Fm Bbm Ebm Ab Db Gb B Cdim
D Maior F#m Bm Em A D G C C#°Eb Maior Gm Cm Fm Bb Eb Ab Db DdimE Maior G#m C#m F#m B E A D D#°F Maior Am Dm Gm C F Bb Eb EdimF# Maior A#m D#m G#m C# F# B E FdimG Maior Bm Em Am D G C F F#°Ab Maior
Cm Fm Bbm Eb Ab Db Gb Gdim
A Maior C#m F#m Bm E A D G G#°Bb Maior Dm Gm Cm F Bb Eb Ab AdimB Maior D#m G#m C#m F# B E A A#°
21
Tabela 2.6 –
Acordes Menores
(retirada de GarageBand - adaptado)
3 PROCESSOS DE DESENVOLVIMENTO
3.1 Gravação de Acordes
Os acordes disponibilizados na aplicação para consulta foram gravados com um
software de produção musical, o GarageBand para iPad e então, pré-carregados no aplicativo.
Sua interface permite que, com um simples toque em cima da sigla do acorde, saia seu som.
Para a gravação, foi utilizado o gravador de áudio de um iPod para a captação dos sons dos
acordes.
C Menor Eb Ab Ddim Gm Cm Fm Bb GC# Menor E A D#° G#m C#m F#m B G#D Menor F Bb Edim Am Dm Gm C AEb Menor Gb B Fdim Bbm Ebm Abm Db AbE Menor G C F#° Bm Em Am D BF Menor Ab Db Gdim Cm Fm Bbm Eb CF# Menor A D G#° C#m F#m Bm E C#G Menor Bb Eb Adim Dm Gm Cm F DG# Menor
B E A#° D#m G#m C#m F# D#
A Menor C F Bdim Em Am Dm G EBb Menor Db Gb Cdim Fm Bbm Ebm Ab FB Menor D G C#° F#m Bm Em A F#
22
Figura 3.1 – Interface do Aplicativo GarageBand para iPad
O formato original das gravações é m4a, mas a IDE Visual Studio só aceita arquivos
áudio no formato wav. Então, foi necessário converter todas as faixas para este formato
utilizando um conversor online (http://www.media.io – acesso em 12/03/14).
23
3.2 Edição de Acordes: Remoção de Ruídos nas Gravações de Áudio
Cada gravação de áudio contendo o som de um acorde necessita passar por um
tratamento de remoção de ruídos. Isso se deve ao fato de que as gravações não foram feitas
em um ambiente com acústica apropriada, como um estúdio. O software de produção musical
utilizado no experimento é o Audacity.
O processo é ilustrado com o diagrama de atividades abaixo (figura 3.2.1). Como pré-
condição, a faixa de áudio deve ter sido convertida do formato m4a (gravado originalmente)
para o formato wav (aceito pela aplicação).
No início, carrega-se a gravação de áudio no software Audacity; em seguida, o arquivo
é tocado. Se o volume do áudio estiver baixo, aplica-se o efeito de amplificação; senão,
aplica-se diretamente o efeito de remoção de ruídos. Se após a amplificação a gravação tiver
ruídos, aplica-se o efeito de remoção de ruídos; senão, encerra-se o processo. Logo em
seguida, testa-se o áudio corrigido, que terá uma perda no seu volume por conta do último
efeito. Então, corta-se o excesso da faixa que poderá ter ruídos remanescentes ou em relação à
parte da faixa que foi totalmente “silenciada”. Se depois desta fase o volume estiver baixo
ainda, aplica-se amplificação da gravação até achar o nível ideal. Senão, a gravação é salva
em um diretório selecionado e encerra-se o processo.
24
Figura 3.2.1 – Diagrama de Atividades do Processo de Remoção de Ruídos
25
As figuras abaixo detalham as faixas de áudio no Audacity nos cenários acima:
a) Amplificação de Som (Volume Baixo)
Figura 3.2.2: Amplificando o som de uma faixa com volume baixo
b) Remoção de Ruído
Figura 3.2.3: Aplicando o Efeito de Remoção de Ruído
26
c) Corta Excesso da Faixa (Ruídos Remanescentes)
Figura 3.2.4 – Eliminando ruídos remanescentes da gravação
d) Corta Excesso da Faixa (Parte Silenciada)
Figura 3.2.5 – Cortando o excesso da faixa sem som
As gravações corrigidas apresentam uma sonoridade melhor, além de ocupar menos
espaço na memória, pois uma faixa depois da aplicação deste processo terá de 1 a 3 segundos
a menos de duração, o que diminui em média 50 a 150 kbytes do arquivo. No total, são 192
gravações a serem importadas no aplicativo posteriormente.
27
3.3 Importação de Arquivos de Áudio no Visual Studio
Na IDE Visual Studio, uma opção de persistência de objetos é utilizar um arquivo de
recursos (exclusivo da IDE). Um recurso é um dado não executável implantado em uma
aplicação. Por exemplo, um recurso pode ser um arquivo áudio, uma imagem, como um
logotipo ou uma mensagem de erro. Na aplicação, esse arquivo é identificado pela extensão
resx. Os dados dos recursos são compilados no arquivo executável.
As 192 gravações de áudio foram salvas previamente em um diretório local, logo após
terem sido editadas. Então, ao clicar em “Add Resource” na janela “Propriedades” do projeto,
como na figura abaixo, os acordes foram adicionados do diretório diretamente no arquivo de
recursos da aplicação.
Figura 3.3 – Adicionando arquivos áudio no arquivo de recursos do projeto
Ao armazenar os dados em um arquivo de recursos é possível alterar seus dados sem
ter de recompilar toda a aplicação. É, inclusive, uma maneira de encapsular todo o
armazenamento de dados persistentes em um só local na aplicação.
28
No começo da pesquisa, a primeira versão não foi feita sob essa abordagem; o
armazenamento dos acordes era feito em diretório local e o problema que ocorria era que a
aplicação não conseguia ser executada em outras máquinas, pois as gravações obviamente não
existiam em outros diretórios.
29
4 ARQUITETURA DO SOFTWARE
A arquitetura de software é basicamente a descrição da organização ou estrutura de um
sistema de software em componentes de programa (módulos). Além disso, a arquitetura
reflete a maneira como esses componentes interagem entre si. Em um sentido mais amplo, no
entanto, os componentes representam os principais elementos de um sistema e suas
interações. No contexto de projeto de arquitetura, um componente de software pode ser algo
tão simples quanto um módulo de programa ou classe orientada a objetos (Pressman, 2011).
A arquitetura evidencia decisões de projeto iniciais que terão profundo impacto em
todo o trabalho de engenharia de software que vem a seguir e, tão importante quanto, no
sucesso final do sistema como uma entidade operacional, é o que afirma Bass (2003), no que
se refere à importância da arquitetura de software.
A projeção da organização de um sistema para satisfazer aos seus requisitos funcionais
e não funcionais é o que se conhece como projeto de arquitetura. Um estilo arquitetural define
uma família de sistemas em termos de um padrão de organização estrutural (Shaw, 1996); ou
seja, um estilo de arquitetura tem como objetivo estabelecer uma estrutura para todos os
componentes do sistema. Dentre as classificações de estilos arquiteturais, a arquitetura
utilizada neste trabalho é a orientada a objetos. Neste estilo, os componentes de um sistema
encapsulam dados e as operações que devem ser aplicadas para manipular os dados
(Pressman, 2011).
A UML (Unified Modeling Language) é uma linguagem de modelagem que foi
projetada para sistemas orientados a objetos. O processo de projeto orientado a objetos inclui
atividades para projetar a arquitetura do sistema, identificar objetos no sistema, descrever o
projeto usando diferentes modelos de objetos e documentar as interfaces dos componentes
(Sommerville, 2011). Em outras palavras, durante o desenvolvimento de um sistema
orientado a objetos vários modelos podem ser produzidos com o intuito de descrever sua
estrutura e seu comportamento, em diferentes níveis de abstração. O modelo que se refere à
estrutura é denominado estático, enquanto o modelo que se refere ao comportamento do
sistema é denominado dinâmico.
30
Um artefato de software é um produto de uma ou mais atividades durante o
desenvolvimento de um software. Portanto, os modelos da aplicação e o código fonte são os
artefatos produzidos neste trabalho.
Sendo assim, foram desenvolvidos um modelo de domínio, para a contextualização
dos conceitos da aplicação; um diagrama de classes, que compõe a estrutura do aplicativo; e
diagramas de comunicação, com destaque para os cenários nos quais:
i. O usuário seleciona um tom;
ii. Os botões referentes aos acordes são instanciados;
iii. As propriedades dos botões (localização, texto e tamanho) são configuradas;
iv. Os botões são adicionados no painel;
v. O usuário toca um acorde.
4.1 Modelo de Domínio
Um modelo de domínio é uma representação visual de classes conceituais ou objetos
do mundo real, em um contexto (Fowler, 1996). Ou seja, é uma descrição de coisas/conceitos
em uma situação real, mas não de objetos de software, tais como classes em C#, por exemplo.
O modelo de domínio, produzido na etapa de análise, ajuda na elaboração da lista de
requisitos.
Nesse sentido, um tom determina 8 acordes (sem as variações) a serem tocados. Um
tom pode ser maior ou menor; por causa disso, temos que Acordes Maior e Acordes Menor
são um tipo de Acorde. Um acorde é composto por 3 notas tocadas simultaneamente. As
instâncias ‘C’ e ‘C#m’ são apenas um exemplo de nota e acorde, respectivamente.
31
Figura 4.1 – Modelo de Domínio da Aplicação
4.2 Diagrama de Classes
A classe principal que controla a aplicação é a frmMainForm. É ela que delega
requisições a outras classes para tratar eventos do usuário, como tocar um acorde. Há duas
outras classes de formulário, a frmHelpForm e a frmAboutForm que mostram uma tela
para o usuário contendo instruções de uso e informações da aplicação, respectivamente. A
classe ButtonFactory é aquela que encapsula a instanciação de todos os botões da tela. A
lógica de tocar um acorde é realizada pela ButtonHandler, que implementa uma interface
(IStreamSettings) que a permite localizar um arquivo de áudio no arquivo de recursos
embutido na aplicação.
32
Figura 4.2 – Diagrama de Classes da Aplicação
4.3 Diagramas de Comunicação
i. Seleção de um tom
Quando um usuário seleciona um tom, a aplicação mostra por meio de um rótulo qual
tom foi selecionado, acima do ComboBox. Por exemplo, se o tom selecionado foi “D Maior”,
o rótulo mostra “D Major Selected” acima do ComboBox de tons maiores. Agora, se um tom
menor for selecionado, por exemplo, o “A Menor”, o rótulo aparece acima do ComboBox de
tons menores como “A Minor Selected”.
33
Ambas são operações da classe frmMainForm. Após configurar o rótulo, o painel é
sempre limpado para carregar os botões referentes a um tom. Pois, logo após o usuário
escolher um tom e os oito acordes daquele tom forem carregados, quando ele escolher outro
tom o painel deve ser limpo para carregar os outros acordes.
Figura 4.3.1 – Diagrama de Comunicação para Seleção de Tom
ii. Instanciação de botões
A lógica de instanciação de todos os botões que se referem aos acordes está localizada
na classe ButtonFactory. A instanciação ocorre após o usuário selecionar um tom; 8 botões
serão instanciados. Como exemplo, o tom escolhido foi C Menor. O tom virá como parâmetro
(string) do item selecionado no ComboBox. A classe ButtonFactory receberá uma mensagem
da classe frmMainForm para instanciar os oito acordes relacionados a este tom
(CreateMinorButtonsForSelectedTone), e então delega essa responsabilidade para um método
da mesma classe (CreateButtons) que faz a instanciação dos botões.
34
No diagrama por motivos de visualização foram apenas ilustradas apenas 3 instâncias
de botão, que representam os acordes Eb, Ab e Gm do tom C Menor, mas são sempre geradas
oito instâncias de acorde para cada tom.
Figura 4.3.2– Diagrama de Comunicação da Instanciação dos Botões da Tela
iii. Configuração de propriedades dos botões
Depois dos botões terem sido instanciados, suas propriedades (localização, tamanho e
texto) são configuradas. A classe frmMainForm manda uma mensagem para a classe
ButtonFactory para realizar essa operação. Então, para cada botão que representa um acorde
serão enviadas mensagens para configurar a localização de cada botão; o tamanho (pré-fixado
em coordenadas altura x largura) e o texto de cada botão.
35
Figura 4.3.3 – Diagrama de Comunicação para a configuração de propriedades dos botões
iv. Posicionamento dos botões no painel
Uma vez que tem-se os botões (acordes) referentes a um tom instanciados e suas
propriedades configuradas, eles são posicionados linearmente na tela. A mensagem que a
classe frmMainForm envia para a classe ButtonFactory recupera o botão referente àquele tom
e logo em seguida, o passa como parâmetro para adicioná-lo na tela.
36
Figura 4.3.4 – Diagrama de Comunicação para o posicionamento de botões na tela
v. Tocar acorde
Quando o usuário clica no botão para obter o som de um acorde, essa mensagem é
propagada da tela para a classe ButtonHandler, que quando a recebe ela realiza a operação
PlaySound, passando como parâmetro o nome do acorde. Nesta operação, a classe
ButtonHandler instancia um objeto da classe SoundPlayer e, em seguida, manda uma
mensagem de volta para a classe ButtonHandler para obter a gravação de áudio armazenada
37
no arquivo de recursos. Finalmente, a classe SoundPlayer toca o som pelo envio da mensagem
Play().
Figura 4.3.5 – Diagrama de Comunicação para Tocar Acorde
5 REQUISITOS DA APLICAÇÃO
Um requisito de um sistema de software consiste em uma descrição do que o sistema
deve fazer, os serviços que oferecem e as restrições em relação ao seu funcionamento,
visando atender às necessidades do cliente. Os requisitos são normalmente classificados em
requisitos funcionais e requisitos não funcionais. Essa aplicação possui apenas requisitos
funcionais. Requisitos funcionais são declarações de serviços que o sistema deve fornecer, de
38
como o sistema deve reagir a entradas específicas e de como o sistema deve se comportar em
determinadas situações (Sommerville, 2011).
Requisitos Funcionais
Nesse sentido, foi elaborado uma lista de requisitos funcionais referentes a esta
aplicação:
RF #1: A aplicação deve armazenar os sons dos acordes de um violão para consulta
em um arquivo de recursos no Visual Studio;
RF #2: A aplicação deve permitir o usuário ouvir um som de um determinado acorde,
quando selecionado;
RF #3: A aplicação deve mostrar na tela, por meio de um rótulo, qual tom foi
selecionado;
RF #4: A aplicação deve carregar os botões que representam os acordes no painel
inferior, para cada tom selecionado;
RF #5: A aplicação deve limpar o painel sempre quando um tom for selecionado, para
carregar acordes referentes a outro tom.
RF #6: O sistema deve dispor oito diferentes acordes para exibição na tela para cada
tom selecionado no ComboBox;
RF #7: Apenas um tom pode ser selecionado por vez. Após receber a informação que
o tom mudou, ou seja, um item do ComboBox, é disparado um evento que carrega os acordes
referentes ao outro tom selecionado.
6 IMPLEMENTAÇÃO
Esse capítulo do trabalho retrata com detalhes a implementação do sistema, com
trechos de código para exemplificar.
Há um painel sem bordas desenhado na parte inferior central da tela. Nele devem ser
dispostos em posições fixa oito botões que vão representar os acordes. Em relação à
localização dos botões, eles foram implementados com o tipo Point, que representa um par de
39
coordenadas (x, y) que define um ponto em um plano bidimensional. Já o tamanho dos botões
é dado por um par de inteiros, especificando altura x largura, pré-fixado em (75,23).
Figura 6.1– trecho de código com a localização e tamanho dos botões
Os botões têm propriedades que precisam ser configuradas, tais como localização,
tamanho e texto. O método SetButtonsProperties da classe ButtonFactory é responsável por
fazer tais configurações. A localização de cada botão é atribuída à propriedade Location de
cada botão, assim como o tamanho é atribuído à propriedade Size de cada um. A ordem com
que cada acorde aparece na tela foi a mesma utilizada no software de produção musical
GarageBand.
Como nomenclatura de nomeação de botões na aplicação, foi decidido utilizar a sigla
“btn” antecedendo o nome de cada botão, seguido do acorde e seu tom, separados por um
underscore. Por exemplo, para o acorde “Dm” do tom “C Maior”, tem-se: btnDm_CMajor.
40
Figura 6.2- trecho do método SetButtonsProperties
Sempre quando o usuário seleciona um tom um rótulo marca acima do ComboBox
referente àquele tom qual tom foi selecionado. O método SetLabels recebe um flag como
parâmetro determinando se o tom selecionado é maior ou não. Isso separa a verificação de
tons maiores de tons menores.
Os testes dentro do método verificam qual item foi selecionado do ComboBox e
atribui ao rótulo o texto do tom selecionado, e limpa o outro rótulo caso necessário. Por
exemplo, se for escolhido um tom maior, e em seguida, um tom menor, o rótulo que marca o
tom maior selecionado deve ser limpado da tela, marcando apenas o tom menor selecionado.
Figura 6.3– método SetLabels para configuração dos rótulos de tom selecionado
Assim que os botões são adicionados na tela, o evento de clique do botão para tocar
um acorde é vinculado com o método tratador deste evento. Isso é feito somente quando um
tom é selecionado. As instâncias dos botões são recuperadas por uma propriedade pela classe
ButtonFactory, como mostra a figura a seguir. Se o tom selecionado é o “C Maior”, por
exemplo, serão armazenadas as referências apenas para os métodos que tocam os acordes
deste tom.
41
Figura 6.4 – Trecho do método AssignEvents da classe ButtonHandler
O método PlaySound é responsável por tocar o acorde quando o usuário clica em um
botão. Ele recebe como parâmetro uma string contendo o nome do acorde. As instruções estão
dentro de um bloco using, que automaticamente limpa os recursos não utilizados na memória
(arquivo de áudio).
Figura 6.5 – Método PlaySound que toca um acorde
O método SetResouceItem localiza no arquivo de recursos a gravação de áudio e a
atribui à propriedade Stream do objeto SoundPlayer.
42
Figura 6.6– Trecho do método SetResouceItem
7 INTERFACE GRÁFICA
O primeiro rascunho da interface gráfica surgiu em meados de 2012, quando o projeto
era ainda Iniciação Científica. A partir deste esboço, naquela época foi implementada uma
tela em Java (com a API Swing) e, finalmente, para este trabalho, a versão final foi
implementada com Windows Forms.
43
Figura 7.1– Primeiro rascunho da interface gráfica
Figura 7.2 – Interface implementada em Java
44
Figura 7.3 – Versão final da interface gráfica implementada em C# (Windows Forms)
8 CONCLUSÕES E TRABALHOS FUTUROS
Embora nenhum acompanhamento tenha sido feito com alunos de música durante o
desenvolvimento do projeto, foi possível, no entanto, apresentá-lo para alguns músicos
profissionais, DJs, adolescentes e guitarristas amadores. Suas opiniões levantaram
possibilidades de não só implementar funcionalidades futuras que continuarão a ajudar no que
se refere ao reconhecimento de acordes, mas de acreditar que interface do software o torna
intuitivo e fácil de usar.
45
Ao longo do período em que este trabalho foi desenvolvido, as opiniões de
profissionais da área de música e usuários acerca de funcionalidades extras que poderão ser
implementadas neste aplicativo no futuro, são:
1) Implementação das variações dos acordes;
2) Permitir ao usuário gravar uma sequência de acordes com seu instrumento, e
depois compará-los com uma sequência de acordes pré-gravadas na aplicação;
3) Apresentar a partitura de cada acorde, quando selecionado;
4) Incluir um temporizador que permite o usuário ouvir por determinado tempo
uma sequência de acordes para depois tentar reproduzi-la em seu violão.
9 REFERÊNCIAS BIBLIOGRÁFICAS
FOWLER, M. Analysis Patterns: Reusable Object Models. Reading, MA.: Addison-Wesley, 1996.
SOMMERVILLE, I. Engenharia de Software. São Paulo: Prentice Hall, 2011.
46
PRESSMAN, Roger S. Engenharia de Software: Uma Abordagem Profissional. –7ª ed. – Porto Alegre: AMGH, 2011.
SHARP, J. Microsoft Visual C# 2010 Step by Step. – Redmond: Bookman, 2010.
TROELSEN, A. Pro C# 5.0 and the .NET Framework 4.5. – Nova York: Apress, 2012 – 1ª ed.
FOWLER, M.; BECK, K.; BRANT, J. et al. Refactoring: Improving the Design of Existing Code. – Pearson, 2010.
BASS, L; CLEMENTS, P; KAZMAN, R. Software Architeture in Practice. 2 ed. Addison-Wesley, 2003.
SHAW, M; GARLAN, D. Software Architeture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.
10 WEBGRAFIA
Violão Brasil. “Teoria musical básica para violão”. Disponível em: http//www.violaobrasil.com.br/curso-de-violao-teoria-basica. Acesso em: 02 junho 2014.
47
Nobre, Jorge. “Apostila de Teoria Musical”. Disponível em: <http://www2.secult.ce.gov.br/Recursos/PublicWebBanco/Partituraacervo/Apt000002.pdf>. Acesso em: 27 outubro 2014.
Portal de Educação Musical do Colégio Pedro II. “Apostila de Educação Musical – 6º Ano do Ensino Fundamental”. Disponível em: <http://www.portaledumusicalcp2.mus.br/apostilas/pdfs/6ano_00_apostila%20completa.pdf>. Acesso em: 28 outubro 2014.
Bezerra, Ronaldo. “Teoria – Sistema Musical Ocidental”. Disponível em: <http://guiame.com.br/colunistas/ronaldo-bezerra/teoria-sistema-musical-ocidental.html#.VE8UjfldWSo>. Acesso em: 28 outubro 2014.
Mini-curso de Teoria Musical. “Os acidentes Musicais”. Disponível em: <http://www.academiamusical.com.pt/curso-teoria-musical/os-acidentes-musicais/>. Acesso em: 29 outubro 2014.
Bartz, Guilherme. “Notas e letras”. Disponível em: <http://www.estacaomusical.com.br/aprendendomusica/24/notas-e-letras>. Acesso em: 29 outubro 2014.
Dos Santos, Paula P. “Notas Musicais”. Disponível em: <http://www.infoescola.com/musica/notas-musicais/>. Acesso em: 29 outubro 2014.
Bartz, Guilherme. “Escala Pentatônica”. Disponível em: <http://www.estacaomusical.com.br/aprendendomusica/23/escala-pentatonica>. Acesso em: 01 novembro 2014.
Violão Popular – Curso Básico. Disponível em: <http://www.paralerepensar.com.br/violao_popular.htm>. Acesso em: 02 novembro 2014.
Aulas de Violão e Guitarra. “O que é exatamente uma escala”. Disponível em: <http://violaoeguitarra.musicblog.com.br/82443/O-QUE-E-EXATAMENTE-UMA-ESCALA/> Acesso em: 03 novembro 2014.
Warren, D. “Escalas Musicais (Parte 1) – Definição, Penta M7 e Modos Gregos”. Disponível em: <http://www.guitarbattle.com.br/licoes/3351-escalas-musicais-parte-1-definicao-penta-m7-modos-gregos.html>. Acesso em: 03 novembro 2014.
Mundo do Violão. “Escala Cromática”. Disponível em: <http://www.mundodoviolao.com.br/teoria-musical/escala-cromatica/>. Acesso em: 04 novembro 2014.
Emidio, J. “Dicas de Violão e Guitarra”. Disponível em: <http://jodayemidio.blogspot.com.br/2010/01/dicas-de-violao-e-guitarra-3.html>. Acesso em: 04 novembro 2014.
48
http://msdn.microsoft.com/pt-br/library/ht9h2dk8(v=vs.90).aspx (Recursos Vinculados versus Recursos Incorporados – Acesso em 01 novembro 2014).
http://www.codeproject.com/Articles/17422/Embedding-and-Playing-WAV-Audio-Files-in-a-WinForm (Incorporando e tocando arquivos WAV em um projeto Windows Forms – acesso 02 novembro 2014).