Você está na página 1de 101

UNIVERSIDADE DO VALE DO ITAJA

CENTRO DE CINCIAS TECNOLGICAS DA TERRA E DO MAR


CURSO DE CINCIA DA COMPUTAO

TRATAMENTO DE SINAIS SONOROS NO COMPUTADOR SIMULANDO


PEDAIS VIRTUAIS
rea de Computao Musical
por
Daniel Krueger

Adhemar Maria do Valle Filho, Dr.


Orientador

Itaja (SC), junho de 2008

UNIVERSIDADE DO VALE DO ITAJA


CENTRO DE CINCIAS TECNOLGICAS DA TERRA E DO MAR
CURSO DE CINCIA DA COMPUTAO

TRATAMENTO DE SINAIS SONOROS NO COMPUTADOR SIMULANDO


PEDAIS VIRTUAIS
rea de Computao Musical

por
Daniel Krueger

Relatrio apresentado Banca Examinadora do


Trabalho de Concluso do Curso de Cincia da
Computao para anlise e aprovao.
Orientador: Adhemar Maria do Valle Filho, Dr.

Itaja (SC), junho de 2008

SUMRIO
LISTA DE ABREVIATURAS..................................................................iv
LISTA DE FIGURAS................................................................................. v
LISTA DE TABELAS ..............................................................................vii
LISTA DE EQUAES .........................................................................viii
RESUMO....................................................................................................ix
ABSTRACT................................................................................................. x
1 INTRODUO ...................................................................................... 1
1.1 PROBLEMATIZAO ..................................................................................... 1
1.1.1 Formulao do Problema ................................................................................. 1
1.1.2 Soluo Proposta ............................................................................................... 2
1.2 OBJETIVOS ........................................................................................................ 3
1.2.1 Objetivo Geral ................................................................................................... 3
1.2.2 Objetivos Especficos ........................................................................................ 3
1.3 METODOLOGIA................................................................................................ 3
1.4 ESTRUTURA DO TRABALHO ....................................................................... 4

2 FUNDAMENTAO TERICA ........................................................ 5


2.1 COMPUTAO MUSICAL.............................................................................. 5
2.1.1 Som ..................................................................................................................... 6
2.1.2 DSP ..................................................................................................................... 9
2.1.3 Efeitos Digitais................................................................................................. 13
2.2 SOFTWARES SIMILARES............................................................................. 24
2.2.1 Guitar R.A. ...................................................................................................... 24
2.2.2 FX-Box ............................................................................................................. 25
2.2.3 Revalver ........................................................................................................... 26
2.3 BIBLIOTECAS DE SOM E LINGUAGENS DE PROGRAMAO ........ 28
2.3.1 DirectX ............................................................................................................. 28
2.3.2 SDL (Simple DirectMedia Layer) ................................................................. 28
2.3.3 PortAudio......................................................................................................... 28
2.3.4 OpenAL............................................................................................................ 29
2.3.5 VST ................................................................................................................... 29
2.3.6 JUCE ................................................................................................................ 34
2.3.7 ASIO ................................................................................................................. 34
2.4 CONSIDERAES .......................................................................................... 36

3 DESENVOLVIMENTO ...................................................................... 37
3.1 MODELAGEM DO SISTEMA........................................................................ 37
3.1.1 Levantamento de Requisitos .......................................................................... 37
3.1.2 Projeto do Sistema .......................................................................................... 38
ii

3.2 IMPLEMENTAO ........................................................................................ 53


3.2.1 Programa Host DK Guitar.......................................................................... 54
3.2.2 Plugins .............................................................................................................. 60
3.3 TESTES E VALIDAO................................................................................. 78

4 CONCLUSES .................................................................................... 80
REFERNCIAS BIBLIOGRFICAS ................................................... 82
GLOSSRIO............................................................................................. 85

iii

LISTA DE ABREVIATURAS
API
ASIO
DFT
DSP
FFT
JUCE
MIDI
OPENAL
OPENGL
PC
SDK
SDL
TCC
UML
UNIVALI
VST
VSTi

Application Programming Interface


Audio Stream Input/Output
Discrete Fourier Transform
Digital Signal Processing
Fast Fourier Transform
Jules Utility Class Extensions
Musical Instrument Digital Interface
Open Audio Library
Open Graphics Library
Personal Computer
Software Development Kit
Simple DirectMedia Layer
Trabalho de Concluso de Curso
Unified Modeling Language
Universidade do Vale do Itaja
Virtual Studio Technology
Virtual Studio Technology Instrument

iv

LISTA DE FIGURAS
Figura 1. Conexo Guitarra Computador..........................................................................................2
Figura 2. Onda com freqncia de 3 Hertz ..........................................................................................7
Figura 3. Amplitude de uma onda........................................................................................................7
Figura 4. Durao de uma onda ...........................................................................................................8
Figura 5. Filtros Digitais: (a) Passa-baixas; (b) Passa-altas; (c) Passa-banda; (d) Rejeita-banda......10
Figura 6. Filtro Comb .........................................................................................................................10
Figura 7. Cancelamento de fases........................................................................................................11
Figura 8. Transformada de Fourier aplicada em uma onda simples ..................................................12
Figura 9. Transformada de Fourier aplicado em uma onda composta ...............................................12
Figura 10. (a) Pedaleira V-Amp2; (b) Pedal Digital Reverb; (c) Mesa de som Behringer................13
Figura 11. Ligao de pedais em srie ...............................................................................................14
Figura 12. Pedal de Chorus ................................................................................................................15
Figura 13. Onda sonora do efeito Chorus ..........................................................................................15
Figura 14. Pedal de Tremolo ..............................................................................................................16
Figura 15. Onda sonora do efeito Tremolo ........................................................................................16
Figura 16. Pedal de Delay ..................................................................................................................17
Figura 17. Onda sonora do efeito Delay ............................................................................................18
Figura 18. Pedal de Reverb ................................................................................................................19
Figura 19. Onda sonora do efeito Reverb...........................................................................................19
Figura 20. Pedal de compresso .........................................................................................................20
Figura 21. Onda sonora do efeito Compressor...................................................................................21
Figura 22. Pedal de equalizao .........................................................................................................22
Figura 23. Onda sonora do efeito Equalizador...................................................................................22
Figura 24. (a) Pedal de Overdrive; (b) Pedal de Distoro ................................................................23
Figura 25. (a) Onda sonora do efeito Overdrive; (b) Onda sonora do efeito Distoro.....................24
Figura 26. Software Guitar R.A. ........................................................................................................25
Figura 27. Software Fx-Box...............................................................................................................26
Figura 28. Software Revalver.............................................................................................................27
Figura 29. Comunicao Host VST ................................................................................................30
Figura 30. Interfaces do plugin e do Host ..........................................................................................31
Figura 31. (a) Interface do SynthEdit; (b) Interface do SynthMaker; (c) Interface do Quantum Fx .32
Figura 32. Bateria virtual EZ Drummer .............................................................................................33
Figura 33. (a) Placa M-AUDIO DELTA 1010 LT; (b) Placa Creative AUDIGY 2 ZS 7.1 ..............34
Figura 34. Tela de configurao do ASIO4ALL................................................................................35
Figura 35. Adaptador P10 x P2 ..........................................................................................................37
Figura 36. Diagrama de Casos de Uso ...............................................................................................39
Figura 37. Diagrama de Caso de Uso Configuraes .....................................................................40
Figura 38. Diagrama de Caso de Uso Seleo de Efeitos ...............................................................41
Figura 39. Diagrama de Caso de Uso Ajuste de Parmetros ..........................................................42
Figura 40. Diagrama de Caso de Uso Importao/Exportao .......................................................43
Figura 41. Diagrama de Classes de Negcio: Host............................................................................44
Figura 42. Diagrama de Classes do Plugin VST................................................................................46
Figura 43. Diagrama de Classes de Projeto: Host..............................................................................47
Figura 44. Diagrama de Seqncia ....................................................................................................49
Figura 45. Diagrama de Componentes...............................................................................................50
Figura 46. Prottipos de Tela: Tela Principal (TELA 01)..................................................................51
v

Figura 47. Prottipos de Tela: Tela de Configuraes (TELA 02) ....................................................52


Figura 48. Prottipos de Tela: Tela de Mensagem (TELA 03)..........................................................52
Figura 49. Prottipos de Tela: Tela de Dilogo (TELA 04) ..............................................................53
Figura 50. Diagrama de Classes do DK Guitar..................................................................................55
Figura 51. Tela Principal ....................................................................................................................56
Figura 52. Menu de contexto dos plugins ..........................................................................................57
Figura 53. Tela de Configuraes ......................................................................................................58
Figura 54. Menu Arquivo...................................................................................................................60
Figura 55. Cdigo fonte do plugin Delay...........................................................................................62
Figura 56. (a) Interface do Delay; (b) Interface padro do Delay no DK Guitar...............................63
Figura 57. Onda sonora do Delay.......................................................................................................63
Figura 58. Cdigo fonte do plugin Overdrive ....................................................................................65
Figura 59. (a) Interface do Overdrive; (b) Interface padro do Overdrive no DK Guitar .................66
Figura 60. Onda sonora do Overdrive ................................................................................................66
Figura 61. Diagrama Distortion no SynthEdit ...................................................................................67
Figura 62. Cdigo fonte do plugin Distortion....................................................................................69
Figura 63. (a) Interface do Distortion; (b) Interface padro do Distortion no DK Guitar .................70
Figura 64. Onda sonora do Distortion................................................................................................70
Figura 65. Cdigo fonte do Plugin Tremolo ......................................................................................71
Figura 66. (a) Interface do Tremolo; (b) Interface do Tremolo no DK Guitar...................................72
Figura 67. Onda sonora do Tremolo...................................................................................................72
Figura 68. Diagrama Chorus no SynthEdit ........................................................................................73
Figura 69. (a) Interface do Chorus; (b) Interface padro do Chorus no DK Guitar ..........................74
Figura 70. Onda sonora do Chorus ....................................................................................................74
Figura 71. Diagrama Reverb no SynthEdit ........................................................................................75
Figura 72. (a) Interface do Reverb; (b) Interface padro do Reverb no DK Guitar ...........................76
Figura 73. Onda sonora do Reverb.....................................................................................................77
Figura 74. Cdigo fonte do plugin Volume .......................................................................................77
Figura 75. Interface do Volume .........................................................................................................78
Figura 76. Onda sonora do Volume ...................................................................................................78
Figura 77. (a) Distortion no FL Studio; (b) Distortion no Sonar; (c) Distortion no Audacity...........79

vi

LISTA DE TABELAS
Tabela 1. Formas de ondas ...................................................................................................................8
Tabela 2. Resumo dos Softwares Similares .......................................................................................27
Tabela 3. Peas da bateria virtual EZ Drummer ................................................................................33
Tabela 4. Botes e teclas de atalho do Software DK Guitar ..............................................................59
Tabela 5. Configurao dos computadores utilizados nos testes .......................................................78

vii

LISTA DE EQUAES
Equao 1 ...........................................................................................................................................64
Equao 2 ...........................................................................................................................................64
Equao 3 ...........................................................................................................................................68
Equao 4 ...........................................................................................................................................68

viii

RESUMO
KRUEGER, Daniel. Tratamento de Sinais Sonoros no Computador Simulando Pedais
Virtuais. Itaja, 2008. 101 f. Trabalho de Concluso de Curso (Graduao em Cincia da
Computao)Centro de Cincias Tecnolgicas da Terra e do Mar, Universidade do Vale do Itaja,
Itaja, 2008.
A evoluo da tecnologia em processamento de sinal de udio tem possibilitado o desenvolvimento
de vrios softwares na rea de Computao Musical que at ento no eram possveis. Este trabalho
apresenta uma proposta de um software para produzir efeitos de guitarra atravs do processamento
do sinal no computador, sem a necessidade de equipamentos externos. A soluo proposta consiste
em uma aplicao para rodar na Plataforma Windows que possibilita a simulao dos principais
efeitos utilizados pelos guitarristas, na qual a guitarra ligada diretamente em um computador. Esta
monografia apresenta o desenvolvimento deste trabalho, discutindo conceitos estudados na pesquisa
bibliogrfica e descrevendo o projeto do software que foi implementado. No intuito de
complementar o conhecimento obtido nas disciplinas do Curso de Bacharelado em Cincia da
Computao da Universidade do Vale do Itaja, foram pesquisados conceitos sobre Computao
Musical, digital signal processing, pedaleiras virtuais, plugins VST (Virtual Studio Technology),
ASIO (Audio Stream Input/Output) e solues similares. O projeto do software foi desenvolvido
seguindo os padres da UML (Unified Modeling Language), com auxlio da ferramenta Enterprise
Architect. Foram elaborados diagramas de caso de uso, classe, seqncia e componentes, alm dos
prottipos de telas. Para o desenvolvimento do software foi utilizado o ambiente de programao
Visual Studio. Obteve-se uma aplicao robusta, simples e funcional, capaz de atender s
necessidades levantadas. Alm de possibilitar a reproduo de efeitos digitais sem a necessidade de
equipamentos para este fim, foi adquirida competncia no desenvolvimento de solues em
Computao Musical.
Palavras-chave: Computao Musical. Pedaleira virtual. Efeitos digitais. Software para guitarra.
Plugin VST.

ix

ABSTRACT
The evolution of technology in audio signal processing has turned possible the development of
several software in the Computer Music area which until then they were not possible. This paper
presents a proposal of software for producing effects of guitar through the processing of the signal
on the computer without the necessity of external equipment. The proposed solution consists in an
application to run the software at Windows platform that enables the simulation of the main effects
used by the guitar players, in which the guitar is directly connected to a computer. This paper
presents the development of this work, discussing concepts studied during the bibliographic
research and describing the software project that was implemented. In order to improve the
obtained knowledge in disciplines of Computer Science course from the UNIVALI, concepts about
musical computing, digital signal processing, virtual guitar processors, VST (Virtual Studio
Technology), ASIO (Audio Stream Input / Output) plug-ins and similar solutions were searched.
The software project has been developed following the standards of UML (Unified Modeling
Language), with the aid of Enterprise Architect tool. Diagrams of use case, class, sequence and
components and prototypes of screens were prepared. For the development of the software the
environment of Visual Studio programming was used. It was obtained a functional, simple and
robust application that can be able to consider the listed necessities. Besides enabling the
reproduction of digital effects without the necessity of equipment for this purpose, competence in
the development of solutions in Musical Computer was acquired.
Keywords: Computer music. Virtual guitar processor. Digital effects. Guitar software. VST plugin.

