Você está na página 1de 50

UNIVERSIDADE DO SUL DE SANTA CATARINA

CAMPUS DA GRANDE FLORIANPOLIS


CURSO DE ESPECIALIZAO EM ENGENHARIA DE PROJETOS DE SOFTWARE
THIAGO SCHOPPEN VERONESE

DESENVOLVIMENTO DE UMA BIBLIOTECA MOBILE


PARA CONSTRUO DE ACORDES

Florianpolis
2013

Thiago Schoppen Veronese

DESENVOLVIMENTO DE UMA BIBLIOTECA MOBILE


PARA CONSTRUO DE ACORDES

Monografia

apresentada

ao

Programa

de

Ps-Graduao Lato Sensu em Engenharia de


Projetos de Software da Universidade do Sul de
Santa Cataraina, como requisito parcial para a
obteno do ttulo de Especialista em Engenharia
de Projetos de Software.

Orientador: Prof. Jean Carlo Rossa Hauck, Dr.

Florianpolis
2013

THIAGO SCHOPPEN VERONESE

DESENVOLVIMENTO DE UMA BIBLIOTECA MOBILE


PARA CONSTRUO DE ACORDES

Este Trabalho de Concluso de Curso foi julgado


adequado obteno do ttulo de Especialista em
Engenharia de Projetos de Software e aprovado
em sua forma final pelo curso de Programa de
Ps-Graduao Lato Sensu em Engenharia de
Projetos de Software da Universidade do Sul de
Santa Cataraina.

Florianpolis, 01 de Abril de 2013.

________________________________________________
Professor e orientador Jean Hauck, Dr.
Universidade do Sul de Santa Catarina
________________________________________________
Co-orientador Leonardo de Souza Brasil, Esp.

________________________________________________
Professora Vera R. N. Schuhmacher, MEng.
Universidade do Sul de Santa Catarina

Resumo

Nos ltimos anos o mercado de computao pessoal vem mudando


drasticamente com a introduo de novos aparelhos como smartphones e tablets.
Esse crescimento surpreendente impulsiona o desenvolvimento de aplicativos
especficos

para

tais

plataformas

mveis. Tendo

em

vista

agilizar

esse

desenvolvimento, bibliotecas de software podem ser utilizadas, e com essa


motivao que criada uma biblioteca para gerao automtica de acordes
musicais focada em dispositivos mveis. A biblioteca utiliza-se da teoria de formao
de acordes para alcanar seu propsito e gerar acordes para o violo, sendo
possvel sua extenso a outros tipos de instrumento. A fim de se ter sua aplicao
prtica, adaptado um aplicativo de organizao de cifras de msica, denominado
Cifras, para que se beneficie da biblioteca, na qual demonstrada sua utilizao
atravs da renderizao de imagens de como deve ser executado um acorde em um
violo, baseadas em dados gerados pela biblioteca.

Palavras-chave: Aplicativos mveis. Cifras de msica. Gerao automtica de


acordes.

Abstract

In recent years the personal computing market has changed dramatically with
the introduction of new devices such as smartphones and tablets. This amazing
growth drives the development of specific applications for such mobile platforms.
Envisioning speed up this development, software libraries can be used, and it is with
this motivation that a library for automated generation of musical chords focused on
mobile devices is created. The library uses chord formation theory to achieve its
purpose and generate chords for the guitar, also enabling the extension to other
types of instrument. In order to have a practical application, an application for song's
chords organization, called Cifras, is tailored to take advantage of the library, where it
is demonstrated its use through the rendering of images that demonstrate how to
perform a chord in a guitar, based on data generated by the library.

Keywords: Mobile apps. Song chords. Chords automatic generation.

Lista de Figuras

Figura 1 - Cifra da msica "Always On My Mind" de Elvis Presley...............................4


Figura 2 - Acordes em diferentes notaes..................................................................5
Figura 3 - As oitavas de d em um piano......................................................................6
Figura 4 - Cordas e afinao padro de um violo.......................................................7
Figura 5 - Acorde de C (d) em um violo....................................................................8
Figura 6 - Casas e notas do acorde C (d)...................................................................9
Figura 7 - Acorde C utilizando pestana.........................................................................9
Figura 8 - Nmero de aplicativos disponveis nas maiores lojas................................11
Figura 9 - Vendas mundiais de smartphones (milhares)............................................12
Figura 10 - Tela Inicial do Cifras..................................................................................14
Figura 11 - Tela de busca por artista...........................................................................15
Figura 12 - Tela de exibio de cifra...........................................................................15
Figura 13 - Viso de alto nvel da interao entre aplicativo e biblioteca...................17
Figura 14 - Diagrama de requisitos da biblioteca.......................................................20
Figura 15 - Diagrama de casos de uso da biblioteca..................................................21
Figura 16 - Diagrama de atividades de "Obter notas de um acorde".........................22
Figura 17 - Diagrama de classes dos acordes e notas...............................................23
Figura 18 - Diagrama de atividades da gerao de notao posicional.....................24
Figura 19 - Diagrama de classes do gerador de acordes...........................................25
Figura 20 - Diagrama de atividades da gerao de acordes para violo...................27
Figura 21 - Diagrama de seqncia da gerao de acordes para violo...................28
Figura 22 - Diagrama de classes das notaes posicionais.......................................29
Figura 23 - Diagrama de classes da API de acesso...................................................30
Figura 24 - Acorde C (d) renderizado no Cifras........................................................35
Figura 25 - Acorde de C (d) com pestana no Cifras.................................................36

Lista de Cdigos-fonte

Cdigo-fonte 1 - Mtodo de busca de notas nas cordas do violo.............................31


Cdigo-fonte 2 - Mtodo de busca das notas em uma nica corda...........................32
Cdigo-fonte 3 - Mtodo de busca de acordes impossveis para a mo humana.....33
Cdigo-fonte 4 - Mtodo de converso de acordes para pestana..............................34

Sumrio

1 Introduo...................................................................................................................1
1.1 Problema.............................................................................................................2
1.2 Justificativa..........................................................................................................2
1.3 Objetivos.............................................................................................................3
1.3.1 Objetivo geral...............................................................................................3
1.3.2 Objetivos especficos...................................................................................3
2 Marco Terico.............................................................................................................4
2.1 Cifras de msicas................................................................................................4
2.2 Teoria musical.....................................................................................................6
2.2.1 Formao de acordes..................................................................................6
2.2.3 Acordes no violo.........................................................................................7
2.3 Aplicativos mobile..............................................................................................10
2.3.1 Plataforma Android....................................................................................10
2.4 Bibliotecas de software.....................................................................................12
2.5 Aplicativo Cifras para plataforma Android.........................................................13
3 Metodologia de trabalho...........................................................................................16
4 Modelagem da soluo............................................................................................19
4.1 Casos de uso....................................................................................................20
4.2 Refinamento da modelagem.............................................................................21
4.2.1 Caso de uso Obter notas de um acorde.................................................22
4.2.2 Caso de uso Gerar notao posicional para instrumento.......................23
4.2.3 Caso de uso Gerar notao posicional para violo................................26
4.3 Definio da API de acesso..............................................................................29
5 Desenvolvimento......................................................................................................31
5.1 Desenvolvimento da biblioteca.........................................................................31
5.2 Integrao com o aplicativo Cifras....................................................................34
5.3 Testes da biblioteca...........................................................................................35
6 Concluso.................................................................................................................38
6.1 Sugestes para trabalhos futuros.....................................................................39
Referncias.................................................................................................................40

Introduo

Percebe-se hoje em dia uma mudana de comportamento em relao


utilizao de tecnologia pessoal. Computadores de mesa esto perdendo cada vez
mais espao para notebooks e, principalmente, smartphones e tablets.
Os smartphones j so mais populares que computadores de mesa e
notebooks (BERTOLUCCI, 2012). No ano de 2011, uma pesquisa feita pela Canalys
(2012) divulgou que as vendas de smartphones no mundo todo superaram as de
PCs - que incluem computadores de mesa, notebooks e tablets. No apenas a
venda desses aparelhos mveis - o que inclui os tablets - j supera a venda de PCs,
mas a projeo era de que no ano de 2012 as vendas fossem o dobro e nos
prximos anos seja ainda maior, chegando a exceder 1.5 bilho de unidades no ano
de 2016 (COCOTAS, 2012).
Esse nmero de vendas, est criando um novo mercado uma velocidade
muito grande. O desenvolvimento de aplicativos para essas plataformas mveis
requer ento, que os softwares fiquem prontos para serem lanados o mais breve
possvel.
Visando acelerar o desenvolvimento de tais aplicativos, que podem ser
utilizadas

bibliotecas

de

software,

que

compreendem

implementaes

de

comportamentos genricos e acessveis atravs de uma API (WEBOPEDIA, 2006).


Dessa forma, os aplicativos que as utilizam no precisam se ater algumas tarefas,
podendo contar com essas bibliotecas para tal.
Tendo como motivao essa expanso do mercado de aplicativos mveis e a
noo de que a utilizao de bilbiotecas de software aceleram o desenvolvimento de
novos aplicativos, que se apresenta o problema descrito na seo seguinte.

1.1 Problema
Muitas aplicaes so projetadas para resolver ou facilitar situaes
cotidianas. Um aplicativo que surgiu dessa forma foi o Cifras, de autoria de Leonardo
Brasil. O Cifras um aplicativo que permite que uma pessoa tenha em seu
smartphone ou tablet toda a sua coleo de cifras de msicas para violo, podendo
importar suas prprias cifras, alterar, criar ou at mesmo se conectar internet para
fazer o download de novas cifras.
Esse aplicativo foi desenvolvido, incialmente, com o propsito de uso pessoal,
porm foi disponibilizado gratuitamente na loja de aplicativos online Google Play e,
apesar de inesperado, o nmero de instalaes atualmente ultrapassa os 100 mil 1,
contando com uma base ativa de mais de 10 mil usurios.
Com essa utilizao surgiu a necessidade dos usurios deste aplicativo de
consultar como os acordes que compem as cifras so formados. Tendo isso em
vista, visualizou-se a possibilidade de criar uma bilbioteca de software para atender
essa demanda. Desenvolvimento, esse, que ser o foco deste trabalho.

1.2 Justificativa
A deciso de se criar uma biblioteca para a formao dos acordes, e no
simplesmente estender o aplicativo adicionando essa funcionalidade ao mesmo,
vem da observao de que no existem outras bibliotecas no mercado que tenham
essa funo. Outro ponto, que uma biblioteca facilita a criao de novos softwares,
atravs da promoo do reuso de cdigo.
Aplicaes com necessidades semelhantes tambm poderiam se beneficiar
futuramente do uso de tal biblioteca. Um exemplo seria de um aplicativo que
acompanha a reproduo de uma cano e apresenta o acorde que deve ser
executado em dado momento. Um outro exemplo interessante seria um aplicativo

Esse nmero pode ser visualizado na pgina de download do aplicativo no Google Play, disponvel em
<https://play.google.com/store/apps/details?id=brasil.leonardo.cifras>

3
que sincroniza o ensaio de msicos em locais remotos ou no, mostrando cada
um os acordes executados pelos outros.
Como pode ser visto, podem ser criados inmeros aplicativos que se
aproveitariam dessa biblioteca. Ento so essas vantagens que facilitam a
concepo e implementao de novos softwares, juntamente com a inexistncia de
uma biblioteca para formao de acordes disponvel atualmente, que do a
motivao para a construo de tal biblioteca.

1.3 Objetivos
1.3.1 Objetivo geral
Desenvolver uma biblioteca de software que d suporte exibio de acordes
musicais numa aplicao mobile. A biblioteca desenvolvida contemplar a teoria musical de
formao de acordes, para a montagem dos acordes de violo que sero requeridos pela
aplicao por meio de uma API.

1.3.2 Objetivos especficos


Para que o objetivo geral deste trabalho seja atingido, so propostos os seguintes
objetivos especficos:
1. Elaborar um algoritmo para gerao dos acordes a partir de suas representaes
alfanumricas;
2. Elaborar o formato de representao dos acordes para violo;
3. Definir a estrutura e organizao da biblioteca;
4. Definir e implementar a API de acesso s funcionalidades da biblioteca;
5. Desenvolver um aplicativo exemplo que utilize a biblioteca.

Marco Terico

Neste captulo so apresentados os conceitos tericos que formam a base de


conhecimento para a concepo da biblioteca descrita anteriormente, desde
conceitos sobre teoria musical at conceitos de engenharia de software e tecnologia
da informao.

2.1 Cifras de msicas


Uma cifra uma notao musical utilizada para descrever de forma textual ou
grfica os acordes que devem ser executados por um instrumento musical . As cifras
so utilizadas na msica popular, posicionadas acima das letras ou partituras de
uma composio musical indicando a ordenao dos sons dos acordes que devem
ser tocados junto com a melodia ou o canto (DOURADO, 2004).
Figura 1 - Cifra da msica "Always On My Mind" de Elvis Presley.