1 INTRODUO
Com o grande avano da informtica nas ltimas dcadas, hoje possvel desenvolver
softwares para diversas reas, entre elas, a msica. Os msicos de hoje, podem se beneficiar de
solues em software que antigamente no existiam. Muitos equipamentos que funcionavam apenas
com uma caixa amplificadora foram posteriormente ligados ao computador.
Segundo Wanderley (2006, p.1), criou-se assim a possibilidade de utilizao de
computadores pessoais na criao de sons de alta qualidade (com pelo menos 16 bits e 44.100
amostras/s) em modo de processamento nativo, isto , sem a adio de placas de processamento
extras para o clculo das amostras sonoras.
Os teclados, guitarras e contrabaixos possuam acessrios para modificar os sons
produzidos. Era um incio de processamento, porm os dispositivos inicialmente eram muito caros.
Com o crescente avano da tecnologia, hoje possvel substituir grande parte desse equipamento
por solues em software.
Um bom exemplo so os multi-efeitos ou pedaleiras virtuais, que so softwares utilizados
em estdios e at mesmo ao vivo, substituindo pedais e pedaleiras. Softwares na rea de
computao musical so importantes por facilitar o processamento de udio e pelo fato de
possibilitar um profissional da rea trabalhar em qualquer lugar, apenas com um notebook, no
sendo necessrio estar em um estdio com vrios equipamentos.
Por esse motivo, este trabalho consiste em um software que possui os principais efeitos de
pedais e pedaleiras utilizadas por guitarristas, como por exemplo, efeitos denominados Chorus,
Reverb, Delay, Overdrive e Distoro, que sero explicados na seo de Efeitos Digitais. O
funcionamento consiste em ligar a guitarra entrada de microfone do computador, e o software
processa o som da guitarra, assumindo o papel de uma pedaleira.

1.1 PROBLEMATIZAO
1.1.1 Formulao do Problema
O uso de computadores para produes musicais est cada vez mais freqente. Atualmente,
os estdios musicais do mundo inteiro utilizam computadores para fazer algum tipo de
processamento no som, seja na mixagem, masterizao, incluso de efeitos, gravao ou at mesmo
em todas essas etapas.

Com a tecnologia atual, possvel criar msicas e trilhas sonoras sem nenhum instrumento
musical sequer, apenas com o computador. Existem instrumentos virtuais, que simulam os sons de
instrumentos musicais reais, e programas poderosos de sntese sonora, que criam diversos tipos de
sons. Mas esses softwares so extremamente caros, e difceis de serem operados, o que requer um
alto nvel de conhecimento e treinamento.
Desta forma, esse trabalho proporcionou a implementao de um software que simula os
efeitos de pedais e pedaleiras utilizados por guitarristas, na qual sua principal caracterstica a
simplicidade de operao. Atualmente, os efeitos mais conhecidos e utilizados pelos guitarristas
so: Chorus, Reverb, Delay, Overdrive e Distoro, que so o foco deste trabalho.

1.1.2 Soluo Proposta


A soluo proposta consiste em um software que processa o sinal de uma guitarra ligada a
um computador, simulando os sons dos principais efeitos utilizados pelos guitarristas.
A Figura 1 apresenta uma imagem de como feita a conexo da guitarra, computador e
caixas de som.

Figura 1. Conexo Guitarra Computador


Fonte: Adaptado de Gore (2007).

1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral desse trabalho desenvolver um software capaz de adicionar efeitos
sonoros ao som de uma guitarra ligada ao computador, substituindo o uso de pedais e pedaleiras. O
software dever possuir os principais efeitos de uma pedaleira ou pedais, como Chorus, Reverb,
Delay, Overdrive e Distoro, podendo estes serem usados individualmente, combinados ou
simultaneamente.

1.2.2 Objetivos Especficos

Pesquisar conceitos sobre Computao Musical;

Pesquisar softwares similares;

Pesquisar e analisar bibliotecas de som e linguagens de programao utilizadas para o


desenvolvimento desse tipo de software;

Compreender conceitos relacionados ao processamento de udio digital;

Realizar a modelagem do software;

Implementar o software; e

Testar e validar o software implementado.

1.3 Metodologia
Este trabalho inclui a execuo das etapas previstas na proposta deste trabalho que so:
(i) pesquisa; (ii) modelagem; (iii) desenvolvimento; (iv) testes e validao e (v) documentao.
Na primeira etapa do trabalho, foram pesquisados softwares similares, conceitos de
Computao Musical, tecnologias de processamento sonoro e a teoria necessria para o
desenvolvimento do software proposto.
A segunda etapa, referente modelagem e o projeto do software, foi desenvolvida seguindo
os padres da UML 2.0, com auxlio da ferramenta case Enterprise Architect, que foi utilizada para
elaborar diagramas de casos de uso, classe, seqncia e componentes, alm dos requisitos
funcionais e no funcionais.

J na terceira etapa, desenvolvimento, a implementao do software foi colocada em prtica


seguindo a modelagem realizada na etapa anterior. Nessa etapa foram desenvolvidos os plugins
VST e o software host..
Na etapa de validao e testes, foram realizados vrios testes no software a fim de
diagnosticar possveis problemas e corrigi-los, para garantir seu correto funcionamento.
Por fim, a etapa de documentao compreendeu o registro dos processos referentes s etapas
anteriores, seguindo as normas exigidas pela Coordenao de TCC.

1.4 Estrutura do trabalho


As pginas a seguir esto estruturadas em trs captulos adicionais: Fundamentao Terica,
Desenvolvimento e Concluses.
No Captulo 2, Fundamentao Terica, apresentada uma reviso bibliogrfica sobre
Computao Musical e tecnologias de processamento de udio, assim como uma anlise a respeito
de softwares similares. O Captulo 3 apresenta detalhadamente o desenvolvimento do sistema,
incluindo sua especificao e sua modelagem em UML. Por fim, no Captulo 4, so apresentadas as
concluses do TCC.

2 FUNDAMENTAO TERICA
Neste captulo, sero abordados os principais conceitos ao entendimento e desenvolvimento
de aplicaes para processamento de udio, incluindo temas como: Computao Musical, softwares
similares, efeitos de guitarra e tecnologias utilizadas, com maior nfase para VST. Tambm sero
apresentados conceitos e caractersticas sobre processamento de sinais digitais e os efeitos sonoros
que sero implementados.

2.1 Computao Musical


A Computao Musical a rea da Cincia da Computao dedicada ao estudo das
aplicaes computacionais destinados a problemas musicais, investigando mtodos, tcnicas e
algoritmos para processamento e gerao de msica e sons, representaes digitais e
armazenamento de informao snica e musical (MILETTO et al., 2004).
Atualmente existem muitos softwares voltados msica, em reas como produo musical,
processamento sonoro, informtica na educao, gravao, entre outras. Empresas como Steinberg e
Cakewalk, possuem timos softwares para produo, gravao e seqenciamento, que tornam o
computador um verdadeiro home estdio. Como exemplo, possvel citar softwares como o Sonar,
Cubase e Cool Edit. Esses softwares so gravadores e seqenciadores multi-pista, que oferecem
suporte a vrios recursos e efeitos digitais, que tornam possvel a produo de msicas inteiramente
pelo computador.
Uma tecnologia muito utilizada na Computao Musical para representao de msica em
formato digital o padro MIDI (Musical Instrument Digital Interface). Pode-se encontrar uma
definio de MIDI em Miletto et al. (2004, p.22), na qual citado que O padro MIDI usa
tecnologia digital, codificando eventos musicais em dados binrios (bits) que so transferidos por
meio de uma linha fsica (cabo MIDI) de um equipamento para outro.
Em Iazzetta (2000), citado que MIDI no transmite udio, apenas mensagens que
comandam aparelhos que sejam capazes de entend-las, como se fosse um controle remoto muito
sofisticado. O MIDI surgiu no incio da dcada de 80, para padronizar a comunicao entre
instrumentos eletrnicos, que logo se tornou um padro mundial. Diferente de outros formatos de
udio como wav e mp3, o MIDI no possui o udio propriamente dito, e sim instrues para

reproduzi-lo, como se fosse uma partitura em formato digital. Dessa forma, o tamanho de arquivos
do tipo MIDI so extremamente pequenos, o que facilita sua transmisso e armazenamento.

2.1.1 Som
Segundo Miletto et al. (2004), o som a vibrao do ar, ou seja, variaes na presso do ar,
que so percebidas atravs do ouvido. Se essa presso varia de acordo com um padro repetitivo
dizemos que o som tem uma forma de onda peridica. Se no h um padro perceptvel no som este
chamado de rudo.
Pode-se encontrar outra definio de som em Brito (2003, p 17), onde afirmado que som
tudo que soa! Tudo o que o ouvido percebe sob a forma de movimentos vibratrios. Esse autor
descreve que o som possui quatro qualidades ou parmetros: altura, intensidade, timbre e durao.
2.1.1.1

Altura
A altura est relacionada com a freqncia do som, ou seja, define se o som grave ou

agudo. Por exemplo: ao tocar um piano, percebe-se que quanto mais direita estiver uma tecla,
mais alto ou agudo ser o seu som, e quanto mais a esquerda, o som ser mais baixo ou grave
(MILETTO et al., 2004).
Utilizando um osciloscpio1 para comparar sons com alturas diferentes, nota-se que o
nmero de ciclos por unidade de tempo se altera. Dessa forma, quanto mais agudo for o som, maior
ser seu nmero de ciclos dentro de um intervalo de tempo.
O nmero de ciclos dentro do intervalo de um segundo chamado freqncia, expresso em
unidades chamadas hertz (Hz). Desta forma, um som com 500 Hz, indica que a vibrao ocorre com
uma freqncia de 500 ciclos por segundo. Ao dobrar a freqncia de um som, ele elevado uma
oitava acima, ficando mais agudo (MILETTO et al., 2004).
Na Figura 2, est ilustrada uma onda com freqncia de 3 Hertz. Segundo Izecksohn (2005),
o ouvido humano capaz de perceber sons de aproximadamente 20 Hz a 20.000 Hz, o que significa
que o som ilustrado na Figura 2 no perceptvel ao ouvido humano.

Instrumento de teste e medio que fornece uma representao visual de sinais eltricos.

Figura 2. Onda com freqncia de 3 Hertz


Fonte: Adaptado de Educom (2007).
2.1.1.2

Intensidade
Ao aumentar ou diminuir o som de um rdio ou uma televiso, a intensidade (tambm

denominada amplitude) do som alterada. Denominaes como alto e baixo devem ser
utilizadas apenas para se referenciar altura do som, e no para a intensidade, como geralmente
utilizada. Para se referenciar de forma correta intensidade do som, devem ser utilizados os
adjetivos forte e fraco ou mais e menos. A unidade utilizada para a medida da intensidade
de ondas sonoras e sinais de udio costuma ser expressa em decibis (dB) (MILETTO et al., 2004).
Ao comparar sons com intensidades diferentes em um osciloscpio, nota-se que a altura das
ondas alterada. A altura de uma onda denominada amplitude, portanto um som com maior
amplitude um som mais forte.
Na

Figura 3, ilustrada a amplitude de uma onda sonora, na qual a onda

superior possui maior amplitude se comparada onda inferior.

Figura 3. Amplitude de uma onda


Fonte: Adaptado de Educom (2007).

2.1.1.3

Timbre
Um violo e um piano no produzem um som com as mesmas caractersticas ao serem

tocados com a mesma altura e a mesma intensidade. Isso ocorre por existir outro fator alm da
altura e da intensidade em um som. Esse fator denominado timbre, que a caracterstica peculiar
de cada manifestao sonora. No caso de instrumentos relacionados com caixa acstica (como o
violo), temos caractersticas como produo sonora, tamanho e expanso sonora (MILETTO et al.,
2004).
Ao observar sons com timbres diferentes em um osciloscpio, percebida a mudana no
formato da onda sonora. Na Tabela 1 so apresentadas trs formas de onda, que so relacionadas
com seu timbre caracterstico e instrumentos que se assemelham a cada caso.
Tabela 1. Formas de ondas
Forma de onda

Timbre
Suave, doce

Instrumento
Flauta, assovio

Claro, brilhante

Violino, trompete

Simples, quente

Clarinete, obo

Fonte: Adaptado de Miletto et al., (2004).


2.1.1.4

Durao
Um som pode ser medido pelo seu tempo de ressonncia e classificado como curto ou

longo. Exemplos: a madeira produz sons curtos, ao passo que metais produzem sons que vibram
durante um lapso maior (BRITO, 2003, p. 18).
Na Figura 4, duas ondas sonoras so ilustradas, na qual a onda superior possui uma durao
maior que a onda inferior.

Figura 4. Durao de uma onda


Fonte: Adaptado de Educom (2007).

2.1.2 DSP
DSP (Digital Signal Processing) o estudo de sinais em representao digital e de tcnicas
utilizadas para o processamento desses sinais (SMITH, 1999).
O DSP utilizado em vrias reas como matemtica, engenharia eltrica, fsica, msica,
entre outras. Na msica, o DSP muito utilizado para criao de efeitos digitais atravs de tcnicas
denominadas filtros digitais.
2.1.2.1

Filtros Digitais
No processamento de sinais o papel do filtro de remover partes indesejadas do sinal, bem

como rudos, ou simplesmente extrair partes importantes do mesmo, como componentes de uma
certa banda de freqncia. (NUNES et al., 2007).
Para Scandelari (2007), um filtro digital um sistema temporal discreto projetado para
passar o contedo de um sinal de entrada em uma determinada banda de freqncias, ou seja, a
funo de transferncia do filtro forma uma janela atravs da qual somente permitida a passagem
da parte desejada do sinal de entrada. Segundo Nunes et al. (2007), existem vrios tipos de filtros
digitais, entre eles destacam-se:

Passa-baixas: filtro que impede a passagem de freqncias altas a partir de uma


freqncia de corte, permitindo apenas a passagem de freqncias baixas;

Passa-altas: ao contrrio do filtro Passa-baixas, esse filtro utilizado para impedir a


passagem de freqncias baixas a partir de uma freqncia de corte, permitindo apenas a
passagem de freqncias que esto acima da freqncia de corte;

Passa-banda: permite a passagem de uma gama limitada de freqncias, ou seja, possui


duas freqncias de corte, uma baixa e uma alta, na qual apenas as freqncias que
estiverem entre as duas freqncias de corte passaro; e

Rejeita-banda: bloqueia a passagem de uma gama limitada de freqncias.

Na Figura 5, pode-se ver graficamente como os filtros atuam no sinal de entrada.

(a)

(b)

(c)

(d)

Figura 5. Filtros Digitais: (a) Passa-baixas; (b) Passa-altas; (c) Passa-banda; (d) Rejeita-banda
Fonte: Adaptado de Valenzuela (2005).