Fonte: Site do Cifra Club (http://www.cifraclub.com.br/elvis-presley/always-on-my-mind/).

A Figura 1 representa uma parte da cifra 1 da msica Always On My Mind do


cantor e msico norte-americano, Elvis Presley. Nessa imagem pode ser facilmente
observado o posicionamento dos acordes em uma cifra. Os acordes so as letras

Cifra disponvel em: <http://www.cifraclub.com.br/elvis-presley/always-on-my-mind/>. Acesso em Jul. 2013.

5
maisculas em cor laranja diretamente acima da letra da msica escrita em texto
preto.
A Figura 2 mostra exemplos de acordes em diferentes notaes. Na primeira
linha encontra-se a letra maiscula que representa o acorde, sendo que no primeiro
caso temos o acorde de d maior, representado pela letra maiscula C.
Figura 2 - Acordes em diferentes notaes.

Fonte: Music Coach, 2013.

Logo abaixo da letra, encontra-se uma notao utilizada para demonstrar


como o acorde deve ser executado no brao do violo, onde os pontos pretos
indicam as casas e cordas que devem ser pressionadas.
Mais abaixo, h a notao dos acordes em uma partitura, tambm chamada
de pauta ou pentagrama. Por ltimo pode ser vista uma notao que indica
numericamente as casas do violo que devem ser pressionadas, conhecida como
tablatura.
devido essa facilidade de representao dos acordes em forma textual,
que uma cifra de msica pode ser facilmente guardada na forma de um arquivo de
texto. Esse fato torna-a fcil de ser distribuda eletronicamente, sendo possvel
encontrar na internet atualmente, cifras gratuitas para virtualmente qualquer msica.

2.2 Teoria musical


Segundo Kostka e Payne (2008), na msica as notas referem-se altura do
som, as quais podem ser vistas no teclado de um piano (Figura 3). A nota d mais
prxima do meio do teclado chamada de d central ou d3 (d trs), as notas mais
agudas ficam direita e as mais graves esquerda, sendo numeradas
adequadamente em relao nota central. Todas as notas de um d acima, mas
no incluindo o prximo d, diz-se estarem na mesma oitava.
Figura 3 - As oitavas de d em um piano.

Fonte: Kostka e Payne, 2008.

A escala maior um padro especfico de pequenos tons (chamados de


semitom) e tons maiores (chamados tom inteiro) dentro de uma oitava. Um semitom
a distncia entre uma tecla no piano para a prxima tecla, seja ela branca ou preta
(KOSTKA; PAYNE, 2008).
Ainda segundo os mesmos autores, a escala maior definida pelo padro
conhecido como pentacorde maior, que pode ser representado da seguinte forma:
t-t-s-t-t, onde a letra t indica um tom e a letra s um semitom. Da mesma forma, a
escala menor definida pelo pentacorde menor, representado por: t-s-t-t-t (KOSTKA;
PAYNE, 2008).

2.2.1 Formao de acordes


Um acorde o som feito de trs ou mais notas, tocadas simultaneamente,
onde a cifra seu smbolo, feita de uma letra maiscula e um complemento. As
letras maisculas so as primeiras sete letras do alfabeto, representando as notas l
si d r mi f sol, respectivamente. A letra da cifra designa a nota fundamental do
acorde, ou seja, a nota mais grave, a partir da qual o acorde construdo numa
sucesso de teras sobrepostas, que so intervalos em cima de uma escala. Se

7
essa nota for alterada, o sinal aparece ao lado direito da letra: si bemol = B, sol
sustenido = G, etc (GUEST, 1996).
Um acorde de trs notas conhecido como trade. Esse acorde construdo
utilizando-se esse esquema de sucesso. Para um acorde maior so sobrepostas
uma tera maior e uma tera menor, j para um acorde menor so sobrepostas uma
tera menor e em seguida uma maior, ambos formando um intervalo de quinta
(KOSTKA; PAYNE, 2008).
Por exemplo, para a construo do acorde maior de C (d), primeiramente
obtm-se a nota fundamental, que o prprio C, e a partir dele a sua tera maior: E,
e ento soma-se mais uma tera menor, obtendo-se: G. Forma-se ento o acorde de
C com as notas C E G (d; mi; sol). Para o acorde menor, somando primeiramente
a tera menor e ento a tera maior, obtm-se as notas C E G (d; mi bemol; sol).

2.2.3 Acordes no violo


Um violo comum possui seis cordas, que so enumeradas da mais aguda
at a mais grave. A afinao mais utilizada para este instrumento pode ser vista na
canto esquerdo da Figura 4, onde a ordem das notas afinadas : E B G D A E
(SCHMID; KOCH, 1980).
Figura 4 - Cordas e afinao padro de um violo.

Fonte: Schmid e Koch, 1980.

Atualmente existem vrias formas de se afinar um violo: a partir do som


ouvido de um piano, de um diapaso (normalmente afinado em l) ou utilizando um
afinador eletrnico. Para a afinao com diapaso, se realiza a chamada afinao
relativa, pois o diapaso d a afinao de uma das cordas e, ento, partir dela se
afinam as outras, como tambm pode ser visto na Figura 4 (SCHMID; KOCH, 1980).

8
Como j foi visto antes, a distncia entre tons musicais dada por tons e
semitons. No violo, a distncia entre uma casa e a seguinte de um semitom e a
distncia entre uma casa duas casas em qualquer direo chamada de tom
(SCHMID; KOCH, 1980).
Ento simples visualizar quais notas so reproduzidas ao se pressionar
cada casa em separado. Sendo que a corda solta possui uma determinada afinao,
partir dela pode-se ir andando de semitom em semitom e conseguindo as outras
notas.
Figura 5 - Acorde de C (d) em um violo.

Fonte: Schmid e Koch, 1980.

A Figura 5 mostra como o acorde de C (d) deve ser executado no violo. Os


crculos com nmeros representam as casas que devem ser pressionadas, os
crculos vazios as cordas que devem ser tocadas soltas, e a letra X representa as
cordas que no devem ser tocadas (SCHMID; KOCH, 1980).
Ao analisar como esse acorde formado no violo, percebe-se que as notas
das casas tocadas correspondem formao do acorde, que so, conforme foi visto
anteriormente, C E G (d; mi; sol). Isso pode ser melhor visualizado na Figura 6,
onde as casas pressionadas e cordas tocadas soltas so representadas pelos
crculos pintados na cor amarela. Verifica-se tambm que a nota mais grave (mais
para baixo) um C, pois ela a fundamental do acorde.

9
Figura 6 - Casas e notas do acorde C (d).

Fonte: Wikihow, 2013 (adaptado).


Figura 7 - Acorde C utilizando pestana.

Fonte: Chediak, 1984.

Como as notas se repetem em diferentes posies do violo, um mesmo


acorde pode ser executado de diversas maneiras diferentes. Uma destas maneiras
envolve uma tcnica denominada pestana, onde o dedo indicador deve pressionar
todas as cordas do instrumento na mesma casa (CHEDIAK, 1984). Um exemplo
desta tcnica ao se executar o acorde de d pode ser visto na Figura 7. Aqui
utilizada uma notao um pouco diferente da vista anteriormente, onde as casas
pressionadas so representadas pelos crculos pretos e a pestana pela seta que
cruza horizontalmente o brao do violo sobre a terceira casa.

10

2.3 Aplicativos mobile


Um aplicativo mobile tem seu nome advindo da palavra mvel, tendo em vista
que seu propsito poder ser executado em dispositivos mveis tais como
smartphones e tablets (PCMAG, 2013).
Originalmente os aplicativos mveis tinham propsitos simples relacionados
produtividade ou obteno de informaes, como por exemplo calendrio, contatos e
informaes sobre o clima. Com o aumento da demanda as categorias de aplicativos
expandiram at mesmo para jogos, servios bancrios e de localizao atravs de
GPS (Global Posiotioning System - Sistema de Posicionamento Global).
A popularidade dos aplicativos mveis cresce tanto que atualmente, segundo
um estudo da comScore (2012), os usurios passam 51,1% do tempo utilizando
seus aplicativos contra 49,8% navegando na internet em seus dispositivos mveis.
Para se ter uma ideia desse crescimento, o termo em ingls app, uma abreviao
da palavra aplicativo, foi listado em 2010 como a Palavra do Ano pela American
Dialect Society (2010), o que indica sua importante e crescente popularidade.

2.3.1 Plataforma Android


A plataforma Android um sistema operacional desenvolvido pela Google
para ser utilizado principalmente em dispositivos mveis. O que o torna nico que
ele desenvolvido como cdigo aberto e disponibilizado gratuitamente para
fabricantes de hardware e operadoras de telefonia que desejam us-lo em seus
dispositivos (KARCH, 2013).
O Android foi revelado em 2007 juntamente com a fundao da Open
Handset Alliance, uma aliana multinacional de lderes da indstria de tecnologia
mvel. Essa aliana foi formada com o intuito de dar aos consumidores uma melhor
experincia em relao ao que havia de disponvel para plataformas mveis na
poca (OHA, 2007).

11
Os aplicativos para esta plataforma so desenvolvidos utilizando a linguagem
de programao Java e o kit de desenvolvimento de software para Android (SDK),
que inclui um conjunto compreensivo de ferramentas. Estes aplicativos podem ser
facilmente distribudos atravs da plataforma digital de distribuio e loja eletrnica
conhecida como Google Play1. Essa plataforma prov servios que facilitam e torna
mais rpida a disponibilizao de aplicativos para Android atravs da internet
(ANDROID DEVELOPERS, 2013).
Figura 8 - Nmero de aplicativos disponveis nas maiores lojas.

Fonte: Brandt, 2013.

Atualmente, o Google Play a plataforma de aplicativos mveis com maior


nmero total de aplicativos disponveis, ultrapassando a marca dos 800.000
aplicativos e sendo a loja de aplicativos online com maior acervo, superando seus
principais concorrentes: Apple Store 2 e Windows Phone Store 3, conforme pode ser
visto no grfico da Figura 8.
Estes so alguns dos motivos que auxiliaram o Android se tornar a
plataforma para smartphones mais utilizada do mundo, roubando essa posio do
1

Google Play disponvel em: <https://play.google.com/store>

Apple App Store disponvel em: <http://www.apple.com/iphone/from-the-app-store>

Windows Phone Store disponvel em: <http://www.windowsphone.com/pt-br/store>

12
sistema operacional da Nokia, conhecido como Symbian , no quarto trimestre de
2010 (CANALYS, 2011).
Essa popularidade pode ser observada visualizando-se o grfico da Figura 9,
onde o nmero de unidades vendidas no primeiro semestre de 2013 contendo esse
sistema operacional quatro vezes maior que o segundo colocado plataforma iOS
da concorrente Apple.
Figura 9 - Vendas mundiais de smartphones (milhares).

Fonte: Gartner, 2013.

2.4 Bibliotecas de software


Segundo a definio contida no site Webopedia (2013) 1, uma biblioteca de
software :
[] uma coleo de rotinas pr-compiladas que um programa pode
utilizar. As rotinas, s vezes chamadas de mdulos, so guardadas
no formato de objetos. Bibliotecas so particularmente teis para
guardar rotinas frequentemente usadas pois no h a necessidade
de lig-las explicitamente todo programa que utiliz-las.

Ento bibliotecas tem a vantagem de concentrar um cdigo mais genrico em


uma estrutura particular, para que possa ser usado futuramente por outros artefatos
1

Traduzido da definio do site Webopedia <www.webopedia.com>.

13
de software, a fim de se aproveitar do trabalho j realizado, terminando por reduzir o
tempo e esforo empregados neste novo software.
Dessa forma, ao fazer uso de uma biblioteca em um novo software, seu
cdigo reutilizado pela invocao de mtodos de sua API e pelo reaproveitamento
de suas classes. Atravs desse reuso, as bibliotecas ajudam os desenvolvedores a
atingirem nveis de produtividade maiores, diminuindo o ciclo de desenvolvimento de
software.

2.5 Aplicativo Cifras para plataforma Android


O Cifras, de autoria de Leonardo Brasil, um aplicativo desenvolvido para
rodar na plataforma Android. O propsito deste aplicativo facilitar ao usurio que
pratica um instrumento musical, o controle de cifras de suas msicas, utilizando
assim um meio digital, em vez do convencional mtodo de guardar as cifras
impressas em papel como lbuns fsicos. Assim, o usurio pode ter toda sua coleo
de cifras sempre consigo em seu smartphone ou tablet.
Esse aplicativo pode ser instalado a partir de sua pgina na loja online
Google Play. Aps instalado, ao ser aberto, um menu com suas principais
funcionalidades exposto, como pode ser visto na Figura 10.
Dentre suas funcionalidades, destaca-se a busca de cifras de msicas online,
diretamente partir da internet, que pode ser feita tanto buscando pelo nome da
msica ou de um artista. A busca pelo nome do artista ou da msica pode ser feita
digitando o nome parcial, onde sugestes so mostradas e, aps selecionar uma
das sugestes ou entrar com o nome completo a lista de resultados exibida,
permitindo ao usurio selecionar a msica desejada, conforme pode ser visto na
Figura 11.

14
Figura 10 - Tela Inicial do Cifras.

Fonte: Elaborado pelo autor.

Aps feito o download da cifra da msica escolhida, o usurio tem a opo de


exibir a mesma. Na tela de exibio da cifra (Figura 12), pode ser vista a letra da
msica e as notaes de acordes acima das mesmas. Dessa forma, tendo
conhecimento sobre quais smbolos representam quais acordes, pode-se tocar a
msica no violo seguindo-se a letra e os respectivos acordes em suas posies.
Tambm nessa tela o usurio pode ter acesso diversas opes como:
alterar o tom dos acordes; compartilhar a cifra em redes sociais; editar a cifra; etc.
Funcionalidades, estas, que so teis tanto para a execuo da msica no
instrumento preferido pelo usurio, quanto para compartilhar com amigos suas
atividades atravs de redes sociais.

15
Figura 11 - Tela de busca por artista

Figura 12 - Tela de exibio de cifra

Fonte: Elaborado pelo autor.

Fonte: Elaborado pelo autor.

Por fim, conclui-se que o Cifras contem um conjunto de funcionalidades


compreensivo em relao ao propsito a que se destina: de substituir os papis com
cifras por um meio mais fcil de controlar, armazenar e transportar.

16

Metodologia de trabalho

Segundo a definio de Silva e Menezes (2005), em uma pesquisa qualitativa


o processo e o seu significado so os focos principais de abordagem, atravs da
interpretao dos fenmenos e a atribuio de significados. Tendo em vista os
objetivos deste trabalho, verifica-se que o mesmo se enquadra como uma pesquisa
qualitativa, pois os resultados esperados devem ser interpretados de forma
subjetiva, no podendo ser quantificados, uma vez que o que se espera trazer
melhorias para o desenvolvimento de aplicativos e na experincia do usurio.
As etapas para a realizao deste trabalho so as seguintes:
a) Anlise da literatura sobre Android e formao de acordes: analisar a
avaliar a literatura encontrada sobre desenvolvimento para a plataforma
mvel Android e a teoria musical de formao de acordes.
b) Modelagem da biblioteca de software: projeto da bibliotea para que
contemple as funcionalidades desejadas e permita, atravs de conceitos
de engenharia de software, que seja estendida facilmente.
c) Desenvolvimento da biblioteca: desenvolver a biblioteca seguindo as
definies traadas durante a fase de modelagem.
d) Integrao da biblioteca com o aplicativo Cifras: integrar a biblioteca
desenvolvida com o aplicativo mvel Cifras, permitindo ao usurio a
visualizao dos acordes em forma de imagens diretamente partir da tela
de cifras da aplicao.
Ser desenvolvida uma biblioteca que objetiva suportar a gerao de acordes
musicais que devero ser exibidos em um aplicativo mvel, denominado Cifras, de
organizao de cifras de msica. A biblioteca dever prover uma API de acesso s

17
suas funcionalidades, que devero ser acessadas pela aplicao mvel atravs
desta. A Figura 13 mostra em alto nvel o fluxograma de como se dar essa
interao entre o Cifras e a biblioteca por meio da API.
Figura 13 - Viso de alto nvel da interao entre aplicativo e biblioteca.

Fonte: Elaborado pelo autor.

Na realizao deste trabalho so aplicadas diversas tcnicas e metodologias


relacionadas Engenharia de Software, envolvendo desde conceitos sobre
concepo de software at sua construo e distribuio.
No tocante anlise e projeto das funcionalidades, so utilizadas
metodologias e tcnicas de Engenharia de Software tais como, projeto utilizando a
notao UML (Unified Modelling Language - Linguagem Unificada de Modelagem)
(SILVA, 2007) para concepo da arquitetura das novas funcionalidades, levando em
conta tambm padres de projeto j muito difundidos na rea para obter uma
aplicao com alta coeso e baixo acoplamento.
Para a construo da biblioteca utilizada a linguagem de programao
orientada a objetos Java. Esta escolha deve-se ao fato da aplicao Cifras ser
voltada para o sistema operacional Android, que utiliza essa mesma linguagem,
nativa do Android.
Como prova de conceito, a biblioteca dever gerar acordes para violo de
seis cordas, porm deve ser concebida de forma a facilitar a extenso para outros
instrumentos tanto de cordas, que podem ter um nmero maior ou menor de cordas,
como instrumentos de teclas, como pianos e teclados em geral.

18
Os resultados esperados da implementao da biblioteca, so que seus
usurios tenham maior facilidade ao utilizar o aplicativo Cifras e possam obter um
volume maior de informaes relacionadas s cifras de suas msicas.
No captulo seguinte, so abordadas com maior nvel de detalhe cada uma
das etapas descritas acima, descrevendo as decises tomadas e os resultados
obtidos em cada uma.