Outro filtro muito utilizado para a implementao de efeitos digitais o filtro Comb. O filtro
Comb adiciona uma parte levemente defasada do prprio sinal, o que gera cancelamentos de fase.
Segundo Mendes (2007), os filtros Comb so utilizados para remover uma freqncia particular e
seus harmnicos. A resposta em freqncia de um filtro Comb consiste de uma srie de picos
regularmente espaados, de modo que ele parece um pente, conforme a Figura 6.

Figura 6. Filtro Comb


Fonte: Adaptado de Elliott (2006).
O cancelamento de fase ocorre quando duas ondas se cancelam. Conforme Iazzetta (2000),
para duas ondas de mesma freqncia e amplitude, mas defasadas em 180, as amplitudes esto
exatamente opostas, cancelando-se totalmente, como pode-se notar na Figura 7.

10

Figura 7. Cancelamento de fases


Fonte: Adaptado de Iazzetta (2000).
2.1.2.2

Modulao
Modulao o processo de variao de altura, intensidade, timbre ou durao de uma onda

sonora. Para a implementao da modulao, uma tcnica muito utilizada o LFO (Low Frequency
Oscilator), ou oscilador de baixa freqncia em portugus (AUDIOCOURSES, 2007).
LFO uma tcnica utilizada em sntese e amostragem sonora para criao de muitos tipos
diferentes de efeitos. Ao contrrio dos osciladores convencionais, o LFO no utilizado como fonte
geradora de sons, e sim como uma forma de modulao de parmetros como freqncia e
intensidade (AUDIOCOURSES, 2007).
Ao utilizar um LFO na intensidade de um sinal por exemplo, obtm-se o efeito Tremolo. O
LFO tambm muito utilizado na freqncia de sinais de udio, a fim de obter efeitos como
Chorus, Flanger e Vibrato.
2.1.2.3

Transformada de Fourier
Segundo Neyra-Araoz (2007) a Transformada de Fourier uma tcnica largamente

empregada em processamento de sinais, como processamento de sons e processamento de imagens.


Denominada assim em homenagem ao fsico francs Jean Baptiste Joseph Fourier (1768-1830), a
Transformada de Fourier um procedimento matemtico utilizado para transformar um sinal que
est amostrado no domnio do tempo para o domnio das freqncias (MSP, 2008).
A Transformada de Fourier pode ser classificada de diversas maneiras, mas para a utilizao
em computadores empregada a DFT (Discrete Fourier Transform). Em 1965 J.W. Cooley e J.W.
Tukey conseguiram uma revoluo no tratamento digital de sinais com a publicao da
Transformada Rpida de Fourier, a FFT (Fast Fourier Transform) (MSP, 2008)

11

Segundo Oliveira (2007), A FFT no um tipo diferente de transformada e sim uma


tcnica que possibilita avaliar DFT de forma mais rpida e econmica, possibilitando o
processamento de sinais digitais em tempo real.
A Figura 8 ilustra o que ocorre ao aplicar a Transformada de Fourier em uma onda sonora.

Figura 8. Transformada de Fourier aplicada em uma onda simples


Fonte: Adaptado de MSP (2008).
A onda mais esquerda, possui uma amplitude de 10 decibis e uma freqncia de 5 Hertz.
Ao aplicar a Transformada de Fourier, a amostragem da onda transferida do domnio do tempo
para o domnio das freqncias, ilustrando apenas a freqncia contida na onda sonora.
Da mesma forma, com a Transformada de Fourier pode-se analisar ondas sonoras compostas
por mais de uma freqncia, conforme ilustra a Figura 9, composta por duas freqncias, sendo elas
de 5 e 10 Hertz.

Figura 9. Transformada de Fourier aplicado em uma onda composta


Fonte: Adaptado de MSP (2008).

12

2.1.3 Efeitos Digitais


Efeitos digitais so algoritmos que utilizam tcnicas de DSP para processar o som,
alterando-o de alguma forma. Essa alterao pode ser feita na intensidade do som, no timbre, na
altura, na durao, enfim, existem vrias tcnicas e mtodos de processamento sonoro. Esses
diferentes efeitos proporcionados pelo processamento do som so nomeados e divididos em
categorias (HARMONY CENTRAL, 2007).
Atualmente, os efeitos digitais podem ser encontrados em forma de pedais, pedaleiras, racks
de efeitos, mesas de som, softwares para computador, teclados, etc. Existem parmetros para cada
efeito, que podem ser ajustados pelo usurio. A Figura 10 ilustra alguns equipamentos da marca
Behringer2 que possuem algoritmos DSP.

(a)

(b)

(c)

Figura 10. (a) Pedaleira V-Amp2; (b) Pedal Digital Reverb; (c) Mesa de som Behringer
Fonte: Adaptado de Behringer (2007).
Na Figura 10a, ilustrada uma pedaleira chamada V-Amp2. Essa pedaleira possui vrios
efeitos como Chorus, Reverb, Distoro, Delay, etc. Esses efeitos podem ser utilizados
individualmente, ou simultaneamente. J na Figura 10b, ilustrado um pedal cujo nico efeito o
Reverb. No caso da utilizao de pedais com apenas um efeito, eles geralmente so ligados em
conjunto, no qual a sada de som de um pedal conectada na entrada de som de outro, formando
uma ligao em srie, ilustrada na Figura 11.

Mais detalhes disponveis em http://www.behringer.com

13

Figura 11. Ligao de pedais em srie


Fonte: Adaptado de Senfonimuzik (2007).
Nas prximas subsees, sero abordados os principais efeitos digitais utilizados por
guitarristas, entre eles o Chorus, Delay, Reverb, Distoro e Overdrive. Sero explicados conceitos,
caractersticas, funcionamento e qual sua utilizao.
2.1.3.1

Chorus
Chorus um efeito que pode ser utilizado em vrios instrumentos, como guitarras, baixos,

violes, etc. Chorus, que significa coro, um efeito que duplica o som original, dando a impresso
de ter mais de um instrumento sendo tocado ao mesmo tempo. Por exemplo, ao tocar uma guitarra
ligada a um pedal de Chorus, tem-se a impresso de que outra guitarra est sendo tocada
simultaneamente. No caso de utiliz-lo na voz (atravs de um microfone ligado a um efeito de
Chorus), a impresso de que existe mais de uma pessoa cantando (HARMONY CENTRAL,
2007).
Para dar essa impresso de duplicidade ou coro, o som no apenas duplicado, mas
propositalmente atrasado e acrescentada uma pequena modulao em relao ao som original.
Essas alteraes so mnimas, para que o som no perca suas caractersticas originais. Na Figura 12
ilustrado um pedal de Chorus da marca Danelectro.

14

Figura 12. Pedal de Chorus


Fonte: Adaptado de Danelectro (2007).
Os parmetros mais encontrados em pedais de Chorus so:

Rate: ajusta o oscilador do efeito Chorus; e

Depth: ajusta a intensidade do efeito.

Na Figura 13 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito Chorus
aplicado.

Figura 13. Onda sonora do efeito Chorus


2.1.3.2

Tremolo
Tremolo um efeito que altera a intensidade do som em curtos perodos de tempo

(geralmente menor que um segundo), dando a sensao para o ouvinte de que o som est oscilando.

15

Segundo Behringer (2007), o efeito Tremolo obtido atravs da modulao peridica da


intensidade sonora do sinal. Para tal, produzida uma troca contnua entre os sinais altos e baixos,
originando um som Tremolo. Na Figura 14 ilustrado um pedal de Tremolo.

Figura 14. Pedal de Tremolo


Fonte: Adaptado de Behringer (2007).
O Tremolo possui trs parmetros principais:

Rate: ajusta o oscilador ou velocidade do efeito Tremolo;

Wave: altera o formato de onda sonora; e

Depth: ajusta a intensidade do efeito.

Na Figura 15 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito Tremolo
aplicado.

Figura 15. Onda sonora do efeito Tremolo

16

2.1.3.3

Delay
O efeito Delay, tambm conhecido como eco, acrescenta um atraso ao som original. O

Delay um efeito muito utilizado pelos guitarristas para dar mais vida guitarra, fazendo com
que o som no fique to seco cantando (HARMONY CENTRAL, 2007).
Assim como o Chorus, o Delay tambm pode ser utilizado em outros instrumentos como
violo, voz, teclados, etc. Na Figura 16, ilustrado um pedal de Delay da marca Behringer.

Figura 16. Pedal de Delay


Fonte: Adaptado de Behringer (2007).
Geralmente existem trs parmetros principais nos efeitos de Delay:

Level: a intensidade do efeito em relao ao som original. Com esse parmetro,


possvel fazer o Delay soar mais fraco do que o som original (que o que geralmente
acontece), para no embolar o som;

Feedback: est relacionado com o nmero de repeties do som original. Esse parmetro
permite ajustar o Delay para que repita o som 1 ou 10 vezes por exemplo; e

Time: o intervalo de tempo entre uma repetio e outra. Esse intervalo geralmente
muito pequeno (na unidade de micro segundos), mas que pode chegar at 2,5 segundos
aproximadamente.

17

Na Figura 17 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito Delay
aplicado.

Figura 17. Onda sonora do efeito Delay


2.1.3.4

Reverb
o efeito que adiciona ambientao ou reverberao ao som. Por exemplo, ao falar dentro

de uma sala pequena, a voz no ir se propagar por muito tempo, o que no acontece dentro de uma
Igreja. Esse efeito muito utilizado nas gravaes em estdio.
Em Iazzetta (2000), afirmado que "Em um ambiente qualquer, as ondas sonoras so
refletidas ao encontrarem uma superfcie refletora. Essas primeiras reflexes (early reflections) so
seguidas de outras reflexes menos intensas e mais atrasadas em relao ao sinal inicial. A soma de
todas esses componentes cria o efeito de reverberao. O Reverb classificado em relao ao tipo
de espao simulado, os principais so:

Room: simula a reverberao de uma sala ou quarto pequeno;

Hall: simula a reverberao de uma sala maior, como uma Igreja; e

Plate: simula a reverberao de um lugar aberto.

Seus principais parmetros so:

Time: permite ajustar a durao da reverberao;

Tone: responsvel pela equalizao do efeito; e

Mix ou Level: a intensidade do efeito Reverb.

Na Figura 18, ilustrado um pedal de Reverb.


18

Figura 18. Pedal de Reverb


Fonte: Adaptado de Boss (2007).
Na Figura 19 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito Reverb
aplicado.

Figura 19. Onda sonora do efeito Reverb


2.1.3.5

Compressor
Segundo Behringer (2007), o compressor um efeito que comprime o som, normalizando a

intensidade do sinal e retirando um pouco da dinmica do som. Esse processamento feito


reduzindo o alcance dinmico3 de um sinal e os picos de intensidade sonora, o que diminui a
diferena entre as passagens fortes e fracas de um sinal. Por exemplo, ao palhetar as cordas da

Alcance dinmico: Relao entre o maior e o menor nvel do sinal.

19

guitarra com fora ou suavemente, a intensidade do som no ir alterar significativamente. Na


Figura 20 ilustrado um pedal de compresso.

Figura 20. Pedal de compresso


Fonte: Adaptado de Behringer (2007).
Os principais parmetros encontrados em pedais de compresso so:

Tone: responsvel pela equalizao do efeito;

Level: intensidade do efeito Compressor;

Attack: ajusta a rapidez como que o Compressor reage ao sinal de entrada; e

Sustain: ajusta a intensidade de sustentao ou prolongao do efeito.

Na Figura 21 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito


compressor aplicado.

20

Figura 21. Onda sonora do efeito Compressor


2.1.3.6

Equalizador
O equalizador atua diretamente na intensidade de freqncias do som, aumentando ou

diminuindo a intensidade de certas faixas de freqncia. Em amplificadores de guitarras e pedais de


distoro, geralmente so encontrados trs botes para ajustar a freqncia: Low, Mid e High. O
controle Low lhe permite ajustar a intensidade das freqncias graves, o Mid as freqncias mdias
e o High as freqncias agudas (HARMONY CENTRAL, 2007).
Conforme Izecksohn (2005), tambm existem os equalizadores grficos, que podem possuir
de quatro a vinte parmetros de equalizao, o que possibilita um ajuste mais refinado e preciso. A
faixa de freqncia de equalizao depende do equalizador, mas em pedais de guitarra geralmente
varia de 100 Hz a 6.4 kHz. Na Figura 22, ilustrada a imagem de um pedal de equalizador grfico.

21

Figura 22. Pedal de equalizao


Fonte: Adaptado de Behringer (2007).
Os principais parmetros encontrados em pedais de compresso so:

Level: intensidade do efeito; e

Sliders de equalizao: ajustam os parmetros da freqncia em questo.

Na Figura 23 so ilustradas duas ondas sonoras, na qual a inferior possui o efeito


equalizador aplicado. Nesse exemplo, as freqncias altas foram realadas e as freqncias baixas
atenuadas.

Figura 23. Onda sonora do efeito Equalizador

22

2.1.3.7

Distoro
O efeito de distoro, como o prprio nome sugere, distorce o som da guitarra. o efeito

mais utilizado pelos guitarristas, principalmente em estilos musicais como Blues, Rock e Heavy
Metal.
Para Luvizotto, Furlanete e Manzolli (2006), o fenmeno de distoro de um sinal est
relacionado ao enriquecimento do espectro de freqncias, ou seja, quanto mais distorcido estiver o
sinal, maior ser o nmero de componentes espectrais. A distoro pode ser dividida em duas
categorias: Overdrive e Distortion.
Overdrive uma saturao4 mais leve no som da guitarra, se comparado ao Distortion.
Como o Overdrive possui um ganho mdio ou fraco, a dinmica do guitarrista valorizada, pois o
som altera bastante com a performance instrumental.
O Distortion possui mais ganho ou saturao do que o Overdrive, o que o torna um efeito
mais pesado e agressivo. Pelo fato do alto ganho, a dinmica do guitarrista no influencia muito
no resultado final do som. Na Figura 24a, ilustrado um pedal de Overdrive, e na Figura 24b, um
pedal de distoro.

(a)

(b)

Figura 24. (a) Pedal de Overdrive; (b) Pedal de Distoro


Fonte: Adaptado de Boss (2007).

Ocorre quando a intensidade do sinal ultrapassa sua capacidade mxima permitida.

23

Os principais parmetros dos efeitos Overdrive e Distortion so os mesmos:

Na

Gain/Dist/Drive: permite ajustar o ganho da saturao;

Tone: um equalizador que filtra freqncias agudas; e

Level: a intensidade geral do efeito.


Figura 25a so ilustradas duas ondas sonoras, na qual a inferior possui o efeito

Overdrive aplicado. J na Figura 25b, a onda inferior possui o efeito de distoro.

(a)

(b)

Figura 25. (a) Onda sonora do efeito Overdrive; (b) Onda sonora do efeito Distoro

2.2 Softwares Similares


Neste tpico, sero apresentados softwares similares proposta deste TCC, a fim de levantar
as caractersticas de cada software, bem como identificar as tecnologias utilizadas em seu
desenvolvimento. Os softwares abordados foram: Guitar R.A., FX-Box e Revalver.

2.2.1 Guitar R.A.


O software Guitar R.A. uma pedaleira virtual desenvolvida por Raphael Zimermann para
rodar na plataforma Windows. O software utiliza plugins VST para simular vrios efeitos de
guitarra no seu computador, como Chorus, Reverb, Distoro, entre outros, alm de possuir
ferramentas interessantes, como redutor de rudos, metrnomo5, gravador de som e opo de tocar

Instrumento que marca o andamento de uma pea musical.

24

junto com playbacks6. Tambm utilizado o driver de som ASIO4ALL (ASIO para todos) para
diminuir a latncia7 do processamento sonoro. Todos os plugins VST includos so freeware, assim
como o Guitar R.A. A tecnologia VST foi criada pela empresa Steinberg, que a tornou pblica para
que desenvolvedores possam utiliz-la para criar seus prprios programas (ZIMERMANN, 2007).
Na Figura 26 ilustrada a tela principal do software.

Figura 26. Software Guitar R.A.


Fonte: Software Guitar R.A.

2.2.2 FX-Box
O FX-Box um software de processamento de udio para guitarra, que possui efeitos DSP
em tempo real e roda na plataforma Windows. A latncia entre o processamento do sinal de entrada
e sua sada muito pequena. O software foi desenvolvido pelo russo Sasha Gojkovic utilizando a
tecnologia DirectSound para acesso rpido placa de som, alm de algoritmos DSP rpidos e

6
7

Sonorizao de uma msica sem a presena da voz do cantor(a) ou de algum instrumento musical.
Diferena de tempo entre o incio de um evento e o momento em que seus efeitos tornam-se perceptveis.

25

otimizados. Entre eles, esto presentes efeitos como Overdrive, Distortion, Delay, Reverb, Chorus,
Wah-wah, Pitch shifter, Tremolo, Equalizador, Compressor e Phaser, que podem ser utilizados
simultaneamente (GOJKOVIC, 2002).
disponibilizada uma verso de demonstrao que expira em trinta dias no site do
fabricante. Na Figura 27, mostrada a interface do FX-Box.

Figura 27. Software Fx-Box


Fonte: Software Fx-Box.

2.2.3 Revalver
Revalver um simulador de amplificador de guitarra desenvolvido pela Alien Connections
que pode ser executado na plataforma Windows atravs dos drivers ASIO/WDM ou na plataforma
Macintosh atravs do CoreAudio. O software permite o uso de dezesseis mdulos simultaneamente,
que possuem funes de pr-amplificadores, amplificadores de potncia, auto-falantes, Delay,
simulador de ambiente, Chorus, Reverb, Tremolo, compressor, equalizador grfico, auto-Wah, entre
outros (ALIEN CONNECTIONS, 2005).
Algumas combinaes, (presets), pr-definidos acompanham o software, para facilitar a
manipulao dos mdulos. O Revalver tambm foi desenvolvido com a tecnologia VST
disponibilizada pela Steinberg. Uma verso de demonstrao do programa est disponvel no site do

26

fabricante para download, que possui todas as funcionalidades do programa habilitadas, porm
emitido um rudo a cada quarenta e cinco segundos. A Figura 28 mostra a interface do Revalver.

Figura 28. Software Revalver


Fonte: Software Revalver.
A Tabela 2 apresenta um resumo das principais caractersticas dos Softwares similares e do
Software proposto neste trabalho.
Tabela 2. Resumo dos Softwares Similares
Software
Guitar R.A.
FX BOX
Revalver
Software implementado

Tecnologia
VST
DirectX
VST
VST

Free
Sim
No
No
Sim

Interoperabilidade
Sim
No
Sim
Sim

27

ASIO
Sim
No
Sim
Sim

Plataforma
Win
Win
Win/Mac
Win

2.3 Bibliotecas de Som e linguagens de Programao


Nesse item, sero apresentadas as principais bibliotecas e APIs (Application Programming
Interface) atualmente utilizadas para programao e desenvolvimento de aplicaes voltadas
msica, e processamento e manipulao de udio. Essa pesquisa fez-se necessria para a
comparao entre as tecnologias disponveis, a fim de escolher a mais apropriada para o
desenvolvimento do software proposto.

2.3.1 DirectX
DirectX uma coleo de bibliotecas multimdia desenvolvidas pela Microsoft, muito
utilizada em programao de jogos para rodar na plataforma Windows. Ela possui uma biblioteca
chamada DirectSound, com diversas funes para manipulao de udio. A Microsoft disponibiliza
gratuitamente o SDK (Software Development Kit) da DirectX para download em seu site, que
permite utilizar linguagens de programao como C++, C# e VB.net (MICROSOFT, 2007).
O DirectX permite a criao de plugins de udio, que podem ser utilizados em vrios
programas como Band in a Box, Cakewalk Sonar, Cubase, Cool Edit, etc.

2.3.2 SDL (Simple DirectMedia Layer)


O SDL uma biblioteca multimdia multi-plataforma que possibilita a manipulao de som
e vdeo. Ela pode ser programada em vrias linguagens, como C++, C#, Java, PHP, Perl, Python,
Ruby, dentre outras (SDL, 2006).
Foi lanada em 1998 pelo desenvolvedor de jogos Sam Lantinga, e distribuda sobre a
licena LGPL, que permite utiliz-la em programas proprietrios sem custo algum, porm a
biblioteca deve ser referenciada no programa. Jogos para Linux como Sim City 3000 e Heretic II,
utilizam a biblioteca SDL.

2.3.3 PortAudio
PortAudio uma plataforma de cdigo aberto desenvolvida pelo programador e compositor
Ross Bencina e pelo programador e designer Phil Burk. A plataforma foi escrita na linguagem C,
que pode ser compilada para vrias plataformas como Windows, Unix, Macintosh, etc. O SDK
fornece recursos muito simples para gravar e tocar sons, alm de bibliotecas de entrada e sada de
udio, onde os programas desenvolvidos podem ser testados (PORTAUDIO, 2006).
28

Vrios programas foram desenvolvidos utilizando o PortAudio, como o Audacity,


SoundHack, Mobius e AmbiLoop dentre outros.

2.3.4 OpenAL
OpenAL (Open Audio Library) uma API 3D para manipulao de udio cuja estrutura de
classes muito parecida com a OpenGL (Open Graphics Library). Assim como o DirectX e a SDL,
ela tambm muito utilizada no desenvolvimento de jogos e aplicaes de udio, geralmente
combinada com o OpenGL (OPENAL, 2006).
A Creative Labs incluiu extenses ao OpenAL como EAX e XRAM, que possibilitaram
uma extenso para efeitos de udio. Essas extenses foram introduzidas no OpenAL para
disponibilizar uma plataforma genrica com suporte a efeitos DSP avanados (CREATIVE, 2007).

2.3.5 VST
VST (Virtual Studio Technology) uma tecnologia desenvolvida pela Steinberg em 1996
para a criao de plugins, cuja funo processar udio e MIDI em tempo real com alta qualidade
sonora. Os plugins VST tornaram-se um padro na indstria de desenvolvimento de aplicativos e
softwares para udio e msica, podendo ser utilizados em diversos softwares, como Logic Audio,
Cubase SX, Pro Tools, Nuendo, Cakewalk Sonar, Fruity Loops, entre outros (JNIOR, 2005).
Um plugin VST no uma aplicao ou software, mas sim um componente de
processamento de udio que deve ser utilizado em um software hospedeiro, denominado host. O
host disponibiliza o udio que o plugin VST ir processar. O plugin VST processa o som
normalmente utilizando o processador do computador, no sendo necessrio um processador
dedicado ao processamento digital de sinal. O sinal a ser processado pelo plugin quebrado em
vrios blocos, no qual o programa host o responsvel em definir seu tamanho, e envi-los na
seqncia correta para o plugin (STEINBERG, 2007).
Do ponto de vista do host, o plugin VST uma caixa preta com um nmero de entradas,
sadas e parmetros associados, no sendo necessrio ao host ter conhecimento sobre o
processamento que feito dentro do plugin.
A Steinberg disponibiliza gratuitamente o SDK do VST na linguagem C++, que permite
desenvolver plugins para Windows, Linux e Macintosh. Esse SDK j possui tradues para

29

linguagens de programao como Delphi e Java, criando mais opes para os programadores,
porm perde-se a compatibilidade com vrios sistemas operacionais. No Windows por exemplo, um
plugin VST um arquivo com extenso .DLL.
Na Figura 29, demonstra-se a comunicao entre um programa host e um plugin VST, na
qual o host passa o udio e parmetros para o plugin, que processa o udio recebido e devolve o
som processado para o host.

Figura 29. Comunicao Host VST


O processamento de udio no plugin feito atravs de trs mtodos, chamados process(),
processReplacing() e processDoubleReplacing(). O mtodo process(), recebe o som do host, aplica
o algoritmo de processamento, e adiciona o resultado no buffer de sada (output) acumulando o sinal
original, enquanto os mtodos processReplacing() e processDoubleReplacing(), sobrescrevem o
buffer de sada.
Para criar a interface do plugin, existe um framework8 denominado VSTGUI, que est
includo no SDK. O VSTGUI permite ao desenvolvedor separar a interface do plugin do cdigo de
processamento sonoro, o que facilita a portabilidade e a programao. A interface tambm pode ser
padronizada pelo host atravs de mtodos que retornam o nmero de parmetros, nome dos labels,
etc, permitindo ao host criar interfaces dinmicas para os plugins.

Conjunto de elementos e suas interligaes constituindo a base de um sistema ou projeto.

30

Na Figura 30, ilustrado o programa VstHost e um plugin de distoro chamado Soul Force,
onde pode-se notar duas interfaces, sendo uma prpria do plugin (interface esquerda), e a outra
disponibilizada pelo host (interface direita).

Figura 30. Interfaces do plugin e do Host


Fonte: Software VstHost.
Para facilitar a programao de plugins VST, existem softwares como SynthEdit9 (Figura
31a), SynthMaker10 (Figura 31b) e Quantum Fx11 (Figura 31c). Esses softwares possuem blocos e
mdulos pr-definidos de processamento de udio, que podem ser conectados para formar blocos
maiores, criando seus prprios plugins. Com o diagrama montado, possvel criar a interface
grfica do plugin adicionando botes e controles para ajustar seus parmetros. Esses plugins podem
ser exportados para uma DLL, que pode ser utilizada em qualquer software que possua suporte
tecnologia VST.

Mais detalhes disponveis em http://www.synthedit.com


Mais detalhes disponveis em http://synthmaker.co.uk/index.html
11
Mais detalhes disponveis em http://www.quantum-fx.com
10

31

(a)

(b)

(c)

Figura 31. (a) Interface do SynthEdit; (b) Interface do SynthMaker; (c) Interface do Quantum Fx
Fonte: Softwares SynthEdit, SynthMaker e Quantum Fx.
Tambm existem os plugins VSTi (Virtual Studio Technology Instrument), que so
conhecidos como instrumentos virtuais. Um plugin VSTi pode simular e sintetizar o som de
diversos instrumentos como piano, guitarra, bateria, violo, violino e trompete, enquanto os plugins
VST no tm a capacidade de gerar sons, eles apenas processam o som fornecido pelo host.
Estes instrumentos virtuais, desenvolvidos com a tecnologia VST, necessitam de um
programa host para seu funcionamento.. Nesse caso, o host no ir passar o som para o plugin
processar, e sim informaes MIDI. Como exemplo, possvel citar o EZ Drummer (Figura 32) da
Toontrack, que uma bateria virtual. O host apenas passa as informaes MIDI para o plugin, e ele
se encarrega de processar a informao e tocar o som correspondente. No caso de uma bateria, cada
nota musical MIDI corresponde a uma pea da bateria.

32

Figura 32. Bateria virtual EZ Drummer


Fonte: Plugin EZ Drummer.
A Tabela 3 mostra a relao entre as notas musicais e as peas da bateria.
Tabela 3. Peas da bateria virtual EZ Drummer
Nota
D
D#
R
R#
Mi
F
F#
Sol
Sol#
La
La#
Si

Pea
Bumbo
Baqueta
Caixa
Aro da caixa
Caixa 2
Surdo
Chimbal fechado
Tom 3
Chimbal semi aberto
Tom 2
Chimbal aberto
Tom 1

33

2.3.6 JUCE
JUCE (Jules Utility Class Extensions) uma coleo de bibliotecas OpenSource
desenvolvidas em C++ que podem ser compiladas em ambiente Windows, Linux ou Mac OSX. Ele
foi desenvolvido pela empresa Raw Material Software e possui classes para criao de interfaces
grficas, manipulao de imagens, udio, arquivos XML e tm uma tima integrao com a
tecnologia VST e ASIO, ambas da Steinberg. (RAW MATERIAL SOFTWARE, 2008).
O JUCE conta com exemplos e tutoriais que explicam como utiliz-lo e compil-lo nas
plataformas suportadas. Ele possui um exemplo com as principais funcionalidades encontradas em
um software host para plugins VST que possui suporte ao driver ASIO.

2.3.7 ASIO
ASIO uma API desenvolvida pela Steinberg para a manipulao de udio digital, para
superar as limitaes das tecnologias originais oferecidas pelos sistemas operacionais (RATTON,
2002).
Atualmente o ASIO est presente na maioria das placas de som profissionais ou semiprofissionais, como a placa M-AUDIO DELTA 1010 LT (Figura 33a) e a Creative AUDIGY 2 ZS
7.1. (Figura 33b).

(a)

(b)

Figura 33. (a) Placa M-AUDIO DELTA 1010 LT; (b) Placa Creative AUDIGY 2 ZS 7.1

34

A maior vantagem do ASIO a pequena latncia de processamento no som, que no


possvel em todas as placas de som. Por exemplo, para se tocar um instrumento virtual atravs de
um controlador MIDI com uma placa de som sem suporte ao ASIO, a latncia ou atraso do
processamento de som poder ser maior que 50ms, o que torna essa tarefa invivel para gravaes
ou performances ao vivo. J com uma placa com ASIO, essa latncia diminui para menos de 5ms, o
que torna o atraso quase imperceptvel ao ouvido humano. (RATTON, 2002).
Para computadores com placas de som onboard ou com placas que no possuem suporte
nativo ao ASIO, existe uma soluo em software denominada ASIO4ALL.
O ASIO4ALL um software desenvolvido pelo engenheiro eltrico Michael Tippach, que
age diretamente no ncleo do driver de som WDM, melhorando significativamente seu
desempenho.
Para utilizar o ASIO4ALL basta que a interface de udio possua um driver WDM, na qual o
ASIO4ALL se acopla e faz seu trabalho, sem alterar o driver original e sem prejudicar o sistema
operacional. Ele est disponvel para download gratuitamente no site http://www.asio4all.com.
O software possui apenas 284 KB, e extremamente fcil de ser instalado e configurado. Na
Figura 34, mostrada a tela de configurao do ASIO4ALL.