19

Modelagem da soluo

O primeiro passo para a modelagem da biblioteca avaliar as necessidades


que a mesma deve suprir. Para tanto, so avaliados os objetivos deste trabalho,
tendo em vista transform-los em requisitos de software que, por sua vez, devero
ser implementados por funcionalidades disponibilizadas pela biblioteca.
Partindo da avaliao dos objetivos chega-se seguinte lista de requisitos
que representam funcionalidades de um sistema, conhecidos como requisitos
funcionais:

O sistema deve retornar as notas que compem um acorde maior ou menor a


partir de sua descrio textual.

O sistema deve receber uma representao textual de um acorde maior ou


menor e, ento, retornar as posies que devem ser pressionadas (descritas
como nmero da casa e da corda) no violo.
O primeiro requisito funcional diz respeito gerao automtica das notas

que compem um acorde, tendo por base a teoria de formao de acordes vista no
Captulo 2 deste trabalho. A deciso de obter somente notas de acordes maiores e
menores tomada tendo por fim reduzir o escopo deste trabalho, visto que a
complexidade imposta em mapear vrios tipos de acordes grande, devido vasta
quantidade de acordes possveis.
O segundo requisito refina o primeiro, pois gera a lista de posies de pares
de casas e cordas, de agora em diante denomida notao posicional, que devem ser
pressionadas no brao do violo para a execuo do acorde desejado neste
instrumento, a partir das notas que o compem, tarefa esta que cumprida pelo
primeiro requisito.

20
Esses dois requisitos cumprem as necessidades de funcionalidades expostas
nos objetivos, porm, como o escopo deste trabalho foi reduzido para gerar somente
a notao posicional para o violo, a ideia que futuramente a biblioteca no fique
restrita somente a este instrumento. Faz-se necessria ento a criao de um
requisito de software no funcional (que no descreve funcionalidade de software)
que obriga que a arquitetura do sistema seja modelada de forma flexvel incluso
futura de novos instrumentos.
No diagrama da Figura 14 podem ser vistos os requisitos funcionais e no
funcionais levantados e seus relacionamentos. Os requisitos funcionais recebem
identificao no padro FReq# e os no funcionais no padro NFReq#.
Figura 14 - Diagrama de requisitos da biblioteca.

Fonte: Elaborado pelo autor.

4.1 Casos de uso


A partir dos requisitos funcionais so definidas as funcionalidades que o
sistema deve contemplar. Para tal criado um diagrama de casos de uso, que
modela as funcionalidades do software em um alto nvel de abstrao. O objetivo do
diagrama relacionar quais so as funcionalidades do sistema sem um maior
detalhamento a respeito delas (SILVA, 2000).

21
Figura 15 - Diagrama de casos de uso da biblioteca.

Fonte: Elaborado pelo autor.

O diagrama de casos de uso gerado a partir do diagrama de requisitos do


sistema pode ser visto na Figura 15. Neste diagrama observa-se que existem dois
casos de uso com os mesmos nomes dos requisitos funcionais, sendo que cada um
implementa o respectivo requisito.
Como foi observado anteriormente, o requisito Obter notas de um acorde
refinado pelo requisito Gerar notao posicional para violo, o que no diagrama de
casos de uso representado pelo relacionamento de incluso, pois toda vez que for
solicitada a gerao de uma notao posicional para violo, sero obtidas as notas
do acorde desejado, ou seja, o comportamento de um caso de uso inclui o
comportamento contido em outro.
Porm, levando em considerao o requisito no funcional Flexibilidade na
incluso de novos instrumentos, foi criado o caso de uso Gerar notao posicional
para instrumento, que dever conter os comportamentos genricos para gerao de
notao posicional para qualquer tipo de instrumento. Devem, ento, os
comportamentos especficos de cada instrumento ficar em um caso de uso parte,
como acontece com o caso de uso Gerar notao posicional para violo, apenas
estendendo o caso de uso mais genrico.

4.2 Refinamento da modelagem


Tendo os casos de uso definidos, deve-se ento passar modelagem dos
comportamentos do sistema. Essa modelagem feita refinando-se os casos de uso

22
atravs de diagramas comportamentais (SILVA, 2000). Para este trabalho foi
escolhido o diagrama de atividades para a realizao deste refinamento e, quando
julgou-se necessrio um detalhamento ainda maior, a utilizao do diagrama de
seqncia. Para a representao da estrutura do software, so utilizados diagramas
de classes para as partes do sistema que necessitem de um esclarecimento maior
nesse sentido.

4.2.1 Caso de uso Obter notas de um acorde


O refinamento do caso de uso Obter notas de um acorde pode ser visto no
diagrama da Figura 16. Aqui pode ser visto o fluxo das informaes iniciando com o
recebimento do acorde representado de forma alfanumrica, verificao do tipo de
acorde e construo do mesmo e, por fim, o retorno do acorde gerado.
Figura 16 - Diagrama de atividades de "Obter notas de um acorde".

Fonte: Elaborado pelo autor.

A gerao dos acordes feita seguindo-se a teoria de formao de acordes,


descrita na Seo 2.2.1 deste trabalho. Considerando que esse comportamento
um tanto trivial, julgou-se suficiente a refinao deste caso de uso somente com um
diagrama de atividades.

23
Quanto estrutura adotada para abrigar os dados gerados por esse caso de
uso, foram geradas as classes e relacionamentos que podem ser vistos no diagrama
da Figura 17. Nesse diagrama de classes podem ser vistas as classes Chord,
MajorChord e MinorChord, que representam um acorde genrico, um acorde maior e
um menor, respectivamente. Tambm vista a classe de enumerao Note, que
representa uma nota musical e guarda todas as notas possveis.
Figura 17 - Diagrama de classes dos acordes e notas.

Fonte: Elaborado pelo autor.

Essa estrutura contendo uma classe abstrata para representar um acorde de


forma genrica importante para que novos tipos de acorde possam ser
adicionados de forma simples no futuro, simplesmente especializando essa classe,
assim como j feito para os acordes maiores e menores.

4.2.2 Caso de uso Gerar notao posicional para instrumento


O caso de uso Gerar notao posicional para instrumento abriga a poro de
comportamento mais genrica em relao gerao de acordes para um
determinado instrumento. Essa deciso foi tomada tendo por fim separar os
comportamentos mais especficos para cada instrumento em seu prrprio caso de
uso.

24
O diagrama de atividades da Figura 18 ilustra os passos seguidos para obter
essa separao, onde pode-se observar que o comportamento do caso de uso
Obter notas de um acorde e a gerao de notao posicional so invocados atravs
de atividades compostas. A primeira, definida no caso de uso de mesmo nome, e a
segunda, que deve ser definida atravs de um ponto de extenso deste caso de uso.
Figura 18 - Diagrama de atividades da gerao de notao posicional.

Fonte: Elaborado pelo autor.

A separao dos comportamentos, obtida atravs destes pontos de extenso,


advem da necessidade de tornar a biblioteca facilmente extensvel outros
instrumentos alm do contemplado neste trabalho, como por exemplo o piano.
Para se obter este efeito na estruturao da classes do sistema, utilizado o
padro de projeto chamado de Factory Method. O objetivo deste padro prover
uma interface para a criao de um objeto, mas permitir que as subclasses decidam
qual classe instanciar (GAMMA et al, 1994). Desta forma, durante a implementao
possvel separar a inteno da implementao, terminando por possibilitar a
execuo de diferentes comportamentos dependentes do objeto sendo instanciado,
graas ao conceito de polimorfismo.

25
Figura 19 - Diagrama de classes do gerador de acordes.

Fonte: Elaborado pelo autor.