Figura 34. Tela de configurao do ASIO4ALL


Fonte: Software ASIO4ALL.

35

2.4 Consideraes
No Captulo 2, foi apresentada uma reviso bibliogrfica sobre Computao Musical, com o
objetivo de expor os principais conceitos e caractersticas dessa rea da Cincia da Computao que
pode ser largamente explorada.
A pesquisa sobre softwares similares fez-se necessria para demonstrar que j existem
algumas solues disponveis, e para situar esse trabalho em seu devido contexto.
Atravs da pesquisa realizada em busca de tecnologias de processamento sonoro, conclui-se
que existem vrias opes. Analisando o objetivo proposto pelo TCC, a tecnologia VST da
Steinberg foi a que mais se identificou para o desenvolvimento deste trabalho, devido ao seu SDK
especfico para tratamento de udio e por ser bem documentado, bem como sua compatibilidade
entre diversos softwares da rea.
A prxima etapa deste trabalho consiste em descrever o desenvolvimento do software, na
qual

so

apresentados

os

requisitos,

modelagem

36

desenvolvimento

do

mesmo.

3 DESENVOLVIMENTO
Este trabalho possibilitou o desenvolvimento de um software para processar o som de uma
guitarra conectada a um computador, assumindo o papel de uma pedaleira. Para que essa conexo
entre guitarra e computador seja possvel, necessrio o uso de um adaptador de plug P10 para P2,
ilustrado na Figura 35.

Figura 35. Adaptador P10 x P2


Na seo Modelagem do Sistema, est descrita a modelagem do software, que abrange
diagramas de casos de uso, classe, seqncia e componentes, bem como o levantamento de
requisitos e as regras de negcio. Na seo Implementao, sero explicadas as telas do sistema
juntamente com suas funcionalidades e questes tcnicas referentes programao e
implementao do software proposto.

3.1 MODELAGEM DO SISTEMA


Em Melo (2004, p.31) frisado que indiscutvel que a UML se tornou um padro de
mercado para modelagem de sistemas no paradigma da orientao a objetos. Desta forma, foi
utilizada a ferramenta Case Enterprise Architect baseado na UML para a modelagem do software.
Foram definidos requisitos funcionais e no funcionais, regras de negcio, diagramas de
casos de uso, classe, componentes e seqncia.

3.1.1 Levantamento de Requisitos


O levantamento de requisitos refere-se ao processo de compreenso do problema aplicado
ao desenvolvimento de software.
Com base nos softwares similares estudados, e conforme a proposta estabelecida nesse
trabalho, foram levantados os seguintes requisitos:

3.1.1.1

Requisitos Funcionais

RF01: O sistema dever possuir os seguintes efeitos: Overdrive, Distortion, Chorus,


Delay e Reverb;

RF02: O sistema dever permitir a utilizao dos efeitos simultaneamente;

RF03: Os efeitos devero ter controles de ajuste de parmetros individuais;

RF04: Dever ser possvel salvar as configuraes (presets) dos efeitos, para que no
seja necessrio ajustar os parmetros toda vez ao iniciar o programa;

RF05: O sistema dever possibilitar ao usurio a opo de escolha das entradas (input) e
sadas (output) de som do sistema; e

3.1.1.2

RF06: A ordem e ligao entre os plugins VST podero ser definidas pelo usurio.
Requisitos No Funcionais

RNF01: O sistema dever ser compatvel com o sistema operacional Windows XP;

RNF02: O sistema dever ser implementado utilizando a tecnologia VST;

RNF03: O sistema dever ser compatvel com o driver de som ASIO4ALL; e

RNF04: O sistema dever permitir a utilizao de outros plugins VST j existentes, que
no sero implementados nesse trabalho.

3.1.1.3

Regras de Negcio

O preset default do sistema dever conter os efeitos na seguinte ordem12: Overdrive,


Distortion, Chorus, Delay e Reverb.

3.1.2

Projeto do Sistema
Neste item sero apresentados os diagramas de Caso de Uso, Classe, Seqncia e

Componentes, bem como os prottipos de telas.

12

Essa ordem foi estabelecida conforme o fluxo de processamento do sinal de udio na maioria das pedaleiras e pedais
ligados em srie.

38

3.1.2.1

Diagrama de casos de uso


Segundo Pender (2004, p. 307),
O diagrama de caso de uso (Use Case), um elemento grfico exclusivo, pois um
diagrama usado para modelar o modo como as pessoas esperam usar um sistema. O
diagrama descreve quem sero os usurios relevantes, os servios que eles exigem do
sistema e os servios que eles precisam oferecer ao sistema.

Os diagramas de caso de uso deste trabalho esto divididos em quatro pacotes:


Configurao, Seleo de Efeitos, Ajuste de Parmetros e Exportao/Importao de presets, que
esto representados na Figura 36.

Figura 36. Diagrama de Casos de Uso


Pacote 01: Configuraes
No pacote Configuraes, est modelada a parte de configurao de udio do software. Na
Figura 37 ilustrado o Diagrama de Caso de Uso Configuraes.

39

Figura 37. Diagrama de Caso de Uso Configuraes


Relaes

RF05: O sistema dever possibilitar ao usurio a opo de escolha das entradas (input) e
sadas (output) de som do sistema.

Cenrios
Fluxo Principal: Configurar o som do sistema
1. O sistema apresenta uma tela de configurao de udio para o usurio (TELA 02);
2. O usurio seleciona as entradas de som (input);
3. O usurio seleciona as sadas de som (output);
4. O usurio seleciona o sampleRate e o buffer size;
5. O usurio clica no boto para fechar a tela; e
6. O sistema salva as configuraes em um arquivo de configurao.
Pacote 02: Seleo de Efeitos
O pacote Seleo de Efeitos descreve a seleo ou ativao/desativao dos efeitos. Na
Figura 37 ilustrado o Diagrama de Caso de Uso Seleo de Efeitos.

40

Figura 38. Diagrama de Caso de Uso Seleo de Efeitos


Relaes

RF01: O sistema dever possuir os seguintes efeitos: Overdrive, Distortion, Chorus,


Delay e Reverb;

RF02: O sistema dever permitir a utilizao dos efeitos simultaneamente; e

RF06: A ordem e ligao entre os plugins VST podero ser definidas pelo usurio.

Cenrios
Fluxo Principal: Selecionar Efeitos
1. O sistema apresenta a tela principal (TELA 01);
2. O usurio clica no boto Play para iniciar o processamento;
3. O usurio clica em algum preset;
4. Se existir o preset salvo em disco, o sistema o exibe na tela;
5. O usurio adiciona os efeitos desejados com o boto direito do mouse ou arrastando e
soltando um plugin na tela; e
6. O usurio ativa os efeitos que ir utilizar.
Fluxo de Exceo: Erro ao adicionar efeito
Se no passo 5 o efeito selecionado pelo usurio no existir, o sistema exibe a mensagem
"Erro ao criar plugin. O Plugin selecionado no existe. (TELA 03).

41

Pacote 03: Ajuste de Parmetros


Esse pacote descreve o caso de uso de ajuste dos parmetros dos efeitos sonoros. Cada efeito
possuir parmetros prprios que podero ser ajustados, conforme a necessidade do usurio. Na
Figura 39 ilustrado o Diagrama de Caso de Uso Ajuste de Parmetros.

Figura 39. Diagrama de Caso de Uso Ajuste de Parmetros


Relaes

RF03: Os efeitos devero ter controles de ajuste de parmetros individuais.

Cenrios
Fluxo Principal: Ajuste de parmetros
1. O sistema apresenta a tela principal (TELA 01);
2. O usurio seleciona o efeito com duplo clique do mouse;
3. O sistema apresenta tela com interface do plugin; e
4. O usurio faz ajuste nos parmetros do plugin.
Pacote 04: Exportao/Importao
Esse pacote possui dois cenrios: Exportao e Importao. O caso de uso de Exportao
descreve o processo de salvar um preset definido pelo usurio, enquanto o caso de uso de
Importao descreve o processo para abrir um preset j salvo. Na Figura 40 ilustrado o Diagrama
de Caso de Importao/Exportao.

42

Figura 40. Diagrama de Caso de Uso Importao/Exportao


Relaes

RF04: Dever ser possvel salvar as configuraes (presets) dos efeitos, para que no
seja necessrio ajustar os parmetros toda vez ao iniciar o programa.

Cenrios
Fluxo Principal: Exportar Preset (Cenrio 1)
1. O usurio clica no menu "Arquivo => Salvar Como..." (TELA 01);
2. O sistema apresenta tela de seleo de diretrio e nome do arquivo (TELA 04);
3. O usurio digita o nome do arquivo e seleciona o diretrio;
4. O usurio clica em salvar; e
5. O sistema salva o arquivo na pasta selecionada.
Fluxo de Exceo: Nome incorreto ou em branco
Se no passo 4 o nome do arquivo possuir caracteres invlidos, o sistema exibe mensagem "O
nome do arquivo acima invlido!", (TELA 03), e retorna ao passo 3.

43

Fluxo Principal: Importar Preset (Cenrio 2)


1. O usurio clica no menu "Arquivo => Abrir" (TELA 01);
2. O sistema apresenta tela de seleo de diretrio e nome do arquivo (TELA 05);
3. O usurio seleciona o arquivo desejado;
4. O usurio clica em Abrir; e
5. O sistema abre o arquivo selecionado.
Fluxo de Exceo: Arquivo invlido
Se no passo 5, o arquivo for invlido, o sistema exibe mensagem "Arquivo invlido ou
corrompido!", (TELA 03), e retorna ao passo 3.
3.1.2.2

Diagrama de classes de negcio


O diagrama de classes tem como objetivo ilustrar os atributos e mtodos das principais

classes do sistema, assim como os tipos de associaes que existam entre elas. Como o programa
host independente dos plugins, foram modelados dois diagramas de classe, sendo um com as
principais classes do host, e o outro com a estrutura principal de um plugin VST.
A Figura 41 apresenta o modelo de classes de negcio, que ilustra as classes participantes do
domnio do sistema e seus respectivos relacionamentos.

Figura 41. Diagrama de Classes de Negcio: Host

44

O diagrama de classes do plugin VST foi elaborado estudando a estrutura de classes do SDK
fornecido pela Steinberg, que composto por cinco classes principais, sendo duas responsveis pela
interface do plugin, e as demais responsveis pelas funcionalidades do plugin.
A classe principal a PluginVST, que uma especializao da classe AudioEffectX, que
por sua vez uma especializao da classe AudioEffect. na classe PluginVST que o programador
define o nome do plugin, quantos e quais sero seus parmetros, as funes ProcessReplacing() e
ProcessDoubleReplacing() - que so responsveis pelo processamento do som -, entre outras
caractersticas bsicas do plugin. J as classes AEffEditor e AEffGUIEditor, so responsveis pela
interface grfica do plugin.
Devido ao grande nmero de mtodos e atributos presente nas classes, apenas a classe
PluginVST est com todos seus membros ilustrados no diagrama.
Em anexo, est o cdigo fonte do plugin VST Volume, que foi implementado para controlar
a intensidade do sinal de udio. Na Figura 42 ilustrado o Diagrama de Classes de um plugin VST.

45

Figura 42. Diagrama de Classes do Plugin VST


3.1.2.3

Diagrama de classes de projeto


Na etapa de implementao do projeto, foi definido que para o desenvolvimento do host

seria utilizada em conjunto com as tecnologias VST e ASIO da Steinberg a tecnologia JUCE. Por
esse motivo, o nmero de classes do programa host aumentou consideravelmente. Este diagrama de
classes est ilustrado na Figura 43.

46

Figura 43. Diagrama de Classes de Projeto: Host


. Diagrama de Classes de Projeto: Host

47

Onde:

TelaPrincipal: principal tela do sistema;

PainelPrincipal: painel que possui os botes de presets, Play, Stop e Bypass, e suas
respectivas funcionalidades;

PainelInterno: painel onde so desenhados os plugins;

AudioDeviceSelectorComponent: classe nativa do JUCE para selecionar o dispositivo de


udio (tela de configuraes);

3.1.2.4

PluginListWindow: tela responsvel por listar e gerenciar os plugins disponveis;

FiltroNaTela: possui informaes sobre o plugin que est desenhado na tela;

PluginWindow: tela que apresenta a interface grfica dos plugins;

ControlePlugins: classe que gerencia os presets em memria e arquivos XML;

ConexaoEntreFiltros: guarda as informaes sobre as conexes entre os plugins;

FiltroComponente: representa um dos plugins na classe ControlePlugins;

PinoConector: classe que implementa os conectores (input/output) dos plugins; e

ConectorPlugin: classe que implementa o fio que desenhando ao conectar os plugins.


Diagrama de seqncia

Foi elaborado um diagrama de seqncia sobre a interao do usurio com o software, que
engloba os principais casos de uso. O diagrama descreve o processo do usurio configurar o udio
do sistema, ajustar os parmetros dos efeitos, e salvar o preset em disco, conforme ilustra a Figura
44.

48

Figura 44. Diagrama de Seqncia

49

3.1.2.5

Diagrama de Componentes
Foi elaborado um diagrama de componentes para ilustrar os principais arquivos que compe

o software. Cada plugin VST ser um arquivo com extenso DLL, enquanto o programa principal
(encarregado por fornecer o som para os plugins), ser um arquivo executvel do Windows.

Figura 45. Diagrama de Componentes


3.1.2.6

Prottipos de Telas
Esta seo apresenta os prottipos de telas do sistema, citadas na descrio dos casos de uso

atravs da referncia TELA seguidas de um seqencial de identificao.

50

TELA 01 - Tela Principal


a tela principal do sistema, na qual o usurio ter acesso aos plugins VST e as demais telas
do sistema.

Figura 46. Prottipos de Tela: Tela Principal (TELA 01)

51

TELA 02 - Tela de Configuraes


a tela na qual o usurio ter a opo de selecionar as entradas e sadas de som do sistema.

Figura 47. Prottipos de Tela: Tela de Configuraes (TELA 02)


TELA 03 - Tela de Mensagem Padro
Tela de mensagem, na qual sero exibidas informaes para o usurio.

Figura 48. Prottipos de Tela: Tela de Mensagem (TELA 03)

52

TELA 04 - Tela de Dilogo


Tela na qual o usurio ir informar o destino para importar/exportar os presets do software.

Figura 49. Prottipos de Tela: Tela de Dilogo (TELA 04)

3.2 IMPLEMENTAO
A etapa de implementao compreendeu a codificao do projeto do sistema, atravs da
linguagem de programao C++, consolidando o projeto elaborado em um produto final.
Para o desenvolvimento dos efeitos e do software host, foi utilizado o ambiente de
programao Visual Studio 2008 da Microsoft e o VST SDK verso 2.4 da Steinberg. Para o
programa host, tambm foi utilizado o SDK ASIO verso 2.2 para obter uma baixa latncia no
processamento sonoro e o SDK JUCE verso 1.45, que responsvel pela interface grfica do
sistema.

53

O ambiente de programao Microsoft Visual Studio 2008 foi escolhido pelo fato das trs
tecnologias utilizadas (ASIO, JUCE e VST) possurem projetos e exemplos desenvolvidos nele, o
que facilita a programao e a compilao do cdigo fonte.
Os efeitos Chorus e Reverb foram implementados com o auxlio da ferramenta SynthEdit,
pois foram encontradas dificuldades para desenvolver algoritmos de filtros digitais e a transformada
de Fourier, tcnicas necessrias para desenvolvimento desses efeitos.
Alm dos cinco efeitos definidos nos requisitos funcionais, foram implementados mais dois:
Tremolo e Volume. Desta forma, foram implementados sete plugins ao total: Overdrive, Distortion,
Chorus, Delay, Reverb, Tremolo e Volume. Para o desenvolvimento da interface grfica dos
plugins, foi utilizado o VSTGUI nativo do VST SDK, que independente de plataforma.
As prximas sees descrevem as funcionalidades implementadas no programa host e
plugins e detalhes tcnicos referentes programao dos mesmos.

3.2.1 Programa Host DK Guitar


O software host implementado foi nomeado DK Guitar, e composto basicamente por duas
telas: Tela Principal e Tela de Configuraes.
3.2.1.1

Tela Principal
A Tela Principal responsvel por fazer a comunicao com os plugins e exibi-los

corretamente na tela. Funcionalidades como Importar e Exportar presets tambm esto atribudos
Tela Principal, que possui um menu para tais finalidades.
Como ponto de partida para o desenvolvimento, foram estudados exemplos integrantes do
SDK JUCE. Um dos exemplos de aplicaes o PluginHost, um projeto que possui as principais
funcionalidades de um programa host. Dessa forma, foram estudadas as classes e o cdigo fonte do
PluginHost para aquisio do conhecimento necessrio para o desenvolvimento do DK Guitar.
A estrutura de classes definida na modelagem do sistema foi mantida, porm novas classes
tiveram que ser criadas e adicionadas para facilitar a programao e para manter a consistncia com
a estrutura do JUCE. Dessa forma, cada tela do software um objeto de uma determinada classe.
Tambm foram adicionadas classes para desenhar componentes grficos, como os fios conectores

54

de plugins e os plugins minimizados na tela. A Figura 50 mostra o diagrama com classes nativas do
JUCE e classes do PluginHost, que so utilizadas no DK Guitar para a manipulao do udio.

Figura 50. Diagrama de Classes do DK Guitar


Onde:

AudioPluginInstance: classe base para criar uma instncia de um plugin;

BaseDoFiltroInterno: classe derivada da AudioPluginInstance que implementa mtodos


utilizados pelas classes FiltroInternoAudioInput e FiltroInternoAudioOutput;

VSTPluginInstance: instncia de um plugin VST;

FiltroInternoAudioInput: instncia de um plugin do tipo Input; e

FiltroInternoAudioOutput: instncia de um plugin do tipo Output.

As classes responsveis pelo processamento sonoro so nativas do JUCE, como


AudioPluginInstance e VSTPluginInstance, outras so do PluginHost, que foram aproveitadas e
modificadas para adicionar funcionalidades previstas na modelagem atravs dos requisitos
funcionais. Na Figura 51, est ilustrada a Tela Principal do software.

55

Figura 51. Tela Principal


Os blocos Audio Input e Audio Output representam a entrada e sada de som
respectivamente. J os blocos intermedirios so plugins VST. Os cabos ou fios que esto
conectando os blocos entre si, so utilizados para definir o fluxo do sinal de udio. Dessa forma, os
plugins podem ser utilizados simultaneamente e conectados de diversas maneiras, possibilitando
uma grande flexibilidade na conexo dos efeitos e contemplando os requisitos funcionais RF2 e
RF6.
Na Figura 51, percebe-se que o fluxo do sinal est dividido em duas partes, na qual o lado
esquerdo possui os efeitos Tremolo e Overdrive e o lado direito Distortion e Delay. Desta forma, o
som recebido pelo software dividido e processado separadamente para cada sada de udio, na
qual cada caixa de som receber um sinal diferente.
Ao clicar com o boto direito sobre um plugin, aberto um menu de contexto ilustrado na
Figura 52.
56

Figura 52. Menu de contexto dos plugins


As opes do menu de contexto so:

Excluir esse componente: remove o plugin da tela e exclui suas conexes caso existam;

Desconectar todos os pinos: remove todas as conexes do plugin;

Mostrar interface do plugin: abre uma tela com a interface do plugin. Caso a interface
no exista, aberta uma tela de interface padro do DK Guitar com os parmetros do
plugin; e

Mostrar todos os parmetros: abre a tela padro de plugins do DK Guitar.

57

3.2.1.2

Tela de Configuraes de udio


A Tela de Configuraes (Figura 53) utilizada para especificar as entradas e sadas de

udio. Ela tambm possui um boto que abre a tela de configuraes do driver ASIO4ALL, para
que o usurio possa definir configuraes do driver de som.

Figura 53. Tela de Configuraes


Os parmetros da tela de configuraes de udio so:

Audio device: lista os drivers de som disponveis no computador. Essa lista varia
conforme a quantidade de placas de som instaladas no PC;

Sample rate: permite selecionar a taxa de amostragem do sinal de udio. Quanto maior
for esse valor, maior ser a qualidade sonora, e menor ser a velocidade de
processamento. O valor padro utilizado em softwares de gravao e reproduo de
udio 44.100 Hz;

udio buffer size: define o tamanho do buffer de amostras sonoras. Quanto maior esse
buffer, maior ser a latncia do processamento sonoro;

Active output channels: lista das sadas de udio disponveis no computador;

58

Active intput channels: lista das entradas de udio disponveis no computador;

Active midi inputs: lista das entradas MIDI no computador; e

Midi Output: permite selecionar o dispositivo de sada MIDI.

As duas ltimas opes no so utilizadas no software, mas foram mantidas por questes de
compatibilidade com o SDK JUCE. Com a implementao da tela de configuraes, o requisito
funcional RF5 foi cumprido.
3.2.1.3

Presets
Para implementao dos presets, foi criada a classe ControlePlugins, que possui

funcionalidades para seu gerenciamento e controle. Cada preset um arquivo XML com extenso
.Preset, que carregado em memria quando o programa iniciado. Uma vez na memria, o
usurio pode realizar alteraes e salv-los no computador.
Para facilitar a troca entre presets, foram definidos botes de acesso rpido que possuem
uma tecla de atalho para facilitar seu acionamento. A Tabela 4 ilustra a relao entre os presets,
teclas de atalho, botes e arquivos XML.
Tabela 4. Botes e teclas de atalho do Software DK Guitar
Botes

Presets
Preset 1

Teclas de Atalho
F1

Arquivos
F1.Preset

Preset 2

F2

F2.Preset

Preset 3

F3

F3.Preset

Preset 4

F4

F4.Preset

Preset 5

F5

F5.Preset

Preset 6

F6

F6.Preset

Preset Bypass

Barra de Espao

Bypass.Preset

Enter
Enter

59

Ao clicar em um boto, o preset ativo salvo em memria e o preset referente ao boto


clicado carregado. Desta forma, o sistema permite ao usurio alterar ajustes de parmetros sem a
necessidade de salv-lo a cada troca de preset.
Para salvar ou carregar um preset salvo em disco, foi desenvolvida a opo Arquivo do
menu na tela principal, que possui opes para tais finalidades, conforme ilustra a Figura 54. Com
essas funcionalidades implementadas, o requisito funcional RF04 foi integralmente atendido.

Figura 54. Menu Arquivo

3.2.2 Plugins
No desenvolvimento dos plugins, foram implementadas duas entradas e duas sadas de som
para cada efeito, possibilitando o processamento em stereo.

60

As prximas sees abordam o processo de desenvolvimento e codificao, descrevendo as


interfaces grficas, trechos de cdigo fonte e parmetros, alm de imagens de ondas sonoras que
foram processadas pelos plugins.
3.2.2.1

Plugin Delay
Para implementar o efeito de Delay, foi utilizada uma tcnica de estrutura de dados

denominada buffer circular, na qual os dados so armazenados e lidos de forma circular em um


vetor com tamanho limitado, onde a ltima posio do buffer sucedida pela primeira. O som
armazenado nesse buffer para ser posteriormente acrescentado ao som original, simulando o efeito
de Delay.
Os parmetros implementados no plugin foram:

Time: tempo entre as repeties do Delay;

Feedback: quantidade de repeties;

Level: intensidade do efeito; e

On/Off: ativao e desativao do efeito.

Na Figura 55, est ilustrada a funo processReplacing do plugin, onde feito o


processamento sonoro.

61

1 void Delay::processReplacing(float** inputs, float** outputs,


2
VstInt32 sampleFrames)
3 {
4
float* in1 = inputs[0];
//duas entradas
5
float* in2 = inputs[1];
6
float* out1 = outputs[0]; //duas sadas
7
float* out2 = outputs[1];
8
9
if (fEnabled > 0.5) //Delay
10
{
11
while (--sampleFrames >= 0)
12
{
13
float x1 = *in1++;
14
float x2 = *in2++;
15
float y1 = buffer1[cursor];
16
float y2 = buffer2[cursor];
17
long aux;
18
19
aux = cursor++;
20
buffer1[aux] = x1 + y1 * fFeedBack;
21
buffer2[aux] = x2 + y2 * fFeedBack;
22
23
if (cursor >= delay) cursor = 0;
24
25
*out1++ = x1 + (y1 * fOut);
26
*out2++ = x2 + (y2 * fOut);
27
}
28
}
29
else //Bypass
30
{
31
while (--sampleFrames >= 0)
32
{
33
*out1++ = *in1++;
34
*out2++ = *in2++;
35
}
36
}
37 }

Figura 55. Cdigo fonte do plugin Delay


O IF da linha 9 divide o fluxo do processamento em duas partes: caso o parmetro fEnabled
seja maior que 0.5, o efeito de Delay acrescentado ao som original, caso contrrio as variveis de
sada (out1 e out2) apenas recebem o sinal de entrada, no efetuando nenhum processamento no
som original. Os plugins foram implementados dessa forma para satisfazer o requisito funcional
RF02, na qual foi definido que o sistema dever permitir a utilizao dos efeitos simultaneamente,
pois dessa forma, no preciso retirar o plugin da conexo para desativ-lo. Nas linhas 20 e 21 est
o cdigo que acrescenta o sinal no buffer e nas linhas 25 e 26 o Delay acrescentado ao som
original. A Figura 56 ilustra a interface do plugin Delay, e sua interface padro no DK Guitar.

62

(a)

(b)

Figura 56. (a) Interface do Delay; (b) Interface padro do Delay no DK Guitar
Na Figura 57, a onda sonora inferior ilustra o resultado do efeito Delay aplicado na onda
sonora superior.

Figura 57. Onda sonora do Delay


3.2.2.2

Plugin Overdrive
Para o desenvolvimento do efeito Overdrive, foram implementadas equaes matemticas

aplicadas ao sinal de udio, com propsito de modificar o formato da onda sonora. As equaes
implementadas esto ilustradas a seguir:
63

K = (2 * fGanho) / (1 - fGanho)

Equao 1

X = ((1 + K) * X) / (1 + K * abs(X))

Equao 2

Onde:

fGanho: a quantidade de Overdrive cujo valores variam de 0.1 a 0.7; e

X: corresponde ao sinal digital do udio.

Os parmetros implementados no plugin Overdrive foram:

OverDrive: quantidade de saturao;

Level: intensidade do efeito; e

On/Off: ativao e desativao do efeito.

Na Figura 58, est ilustrada a funo processReplacing do plugin, onde feito o


processamento sonoro.

64

1 void overdrive::processReplacing(float** inputs, float** outputs, VstInt32


sampleFrames)
2 {
3
float* in1 = inputs[0];
4
float* in2 = inputs[1];
5
float* out1 = outputs[0];
6
float* out2 = outputs[1];
7
8
if (fEnabled > 0.5) //overdrive
9
{
10
while (--sampleFrames >= 0)
11
{
12
float x1 = *in1++;
13
float x2 = *in2++;
14
float k1,k2;
15
16
k1 = 2*fGanho/(1-fGanho);
17
x1 = (1+k1)*x1/(1+k1*abs(x1));
18
19
k2 = 2*fGanho/(1-fGanho);
20
x2 = (1+k2)*x2/(1+k2*abs(x2));
21
22
*out1++ = x1 * fLevel;
23
*out2++ = x2 * fLevel;
24
}
25
}
26
else //Bypass
25 {
28
while (--sampleFrames >= 0)
29
{
30
*out1++ = *in1++;
31
*out2++ = *in2++;
32
}
36
}
34 }

Figura 58. Cdigo fonte do plugin Overdrive


Nas linhas 16, 17, 19 e 20 esto implementadas as equaes que transformam o sinal limpo
em um sinal levemente distorcido, resultando o efeito de Overdrive. Na Figura 59 est ilustrada a
interface do plugin Overdrive, e sua interface padro no programa DK Guitar.

65

(a)

(b)

Figura 59. (a) Interface do Overdrive; (b) Interface padro do Overdrive no DK Guitar
Para a visualizao grfica da modificao que ocorre na onda sonora depois de ser
processada pelo efeito Overdrive implementado, foi gravado um arquivo de udio com o som da
sexta corda solta de uma guitarra (nota Mi). Na parte superior da Figura 60 est ilustrada a onda
sonora gerada pela guitarra, e na parte inferior a mesma onda depois de ser processada pelo plugin
Overdrive.

Figura 60. Onda sonora do Overdrive

66

3.2.2.3

Plugin Distortion
A implementao do efeito Distortion foi baseada nas equaes do efeito Overdrive. Para