26
O diagrama de classes gerado levando-se em considerao estes fatores
pode ser visto na Figura 19. Neste diagrama pode ser visto que a classe
GeneratorFactory a que implementa o padro, ela tem a responsabilidade de
construir o objeto que representa o instrumento e a sua classe geradora de acordes
a partir do tipo de instrumento, seja ele de cordas ou teclas. Percebe-se que aqui
so apresentadas as classes referentes instrumentos de teclas, mesmo no sendo
objeto direto deste trabalho, porm so definidas para demonstrar a facilidade de
adio de outros tipos de instrumento biblioteca.

4.2.3 Caso de uso Gerar notao posicional para violo


O caso de uso Gerar notao posicional para violo, como j abordado
anteriormente, um ponto de extenso do caso de uso mais genrico da seo
anterior, implementando concretamente atividade genrica denominada Gerar
notao posicional visto no diagrama de atividades daquele caso de uso.
Sendo assim, este caso de uso diz respeito gerao de notao posicional
de acordes para um instrumento de cordas, mais especificamente o violo. Na
Figura 20 encontra-se o diagrama de atividades correspondente funcionalidade
provida por este caso de uso. Este diagrama descreve, em um nvel mais alto de
abstrao, o algoritmo elaborado para a gerao dos acordes no violo, o que foi
feito baseado na teoria de formao de acordes e observando-se como a
execuo de exemplos clssicos de acordes neste instrumento e suas variaes.
No incio do diagrama recebido o acorde, ento passa-se busca de todas
as posies no brao do violo (casas e cordas) que contm a nota fundamental
deste acorde. Ento para cada uma dessas posies feita uma varredura dentro
do intervalo de quatro casas, anteriores ou seguintes, buscando-se as notas que
compem o acorde.
O passo anterior acaba gerando uma lista de posicionamentos, onde alguns
deles j so acordes perfeitamente executveis. Ainda devem ser eliminados os
acordes que, para sua execuo, exigem o pressionamento de mais de quatro
posies, o que impossvel para um ser humano, j que o nmero de dedos

27
utilizados para tal quatro. Porm, utilizando-se da tcnica da pestana, onde o dedo
indicador pressiona todas as cordas do instrumento na mesma casa, esses acordes
podem ser executados ao se substituir essas posies por uma pestana.
Figura 20 - Diagrama de atividades da gerao de acordes para violo.

Fonte: Elaborado pelo autor.

Essa busca por acordes que possibilitem tal tcnica e a consequente


substituio das posies, pode ser vista a partir da atividade Verificar se
posicionamento requere mais de quatro dedos para ser executado no diagrama.
Sendo ento, por fim, retornada a lista de posicionamentos gerada.
A fim de detalhar esta funcionalidade, na Figura 21 apresentado o diagrama
de seqencia, representando o recebimento da mensagem requerendo a gerao de
notao posicional pela classe responsvel por gerar os acordes para instrumentos
de corda.
No diagrama de seqncia podem ser vistas as mensagens necessrias para
a implementao dos passos descritos anteriormente e vistos no diagrama de
atividades correspondente.

28
Figura 21 - Diagrama de seqncia da gerao de acordes para violo.

Fonte: Elaborado pelo autor.

Para armazenar os dados gerados nesta etapa, foram criadas novas classes,
as quais podem ser vistas no diagrama de classes da Figura 22. A classe abstrata
PositionalNotation define uma notao posicional e armazena o acorde representado
por ela, sendo que sua implementao concreta para o violo realizada pela
classe FFSNotation. Essa classe abriga uma lista de posies que devem ser
pressionadas no violo seguindo o padro dedo; casa; corda, conforme estrutura
do violo. Como existem dois tipos de posies, existem duas especializaes para

29
tal, uma para posies normais e outra para representar uma pestana, funo
cumprida pela classe FingerBarreFret.
Figura 22 - Diagrama de classes das notaes posicionais.

Fonte: Elaborado pelo autor.

4.3 Definio da API de acesso


Para que as funcionalidades possam ser acessadas pelos softwares que
vierem a utiliz-la, uma API de acesso definida, que expe tais funcionalidades
atravs de mtodos que podem ser invocados externamente biblioteca.
Visando facilitar esse acesso externo, criada a classe denominada
ChordGeneratorFacade, que implementa o padro de projeto Faade com o objetivo
de fornecer a API necessria. Esse padro tem a inteno de prover uma interface

30
unificada um conjunto de interfaces de um subsistema, acabando por definir uma
interface de nvel mais alto que torna o subsistema mais fcil de ser utilizado
(GAMMA et al, 2004).
Figura 23 - Diagrama de classes da API de acesso.

Fonte: Elaborado pelo autor.

O diagrama de classes visto na Figura 23 define a classe descrita


anteriormente ChordGeneratorFacade, a qual possui dois mtodos estticos
denominados generateChord e generateChordPositionalNotation que expem os
casos de uso Obter notas de um acorde e Gerar notao posicional para violo,
respectivamente. Esse mtodos acessam uma classe interna que prov servios
(funcionalidades), que por sua vez acessa a fbrica dos geradores de acordes.

31

Desenvolvimento

5.1 Desenvolvimento da biblioteca


Com a modelagem das funcionalidades completa, parte-se para o
desenvolvimento em linguagem de programao dos comportamentos ora definidos.
O desenvolvimento dos casos de uso seguiu o que foi estabelecido
anteriormente nos modelos gerados, sendo eles diagramas de atividades, de
classes ou de seqncia.
O corao da implementao da biblioteca, est no algoritmo de gerao de
acordes para violo. Tal algoritmo foi detalhado anteriormente pelo diagrama de
atividades da Figura 20 e detalhado pelo diagrama de seqncia da Figura 21.
Cdigo-fonte 1 - Mtodo de busca de notas nas cordas do violo.
private List<FingerFretString> searchFFSForNotes(List<Note> notes, int firstString, int
initialFret, int finalFret) {
// Find FFS descending from first string
List<FingerFretString> ffsList = new ArrayList<FingerFretString>();
for (int currentString = firstString; currentString >= 0; currentString--) {
FingerFretString ffs = searchStringForNote(notes, currentString, initialFret,
finalFret);
if (ffs == null) {
return null;
}
ffsList.add(ffs);
}
return ffsList;
}
Fonte: Elaborado pelo autor.

Seguindo a modelagem definida nestes diagramas, criado o cdigo-fonte,


do qual pode ser visto um trecho em Cdigo-fonte 1. Aqui pode ser visto dos dos
principais mtodos responsveis pela gerao dos acordes para violo. Este
mtodo, chamado de searchFFSForNotes, tem a funo de rastrear as cordas do