realizar modificaes nestas equaes, foi utilizado o programa SynthEdit. No SynthEdit foi criado
um bloco WavePlayer para reproduzir um arquivo wave, um bloco Waveshaper2, na qual possvel
expressar as equaes matemticas e um bloco SoundOut, para ouvir o resultado do processamento.
No bloco Waveshaper2, a equao resultante a compilao das duas equaes utilizadas na
implementao do Overdrive, na qual o parmetro fGain foi substitudo por valores numricos.O
diagrama do SynthEdit est ilustrado na Figura 61.

Figura 61. Diagrama Distortion no SynthEdit


Depois de vrios testes com diferentes valores, as equaes do plugin Distortion ficaram da
seguinte forma:

67

K = (2 * fGanho2) / (1 fGanho2)

Equao 3

X = ((fGanho1 + K) * X) / (fGanho1 + K * abs(X) )

Equao 4

Onde:

fGanho1: quantidade do primeiro nvel de saturao;

fGanho2: quantidade do segundo nvel de saturao; e

X: sinal digital do udio.

A Equao 3 do plugin Distortion permaneceu igual Equao 1 do plugin Overdrive,


apenas o nome da varivel foi alterado. A principal diferena ficou na Equao 4, onde a constante
1 foi substituda por uma varivel. Desta forma o plugin Distortion possui dois parmetros para
controlar o ganho. Os parmetros que foram implementados no plugin Distortion so:

Boost: quantidade de saturao da varivel fGanho1;

Gain: quantidade de saturao da varivel fGanho2;

Level: intensidade do efeito; e

On/Off: ativao e desativao do efeito.

O cdigo fonte do processamento sonoro do plugin Distortion est ilustrado na Figura 62.

68

1 void distortion::processReplacing(float** inputs, float** outputs,


2
VstInt32 sampleFrames)
3 {
4
float* in1 = inputs[0];
5
float* in2 = inputs[1];
6
float* out1 = outputs[0];
7
float* out2 = outputs[1];
8
9
if (fEnabled > 0.5) //distortion
10
{
11
while (--sampleFrames >= 0)
12
{
13
float x1 = *in1++;
14
float x2 = *in2++;
15
float k1, k2;
16
17
//esquerda
18
k1 = 2*fGanhoAux/(1-fGanhoAux);
19
x1 = (fBoostAux+k1)*x1/(fBoostAux+k1*abs(x1));
20
x1 = x1 * fOutput;
21
22
//direita
23
k2 = 2*fGanhoAux/(1-fGanhoAux);
24
x2 = (fBoostAux+k2)*x2/(fBoostAux+k2*abs(x2));
25
x2 = x2 * fOutput;
26
27
*out1++ = x1;
28
*out2++ = x2;
29
}
30
}
31
else //Bypass
32
{
33
while (--sampleFrames >= 0)
34
{
35
*out1++ = *in1++;
36
*out2++ = *in2++;
37
}
38
}
39 }

Figura 62. Cdigo fonte do plugin Distortion


Nas linhas 18 e 23 est implementada a Equao 3, nas linhas 19 e 24 a Equao 4 e nas
linhas 20 e 25 aplicada a intensidade de sada do efeito. Na Figura 63 est ilustrada a interface do
plugin Distortion, e sua interface padro DK Guitar.

69

(a)

(b)

Figura 63. (a) Interface do Distortion; (b) Interface padro do Distortion no DK Guitar
O arquivo sonoro utilizado para ilustrar o efeito de Overdrive tambm foi utilizado para
aplicar o efeito Distortion. A parte superior da Figura 64 ilustra a onda sonora original e a parte
inferior mostra a onda sonora aps ser processada pelo plugin Distortion.

Figura 64. Onda sonora do Distortion


3.2.2.4

Plugin Tremolo
Para o desenvolvimento do efeito Tremolo foi implementado um oscilador (LFO) que varia

de 0 a 1 que incrementado com o valor definido pelo parmetro fTempo. Quanto menor for esse
parmetro mais devagar ser o efeito Tremolo.

70

Os parmetros implementados no plugin foram:

Time: velocidade do efeito Tremolo;

Mix: mistura o efeito com o som original; e

On/Off: ativa e desativa o efeito.

Na Figura 65, est ilustrada a funo processReplacing do plugin, onde feito o


processamento sonoro.

1 void Tremolo::processReplacing(float** inputs, float** outputs,


2
VstInt32 sampleFrames)
3 {
4
float* in1 = inputs[0];
5
float* in2 = inputs[1];
6
float* out1 = outputs[0];
7
float* out2 = outputs[1];
8
9
if (fEnabled > 0.5) //Tremolo
10
{
11
while (--sampleFrames >= 0)
12
{
13
float x1 = *in1++;
14
float x2 = *in2++;
15
LFO();
16
17
*out1++ = x1 * (1-fGanho) + (x1* fLFO * fGanho);
18
*out2++ = x2 * (1-fGanho) + (x2* fLFO * fGanho);
19
}
20
}
21
else //Bypass
22
{
23
while (--sampleFrames >= 0)
24
{
25
*out1++ = *in1++;
26
*out2++ = *in2++;
27
}
28
}
29 }

Figura 65. Cdigo fonte do Plugin Tremolo


Nas linhas 17 e 18 o tremulo acrescentado ao sinal original. O cdigo x * (1-fGanho)
corresponde porcentagem do som original e o x* fLFO * fGanho corresponde porcentagem do
efeito Tremolo. A Figura 66 ilustra a interface do plugin Tremolo e sua interface padro no DK
Guitar..

71

(a)

(b)

Figura 66. (a) Interface do Tremolo; (b) Interface do Tremolo no DK Guitar


Para que seja possvel perceber a presena do efeito Tremolo na onda sonora, ela tem que ser
visualizada sem zoom. Como o oscilador incrementado e decrementado com valores constantes,
ele gera um grfico de forma triangular, que est ilustrada na Figura 67.

Figura 67. Onda sonora do Tremolo


3.2.2.5

Plugin Chorus
O plugin Chorus foi implementado com o auxlio do programa SynthEdit, pois foram

encontradas dificuldades para desenvolver a transformada de Fourier para efetuar a modulao


necessria no sinal do udio. No programa SynthEdit, foi utilizado o conhecimento adquirido sobre
o funcionamento do efeito Chorus (descrito na Fundamentao Terica) para o desenvolvimento do
plugin. A interface grfica criada seguiu o mesmo padro dos outros plugins. Os parmetros
implementados foram:
72

Depth: profundidade do efeito; e

Mix: mixagem ou intensidade do efeito no sinal original.

Na Figura 68, est ilustrado o diagrama de blocos implementado no SynthEdit.

Figura 68. Diagrama Chorus no SynthEdit


Onde:

IO Mod: entrada e sada do sinal sonoro;

DCA: controla a intensidade do sinal;

Oscillator: oscilador de baixa freqncia;

Fixed Values: valores fixos; e

Delay: componente de Delay ou atraso do sinal.

Os dois componentes DCA da esquerda, so utilizados para fazer o processamento em


Stereo ligados um boto On/Off para ligar e desligar o efeito. Quando o boto est acionado, o
73

sinal passa normalmente para o componente Delay. Este componente est com o tempo de Delay
fixo em 27 milissegundos. Um LFO ou oscilador de baixa freqncia est ligado ao Delay para
fazer a modulao caracterstica do efeito Chorus.
Para fazer a interface grfica foi utilizado o mesmo layout do knob (potencimetro) usado na
implementao dos outros plugins. Na Figura 69, est ilustrada a interface do plugin Chorus
implementada no software SynthEdit e sua interface padro no DK Guitar.

(a)

(b)

Figura 69. (a) Interface do Chorus; (b) Interface padro do Chorus no DK Guitar
Na Figura 70, a onda sonora inferior ilustra o resultado do efeito Chorus aplicado na onda
sonora superior.

Figura 70. Onda sonora do Chorus

74

3.2.2.6

Plugin Reverb
Assim como o Chorus, o plugin Reverb foi implementado com o auxlio do programa

SynthEdit. No SynthEdit, foram utilizados blocos de filtros digitais do tipo Comb e Allpass para o
desenvolvimento do Reverb. Os parmetros implementados foram:

Time: ajustar a durao ou tempo da reverberao;

Tone: tonalidade ou equalizao do efeito; e

Mix: mixagem ou intensidade do efeito no sinal original.

Na Figura 71, est ilustrado o diagrama de blocos implementado no SynthEdit.

Figura 71. Diagrama Reverb no SynthEdit


Onde:

IO Mod: entrada e sada do sinal sonoro;

75

Comb: este filtro adiciona um Delay com um curto intervalo de tempo acrescentando
pequenas defasagens no som;

Allpass: filtro Allpass, utilizado para passar todas as freqncias com a mesma
amplitude;

LevelAdj: utilizado pelo parmetro Mix do plugin para controlar a intensidade do efeito
Reverb no sinal original;

DCA1 e DCA2: utilizado pelo boto On/Off para ativar e desativar o efeito; e

Multiply: multiplica o valor do parmetro Tone antes de pass-lo para o bloco Comb.

Na Figura 72, est ilustrada a interface do plugin Reverb implementada no software


SynthEdit e sua interface padro no DK Guitar.

(a)

(b)

Figura 72. (a) Interface do Reverb; (b) Interface padro do Reverb no DK Guitar
Na Figura 73, a onda sonora inferior ilustra o resultado do efeito Reverb aplicado na onda
sonora superior.

76

Figura 73. Onda sonora do Reverb


3.2.2.7

Plugin Volume
A funo do plugin Volume implementado de controlar a intensidade de sada do udio.

Pode ser utilizado para obter uma diferena de intensidade necessria entre dois presets. Por
exemplo, um preset configurado para ser utilizado para o guitarrista executar um solo, geralmente
possui maior intensidade que os outros presets.
O nico parmetro do plugin Volume o fGain, que ajusta a intensidade de sada do sinal.
Na Figura 74, est ilustrada a funo processReplacing do plugin, onde feito o
processamento sonoro.

1 void volume::processReplacing (float** inputs, float** outputs,


2
VstInt32 sampleFrames)
3 {
4
float* in1 = inputs[0];
5
float* in2 = inputs[1];
6
float* out1 = outputs[0];
7
float* out2 = outputs[1];
8
9
while (--sampleFrames >= 0)
10
{
11
*out1++ = *in1++ * fGain;
12
*out2++ = *in2++ * fGain;
13
}
14 }

Figura 74. Cdigo fonte do plugin Volume


Nas linhas 11 e 12 o sinal de entrada multiplicado pelo parmetro fGain do plugin,
alterando a amplitude do sinal. Na Figura 75 est ilustrada a interface do plugin Volume no
programa DK Guitar.

77

Figura 75. Interface do Volume


Na parte superior da Figura 76 est ilustrada uma onda sonora, na qual a segunda onda o
resultado da utilizao do plugin Volume.

Figura 76. Onda sonora do Volume

3.3 TESTES E VALIDAO


O processo de testes e validao do sistema foi dividido em duas etapas, sendo que a
primeira ocorreu em paralelo ao desenvolvimento e a segunda aps a implementao.
Para a utilizao do software, necessrio um computador com placa de som e sistema
operacional Windows XP ou Windows Vista. Dependendo da capacidade da placa de som, a
utilizao do driver ASIO4ALL torna-se indispensvel para um processamento em tempo real.
O software DK Guitar e os plugins VST foram testados em dois computadores com
diferentes configuraes e placas de som, conforme ilustrado na Tabela 5.
Tabela 5. Configurao dos computadores utilizados nos testes
Computador
PC Desktop

S.O.
Processador
Windows AMD 2.2GHz
XP

Memria
1GB

Notebook HP

Windows AMD Dual Core


Vista
1.9GHz

2GB

78

Placa de som
Onboard (Asus)
Creative AUDIGY 2 ZS 7.1
Behringer Guitar Link UCG102
Onboard (NVidia)
Behringer Guitar Link UCG102

O software funcionou perfeitamente em todas as configuraes acima. O driver de som


utilizado foi o ASIO4ALL verso 2.8 para todas as placas de som. Em nenhum dos testes, foi
detectado algum atraso significativo no processamento de udio que inviabilizasse a utilizao do
DK Guitar em tempo real.
Tambm foram testadas utilizaes de plugins VST j existentes, como o JVM900 e
SoulForce, e em todos os testes o software funcionou de acordo com o esperado.
Os plugins implementados foram testados em outros softwares com suporte tecnologia
VST, como FL Studio, Sonar e Audacity, e funcionaram sem problemas. Na Figura 77 est
ilustrado o efeito Distortion no software FL Studio, Sonar e Audacity respectivamente.

(a)

(b)

(c)

Figura 77. (a) Distortion no FL Studio; (b) Distortion no Sonar; (c) Distortion no Audacity
No foram realizadas comparaes das ondas sonoras produzidas pelos plugins com ondas
sonoras resultantes da utilizao de pedais reais, mas auditivamente o resultado sonoro dos efeitos
implementados so semelhantes ao som de pedais e pedaleiras que existem no mercado.

79

4 CONCLUSES
Este trabalho consistiu no desenvolvimento de um software para processar o sinal de uma
guitarra ligada a um computador, simulando os sons dos principais efeitos utilizados pelos
guitarristas. Para complementar o conhecimento das disciplinas do curso de Cincia da Computao
e propiciar o desenvolvimento deste, foram levantados conceitos e utilizaes sobre Computao
Musical, bem como uma reviso bibliogrfica sobre tecnologias de processamento sonoro e
softwares similares. Foram localizados, baixados e experimentados softwares como Guitar R.A.,
Revalver, FxBox, e tecnologias como VST e DirectX.
A pesquisa sobre tecnologias de processamento de udio teve como objetivo a aquisio de
conhecimento, a fim de determinar qual a melhor linguagem para o desenvolvimento do software
proposto. Optou-se pela utilizao da tecnologia VST, pelo fato de ser um padro utilizado em
muitos softwares da rea. Outra vantagem ela ser multi-plataforma e possuir boa documentao
disponvel. As tecnologias JUCE e ASIO foram utilizadas em conjunto com a VST, com o intuito
de construir um software com uma interface amigvel e com a menor latncia possvel no
processamento sonoro, para viabilizar sua utilizao em tempo real.
A modelagem do software foi realizada com o auxlio da ferramenta Enterprise Architect,
seguindo os padres da UML. Foram apresentados diagramas de Casos de Uso, classe,
componentes e seqncia, bem como o levantamento dos requisitos funcionais e no funcionais.
No processo de desenvolvimento, foram encontradas dificuldades para desenvolver
algoritmos de filtros digitais e a transformada de Fourier, tcnicas necessrias para a implementao
de efeitos como Chorus e Reverb. Dessa forma, estes dois efeitos foram desenvolvidos com o
auxlio do software SynthEdit. Alm dos cinco efeitos definidos nos requisitos funcionais, mais dois
foram desenvolvidos: Tremolo e Volume.
Considerando os objetivos deste trabalho, pde-se verificar que todos foram cumpridos,
tendo em vista que o software concebido contempla os requisitos funcionais e no funcionais e os
diagramas de casos de uso definidos na modelagem. No entanto, o software desenvolvido pode ser
melhorado com a incluso de novos recursos, que podem ser desenvolvidos em trabalhos futuros,
como:

Desenvolvimento de novos efeitos como Flanger, Phaser e Equalizador;

Compilao do software e plugins em outros sistemas operacionais como Linux e Mac


OSX;

Desenvolvimento de funcionalidades para operar o software atravs de um controlador


ou pedaleira MIDI conectada ao computador;

Afinador digital;

Gravador de som; e

Osciloscpio para visualizar as ondas sonoras.

81

REFERNCIAS BIBLIOGRFICAS
AUDIOCOURSES. Low Frequency Oscillator (LFO). 2007. Disponvel em:
<http://www.audiocourses.com/article1703.html>. Acesso em: 18 dez. 2007
ALIEN CONNECTIONS. Guitar FX-Box. 2005. Disponvel em:
<http://www.alienconnections.com/products_revalverii.htm>. Acesso em: 16 set. 2007.
BEHRINGER. Behringer. 2007. Disponvel em: <http://www.behringer.com>.
Acesso em: 20 out. 2007.
BOSS. Boss. 2007. Disponvel em: <http://roland.com.br/boss>. Acesso em: 20 out. 2007.
BRITO, Tea Alencar de. Msica na educao infantil: propostas para a formao integral da
criana. 2. ed. So Paulo: Peirpolis, 2003.
CREATIVE. OpenAL SDK for Windows. 2007. Disponvel em:
<http://developer.creative.com/articles/article.asp?cat=1&sbcat=31&top=38&aid=45>.
Acesso em: 18 set. 2007.
DANELECTRO. Danelectro. 2007. Disponvel em: <http://www.danelectro.com/mini1.htm>.
Acesso em: 20 out. 2007.
EDUCOM. O Som. 2007. Disponvel em: <http://web.educom.pt/~pr1258/8ano/a6_som8ano.htm>.
Acesso em: 28 out. 2007.
ELLIOTT, Rod. Digital Signal Processing. 2006. Disponvel em:
<http://sound.westhost.com/articles/dsp.htm>. Acesso em: 28 out. 2007.
GOJKOVIC, Sasha. Guitar FX-Box. 2002. Disponvel em: <http://www.guitar-fxbox.com>.
Acesso em: 16 set. 2007.
GORE, Joe. How to Record an Electric Guitar on Your Mac. 2007. Disponvel em:
<http://www.apple.com/pro/techniques/connectingguitar>. Acesso em: 16 out. 2007.
HARMONY CENTRAL. Effects Explained. 2007. Disponvel em:
<http://www.harmony-central.com/Effects/effects-explained.html>. Acesso em: 16 dez. 2007.
IAZZETTA, Fernando. Tutoriais de udio e Acstica. 2000. Disponvel em:
<http://www.eca.usp.br/prof/iazzetta/tutor>. Acesso em: 20 set. 2007.
IZECKSOHN, Srgio. Os Equalizadores. 2005. Disponvel em:
<http://www.homestudio.com.br/Artigos/Art016.htm>. Acesso em: 10 mar. 2008.
LUVIZOTTO, Andr Luiz; FURLANETE, Fbio Parra; MANZOLLI, Jnatas. Microfonia e
Distoro na guitarra sob a tica de Waveshaping. In: CONGRESSO DA ASSOCIAO
NACIONAL DE PESQUISA E PS-GRADUAO EM MSICA (ANPPOM), 16., 2006,
Braslia. PROGRAMA DE PS-GRADUAO MSICA EM CONTEXTO. Braslia, 2006. p.
262 - 267.

MELO, Ana Cristina. Desenvolvendo aplicaes em UML 2.0: do conceitual implementao. 2.


ed. Rio de Janeiro: Brasport, 2004.
MENDES, Eduardo. Projeto de Filtros No-Recursivos (FIR). Disponvel em:
<www.cpdee.ufmg.br/~emmendes/fir.pdf>. Acesso em: 17 dez. 2007.
MICROSOFT. Introduo ao DirectX. 2007.
Disponvel em: <http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/DirectX.mspx>.
Acesso em: 18 set. 2007.
MILETTO, Evandro Manara et al.Introduo Computao Musical. In: CONGRESSO
BRASILEIRO DE COMPUTAO, 4., 2004, Itaja. Anais... Itaja: Universidade do Vale do Itaja,
2004.
MSP. Transformada de Fourier. 2008. Disponvel em:
<http://www.mspc.eng.br/matm/fourier_transf110.shtml>. Acesso em: 13 mai. 2008.
NEYRA-ARAOZ, Jorge H. Transformada de Fourier: fundamentos matemticos, implementao
e aplicaes musicais. 2007. MAC 0337 Computao Musical. IME-USP. Disponvel em:
<http://www.ime.usp.br/~kon/MAC5900/seminarios/seminario_Jorge.pdf>. Acesso em: 17 dez.
2007.
NOVO JNIOR, Jos Eduardo Fornari. Estudo e desenvolvimento de um sintetizador evolutivo
de segmentos sonoros. 2006. Projeto Ircam-Brasil, processo 03/05993-6 (reunio cientifica), a ser
executado em parceria entre o Ncleo Interdisciplinar de Comunicao Sonora (NICS) em
Campinas, Brasil e o Institut de Recherche et Coordination Acoustique/Musique (IRCAM) em
Paris, Frana - Ncleo Interdisciplinar de Comunicao Sonora. Universidade Estadual de
Campinas, Campinas, 2006.
NUNES, Rafael Astuto Arouche; ALBUQUERQUE, Marcelos Portes de; ALBUQUERQUE,
Mrcio Portes de. Introduo a processadores de sinais digitais. Disponvel em:
<http://www.cbpf.br/~rastuto/pdf/NT-CBPF001-2006.pdf>. Acesso em: 17 dez. 2007.
OLIVEIRA, Hlio Magalhes. Anlise de Fourier e Wavelets: sinais estacionrios e no
estacionrios. 1.ed. Editora universitria UFPE, 2007.
OPENAL. OpenAL. 2006. Disponvel em: <http://www.openal.org>. Acesso em: 18 set. 2007.
PENDER, Tom. UML a Bblia. So Paulo: Campus/Elsevier, 2004.
PORTAUDIO. Portable cross-platform Audio API. 2006.
Disponvel em: <http://www.portaudio.com>. Acesso em: 17 set. 2007.
RATTON, Miguel. Asio. 2002.
Disponvel em: <http://www.music-center.com.br/asio.htm>. Acesso em: 29 set. 2007.
RAW MATERIAL SOFTWARE. Juce. 2002. Disponvel em:
<http://www.rawmaterialsoftware.com/juce>. Acesso em: 14 abr. 2008.
SCANDELARI, Luciano. Filtros digitais. 2007. Disponvel em:
<http://www.pessoal.cefetpr.br/luciano/filtros.pdf>. Acesso em: 10 abr. 2008
83

SDL. Simple DirectMedia Layer. 2006. Disponvel em: <http://www.libsdl.org>.


Acesso em: 17 set. 2007.
SENFONIMUZIK. Senfonimuzik. 2007. Disponvel em: <http://www.senfonimuzik.com>.
Acesso em: 20 out. 2007.
SMITH, Steve. The Scientist and Engineer's Guide to Digital Signal Processing. Disponvel em:
<http://www.dspguide.com/>. Acesso em: 17 dez. 2007.
STEINBERG. The Yvan Grabit developer resource. 2007. Disponvel em:
<http://ygrabit.steinberg.de/~ygrabit/public_html/index.html>. Acesso em 18 set. 2007.
VALENZUELA. FIR Filters. 2005. Disponvel em: <http://cnx.org/content/m12009/latest/>
Acesso em: 17 dez. 2007.
WANDERLEY, Marcelo M. Instrumentos Musicais Digitais. Paran: Editora da Universidade
Federal do Paran, 2006.
ZIMERMANN, Raphael RaphaelZ. 2007. Disponvel em: <http://www.raphaelz.kinghost.net>.
Acesso em: 18 set. 2007.

84

GLOSSRIO
Alcance Dinmico

Relao entre o maior e o menor nvel do sinal.

API

Conjunto de rotinas e padres estabelecidos por um software para utilizao


de suas funcionalidades por programas aplicativos.

ASIO

Tecnologia criada pela Steinberg para melhorar a performance de


processamento digital de udio.

Buffer

Regio de memria temporria utilizada para escrita e leitura de dados.

Equalizao

Alterar a intensidade de certas freqncias do sinal de udio.

Espectro

Distribuio, no domnio das freqncias, do conjunto de todas as ondas que


formam um som.

Framework

Conjunto de elementos e suas interligaes constituindo a base de um


sistema ou projeto.

Latncia

Diferena de tempo entre o incio de um evento e o momento em que seus


efeitos tornam-se perceptveis.

MIDI

Tecnologia utilizada para representao de msica em formato digital.

Modulao

Processo de variao de altura, intensidade, freqncia ou durao de uma


onda sonora.

Plugin

Ferramentas que acrescentam funcionalidades a uma aplicao.

Saturao

Ocorre quando a intensidade do sinal ultrapassa sua capacidade mxima


permitida.

SDK

Conjunto de ferramentas de desenvolvimento que permite criar aplicaes


para um determinado software.

VST

Tecnologia criada pela Steinberg para produo de efeitos digitais e


instrumentos virtuais.

ANEXOS

CDIGO FONTE DO PLUGIN VOLUME

// Arquivo volume.h
//-----------------------------------------------------------------------------// VST Plug-Ins SDK
// Version 2.4
$Date: 2008/05/28 09:08:27
//
// Category
: VST 2.x SDK
// Filename
: volume.h
// Created by
: Daniel Krueger
// Description : Plugin que aplica intensidade no sinal [-oo, 0dB]
//
// 2006, Steinberg Media Technologies, All Rights Reserved
//-----------------------------------------------------------------------------#ifndef __volume__
#define __volume__
#include "public.sdk/source/vst2.x/audioeffectx.h"
//-----------------------------------------------------------------------------class volume : public AudioEffectX
{
public:
volume (audioMasterCallback audioMaster);
~volume ();
// Processing
virtual void processReplacing (float** inputs, float** outputs, VstInt32
sampleFrames);
virtual void processDoubleReplacing (double** inputs, double** outputs,
VstInt32 sampleFrames);
// Program
virtual void setProgramName (char* name);
virtual void getProgramName (char* name);
// Parameters
virtual void setParameter (VstInt32 index, float value);
virtual float getParameter (VstInt32 index);
virtual void getParameterLabel (VstInt32 index, char* label);
virtual void getParameterDisplay (VstInt32 index, char* text);
virtual void getParameterName (VstInt32 index, char* text);
virtual
virtual
virtual
virtual

bool getEffectName (char* name);


bool getVendorString (char* text);
bool getProductString (char* text);
VstInt32 getVendorVersion ();

protected:
float fGain;
char programName[kVstMaxProgNameLen + 1];
};
#endif

// Arquivo volume.cpp
//-----------------------------------------------------------------------------// VST Plug-Ins SDK
// Version 2.4
$Date: 2008/05/28 09:08:27
//
// Category
: VST 2.x SDK
// Filename
: volume.h
// Created by
: Daniel Krueger
// Description : Plugin que aplica intensidade no sinal [-oo, 0dB]
//
// 2006, Steinberg Media Technologies, All Rights Reserved
//-----------------------------------------------------------------------------#include "volume.h"
//-----------------------------------------------------------------------------AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
{
return new volume (audioMaster);
}
//-----------------------------------------------------------------------------volume::volume (audioMasterCallback audioMaster)
: AudioEffectX (audioMaster, 1, 1) // 1 program, 1 parameter only
{
setNumInputs (2);
// stereo in
setNumOutputs (2);
// stereo out
setUniqueID ('DKvo');
// identificao
canProcessReplacing (); // supports replacing volume
canDoubleReplacing (); // supports double precision processing
fGain = 1.f;
// default to 0 dB
vst_strncpy (programName, "Default", kVstMaxProgNameLen);
program name
}

// default

//-----------------------------------------------------------------------------volume::~volume ()
{
// destrutor
}
//-----------------------------------------------------------------------------void volume::setProgramName (char* name)
{
vst_strncpy (programName, name, kVstMaxProgNameLen);
}
//-----------------------------------------------------------------------------void volume::getProgramName (char* name)
{
vst_strncpy (name, programName, kVstMaxProgNameLen);
}
//-----------------------------------------------------------------------------void volume::setParameter (VstInt32 index, float value)
{
fGain = value;
}

88

//-----------------------------------------------------------------------------float volume::getParameter (VstInt32 index)


{
return fGain;
}
//-----------------------------------------------------------------------------void volume::getParameterName (VstInt32 index, char* label)
{
vst_strncpy (label, "Volume", kVstMaxParamStrLen);
}
//-----------------------------------------------------------------------------void volume::getParameterDisplay (VstInt32 index, char* text)
{
dB2string (fGain, text, kVstMaxParamStrLen);
}
//-----------------------------------------------------------------------------void volume::getParameterLabel (VstInt32 index, char* label)
{
vst_strncpy (label, "dB", kVstMaxParamStrLen);
}
//-----------------------------------------------------------------------bool volume::getEffectName (char* name)
{
vst_strncpy (name, "Volume", kVstMaxEffectNameLen);
return true;
}
//-----------------------------------------------------------------------bool volume::getProductString (char* text)
{
vst_strncpy (text, "Volume", kVstMaxProductStrLen);
return true;
}
//-----------------------------------------------------------------------bool volume::getVendorString (char* text)
{
vst_strncpy (text, "Daniel Krueger", kVstMaxVendorStrLen);
return true;
}
//-----------------------------------------------------------------------------VstInt32 volume::getVendorVersion ()
{
return 1000;
}
//-----------------------------------------------------------------------------void volume::processReplacing (float** inputs, float** outputs, VstInt32
sampleFrames)
{
float* in1 = inputs[0];
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];

89

while (--sampleFrames >= 0)


{
*out1++ = *in1++ * fGain;
*out2++ = *in2++ * fGain;
}
}
//-----------------------------------------------------------------------------void volume::processDoubleReplacing (double** inputs, double** outputs, VstInt32
sampleFrames)
{
double* in1 = inputs[0];
double* in2 = inputs[1];
double* out1 = outputs[0];
double* out2 = outputs[1];
while (--sampleFrames >= 0)
{
*out1++ = *in1++ * fGain;
*out2++ = *in2++ * fGain;
}
}

90