32
violo buscando as posies que providenciem as notas passadas pelo parmetro
notes.
Essa lista de notas compreendem as notas que compem o acorde desejado,
e esse mtodo utilizado primeiramente para encontrar as posies com a nota
fundamental do acorde e, aps, o restante das posies tendo por fim gerar o
acorde.
Cdigo-fonte 2 - Mtodo de busca das notas em uma nica corda.
private FingerFretString searchStringForNote(List<Note> notes, int stringNumber, int
initialFret, int finalFret) {
FingerFretString ffs = null;
Note looseStringNote = this.pitches.get(stringNumber);
for (int currentFret = initialFret; currentFret <= finalFret; currentFret++) {
Note currentNote = looseStringNote.getRespectiveNote(currentFret);
if (notes.contains(currentNote)) {
ffs = new FingerFretString();
ffs.setFinger(1);
ffs.setFret(currentFret);
ffs.setString(stringNumber);
break;

}
}
return ffs;

Fonte: Elaborado pelo autor.

Ainda, observando-se o cdigo, pode-se notar que o primeiro mtodo invoca


um segundo para cada uma das cordas do violo. Isso feito para deixar a
responsabilidade de encontrar uma nota para uma corda especfica em outro
mtodo. Ento este segundo mtodo, que pode ser visto no trecho de cdigo em
Cdigo-fonte 2, tem a responsabilidade de buscar uma corda, encontrar uma das
notas desejadas, construir o objeto da classe FingerFretString, que armazena esse
posicionamento, e retorn-lo. Na construo do objeto, o dedo que deve ser utilizado
para a execuo do acorde definido sempre como 1 (um). Isso feito pois
decidiu-se no incluir esta funcionalidade no escopo deste trabalho. A casa
pressionada corresponde ao nmero da casa do violo, sendo utilizado 0 (zero) para
corda solta, e o nmero da corda vai de 1 (um) 6 (seis), conforme as cordas de um
violo padro. As cordas no tocadas no so retornadas.

33
Outro ponto importante do algoritmo na busca de acordes impossveis de
serem executados devido limitaes da mo humana, a tentativa de converso
destes acordes para acordes que utilizem pestana e a eliminao dos acordes onde
no possvel essa converso.
A trecho do cdigo responsvel por esse comportamento pode ser visto no
mtodo exibido em Cdigo-fonte 3. Como pode ser visto, esse mtodo realiza uma
varredura de todos os acordes, primeiramente verificando quais necessitam menos
de quatro dedos para serem executados (primeira instruo if), ento os adiciona
lista que ser retornada. Caso o acorde no se encaixe nessa exigncia, tenta-se
converter o mesmo para um acorde com pestana, adicionando lista os que podem
ser executados utilizando essa tcnica.
Cdigo-fonte 3 - Mtodo de busca de acordes impossveis para a mo humana.
private Set<FFSNotation> findAndConvertBarreChords(Set<FFSNotation> possibleFFS) {
Set<FFSNotation> newFFS = new TreeSet<FFSNotation>();
for (FFSNotation ffsn : possibleFFS) {
int fingersNeeded = ffsn.getNumberOfFingersNeeded();
if (fingersNeeded <= HUMAN_MAXIMUM_FINGERS) {
newFFS.add(ffsn);
continue;
}
int minFret = ffsn.getMinimumFret(true);
boolean barrePossible = convertToBarreFret(ffsn, minFret);
if (barrePossible) {
newFFS.add(ffsn);
}
}
return newFFS;
}
Fonte: Elaborado pelo autor.

Para a converso do acorde normal em um com pestana, invocado o


mtodo convertToBarreFret, que pode ser visto em Cdigo-fonte 4. Para a
converso do acorde, primeiro obtem-se quantas posies existem na casa mais
prxima do incio do brao do violo, ento verificado se ao substituir essas
posies por uma pestana ser possvel executar o acorde. Caso no seja,
retornado o valor de falso, mas se possvel, essas posies so convertidas em uma
nova com a pestana, e esta retornada.

34
Tendo desenvolvido o cdigo do algoritmo de gerao de acordes de violo,
restam o cdigo da API de acesso e as classes de geradores. Como estas classes
implementam padres de projeto j bem consolidados na engenharia de software,
no se v a necessidade de demonstrao de trechos de cdigo aqui.
Cdigo-fonte 4 - Mtodo de converso de acordes para pestana.
private boolean convertToBarreFret(FFSNotation ffsn, int minFret) {
List<FingerFretString> barreFFPs = ffsn.getPositionsAtFret(minFret);
int fingersNeeded = ffsn.getNumberOfFingersNeeded();
if (fingersNeeded - barreFFPs.size() + 1 > HUMAN_MAXIMUM_FINGERS) {
return false;
}
FingerBarreFret barre = new FingerBarreFret(1, minFret);
barre.addReplacedPositions(barreFFPs);
ffsn.getPositions().removeAll(barreFFPs);
ffsn.getPositions().add(barre);
return true;
}
Fonte: Elaborado pelo autor.

Para a verificao dos resultados diretamente a partir da biblioteca, foi criada


tambm uma forma de acessar a API atravs de linha de comando, com a
interpretao de parmetros definindo o acorde e o instrumento desejado e o retorno
do posicionamento gerado impresso em forma de texto. A utilizao deste modo
pode ser visto mais adiante na seo 5.3.

5.2 Integrao com o aplicativo Cifras


Tendo em vista o objetivo deste trabalho de desenvolver um aplicativo de
exemplo que utilize as funcionalidades proporcionadas pela biblioteca, realizada a
integrao do aplicativo Cifras com a biblioteca para que seja possvel a
renderizao de imagens mostrando como devem ser executados acordes de violo,
baseadas em dados gerados pela biblioteca e acessadas atravs de sua API.
O aplicativo alterado para escutar toques nos acordes presentes nas cifras
de msica e ento invocar o mtodo apropriado da API da biblioteca. Tendo como
resultado uma lista de notaes posicionais, renderizada a imagem do acorde de
violo e mostrada na tela. Tambm so disponibilizados dois botes para avanar ou
retroceder na lista de resultados de diferentes posicionamentos.

35
Na captura de tela da Figura 24 pode ser observada a tela com a imagem do
acorde de violo renderizada e os dois botes para acessar os demais resultados.
Observe que utilizada a notao padro para acordes de violo, tendo com nica
diferena que no apresentada a numerao dos dedos que devem ser utilizados,
sendo somente mostrados crculos pretos que so as posies que devem ser
pressionadas.
Figura 24 - Acorde C (d) renderizado no Cifras.

Fonte: Elaborado pelo autor.

5.3 Testes da biblioteca


Com o intuito de demonstrar o funcionamento da biblioteca, utilizada a linha
de comando para acessar as funcionalidades disponibilizadas pela API. A seguir
pode ser visto o resultado da execuo da biblioteca ao gerar as notaes
posicionais para o acorde de d maior (C):
Foram gerados 6 posicionamentos para o acorde "C":
Posicionamento 1:
Dedo: 1; Casa: 0; Corda: 1
Dedo: 1; Casa: 1; Corda: 2
Dedo: 1; Casa: 0; Corda: 3
Dedo: 1; Casa: 2; Corda: 4
Dedo: 1; Casa: 3; Corda: 5
Posicionamento 2:
Dedo: 1; Casa com
Dedo: 1; Casa: 5;
Dedo: 1; Casa: 5;
Dedo: 1; Casa: 5;
...

pestana: 3; ltima corda: 5


Corda: 2
Corda: 3
Corda: 4

36
Analisando o resultado, verifica-se que foram geradas seis posicionamentos
diferentes para o acorde desejado, porm aqui, para fins de demonstrao, so
exibidos somente os dois primeiros.
O primeiro posicionamento indica que as primeiras cinco cordas (de um
cinco) devem ser tocadas, ou seja, todas menos a ltima corda. E as casas que
devem ser pressionadas so a casa 1 (um) na corda 2 (dois), a casa 2 (dois) na
corda 4 (quatro) e, por fim, a casa 3 (trs) na corda 5 (cinco). Ao se comparar esses
posicionamentos com os do acorde de violo da Figura 5, percebe-se que so
exatamente os mesmos, o que leva a afirmar que o acorde gerado est correto.
J o segundo posicionamento corresponde um exemplo de acorde que
necessita de pestana para ser executado, neste caso sobre a casa 3 (trs), onde a
ltima corda pressionada a 5 (cinco). Assim como no posicionamento anterior, a
ltima corda no deve ser tocada. Comparando este posicionamento com o da
Figura 7, verifica-se sua exatido.
Quando da renderizao da imagem correspondente este acorde no
aplicativo Cifras, agora integrado biblioteca, o primeiro posicionamento pode ser
visto na imagem da Figura 24.
Figura 25 - Acorde de C (d) com pestana no Cifras

Fonte: Elaborado pelo autor.

A imagem da Figura 25 mostra a execuo do segundo posicionamento. O


algarismo 3 (trs) do lado esquerdo da primeira casa exibida indica que esta casa

37
no a primeira do violo, mas sim a terceira. Nesta casa tambm pode ser
observada a pestana, representada aqui pelo retngulo preto que cobre as casas de
um cinco.

38

Concluso

Atualmente, com a computao pessoal mvel crescendo mais a cada ano,


onde smartphones e tablets j so mais populares que computadores de mesa e
notebooks, cria-se um novo mercado sem precedentes nesta rea.
Este crescimento acelerado exige que novos aplicativos sejam desenvolvidos
cada vez mais rpido, e formas de agilizar o desenvolvimento so bem-vindas. Uma
dessas formas atravs do emprego de bibliotecas de software, onde o reuso de
um cdigo mais genrico pode ser alcanado ao extra-lo para uma biblioteca que
pode ser, ento, invocada por diversas aplicaes diferentes.
Tendo como motivao este crescente mercado e a possibilidade de
aprimoramento de uma aplicao de organizao de cifras de msica, denominada
Cifras, que foi proposta e desenvolvida uma biblioteca para gerao automtica de
acordes musicais.
A elaborao desta biblioteca passou pelas fases de concepo e
modelagem, onde foi definida sua estrutura, organizao e forma de acesso s suas
funcionalidades atravs de uma API, e pela fase de desenvolvimento, onde foi
escrito o cdigo-fonte que tem por fim sua reutilizao.
Como forma de demonstrar o uso da biblioteca e, conseqentemente,
aprimorar o aplicativo Cifras, realizou-se a integrao deste com a biblioteca,
podendo assim se beneficiar das funcionalidades providas pela mesma.
Esta integrao foi bem sucedida, sendo agora possvel a exibio acordes
de violo por meio de imagens renderizadas a partir de dados provenientes da
biblioteca.

39
Atualmente somente possvel a gerao de acordes maiores e menores
para violo. Porm, com a estrutura que foi definida para a biblioteca, facilitada a
extenso da mesma para que suporte a gerao de outros tipos de acordes, bem
como a gerao desses acordes para outros tipos de instrumento, inclusive
instrumentos que no so de corda.
visualizada, ento, os benefcios trazidos pelo uso da biblioteca
desenvolvida, que agora pode ser utilizada por qualquer software musical que
necessite de gerao de acordes.

6.1 Sugestes para trabalhos futuros


So sugestes para trabalhos futuros:

Estender a biblioteca para que venha a suportar instrumentos com


nmero de cordas diferente, pois atualmente o suporte somente para
violo padro de seis cordas;

Implementao de algoritmo de fingering, onde as posies que devem


ser pressionadas para a execuo de um acorde no violo so
numeradas para demonstrarem quais dedos devem ser utilizados para
pression-las, o que importante para estudantes iniciantes visto que
esclarece melhor como deve ser executado o acorde;

Estender o suporte da biblioteca outros tipos de instrumentos, como por


exemplo o piano. Como foi visto durante a modelagem, um dos objetivos
era a fcil extenso outros tipos de instrumentos, aumentando assim o
nmero de pessoas beneficiadas pela biblioteca.

40

Referncias

AMERICAN DIALECT SOCIETY. App voted 2010 word of the year by the American
Dialect Society. 8 Jan. 2011. Disponvel em: <http://www.americandialect.org/
app-voted-2010-word-of-the-year-by-the-american-dialect-society-updated>. Acessado em:
22 Ago. 2012.
ANDROID DEVELOPERS. Google Play Services. 2013. Disponvel em
<http://developer.android.com/google/play-services/index.html>. Acessado em: 7 Jul. 2013.
BERTOLUCCI, J. Smartphone Sales Boom -- Who Needs a Laptop?. 4 Fev. 2012.
Disponvel em: <http://www.pcworld.com/article/249313/smartphone_sales_boom_who_
needs_a_laptop.html>. Acessado em: 3 Ago. 2012.
BRANDT, M. Google Overtakes Apple. 8 Jan. 2013. Disponvel em: <http://www.statista.
com/topics/1001/google/chart/812/number-of-apps-available-in-the-top-app-stores/>.
Acessado em: 7 Jul. 2013.
CANALYS. Googles Android becomes the worlds leading smart phone platform. 31
Janeiro 2011. Disponvel em: <http://www.canalys.com/pr/2011/r2011013.html>. Acessado
em: 7 Jul. 2013.
CANALYS. Smart phones overtake client PCs in 2011. 3 Fevereiro 2012. Disponvel em:
<http://www.canalys.com/newsroom/smart-phones-overtake-client-pcs-2011>. Acessado em:
03 Ago. 2012.
CHEDIAK, A. Dicionrio de Acordes Cifrados. So Paulo: Irmos Vitale, 1984.
COCOTAS, A. Sales Will Exceed 1.5 Billion Units A Year By 2016. 29 Fev. 2012.
Disponvel em: <http://articles.businessinsider.com/2012-02-29/research/
31109566_1_smartphones-pc-sales-mobile-phone-sales>. Acessado em: 3 Ago. 2012.
COMSCORE. comScore: In U.S. Mobile Market, Samsung, Android Top The Charts;
Apps Overtake Web Browsing. 2 Jul. 2012. Disponvel em: <http://techcrunch.com/
2012/07/02/comscore-in-u-s-mobile-market-samsung-android-top-the-charts-apps-overtakeweb-browsing/>. Acessado em: 22 Ago. 2012.

41
DOURADO, H. Dicionrio de termos e expresses da msica. So Paulo: 34, 2004.
GAMMA, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software.
Estados Unidos: Addison-Wesley, 1994.
GARTNER. Gartner Says Asia/Pacific Led Worldwide Mobile Phone Sales to Growth in
First Quarter of 2013. 14 Maio 2013. Disponvel em: <http://www.gartner.com/newsroom/
id/2482816>. Acessado em 14 Jul. 2013.
GUEST, I. Arranjo - Mtodo prtico. Rio de Janeiro: Lumiar Editora, 1996.
KARCH, M. What Is Google Android?. Disponvel em: <http://google.about.com/od/
socialtoolsfromgoogle/p/android_what_is.htm>. Acessado em: 04 Fev. 2013.
KOSTKA, S.; PAYNE, D. Harmonia Tonal. McGraw-Hill Education, 2008.
MUSIC COACH. Keys, scales & chords. 2007. Disponvel em: <http://musiccoach.com/free
-guitar-lessons/guitar-chord-theory/keys-scales-chords/Guitar-Chords-in-Major-Keys.htm>.
Acessado em: 30 Jul. 2013.
OHA (Open Handset Alliance). Industry Leaders Announce Open Platform for Mobile
Devices. 5 Nov. 2007. Disponvel em: <http://www.openhandsetalliance.com/
press_110507.html>. Acessado em: 04 Fev. 2013.
PCMAG. Encyclopedia. Definition of: mobile app. 2013. Disponvel em:
<http://www.pcmag.com/encyclopedia/term/60015/mobile-app>. Acessado em: 14 Jul. 2013.
SCHMID, W.; KOCH, G. Hal Leonard Guitar Method. 2 ed. Milwaukee, Estados Unidos:
Hal Leonard, 1980.
SILVA, E.; MENEZES, E. Metodologia da pesquisa e elaborao de dissertao. 4 ed.
UFSC: Florianpolis, 2005.
SILVA, R. UML 2 em Modelagem Orientada a Objetos. Florianpolis : Visual Books, 2007.
WEBOPEDIA. Library. Disponvel em: <http://www.webopedia.com/TERM/L/library.html>.
Acessado em: 27 Jul. 2013.
WIKIHOW. How to Learn All the Notes on the Guitar. Disponvel em: <http://www.wikihow
.com/Learn-All-the-Notes-on-the-Guitar>. Acessado em: 30 Jul. 2013.

Você também pode gostar