Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel...

101
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO TRATAMENTO DE SINAIS SONOROS NO COMPUTADOR SIMULANDO PEDAIS VIRTUAIS Área de Computação Musical por Daniel Krueger Adhemar Maria do Valle Filho, Dr. Orientador Itajaí (SC), junho de 2008

Transcript of Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel...

Page 1: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR

CURSO DE CIÊNCIA DA COMPUTAÇÃO

TRATAMENTO DE SINAIS SONOROS NO COMPUTADOR SIMULANDO PEDAIS VIRTUAIS

Área de Computação Musical

por

Daniel Krueger

Adhemar Maria do Valle Filho, Dr. Orientador

Itajaí (SC), junho de 2008

Page 2: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR

CURSO DE CIÊNCIA DA COMPUTAÇÃO

TRATAMENTO DE SINAIS SONOROS NO COMPUTADOR SIMULANDO PEDAIS VIRTUAIS

Área de Computação Musical

por

Daniel Krueger Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Adhemar Maria do Valle Filho, Dr.

Itajaí (SC), junho de 2008

Page 3: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

ii

SUMÁRIO

LISTA DE ABREVIATURAS.................................................................. iv

LISTA DE FIGURAS.................................................................................v

LISTA DE TABELAS..............................................................................vii LISTA DE EQUAÇÕES .........................................................................viii RESUMO.................................................................................................... ix

ABSTRACT.................................................................................................x

1 INTRODUÇÃO......................................................................................1 1.1 PROBLEMATIZAÇÃO ..................................................................................... 1 1.1.1 Formulação do Problema................................................................................. 1 1.1.2 Solução Proposta ............................................................................................... 2 1.2 OBJETIVOS ........................................................................................................ 3 1.2.1 Objetivo Geral ................................................................................................... 3 1.2.2 Objetivos Específicos ........................................................................................ 3 1.3 METODOLOGIA................................................................................................ 3 1.4 ESTRUTURA DO TRABALHO ....................................................................... 4

2 FUNDAMENTAÇÃO TEÓRICA ........................................................5 2.1 COMPUTAÇÃO 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 PROGRAMAÇÃO ........ 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 CONSIDERAÇÕES .......................................................................................... 36

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

Page 4: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

iii

3.2 IMPLEMENTAÇÃO ........................................................................................ 53 3.2.1 Programa Host – DK Guitar.......................................................................... 54 3.2.2 Plugins .............................................................................................................. 60 3.3 TESTES E VALIDAÇÃO................................................................................. 78

4 CONCLUSÕES ....................................................................................80

REFERÊNCIAS BIBLIOGRÁFICAS ...................................................82

GLOSSÁRIO.............................................................................................85

Page 5: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

iv

LISTA DE ABREVIATURAS

API Application Programming Interface ASIO Audio Stream Input/Output DFT Discrete Fourier Transform DSP Digital Signal Processing FFT Fast Fourier Transform JUCE Jules Utility Class Extensions MIDI Musical Instrument Digital Interface OPENAL Open Audio Library OPENGL Open Graphics Library PC Personal Computer SDK Software Development Kit SDL Simple DirectMedia Layer TCC Trabalho de Conclusão de Curso UML Unified Modeling Language UNIVALI Universidade do Vale do Itajaí VST Virtual Studio Technology VSTi Virtual Studio Technology Instrument

Page 6: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

v

LISTA DE FIGURAS

Figura 1. Conexão Guitarra – Computador..........................................................................................2 Figura 2. Onda com freqüência de 3 Hertz ..........................................................................................7 Figura 3. Amplitude de uma onda........................................................................................................7 Figura 4. Duração 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. Ligação de pedais em série ...............................................................................................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 compressão.........................................................................................................20 Figura 21. Onda sonora do efeito Compressor...................................................................................21 Figura 22. Pedal de equalização.........................................................................................................22 Figura 23. Onda sonora do efeito Equalizador...................................................................................22 Figura 24. (a) Pedal de Overdrive; (b) Pedal de Distorção ................................................................23 Figura 25. (a) Onda sonora do efeito Overdrive; (b) Onda sonora do efeito Distorção.....................24 Figura 26. Software Guitar R.A. ........................................................................................................25 Figura 27. Software Fx-Box...............................................................................................................26 Figura 28. Software Revalver.............................................................................................................27 Figura 29. Comunicação 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 configuração 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 – Configurações .....................................................................40 Figura 38. Diagrama de Caso de Uso – Seleção de Efeitos ...............................................................41 Figura 39. Diagrama de Caso de Uso – Ajuste de Parâmetros ..........................................................42 Figura 40. Diagrama de Caso de Uso – Importação/Exportação .......................................................43 Figura 41. Diagrama de Classes de Negócio: Host ............................................................................44 Figura 42. Diagrama de Classes do Plugin VST................................................................................46 Figura 43. Diagrama de Classes de Projeto: Host ..............................................................................47 Figura 44. Diagrama de Seqüência ....................................................................................................49 Figura 45. Diagrama de Componentes...............................................................................................50 Figura 46. Protótipos de Tela: Tela Principal (TELA 01)..................................................................51

Page 7: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

vi

Figura 47. Protótipos de Tela: Tela de Configurações (TELA 02) ....................................................52 Figura 48. Protótipos de Tela: Tela de Mensagem (TELA 03)..........................................................52 Figura 49. Protótipos de Tela: Tela de Diálogo (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 Configurações ......................................................................................................58 Figura 54. Menu Arquivo...................................................................................................................60 Figura 55. Código fonte do plugin Delay...........................................................................................62 Figura 56. (a) Interface do Delay; (b) Interface padrão do Delay no DK Guitar...............................63 Figura 57. Onda sonora do Delay.......................................................................................................63 Figura 58. Código fonte do plugin Overdrive ....................................................................................65 Figura 59. (a) Interface do Overdrive; (b) Interface padrão do Overdrive no DK Guitar .................66 Figura 60. Onda sonora do Overdrive ................................................................................................66 Figura 61. Diagrama Distortion no SynthEdit ...................................................................................67 Figura 62. Código fonte do plugin Distortion....................................................................................69 Figura 63. (a) Interface do Distortion; (b) Interface padrão do Distortion no DK Guitar .................70 Figura 64. Onda sonora do Distortion................................................................................................70 Figura 65. Código 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 padrão 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 padrão do Reverb no DK Guitar ...........................76 Figura 73. Onda sonora do Reverb .....................................................................................................77 Figura 74. Código 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

Page 8: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

vii

LISTA DE TABELAS

Tabela 1. Formas de ondas...................................................................................................................8 Tabela 2. Resumo dos Softwares Similares .......................................................................................27 Tabela 3. Peças da bateria virtual EZ Drummer ................................................................................33 Tabela 4. Botões e teclas de atalho do Software DK Guitar ..............................................................59 Tabela 5. Configuração dos computadores utilizados nos testes .......................................................78

Page 9: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

viii

LISTA DE EQUAÇÕES

Equação 1 ...........................................................................................................................................64 Equação 2 ...........................................................................................................................................64 Equação 3 ...........................................................................................................................................68 Equação 4 ...........................................................................................................................................68

Page 10: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

ix

RESUMO

KRUEGER, Daniel. Tratamento de Sinais Sonoros no Computador Simulando Pedais Virtuais. Itajaí, 2008. 101 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)–Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2008. A evolução da tecnologia em processamento de sinal de áudio tem possibilitado o desenvolvimento de vários softwares na área de Computação Musical que até então não eram possíveis. Este trabalho apresenta uma proposta de um software para produzir efeitos de guitarra através do processamento do sinal no computador, sem a necessidade de equipamentos externos. A solução proposta consiste em uma aplicação para rodar na Plataforma Windows que possibilita a simulação 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 bibliográfica e descrevendo o projeto do software que foi implementado. No intuito de complementar o conhecimento obtido nas disciplinas do Curso de Bacharelado em Ciência da Computação da Universidade do Vale do Itajaí, foram pesquisados conceitos sobre Computação Musical, digital signal processing, pedaleiras virtuais, plugins VST (Virtual Studio Technology), ASIO (Audio Stream Input/Output) e soluções similares. O projeto do software foi desenvolvido seguindo os padrões da UML (Unified Modeling Language), com auxílio da ferramenta Enterprise Architect. Foram elaborados diagramas de caso de uso, classe, seqüência e componentes, além dos protótipos de telas. Para o desenvolvimento do software foi utilizado o ambiente de programação Visual Studio. Obteve-se uma aplicação robusta, simples e funcional, capaz de atender às necessidades levantadas. Além de possibilitar a reprodução de efeitos digitais sem a necessidade de equipamentos para este fim, foi adquirida competência no desenvolvimento de soluções em Computação Musical. Palavras-chave: Computação Musical. Pedaleira virtual. Efeitos digitais. Software para guitarra. Plugin VST.

Page 11: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

x

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.

Page 12: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

1 INTRODUÇÃO

Com o grande avanço da informática nas últimas décadas, hoje é possível desenvolver

softwares para diversas áreas, entre elas, a música. Os músicos de hoje, podem se beneficiar de

soluções em software que antigamente não 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 utilização de

computadores pessoais na criação de sons de alta qualidade (com pelo menos 16 bits e 44.100

amostras/s) em modo de processamento nativo, isto é, sem a adição de placas de processamento

extras para o cálculo das amostras sonoras”.

Os teclados, guitarras e contrabaixos possuíam acessórios para modificar os sons

produzidos. Era um início de processamento, porém os dispositivos inicialmente eram muito caros.

Com o crescente avanço da tecnologia, hoje é possível substituir grande parte desse equipamento

por soluções em software.

Um bom exemplo são os multi-efeitos ou pedaleiras virtuais, que são softwares utilizados

em estúdios e até mesmo ao vivo, substituindo pedais e pedaleiras. Softwares na área de

computação musical são importantes por facilitar o processamento de áudio e pelo fato de

possibilitar um profissional da área trabalhar em qualquer lugar, apenas com um notebook, não

sendo necessário estar em um estúdio com vários 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 Distorção, que serão explicados na seção 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 PROBLEMATIZAÇÃO

1.1.1 Formulação do Problema

O uso de computadores para produções musicais está cada vez mais freqüente. Atualmente,

os estúdios musicais do mundo inteiro utilizam computadores para fazer algum tipo de

processamento no som, seja na mixagem, masterização, inclusão de efeitos, gravação ou até mesmo

em todas essas etapas.

Page 13: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

2

Com a tecnologia atual, é possível criar músicas 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 síntese sonora, que criam diversos tipos de

sons. Mas esses softwares são extremamente caros, e difíceis de serem operados, o que requer um

alto nível de conhecimento e treinamento.

Desta forma, esse trabalho proporcionou a implementação de um software que simula os

efeitos de pedais e pedaleiras utilizados por guitarristas, na qual sua principal característica é a

simplicidade de operação. Atualmente, os efeitos mais conhecidos e utilizados pelos guitarristas

são: Chorus, Reverb, Delay, Overdrive e Distorção, que são o foco deste trabalho.

1.1.2 Solução Proposta

A solução 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 conexão da guitarra, computador e

caixas de som.

Figura 1. Conexão Guitarra – Computador

Fonte: Adaptado de Gore (2007).

Page 14: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

3

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 Distorção, podendo estes serem usados individualmente, combinados ou

simultaneamente.

1.2.2 Objetivos Específicos

• Pesquisar conceitos sobre Computação Musical;

• Pesquisar softwares similares;

• Pesquisar e analisar bibliotecas de som e linguagens de programação 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 execução das etapas previstas na proposta deste trabalho que são:

(i) pesquisa; (ii) modelagem; (iii) desenvolvimento; (iv) testes e validação e (v) documentação.

Na primeira etapa do trabalho, foram pesquisados softwares similares, conceitos de

Computação Musical, tecnologias de processamento sonoro e a teoria necessária para o

desenvolvimento do software proposto.

A segunda etapa, referente à modelagem e o projeto do software, foi desenvolvida seguindo

os padrões da UML 2.0, com auxílio da ferramenta case Enterprise Architect, que foi utilizada para

elaborar diagramas de casos de uso, classe, seqüência e componentes, além dos requisitos

funcionais e não funcionais.

Page 15: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

4

Já na terceira etapa, desenvolvimento, a implementação do software foi colocada em prática

seguindo a modelagem realizada na etapa anterior. Nessa etapa foram desenvolvidos os plugins

VST e o software host..

Na etapa de validação e testes, foram realizados vários testes no software a fim de

diagnosticar possíveis problemas e corrigi-los, para garantir seu correto funcionamento.

Por fim, a etapa de documentação compreendeu o registro dos processos referentes às etapas

anteriores, seguindo as normas exigidas pela Coordenação de TCC.

1.4 Estrutura do trabalho

As páginas a seguir estão estruturadas em três capítulos adicionais: Fundamentação Teórica,

Desenvolvimento e Conclusões.

No Capítulo 2, Fundamentação Teórica, é apresentada uma revisão bibliográfica sobre

Computação Musical e tecnologias de processamento de áudio, assim como uma análise a respeito

de softwares similares. O Capítulo 3 apresenta detalhadamente o desenvolvimento do sistema,

incluindo sua especificação e sua modelagem em UML. Por fim, no Capítulo 4, são apresentadas as

conclusões do TCC.

Page 16: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo, serão abordados os principais conceitos ao entendimento e desenvolvimento

de aplicações para processamento de áudio, incluindo temas como: Computação Musical, softwares

similares, efeitos de guitarra e tecnologias utilizadas, com maior ênfase para VST. Também serão

apresentados conceitos e características sobre processamento de sinais digitais e os efeitos sonoros

que serão implementados.

2.1 Computação Musical

A Computação Musical é a área da Ciência da Computação dedicada ao estudo das

aplicações computacionais destinados a problemas musicais, investigando métodos, técnicas e

algoritmos para processamento e geração de música e sons, representações digitais e

armazenamento de informação sônica e musical (MILETTO et al., 2004).

Atualmente existem muitos softwares voltados à música, em áreas como produção musical,

processamento sonoro, informática na educação, gravação, entre outras. Empresas como Steinberg e

Cakewalk, possuem ótimos softwares para produção, gravação e seqüenciamento, que tornam o

computador um verdadeiro home estúdio. Como exemplo, é possível citar softwares como o Sonar,

Cubase e Cool Edit. Esses softwares são gravadores e seqüenciadores multi-pista, que oferecem

suporte a vários recursos e efeitos digitais, que tornam possível a produção de músicas inteiramente

pelo computador.

Uma tecnologia muito utilizada na Computação Musical para representação de música em

formato digital é o padrão MIDI (Musical Instrument Digital Interface). Pode-se encontrar uma

definição de MIDI em Miletto et al. (2004, p.22), na qual é citado que “O padrão MIDI usa

tecnologia digital, codificando eventos musicais em dados binários (bits) que são transferidos por

meio de uma linha física (cabo MIDI) de um equipamento para outro”.

Em Iazzetta (2000), é citado que MIDI não 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 início da década de 80, para padronizar a comunicação entre

instrumentos eletrônicos, que logo se tornou um padrão mundial. Diferente de outros formatos de

áudio como wav e mp3, o MIDI não possui o áudio propriamente dito, e sim instruções para

Page 17: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

6

reproduzi-lo, como se fosse uma partitura em formato digital. Dessa forma, o tamanho de arquivos

do tipo MIDI são extremamente pequenos, o que facilita sua transmissão e armazenamento.

2.1.1 Som

Segundo Miletto et al. (2004), o som é a vibração do ar, ou seja, variações na pressão do ar,

que são percebidas através do ouvido. Se essa pressão varia de acordo com um padrão repetitivo

dizemos que o som tem uma forma de onda periódica. Se não há um padrão perceptível no som este

é chamado de ruído.

Pode-se encontrar outra definição 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 vibratórios”. Esse autor

descreve que o som possui quatro qualidades ou parâmetros: altura, intensidade, timbre e duração.

2.1.1.1 Altura

A altura está relacionada com a freqüência 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 osciloscópio1 para comparar sons com alturas diferentes, nota-se que o

número de ciclos por unidade de tempo se altera. Dessa forma, quanto mais agudo for o som, maior

será seu número de ciclos dentro de um intervalo de tempo.

O número de ciclos dentro do intervalo de um segundo é chamado freqüência, expresso em

unidades chamadas hertz (Hz). Desta forma, um som com 500 Hz, indica que a vibração ocorre com

uma freqüência de 500 ciclos por segundo. Ao dobrar a freqüência de um som, ele é elevado uma

oitava acima, ficando mais agudo (MILETTO et al., 2004).

Na Figura 2, está ilustrada uma onda com freqüência 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 não é perceptível ao ouvido humano.

1 Instrumento de teste e medição que fornece uma representação visual de sinais elétricos.

Page 18: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

7

Figura 2. Onda com freqüência de 3 Hertz

Fonte: Adaptado de Educom (2007).

2.1.1.2 Intensidade

Ao aumentar ou diminuir o som de um rádio ou uma televisão, a intensidade (também

denominada amplitude) do som é alterada. Denominações como “alto” e “baixo” devem ser

utilizadas apenas para se referenciar à altura do som, e não 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 decibéis (dB) (MILETTO et al., 2004).

Ao comparar sons com intensidades diferentes em um osciloscópio, 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).

Page 19: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

8

2.1.1.3 Timbre

Um violão e um piano não produzem um som com as mesmas características ao serem

tocados com a mesma altura e a mesma intensidade. Isso ocorre por existir outro fator além da

altura e da intensidade em um som. Esse fator é denominado timbre, que é a característica peculiar

de cada manifestação sonora. No caso de instrumentos relacionados com caixa acústica (como o

violão), temos características como produção sonora, tamanho e expansão sonora (MILETTO et al.,

2004).

Ao observar sons com timbres diferentes em um osciloscópio, é percebida a mudança no

formato da onda sonora. Na Tabela 1 são apresentadas três formas de onda, que são relacionadas

com seu timbre característico e instrumentos que se assemelham a cada caso.

Tabela 1. Formas de ondas

Forma de onda Timbre Instrumento

Suave, doce Flauta, assovio

Claro, brilhante Violino, trompete

Simples, “quente” Clarinete, oboé

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

2.1.1.4 Duração

“Um som pode ser medido pelo seu tempo de ressonância 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 são ilustradas, na qual a onda superior possui uma duração

maior que a onda inferior.

Figura 4. Duração de uma onda

Fonte: Adaptado de Educom (2007).

Page 20: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

9

2.1.2 DSP

DSP (Digital Signal Processing) é o estudo de sinais em representação digital e de técnicas

utilizadas para o processamento desses sinais (SMITH, 1999).

O DSP é utilizado em várias áreas como matemática, engenharia elétrica, física, música,

entre outras. Na música, o DSP é muito utilizado para criação de efeitos digitais através de técnicas

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 ruídos, ou simplesmente extrair partes importantes do mesmo, como componentes de uma

certa banda de freqüência.” (NUNES et al., 2007).

Para Scandelari (2007), um filtro digital é um sistema temporal discreto projetado para

passar o conteúdo de um sinal de entrada em uma determinada banda de freqüências, ou seja, a

função de transferência do filtro forma uma janela através da qual somente é permitida a passagem

da parte desejada do sinal de entrada. Segundo Nunes et al. (2007), existem vários tipos de filtros

digitais, entre eles destacam-se:

• Passa-baixas: filtro que impede a passagem de freqüências altas a partir de uma

freqüência de corte, permitindo apenas a passagem de freqüências baixas;

• Passa-altas: ao contrário do filtro Passa-baixas, esse filtro é utilizado para impedir a

passagem de freqüências baixas a partir de uma freqüência de corte, permitindo apenas a

passagem de freqüências que estão acima da freqüência de corte;

• Passa-banda: permite a passagem de uma gama limitada de freqüências, ou seja, possui

duas freqüências de corte, uma baixa e uma alta, na qual apenas as freqüências que

estiverem entre as duas freqüências de corte passarão; e

• Rejeita-banda: bloqueia a passagem de uma gama limitada de freqüências.

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

Page 21: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

10

(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 implementação de efeitos digitais é o filtro Comb. O filtro

Comb adiciona uma parte levemente defasada do próprio sinal, o que gera cancelamentos de fase.

Segundo Mendes (2007), os filtros Comb são utilizados para remover uma freqüência particular e

seus harmônicos. A resposta em freqüência de um filtro Comb consiste de uma série de picos

regularmente espaçados, 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 freqüência e amplitude, mas defasadas em 180º, as amplitudes estão

exatamente opostas, cancelando-se totalmente, como pode-se notar na Figura 7.

Page 22: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

11

Figura 7. Cancelamento de fases

Fonte: Adaptado de Iazzetta (2000).

2.1.2.2 Modulação

Modulação é o processo de variação de altura, intensidade, timbre ou duração de uma onda

sonora. Para a implementação da modulação, uma técnica muito utilizada é o LFO (Low Frequency

Oscilator), ou oscilador de baixa freqüência em português (AUDIOCOURSES, 2007).

LFO é uma técnica utilizada em síntese e amostragem sonora para criação de muitos tipos

diferentes de efeitos. Ao contrário dos osciladores convencionais, o LFO não é utilizado como fonte

geradora de sons, e sim como uma forma de modulação de parâmetros como freqüência e

intensidade (AUDIOCOURSES, 2007).

Ao utilizar um LFO na intensidade de um sinal por exemplo, obtém-se o efeito Tremolo. O

LFO também é muito utilizado na freqüência 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 técnica largamente

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

Denominada assim em homenagem ao físico francês Jean Baptiste Joseph Fourier (1768-1830), a

Transformada de Fourier é um procedimento matemático utilizado para transformar um sinal que

está amostrado no domínio do tempo para o domínio das freqüências (MSP, 2008).

A Transformada de Fourier pode ser classificada de diversas maneiras, mas para a utilização

em computadores é empregada a DFT (Discrete Fourier Transform). Em 1965 J.W. Cooley e J.W.

Tukey conseguiram uma revolução no tratamento digital de sinais com a publicação da

Transformada Rápida de Fourier, a FFT (Fast Fourier Transform) (MSP, 2008)

Page 23: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

12

Segundo Oliveira (2007), “A FFT não é um tipo diferente de transformada e sim uma

técnica que possibilita avaliar DFT de forma mais rápida e econômica”, 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 decibéis e uma freqüência de 5 Hertz.

Ao aplicar a Transformada de Fourier, a amostragem da onda é transferida do domínio do tempo

para o domínio das freqüências, ilustrando apenas a freqüência contida na onda sonora.

Da mesma forma, com a Transformada de Fourier pode-se analisar ondas sonoras compostas

por mais de uma freqüência, conforme ilustra a Figura 9, composta por duas freqüências, sendo elas

de 5 e 10 Hertz.

Figura 9. Transformada de Fourier aplicado em uma onda composta

Fonte: Adaptado de MSP (2008).

Page 24: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

13

2.1.3 Efeitos Digitais

Efeitos digitais são algoritmos que utilizam técnicas de DSP para processar o som,

alterando-o de alguma forma. Essa alteração pode ser feita na intensidade do som, no timbre, na

altura, na duração, enfim, existem várias técnicas e métodos de processamento sonoro. Esses

diferentes efeitos proporcionados pelo processamento do som são 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 parâmetros para cada

efeito, que podem ser ajustados pelo usuário. 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 vários

efeitos como Chorus, Reverb, Distorção, 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 utilização de pedais com apenas um efeito, eles geralmente são ligados em

conjunto, no qual a saída de som de um pedal é conectada na entrada de som de outro, formando

uma ligação em série, ilustrada na Figura 11.

2 Mais detalhes disponíveis em http://www.behringer.com

Page 25: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

14

Figura 11. Ligação de pedais em série

Fonte: Adaptado de Senfonimuzik (2007).

Nas próximas subseções, serão abordados os principais efeitos digitais utilizados por

guitarristas, entre eles o Chorus, Delay, Reverb, Distorção e Overdrive. Serão explicados conceitos,

características, funcionamento e qual sua utilização.

2.1.3.1 Chorus

Chorus é um efeito que pode ser utilizado em vários instrumentos, como guitarras, baixos,

violões, etc. Chorus, que significa coro, é um efeito que duplica o som original, dando a impressão

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 impressão de que outra guitarra está sendo tocada

simultaneamente. No caso de utilizá-lo na voz (através de um microfone ligado a um efeito de

Chorus), a impressão é de que existe mais de uma pessoa cantando (HARMONY CENTRAL,

2007).

Para dar essa impressão de duplicidade ou coro, o som não é apenas duplicado, mas

propositalmente atrasado e é acrescentada uma pequena modulação em relação ao som original.

Essas alterações são mínimas, para que o som não perca suas características originais. Na Figura 12

é ilustrado um pedal de Chorus da marca Danelectro.

Page 26: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

15

Figura 12. Pedal de Chorus

Fonte: Adaptado de Danelectro (2007).

Os parâmetros mais encontrados em pedais de Chorus são:

• Rate: ajusta o oscilador do efeito Chorus; e

• Depth: ajusta a intensidade do efeito.

Na Figura 13 são 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 períodos de tempo

(geralmente menor que um segundo), dando a sensação para o ouvinte de que o som está oscilando.

Page 27: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

16

Segundo Behringer (2007), o efeito Tremolo é obtido através da modulação periódica da

intensidade sonora do sinal. Para tal, é produzida uma troca contínua 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 três parâmetros 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 são ilustradas duas ondas sonoras, na qual a inferior possui o efeito Tremolo

aplicado.

Figura 15. Onda sonora do efeito Tremolo

Page 28: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

17

2.1.3.3 Delay

O efeito Delay, também 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 não fique tão “seco” cantando (HARMONY CENTRAL, 2007).

Assim como o Chorus, o Delay também pode ser utilizado em outros instrumentos como

violão, 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 três parâmetros principais nos efeitos de Delay:

• Level: é a intensidade do efeito em relação ao som original. Com esse parâmetro, é

possível fazer o Delay soar mais fraco do que o som original (que é o que geralmente

acontece), para não “embolar” o som;

• Feedback: está relacionado com o número de repetições do som original. Esse parâmetro

permite ajustar o Delay para que repita o som 1 ou 10 vezes por exemplo; e

• Time: é o intervalo de tempo entre uma repetição e outra. Esse intervalo geralmente é

muito pequeno (na unidade de micro segundos), mas que pode chegar até 2,5 segundos

aproximadamente.

Page 29: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

18

Na Figura 17 são 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 ambientação ou reverberação ao som. Por exemplo, ao falar dentro

de uma sala pequena, a voz não irá se propagar por muito tempo, o que não acontece dentro de uma

Igreja. Esse efeito é muito utilizado nas gravações em estúdio.

Em Iazzetta (2000), é afirmado que "Em um ambiente qualquer, as ondas sonoras são

refletidas ao encontrarem uma superfície refletora. Essas primeiras reflexões (early reflections) são

seguidas de outras reflexões menos intensas e mais atrasadas em relação ao sinal inicial. A soma de

todas esses componentes cria o efeito de reverberação”. O Reverb é classificado em relação ao tipo

de espaço simulado, os principais são:

• Room: simula a reverberação de uma sala ou quarto pequeno;

• Hall: simula a reverberação de uma sala maior, como uma Igreja; e

• Plate: simula a reverberação de um lugar aberto.

Seus principais parâmetros são:

• Time: permite ajustar a duração da reverberação;

• Tone: responsável pela equalização do efeito; e

• Mix ou Level: é a intensidade do efeito Reverb.

Na Figura 18, é ilustrado um pedal de Reverb.

Page 30: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

19

Figura 18. Pedal de Reverb

Fonte: Adaptado de Boss (2007).

Na Figura 19 são 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 dinâmica do som. Esse processamento é feito

reduzindo o alcance dinâmico3 de um sinal e os picos de intensidade sonora, o que diminui a

diferença entre as passagens fortes e fracas de um sinal. Por exemplo, ao palhetar as cordas da

3 Alcance dinâmico: Relação entre o maior e o menor nível do sinal.

Page 31: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

20

guitarra com força ou suavemente, a intensidade do som não irá alterar significativamente. Na

Figura 20 é ilustrado um pedal de compressão.

Figura 20. Pedal de compressão

Fonte: Adaptado de Behringer (2007).

Os principais parâmetros encontrados em pedais de compressão são:

• Tone: responsável pela equalização 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 sustentação ou prolongação do efeito.

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

compressor aplicado.

Page 32: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

21

Figura 21. Onda sonora do efeito Compressor

2.1.3.6 Equalizador

O equalizador atua diretamente na intensidade de freqüências do som, aumentando ou

diminuindo a intensidade de certas faixas de freqüência. Em amplificadores de guitarras e pedais de

distorção, geralmente são encontrados três botões para ajustar a freqüência: Low, Mid e High. O

controle Low lhe permite ajustar a intensidade das freqüências graves, o Mid as freqüências médias

e o High as freqüências agudas (HARMONY CENTRAL, 2007).

Conforme Izecksohn (2005), também existem os equalizadores gráficos, que podem possuir

de quatro a vinte parâmetros de equalização, o que possibilita um ajuste mais refinado e preciso. A

faixa de freqüência de equalização 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 gráfico.

Page 33: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

22

Figura 22. Pedal de equalização

Fonte: Adaptado de Behringer (2007).

Os principais parâmetros encontrados em pedais de compressão são:

• Level: intensidade do efeito; e

• Sliders de equalização: ajustam os parâmetros da freqüência em questão.

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

equalizador aplicado. Nesse exemplo, as freqüências altas foram realçadas e as freqüências baixas

atenuadas.

Figura 23. Onda sonora do efeito Equalizador

Page 34: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

23

2.1.3.7 Distorção

O efeito de distorção, como o próprio 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 fenômeno de distorção de um sinal está

relacionado ao enriquecimento do espectro de freqüências, ou seja, quanto mais distorcido estiver o

sinal, maior será o número de componentes espectrais”. A distorção pode ser dividida em duas

categorias: Overdrive e Distortion.

Overdrive é uma saturação4 mais leve no som da guitarra, se comparado ao Distortion.

Como o Overdrive possui um ganho médio ou fraco, a dinâmica do guitarrista é valorizada, pois o

som altera bastante com a performance instrumental.

O Distortion possui mais ganho ou saturação do que o Overdrive, o que o torna um efeito

mais “pesado” e agressivo. Pelo fato do alto ganho, a dinâmica do guitarrista não influencia muito

no resultado final do som. Na Figura 24a, é ilustrado um pedal de Overdrive, e na Figura 24b, um

pedal de distorção.

(a) (b)

Figura 24. (a) Pedal de Overdrive; (b) Pedal de Distorção

Fonte: Adaptado de Boss (2007).

4 Ocorre quando a intensidade do sinal ultrapassa sua capacidade máxima permitida.

Page 35: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

24

Os principais parâmetros dos efeitos Overdrive e Distortion são os mesmos:

• Gain/Dist/Drive: permite ajustar o ganho da saturação;

• Tone: é um equalizador que filtra freqüências agudas; e

• Level: é a intensidade geral do efeito.

Na Figura 25a são ilustradas duas ondas sonoras, na qual a inferior possui o efeito

Overdrive aplicado. Já na Figura 25b, a onda inferior possui o efeito de distorção.

(a) (b)

Figura 25. (a) Onda sonora do efeito Overdrive; (b) Onda sonora do efeito Distorção

2.2 Softwares Similares

Neste tópico, serão apresentados softwares similares à proposta deste TCC, a fim de levantar

as características 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 vários efeitos de

guitarra no seu computador, como Chorus, Reverb, Distorção, entre outros, além de possuir

ferramentas interessantes, como redutor de ruídos, metrônomo5, gravador de som e opção de tocar

5 Instrumento que marca o andamento de uma peça musical.

Page 36: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

25

junto com playbacks6. Também é utilizado o driver de som ASIO4ALL (ASIO para todos) para

diminuir a latência7 do processamento sonoro. Todos os plugins VST incluídos são freeware, assim

como o Guitar R.A. A tecnologia VST foi criada pela empresa Steinberg, que a tornou pública para

que desenvolvedores possam utilizá-la para criar seus próprios 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 latência entre o processamento do sinal de entrada

e sua saída é muito pequena. O software foi desenvolvido pelo russo Sasha Gojkovic utilizando a

tecnologia DirectSound para acesso rápido à placa de som, além de algoritmos DSP rápidos e

6 Sonorização de uma música sem a presença da voz do cantor(a) ou de algum instrumento musical. 7 Diferença de tempo entre o início de um evento e o momento em que seus efeitos tornam-se perceptíveis.

Page 37: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

26

otimizados. Entre eles, estão 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 versão de demonstração 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 através dos drivers ASIO/WDM ou na plataforma

Macintosh através do CoreAudio. O software permite o uso de dezesseis módulos simultaneamente,

que possuem funções de pré-amplificadores, amplificadores de potência, auto-falantes, Delay,

simulador de ambiente, Chorus, Reverb, Tremolo, compressor, equalizador gráfico, auto-Wah, entre

outros (ALIEN CONNECTIONS, 2005).

Algumas combinações, (presets), pré-definidos acompanham o software, para facilitar a

manipulação dos módulos. O Revalver também foi desenvolvido com a tecnologia VST

disponibilizada pela Steinberg. Uma versão de demonstração do programa está disponível no site do

Page 38: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

27

fabricante para download, que possui todas as funcionalidades do programa habilitadas, porém é

emitido um ruído 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 características dos Softwares similares e do

Software proposto neste trabalho.

Tabela 2. Resumo dos Softwares Similares

Software Tecnologia Free Interoperabilidade ASIO Plataforma Guitar R.A. VST Sim Sim Sim Win FX BOX DirectX Não Não Não Win Revalver VST Não Sim Sim Win/Mac Software implementado VST Sim Sim Sim Win

Page 39: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

28

2.3 Bibliotecas de Som e linguagens de Programação

Nesse item, serão apresentadas as principais bibliotecas e API’s (Application Programming

Interface) atualmente utilizadas para programação e desenvolvimento de aplicações voltadas à

música, e processamento e manipulação de áudio. Essa pesquisa fez-se necessária para a

comparação entre as tecnologias disponíveis, a fim de escolher a mais apropriada para o

desenvolvimento do software proposto.

2.3.1 DirectX

DirectX é uma coleção de bibliotecas multimídia desenvolvidas pela Microsoft, muito

utilizada em programação de jogos para rodar na plataforma Windows. Ela possui uma biblioteca

chamada DirectSound, com diversas funções para manipulação de áudio. A Microsoft disponibiliza

gratuitamente o SDK (Software Development Kit) da DirectX para download em seu site, que

permite utilizar linguagens de programação como C++, C# e VB.net (MICROSOFT, 2007).

O DirectX permite a criação de plugins de áudio, que podem ser utilizados em vários

programas como Band in a Box, Cakewalk Sonar, Cubase, Cool Edit, etc.

2.3.2 SDL (Simple DirectMedia Layer)

O SDL é uma biblioteca multimídia multi-plataforma que possibilita a manipulação de som

e vídeo. Ela pode ser programada em várias linguagens, como C++, C#, Java, PHP, Perl, Python,

Ruby, dentre outras (SDL, 2006).

Foi lançada em 1998 pelo desenvolvedor de jogos Sam Lantinga, e é distribuída sobre a

licença LGPL, que permite utilizá-la em programas proprietários sem custo algum, porém 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 código 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 várias plataformas como Windows, Unix, Macintosh, etc. O SDK

fornece recursos muito simples para gravar e tocar sons, além de bibliotecas de entrada e saída de

áudio, onde os programas desenvolvidos podem ser testados (PORTAUDIO, 2006).

Page 40: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

29

Vários 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 manipulação de áudio cuja estrutura de

classes é muito parecida com a OpenGL (Open Graphics Library). Assim como o DirectX e a SDL,

ela também é muito utilizada no desenvolvimento de jogos e aplicações de áudio, geralmente

combinada com o OpenGL (OPENAL, 2006).

A Creative Labs incluiu extensões ao OpenAL como EAX e XRAM, que possibilitaram

uma extensão para efeitos de áudio. Essas extensões foram introduzidas no OpenAL para

disponibilizar uma plataforma genérica com suporte a efeitos DSP avançados (CREATIVE, 2007).

2.3.5 VST

VST (Virtual Studio Technology) é uma tecnologia desenvolvida pela Steinberg em 1996

para a criação de plugins, cuja função é processar áudio e MIDI em tempo real com alta qualidade

sonora. Os plugins VST tornaram-se um padrão na indústria de desenvolvimento de aplicativos e

softwares para áudio e música, podendo ser utilizados em diversos softwares, como Logic Audio,

Cubase SX, Pro Tools, Nuendo, Cakewalk Sonar, Fruity Loops, entre outros (JÚNIOR, 2005).

Um plugin VST não é uma aplicação 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, não sendo necessário um processador

dedicado ao processamento digital de sinal. O sinal a ser processado pelo plugin é quebrado em

vários blocos, no qual o programa host é o responsável em definir seu tamanho, e enviá-los na

seqüência correta para o plugin (STEINBERG, 2007).

Do ponto de vista do host, o plugin VST é uma caixa preta com um número de entradas,

saídas e parâmetros associados, não sendo necessário 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 traduções para

Page 41: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

30

linguagens de programação como Delphi e Java, criando mais opções para os programadores,

porém perde-se a compatibilidade com vários sistemas operacionais. No Windows por exemplo, um

plugin VST é um arquivo com extensão “.DLL”.

Na Figura 29, demonstra-se a comunicação entre um programa host e um plugin VST, na

qual o host passa o áudio e parâmetros para o plugin, que processa o áudio recebido e devolve o

som processado para o host.

Figura 29. Comunicação Host – VST

O processamento de áudio no plugin é feito através de três métodos, chamados process(),

processReplacing() e processDoubleReplacing(). O método process(), recebe o som do host, aplica

o algoritmo de processamento, e adiciona o resultado no buffer de saída (output) acumulando o sinal

original, enquanto os métodos processReplacing() e processDoubleReplacing(), sobrescrevem o

buffer de saída.

Para criar a interface do plugin, existe um framework8 denominado VSTGUI, que está

incluído no SDK. O VSTGUI permite ao desenvolvedor separar a interface do plugin do código de

processamento sonoro, o que facilita a portabilidade e a programação. A interface também pode ser

padronizada pelo host através de métodos que retornam o número de parâmetros, nome dos labels,

etc, permitindo ao host criar interfaces dinâmicas para os plugins.

8 Conjunto de elementos e suas interligações constituindo a base de um sistema ou projeto.

Page 42: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

31

Na Figura 30, é ilustrado o programa VstHost e um plugin de distorção chamado Soul Force,

onde pode-se notar duas interfaces, sendo uma própria 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 programação de plugins VST, existem softwares como SynthEdit9 (Figura

31a), SynthMaker10 (Figura 31b) e Quantum Fx11 (Figura 31c). Esses softwares possuem blocos e

módulos pré-definidos de processamento de áudio, que podem ser conectados para formar blocos

maiores, criando seus próprios plugins. Com o diagrama montado, é possível criar a interface

gráfica do plugin adicionando botões e controles para ajustar seus parâmetros. Esses plugins podem

ser exportados para uma DLL, que pode ser utilizada em qualquer software que possua suporte à

tecnologia VST.

9 Mais detalhes disponíveis em http://www.synthedit.com 10 Mais detalhes disponíveis em http://synthmaker.co.uk/index.html 11 Mais detalhes disponíveis em http://www.quantum-fx.com

Page 43: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

32

(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.

Também existem os plugins VSTi (Virtual Studio Technology Instrument), que são

conhecidos como instrumentos virtuais. Um plugin VSTi pode simular e sintetizar o som de

diversos instrumentos como piano, guitarra, bateria, violão, violino e trompete, enquanto os plugins

VST não têm 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 não irá passar o som para o plugin

processar, e sim informações MIDI. Como exemplo, é possível citar o EZ Drummer (Figura 32) da

Toontrack, que é uma bateria virtual. O host apenas passa as informações MIDI para o plugin, e ele

se encarrega de processar a informação e tocar o som correspondente. No caso de uma bateria, cada

nota musical MIDI corresponde a uma peça da bateria.

Page 44: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

33

Figura 32. Bateria virtual EZ Drummer

Fonte: Plugin EZ Drummer.

A Tabela 3 mostra a relação entre as notas musicais e as peças da bateria.

Tabela 3. Peças da bateria virtual EZ Drummer

Nota Peça Dó Bumbo Dó# Baqueta Ré Caixa Ré# Aro da caixa Mi Caixa 2 Fá Surdo Fá# Chimbal fechado Sol Tom 3 Sol# Chimbal semi aberto La Tom 2 La# Chimbal aberto Si Tom 1

Page 45: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

34

2.3.6 JUCE

JUCE (Jules Utility Class Extensions) é uma coleção 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 criação de interfaces

gráficas, manipulação de imagens, áudio, arquivos XML e têm uma ótima integração 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 manipulação de áudio digital, para

superar as limitações das tecnologias originais oferecidas pelos sistemas operacionais (RATTON,

2002).

Atualmente o ASIO está presente na maioria das placas de som profissionais ou semi-

profissionais, 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

Page 46: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

35

A maior vantagem do ASIO é a pequena latência de processamento no som, que não é

possível em todas as placas de som. Por exemplo, para se tocar um instrumento virtual através de

um controlador MIDI com uma placa de som sem suporte ao ASIO, a latência ou atraso do

processamento de som poderá será maior que 50ms, o que torna essa tarefa inviável para gravações

ou performances ao vivo. Já com uma placa com ASIO, essa latência diminui para menos de 5ms, o

que torna o atraso quase imperceptível ao ouvido humano. (RATTON, 2002).

Para computadores com placas de som onboard ou com placas que não possuem suporte

nativo ao ASIO, existe uma solução em software denominada ASIO4ALL.

O ASIO4ALL é um software desenvolvido pelo engenheiro elétrico Michael Tippach, que

age diretamente no núcleo 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á disponível para download gratuitamente no site http://www.asio4all.com.

O software possui apenas 284 KB, e é extremamente fácil de ser instalado e configurado. Na

Figura 34, é mostrada a tela de configuração do ASIO4ALL.

Figura 34. Tela de configuração do ASIO4ALL

Fonte: Software ASIO4ALL.

Page 47: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

36

2.4 Considerações

No Capítulo 2, foi apresentada uma revisão bibliográfica sobre Computação Musical, com o

objetivo de expor os principais conceitos e características dessa área da Ciência da Computação que

pode ser largamente explorada.

A pesquisa sobre softwares similares fez-se necessária para demonstrar que já existem

algumas soluções disponíveis, e para situar esse trabalho em seu devido contexto.

Através da pesquisa realizada em busca de tecnologias de processamento sonoro, conclui-se

que existem várias opções. 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

específico para tratamento de áudio e por ser bem documentado, bem como sua compatibilidade

entre diversos softwares da área.

A próxima etapa deste trabalho consiste em descrever o desenvolvimento do software, na

qual são apresentados os requisitos, modelagem e desenvolvimento do mesmo.

Page 48: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

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 conexão

entre guitarra e computador seja possível, é necessário o uso de um adaptador de plug P10 para P2,

ilustrado na Figura 35.

Figura 35. Adaptador P10 x P2

Na seção Modelagem do Sistema, está descrita a modelagem do software, que abrange

diagramas de casos de uso, classe, seqüência e componentes, bem como o levantamento de

requisitos e as regras de negócio. Na seção Implementação, serão explicadas as telas do sistema

juntamente com suas funcionalidades e questões técnicas referentes à programação e

implementação do software proposto.

3.1 MODELAGEM DO SISTEMA

Em Melo (2004, p.31) é frisado que “é indiscutível que a UML se tornou um padrão de

mercado para modelagem de sistemas no paradigma da orientação a objetos”. Desta forma, foi

utilizada a ferramenta Case Enterprise Architect baseado na UML para a modelagem do software.

Foram definidos requisitos funcionais e não funcionais, regras de negócio, diagramas de

casos de uso, classe, componentes e seqüência.

3.1.1 Levantamento de Requisitos

O levantamento de requisitos refere-se ao processo de compreensão 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:

Page 49: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

38

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 utilização dos efeitos simultaneamente;

• RF03: Os efeitos deverão ter controles de ajuste de parâmetros individuais;

• RF04: Deverá ser possível salvar as configurações (presets) dos efeitos, para que não

seja necessário ajustar os parâmetros toda vez ao iniciar o programa;

• RF05: O sistema deverá possibilitar ao usuário a opção de escolha das entradas (input) e

saídas (output) de som do sistema; e

• RF06: A ordem e ligação entre os plugins VST poderão ser definidas pelo usuário.

3.1.1.2 Requisitos Não Funcionais

• RNF01: O sistema deverá ser compatível com o sistema operacional Windows XP;

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

• RNF03: O sistema deverá ser compatível com o driver de som ASIO4ALL; e

• RNF04: O sistema deverá permitir a utilização de outros plugins VST já existentes, que

não serão implementados nesse trabalho.

3.1.1.3 Regras de Negócio

• 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 serão apresentados os diagramas de Caso de Uso, Classe, Seqüência e

Componentes, bem como os protótipos de telas.

12 Essa ordem foi estabelecida conforme o fluxo de processamento do sinal de áudio na maioria das pedaleiras e pedais ligados em série.

Page 50: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

39

3.1.2.1 Diagrama de casos de uso

Segundo Pender (2004, p. 307),

O diagrama de caso de uso (Use Case), é um elemento gráfico exclusivo, pois é um diagrama usado para modelar o modo como as pessoas esperam usar um sistema. O diagrama descreve quem serão os usuários relevantes, os serviços que eles exigem do sistema e os serviços que eles precisam oferecer ao sistema.

Os diagramas de caso de uso deste trabalho estão divididos em quatro pacotes:

Configuração, Seleção de Efeitos, Ajuste de Parâmetros e Exportação/Importação de presets, que

estão representados na Figura 36.

Figura 36. Diagrama de Casos de Uso

Pacote 01: Configurações

No pacote Configurações, está modelada a parte de configuração de áudio do software. Na

Figura 37 é ilustrado o Diagrama de Caso de Uso Configurações.

Page 51: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

40

Figura 37. Diagrama de Caso de Uso – Configurações

Relações

• RF05: O sistema deverá possibilitar ao usuário a opção de escolha das entradas (input) e

saídas (output) de som do sistema.

Cenários

Fluxo Principal: Configurar o som do sistema

1. O sistema apresenta uma tela de configuração de áudio para o usuário (TELA 02);

2. O usuário seleciona as entradas de som (input);

3. O usuário seleciona as saídas de som (output);

4. O usuário seleciona o sampleRate e o buffer size;

5. O usuário clica no botão para fechar a tela; e

6. O sistema salva as configurações em um arquivo de configuração.

Pacote 02: Seleção de Efeitos

O pacote Seleção de Efeitos descreve a seleção ou ativação/desativação dos efeitos. Na

Figura 37 é ilustrado o Diagrama de Caso de Uso Seleção de Efeitos.

Page 52: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

41

Figura 38. Diagrama de Caso de Uso – Seleção de Efeitos

Relações

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

Delay e Reverb;

• RF02: O sistema deverá permitir a utilização dos efeitos simultaneamente; e

• RF06: A ordem e ligação entre os plugins VST poderão ser definidas pelo usuário.

Cenários

Fluxo Principal: Selecionar Efeitos

1. O sistema apresenta a tela principal (TELA 01);

2. O usuário clica no botão Play para iniciar o processamento;

3. O usuário clica em algum preset;

4. Se existir o preset salvo em disco, o sistema o exibe na tela;

5. O usuário adiciona os efeitos desejados com o botão direito do mouse ou arrastando e

soltando um plugin na tela; e

6. O usuário ativa os efeitos que irá utilizar.

Fluxo de Exceção: Erro ao adicionar efeito

Se no passo 5 o efeito selecionado pelo usuário não existir, o sistema exibe a mensagem

"Erro ao criar plugin. O Plugin selecionado não existe.” (TELA 03).

Page 53: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

42

Pacote 03: Ajuste de Parâmetros

Esse pacote descreve o caso de uso de ajuste dos parâmetros dos efeitos sonoros. Cada efeito

possuirá parâmetros próprios que poderão ser ajustados, conforme a necessidade do usuário. Na

Figura 39 é ilustrado o Diagrama de Caso de Uso Ajuste de Parâmetros.

Figura 39. Diagrama de Caso de Uso – Ajuste de Parâmetros

Relações

• RF03: Os efeitos deverão ter controles de ajuste de parâmetros individuais.

Cenários

Fluxo Principal: Ajuste de parâmetros

1. O sistema apresenta a tela principal (TELA 01);

2. O usuário seleciona o efeito com duplo clique do mouse;

3. O sistema apresenta tela com interface do plugin; e

4. O usuário faz ajuste nos parâmetros do plugin.

Pacote 04: Exportação/Importação

Esse pacote possui dois cenários: Exportação e Importação. O caso de uso de Exportação

descreve o processo de salvar um preset definido pelo usuário, enquanto o caso de uso de

Importação descreve o processo para abrir um preset já salvo. Na Figura 40 é ilustrado o Diagrama

de Caso de Importação/Exportação.

Page 54: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

43

Figura 40. Diagrama de Caso de Uso – Importação/Exportação

Relações

• RF04: Deverá ser possível salvar as configurações (presets) dos efeitos, para que não

seja necessário ajustar os parâmetros toda vez ao iniciar o programa.

Cenários

Fluxo Principal: Exportar Preset (Cenário 1)

1. O usuário clica no menu "Arquivo => Salvar Como..." (TELA 01);

2. O sistema apresenta tela de seleção de diretório e nome do arquivo (TELA 04);

3. O usuário digita o nome do arquivo e seleciona o diretório;

4. O usuário clica em salvar; e

5. O sistema salva o arquivo na pasta selecionada.

Fluxo de Exceção: Nome incorreto ou em branco

Se no passo 4 o nome do arquivo possuir caracteres inválidos, o sistema exibe mensagem "O

nome do arquivo acima é inválido!", (TELA 03), e retorna ao passo 3.

Page 55: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

44

Fluxo Principal: Importar Preset (Cenário 2)

1. O usuário clica no menu "Arquivo => Abrir" (TELA 01);

2. O sistema apresenta tela de seleção de diretório e nome do arquivo (TELA 05);

3. O usuário seleciona o arquivo desejado;

4. O usuário clica em Abrir; e

5. O sistema abre o arquivo selecionado.

Fluxo de Exceção: Arquivo inválido

Se no passo 5, o arquivo for inválido, o sistema exibe mensagem "Arquivo inválido ou

corrompido!", (TELA 03), e retorna ao passo 3.

3.1.2.2 Diagrama de classes de negócio

O diagrama de classes tem como objetivo ilustrar os atributos e métodos das principais

classes do sistema, assim como os tipos de associações 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 negócio, que ilustra as classes participantes do

domínio do sistema e seus respectivos relacionamentos.

Figura 41. Diagrama de Classes de Negócio: Host

Page 56: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

45

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 responsáveis pela

interface do plugin, e as demais responsáveis pelas funcionalidades do plugin.

A classe principal é a PluginVST, que é uma especialização da classe AudioEffectX, que

por sua vez é uma especialização da classe AudioEffect. É na classe PluginVST que o programador

define o nome do plugin, quantos e quais serão seus parâmetros, as funções ProcessReplacing() e

ProcessDoubleReplacing() - que são responsáveis pelo processamento do som -, entre outras

características básicas do plugin. Já as classes AEffEditor e AEffGUIEditor, são responsáveis pela

interface gráfica do plugin.

Devido ao grande número de métodos e atributos presente nas classes, apenas a classe

PluginVST está com todos seus membros ilustrados no diagrama.

Em anexo, está o código 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.

Page 57: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

46

Figura 42. Diagrama de Classes do Plugin VST

3.1.2.3 Diagrama de classes de projeto

Na etapa de implementação 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 número de classes do programa host aumentou consideravelmente. Este diagrama de

classes está ilustrado na Figura 43.

Page 58: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

47

Figura 43. Diagrama de Classes de Projeto: Host

. Diagrama de Classes de Projeto: Host

Page 59: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

48

Onde:

• TelaPrincipal: principal tela do sistema;

• PainelPrincipal: painel que possui os botões de presets, Play, Stop e Bypass, e suas

respectivas funcionalidades;

• PainelInterno: painel onde são desenhados os plugins;

• AudioDeviceSelectorComponent: classe nativa do JUCE para selecionar o dispositivo de

áudio (tela de configurações);

• PluginListWindow: tela responsável por listar e gerenciar os plugins disponíveis;

• FiltroNaTela: possui informações sobre o plugin que está desenhado na tela;

• PluginWindow: tela que apresenta a interface gráfica dos plugins;

• ControlePlugins: classe que gerencia os presets em memória e arquivos XML;

• ConexaoEntreFiltros: guarda as informações sobre as conexões 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.

3.1.2.4 Diagrama de seqüência

Foi elaborado um diagrama de seqüência sobre a interação do usuário com o software, que

engloba os principais casos de uso. O diagrama descreve o processo do usuário configurar o áudio

do sistema, ajustar os parâmetros dos efeitos, e salvar o preset em disco, conforme ilustra a Figura

44.

Page 60: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

49

Figura 44. Diagrama de Seqüência

Page 61: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

50

3.1.2.5 Diagrama de Componentes

Foi elaborado um diagrama de componentes para ilustrar os principais arquivos que compõe

o software. Cada plugin VST será um arquivo com extensão DLL, enquanto o programa principal

(encarregado por fornecer o som para os plugins), será um arquivo executável do Windows.

Figura 45. Diagrama de Componentes

3.1.2.6 Protótipos de Telas

Esta seção apresenta os protótipos de telas do sistema, citadas na descrição dos casos de uso

através da referência TELA seguidas de um seqüencial de identificação.

Page 62: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

51

TELA 01 - Tela Principal

É a tela principal do sistema, na qual o usuário terá acesso aos plugins VST e as demais telas

do sistema.

Figura 46. Protótipos de Tela: Tela Principal (TELA 01)

Page 63: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

52

TELA 02 - Tela de Configurações

É a tela na qual o usuário terá a opção de selecionar as entradas e saídas de som do sistema.

Figura 47. Protótipos de Tela: Tela de Configurações (TELA 02)

TELA 03 - Tela de Mensagem Padrão

Tela de mensagem, na qual serão exibidas informações para o usuário.

Figura 48. Protótipos de Tela: Tela de Mensagem (TELA 03)

Page 64: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

53

TELA 04 - Tela de Diálogo

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

Figura 49. Protótipos de Tela: Tela de Diálogo (TELA 04)

3.2 IMPLEMENTAÇÃO

A etapa de implementação compreendeu a codificação do projeto do sistema, através da

linguagem de programação C++, consolidando o projeto elaborado em um produto final.

Para o desenvolvimento dos efeitos e do software host, foi utilizado o ambiente de

programação Visual Studio 2008 da Microsoft e o VST SDK versão 2.4 da Steinberg. Para o

programa host, também foi utilizado o SDK ASIO versão 2.2 para obter uma baixa latência no

processamento sonoro e o SDK JUCE versão 1.45, que é responsável pela interface gráfica do

sistema.

Page 65: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

54

O ambiente de programação Microsoft Visual Studio 2008 foi escolhido pelo fato das três

tecnologias utilizadas (ASIO, JUCE e VST) possuírem projetos e exemplos desenvolvidos nele, o

que facilita a programação e a compilação do código fonte.

Os efeitos Chorus e Reverb foram implementados com o auxílio da ferramenta SynthEdit,

pois foram encontradas dificuldades para desenvolver algoritmos de filtros digitais e a transformada

de Fourier, técnicas necessárias para desenvolvimento desses efeitos.

Além 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 gráfica dos

plugins, foi utilizado o VSTGUI nativo do VST SDK, que é independente de plataforma.

As próximas seções descrevem as funcionalidades implementadas no programa host e

plugins e detalhes técnicos referentes à programação 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 Configurações.

3.2.1.1 Tela Principal

A Tela Principal é responsável por fazer a comunicação com os plugins e exibi-los

corretamente na tela. Funcionalidades como Importar e Exportar presets também estão atribuídos à

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 aplicações é o PluginHost, um projeto que possui as principais

funcionalidades de um programa host. Dessa forma, foram estudadas as classes e o código fonte do

PluginHost para aquisição do conhecimento necessário para o desenvolvimento do DK Guitar.

A estrutura de classes definida na modelagem do sistema foi mantida, porém novas classes

tiveram que ser criadas e adicionadas para facilitar a programação e para manter a consistência com

a estrutura do JUCE. Dessa forma, cada tela do software é um objeto de uma determinada classe.

Também foram adicionadas classes para desenhar componentes gráficos, como os fios conectores

Page 66: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

55

de plugins e os plugins minimizados na tela. A Figura 50 mostra o diagrama com classes nativas do

JUCE e classes do PluginHost, que são utilizadas no DK Guitar para a manipulação do áudio.

Figura 50. Diagrama de Classes do DK Guitar

Onde:

• AudioPluginInstance: classe base para criar uma instância de um plugin;

• BaseDoFiltroInterno: classe derivada da AudioPluginInstance que implementa métodos

utilizados pelas classes FiltroInternoAudioInput e FiltroInternoAudioOutput;

• VSTPluginInstance: instância de um plugin VST;

• FiltroInternoAudioInput: instância de um plugin do tipo Input; e

• FiltroInternoAudioOutput: instância de um plugin do tipo Output.

As classes responsáveis pelo processamento sonoro são nativas do JUCE, como

AudioPluginInstance e VSTPluginInstance, outras são do PluginHost, que foram aproveitadas e

modificadas para adicionar funcionalidades previstas na modelagem através dos requisitos

funcionais. Na Figura 51, está ilustrada a Tela Principal do software.

Page 67: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

56

Figura 51. Tela Principal

Os blocos “Audio Input” e “Audio Output” representam a entrada e saída de som

respectivamente. Já os blocos intermediários são plugins VST. Os cabos ou fios que estão

conectando os blocos entre si, são 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 conexão 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 saída de áudio, na

qual cada caixa de som receberá um sinal diferente.

Ao clicar com o botão direito sobre um plugin, é aberto um menu de contexto ilustrado na

Figura 52.

Page 68: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

57

Figura 52. Menu de contexto dos plugins

As opções do menu de contexto são:

• Excluir esse componente: remove o plugin da tela e exclui suas conexões caso existam;

• Desconectar todos os pinos: remove todas as conexões do plugin;

• Mostrar interface do plugin: abre uma tela com a interface do plugin. Caso a interface

não exista, é aberta uma tela de interface padrão do DK Guitar com os parâmetros do

plugin; e

• Mostrar todos os parâmetros: abre a tela padrão de plugins do DK Guitar.

Page 69: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

58

3.2.1.2 Tela de Configurações de Áudio

A Tela de Configurações (Figura 53) é utilizada para especificar as entradas e saídas de

áudio. Ela também possui um botão que abre a tela de configurações do driver ASIO4ALL, para

que o usuário possa definir configurações do driver de som.

Figura 53. Tela de Configurações

Os parâmetros da tela de configurações de áudio são:

• Audio device: lista os drivers de som disponíveis 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 padrão utilizado em softwares de gravação e reprodução de

áudio é 44.100 Hz;

• Áudio buffer size: define o tamanho do buffer de amostras sonoras. Quanto maior esse

buffer, maior será a latência do processamento sonoro;

• Active output channels: lista das saídas de áudio disponíveis no computador;

Page 70: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

59

• Active intput channels: lista das entradas de áudio disponíveis no computador;

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

• Midi Output: permite selecionar o dispositivo de saída MIDI.

As duas últimas opções não são utilizadas no software, mas foram mantidas por questões de

compatibilidade com o SDK JUCE. Com a implementação da tela de configurações, o requisito

funcional RF5 foi cumprido.

3.2.1.3 Presets

Para implementação dos presets, foi criada a classe ControlePlugins, que possui

funcionalidades para seu gerenciamento e controle. Cada preset é um arquivo XML com extensão

“.Preset”, que é carregado em memória quando o programa é iniciado. Uma vez na memória, o

usuário pode realizar alterações e salvá-los no computador.

Para facilitar a troca entre presets, foram definidos botões de acesso rápido que possuem

uma tecla de atalho para facilitar seu acionamento. A Tabela 4 ilustra a relação entre os presets,

teclas de atalho, botões e arquivos XML.

Tabela 4. Botões e teclas de atalho do Software DK Guitar

Botões Presets Teclas de Atalho Arquivos

Preset 1 F1 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 Espaço Bypass.Preset

Enter

Enter

Page 71: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

60

Ao clicar em um botão, o preset ativo é salvo em memória e o preset referente ao botão

clicado é carregado. Desta forma, o sistema permite ao usuário alterar ajustes de parâmetros sem a

necessidade de salvá-lo a cada troca de preset.

Para salvar ou carregar um preset salvo em disco, foi desenvolvida a opção “Arquivo” do

menu na tela principal, que possui opções 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 saídas de som

para cada efeito, possibilitando o processamento em stereo.

Page 72: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

61

As próximas seções abordam o processo de desenvolvimento e codificação, descrevendo as

interfaces gráficas, trechos de código fonte e parâmetros, além 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 técnica de estrutura de dados

denominada buffer circular, na qual os dados são armazenados e lidos de forma circular em um

vetor com tamanho limitado, onde a última posição do buffer é sucedida pela primeira. O som é

armazenado nesse buffer para ser posteriormente acrescentado ao som original, simulando o efeito

de Delay.

Os parâmetros implementados no plugin foram:

• Time: tempo entre as repetições do Delay;

• Feedback: quantidade de repetições;

• Level: intensidade do efeito; e

• On/Off: ativação e desativação do efeito.

Na Figura 55, está ilustrada a função processReplacing do plugin, onde é feito o

processamento sonoro.

Page 73: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

62

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 saídas 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. Código fonte do plugin Delay

O IF da linha 9 divide o fluxo do processamento em duas partes: caso o parâmetro fEnabled

seja maior que 0.5, o efeito de Delay é acrescentado ao som original, caso contrário as variáveis de

saída (out1 e out2) apenas recebem o sinal de entrada, não 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 utilização dos efeitos simultaneamente,

pois dessa forma, não é preciso retirar o plugin da conexão para desativá-lo. Nas linhas 20 e 21 está

o código 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 padrão no DK Guitar.

Page 74: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

63

(a) (b)

Figura 56. (a) Interface do Delay; (b) Interface padrão 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 equações matemáticas

aplicadas ao sinal de áudio, com propósito de modificar o formato da onda sonora. As equações

implementadas estão ilustradas a seguir:

Page 75: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

64

K = (2 * fGanho) / (1 - fGanho) Equação 1

X = ((1 + K) * X) / (1 + K * abs(X)) Equação 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 parâmetros implementados no plugin Overdrive foram:

• OverDrive: quantidade de saturação;

• Level: intensidade do efeito; e

• On/Off: ativação e desativação do efeito.

Na Figura 58, está ilustrada a função processReplacing do plugin, onde é feito o

processamento sonoro.

Page 76: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

65

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. Código fonte do plugin Overdrive

Nas linhas 16, 17, 19 e 20 estão implementadas as equações 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 padrão no programa DK Guitar.

Page 77: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

66

(a) (b)

Figura 59. (a) Interface do Overdrive; (b) Interface padrão do Overdrive no DK Guitar

Para a visualização gráfica da modificação 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

Page 78: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

67

3.2.2.3 Plugin Distortion

A implementação do efeito Distortion foi baseada nas equações do efeito Overdrive. Para

realizar modificações nestas equações, foi utilizado o programa SynthEdit. No SynthEdit foi criado

um bloco WavePlayer para reproduzir um arquivo wave, um bloco Waveshaper2, na qual é possível

expressar as equações matemáticas e um bloco SoundOut, para ouvir o resultado do processamento.

No bloco Waveshaper2, a equação resultante é a compilação das duas equações utilizadas na

implementação do Overdrive, na qual o parâmetro fGain foi substituído por valores numéricos.O

diagrama do SynthEdit está ilustrado na Figura 61.

Figura 61. Diagrama Distortion no SynthEdit

Depois de vários testes com diferentes valores, as equações do plugin Distortion ficaram da

seguinte forma:

Page 79: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

68

K = (2 * fGanho2) / (1 – fGanho2) Equação 3

X = ((fGanho1 + K) * X) / (fGanho1 + K * abs(X) ) Equação 4

Onde:

• fGanho1: quantidade do primeiro nível de saturação;

• fGanho2: quantidade do segundo nível de saturação; e

• X: sinal digital do áudio.

A Equação 3 do plugin Distortion permaneceu igual à Equação 1 do plugin Overdrive,

apenas o nome da variável foi alterado. A principal diferença ficou na Equação 4, onde a constante

1 foi substituída por uma variável. Desta forma o plugin Distortion possui dois parâmetros para

controlar o ganho. Os parâmetros que foram implementados no plugin Distortion são:

• Boost: quantidade de saturação da variável fGanho1;

• Gain: quantidade de saturação da variável fGanho2;

• Level: intensidade do efeito; e

• On/Off: ativação e desativação do efeito.

O código fonte do processamento sonoro do plugin Distortion está ilustrado na Figura 62.

Page 80: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

69

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. Código fonte do plugin Distortion

Nas linhas 18 e 23 está implementada a Equação 3, nas linhas 19 e 24 a Equação 4 e nas

linhas 20 e 25 é aplicada a intensidade de saída do efeito. Na Figura 63 está ilustrada a interface do

plugin Distortion, e sua interface padrão DK Guitar.

Page 81: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

70

(a) (b)

Figura 63. (a) Interface do Distortion; (b) Interface padrão do Distortion no DK Guitar

O arquivo sonoro utilizado para ilustrar o efeito de Overdrive também 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 após 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 parâmetro fTempo. Quanto menor for esse

parâmetro mais devagar será o efeito Tremolo.

Page 82: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

71

Os parâmetros 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 função 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. Código fonte do Plugin Tremolo

Nas linhas 17 e 18 o tremulo é acrescentado ao sinal original. O código “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 padrão no DK

Guitar..

Page 83: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

72

(a) (b)

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

Para que seja possível perceber a presença 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 gráfico 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 auxílio do programa SynthEdit, pois foram

encontradas dificuldades para desenvolver a transformada de Fourier para efetuar a modulação

necessária no sinal do áudio. No programa SynthEdit, foi utilizado o conhecimento adquirido sobre

o funcionamento do efeito Chorus (descrito na Fundamentação Teórica) para o desenvolvimento do

plugin. A interface gráfica criada seguiu o mesmo padrão dos outros plugins. Os parâmetros

implementados foram:

Page 84: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

73

• 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 saída do sinal sonoro;

• DCA: controla a intensidade do sinal;

• Oscillator: oscilador de baixa freqüência;

• Fixed Values: valores fixos; e

• Delay: componente de Delay ou atraso do sinal.

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

Stereo ligados à um botão On/Off para ligar e desligar o efeito. Quando o botão está acionado, o

Page 85: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

74

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 freqüência está ligado ao Delay para

fazer a modulação característica do efeito Chorus.

Para fazer a interface gráfica foi utilizado o mesmo layout do knob (potenciômetro) usado na

implementação dos outros plugins. Na Figura 69, está ilustrada a interface do plugin Chorus

implementada no software SynthEdit e sua interface padrão no DK Guitar.

(a) (b)

Figura 69. (a) Interface do Chorus; (b) Interface padrão 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

Page 86: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

75

3.2.2.6 Plugin Reverb

Assim como o Chorus, o plugin Reverb foi implementado com o auxílio do programa

SynthEdit. No SynthEdit, foram utilizados blocos de filtros digitais do tipo Comb e Allpass para o

desenvolvimento do Reverb. Os parâmetros implementados foram:

• Time: ajustar a duração ou tempo da reverberação;

• Tone: tonalidade ou equalização 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 saída do sinal sonoro;

Page 87: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

76

• 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 freqüências com a mesma

amplitude;

• LevelAdj: utilizado pelo parâmetro Mix do plugin para controlar a intensidade do efeito

Reverb no sinal original;

• DCA1 e DCA2: utilizado pelo botão On/Off para ativar e desativar o efeito; e

• Multiply: multiplica o valor do parâmetro 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 padrão no DK Guitar.

(a) (b)

Figura 72. (a) Interface do Reverb; (b) Interface padrão do Reverb no DK Guitar

Na Figura 73, a onda sonora inferior ilustra o resultado do efeito Reverb aplicado na onda

sonora superior.

Page 88: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

77

Figura 73. Onda sonora do Reverb

3.2.2.7 Plugin Volume

A função do plugin Volume implementado é de controlar a intensidade de saída do áudio.

Pode ser utilizado para obter uma diferença de intensidade necessária 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 parâmetro do plugin Volume é o fGain, que ajusta a intensidade de saída do sinal.

Na Figura 74, está ilustrada a função 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. Código fonte do plugin Volume

Nas linhas 11 e 12 o sinal de entrada é multiplicado pelo parâmetro fGain do plugin,

alterando a amplitude do sinal. Na Figura 75 está ilustrada a interface do plugin Volume no

programa DK Guitar.

Page 89: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

78

Figura 75. Interface do Volume

Na parte superior da Figura 76 está ilustrada uma onda sonora, na qual a segunda onda é o

resultado da utilização do plugin Volume.

Figura 76. Onda sonora do Volume

3.3 TESTES E VALIDAÇÃO

O processo de testes e validação do sistema foi dividido em duas etapas, sendo que a

primeira ocorreu em paralelo ao desenvolvimento e a segunda após a implementação.

Para a utilização do software, é necessário um computador com placa de som e sistema

operacional Windows XP ou Windows Vista. Dependendo da capacidade da placa de som, a

utilização do driver ASIO4ALL torna-se indispensável para um processamento em tempo real.

O software DK Guitar e os plugins VST foram testados em dois computadores com

diferentes configurações e placas de som, conforme ilustrado na Tabela 5.

Tabela 5. Configuração dos computadores utilizados nos testes

Computador S.O. Processador Memória Placa de som Onboard (Asus) Creative AUDIGY 2 ZS 7.1

PC Desktop Windows XP

AMD 2.2GHz

1GB

Behringer Guitar Link UCG102 Onboard (NVidia) Notebook HP Windows

Vista AMD Dual Core 1.9GHz

2GB Behringer Guitar Link UCG102

Page 90: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

79

O software funcionou perfeitamente em todas as configurações acima. O driver de som

utilizado foi o ASIO4ALL versão 2.8 para todas as placas de som. Em nenhum dos testes, foi

detectado algum atraso significativo no processamento de áudio que inviabilizasse a utilização do

DK Guitar em tempo real.

Também foram testadas utilizações 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

Não foram realizadas comparações das ondas sonoras produzidas pelos plugins com ondas

sonoras resultantes da utilização de pedais reais, mas auditivamente o resultado sonoro dos efeitos

implementados são semelhantes ao som de pedais e pedaleiras que existem no mercado.

Page 91: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

4 CONCLUSÕES

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 Ciência da Computação

e propiciar o desenvolvimento deste, foram levantados conceitos e utilizações sobre Computação

Musical, bem como uma revisão bibliográfica 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 aquisição de

conhecimento, a fim de determinar qual a melhor linguagem para o desenvolvimento do software

proposto. Optou-se pela utilização da tecnologia VST, pelo fato de ser um padrão utilizado em

muitos softwares da área. Outra vantagem é ela ser multi-plataforma e possuir boa documentação

disponível. As tecnologias JUCE e ASIO foram utilizadas em conjunto com a VST, com o intuito

de construir um software com uma interface amigável e com a menor latência possível no

processamento sonoro, para viabilizar sua utilização em tempo real.

A modelagem do software foi realizada com o auxílio da ferramenta Enterprise Architect,

seguindo os padrões da UML. Foram apresentados diagramas de Casos de Uso, classe,

componentes e seqüência, bem como o levantamento dos requisitos funcionais e não funcionais.

No processo de desenvolvimento, foram encontradas dificuldades para desenvolver

algoritmos de filtros digitais e a transformada de Fourier, técnicas necessárias para a implementação

de efeitos como Chorus e Reverb. Dessa forma, estes dois efeitos foram desenvolvidos com o

auxílio do software SynthEdit. Além dos cinco efeitos definidos nos requisitos funcionais, mais dois

foram desenvolvidos: Tremolo e Volume.

Considerando os objetivos deste trabalho, pôde-se verificar que todos foram cumpridos,

tendo em vista que o software concebido contempla os requisitos funcionais e não funcionais e os

diagramas de casos de uso definidos na modelagem. No entanto, o software desenvolvido pode ser

melhorado com a inclusão de novos recursos, que podem ser desenvolvidos em trabalhos futuros,

como:

• Desenvolvimento de novos efeitos como Flanger, Phaser e Equalizador;

Page 92: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

81

• Compilação do software e plugins em outros sistemas operacionais como Linux e Mac

OSX;

• Desenvolvimento de funcionalidades para operar o software através de um controlador

ou pedaleira MIDI conectada ao computador;

• Afinador digital;

• Gravador de som; e

• Osciloscópio para visualizar as ondas sonoras.

Page 93: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

REFERÊNCIAS BIBLIOGRÁFICAS

AUDIOCOURSES. Low Frequency Oscillator (LFO). 2007. Disponível em: <http://www.audiocourses.com/article1703.html>. Acesso em: 18 dez. 2007

ALIEN CONNECTIONS. Guitar FX-Box. 2005. Disponível em: <http://www.alienconnections.com/products_revalverii.htm>. Acesso em: 16 set. 2007.

BEHRINGER. Behringer. 2007. Disponível em: <http://www.behringer.com>. Acesso em: 20 out. 2007.

BOSS. Boss. 2007. Disponível em: <http://roland.com.br/boss>. Acesso em: 20 out. 2007.

BRITO, Teça Alencar de. Música na educação infantil: propostas para a formação integral da criança. 2. ed. São Paulo: Peirópolis, 2003.

CREATIVE. OpenAL SDK for Windows. 2007. Disponível em: <http://developer.creative.com/articles/article.asp?cat=1&sbcat=31&top=38&aid=45>. Acesso em: 18 set. 2007.

DANELECTRO. Danelectro. 2007. Disponível em: <http://www.danelectro.com/mini1.htm>. Acesso em: 20 out. 2007.

EDUCOM. O Som. 2007. Disponível em: <http://web.educom.pt/~pr1258/8ano/a6_som8ano.htm>. Acesso em: 28 out. 2007.

ELLIOTT, Rod. Digital Signal Processing. 2006. Disponível em: <http://sound.westhost.com/articles/dsp.htm>. Acesso em: 28 out. 2007.

GOJKOVIC, Sasha. Guitar FX-Box. 2002. Disponível em: <http://www.guitar-fxbox.com>. Acesso em: 16 set. 2007.

GORE, Joe. How to Record an Electric Guitar on Your Mac. 2007. Disponível em: <http://www.apple.com/pro/techniques/connectingguitar>. Acesso em: 16 out. 2007.

HARMONY CENTRAL. Effects Explained. 2007. Disponível em: <http://www.harmony-central.com/Effects/effects-explained.html>. Acesso em: 16 dez. 2007.

IAZZETTA, Fernando. Tutoriais de Áudio e Acústica. 2000. Disponível em: <http://www.eca.usp.br/prof/iazzetta/tutor>. Acesso em: 20 set. 2007.

IZECKSOHN, Sérgio. Os Equalizadores. 2005. Disponível em: <http://www.homestudio.com.br/Artigos/Art016.htm>. Acesso em: 10 mar. 2008.

LUVIZOTTO, André Luiz; FURLANETE, Fábio Parra; MANZOLLI, Jônatas. Microfonia e Distorção na guitarra sob a ótica de Waveshaping. In: CONGRESSO DA ASSOCIAÇÃO NACIONAL DE PESQUISA E PÓS-GRADUAÇÃO EM MÚSICA (ANPPOM), 16., 2006, Brasília. PROGRAMA DE PÓS-GRADUAÇÃO MÚSICA EM CONTEXTO. Brasília, 2006. p. 262 - 267.

Page 94: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

83

MELO, Ana Cristina. Desenvolvendo aplicações em UML 2.0: do conceitual à implementação. 2. ed. Rio de Janeiro: Brasport, 2004.

MENDES, Eduardo. Projeto de Filtros Não-Recursivos (FIR). Disponível em: <www.cpdee.ufmg.br/~emmendes/fir.pdf>. Acesso em: 17 dez. 2007.

MICROSOFT. Introdução ao DirectX. 2007. Disponível em: <http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/DirectX.mspx>. Acesso em: 18 set. 2007.

MILETTO, Evandro Manara et al.Introdução à Computação Musical. In: CONGRESSO BRASILEIRO DE COMPUTAÇÃO, 4., 2004, Itajaí. Anais... Itajaí: Universidade do Vale do Itajaí, 2004.

MSP. Transformada de Fourier. 2008. Disponível em: <http://www.mspc.eng.br/matm/fourier_transf110.shtml>. Acesso em: 13 mai. 2008.

NEYRA-ARAOZ, Jorge H. Transformada de Fourier: fundamentos matemáticos, implementação e aplicações musicais. 2007. MAC 0337 – Computação Musical. IME-USP. Disponível em: <http://www.ime.usp.br/~kon/MAC5900/seminarios/seminario_Jorge.pdf>. Acesso em: 17 dez. 2007.

NOVO JÚNIOR, José Eduardo Fornari. Estudo e desenvolvimento de um sintetizador evolutivo de segmentos sonoros. 2006. Projeto Ircam-Brasil, processo 03/05993-6 (reunião cientifica), a ser executado em parceria entre o Núcleo Interdisciplinar de Comunicação Sonora (NICS) em Campinas, Brasil e o Institut de Recherche et Coordination Acoustique/Musique (IRCAM) em Paris, França - Núcleo Interdisciplinar de Comunicação Sonora. Universidade Estadual de Campinas, Campinas, 2006.

NUNES, Rafael Astuto Arouche; ALBUQUERQUE, Marcelos Portes de; ALBUQUERQUE, Márcio Portes de. Introdução a processadores de sinais digitais. Disponível em: <http://www.cbpf.br/~rastuto/pdf/NT-CBPF001-2006.pdf>. Acesso em: 17 dez. 2007.

OLIVEIRA, Hélio Magalhães. Análise de Fourier e Wavelets: sinais estacionários e não estacionários. 1.ed. Editora universitária UFPE, 2007.

OPENAL. OpenAL. 2006. Disponível em: <http://www.openal.org>. Acesso em: 18 set. 2007.

PENDER, Tom. UML a Bíblia. São Paulo: Campus/Elsevier, 2004.

PORTAUDIO. Portable cross-platform Audio API. 2006. Disponível em: <http://www.portaudio.com>. Acesso em: 17 set. 2007.

RATTON, Miguel. Asio. 2002. Disponível em: <http://www.music-center.com.br/asio.htm>. Acesso em: 29 set. 2007.

RAW MATERIAL SOFTWARE. Juce. 2002. Disponível em: <http://www.rawmaterialsoftware.com/juce>. Acesso em: 14 abr. 2008.

SCANDELARI, Luciano. Filtros digitais. 2007. Disponível em: <http://www.pessoal.cefetpr.br/luciano/filtros.pdf>. Acesso em: 10 abr. 2008

Page 95: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

84

SDL. Simple DirectMedia Layer. 2006. Disponível em: <http://www.libsdl.org>. Acesso em: 17 set. 2007.

SENFONIMUZIK. Senfonimuzik. 2007. Disponível em: <http://www.senfonimuzik.com>. Acesso em: 20 out. 2007.

SMITH, Steve. The Scientist and Engineer's Guide to Digital Signal Processing. Disponível em: <http://www.dspguide.com/>. Acesso em: 17 dez. 2007.

STEINBERG. The Yvan Grabit developer resource. 2007. Disponível em: <http://ygrabit.steinberg.de/~ygrabit/public_html/index.html>. Acesso em 18 set. 2007.

VALENZUELA. FIR Filters. 2005. Disponível 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. Disponível em: <http://www.raphaelz.kinghost.net>. Acesso em: 18 set. 2007.

Page 96: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

GLOSSÁRIO

Alcance Dinâmico Relação entre o maior e o menor nível do sinal.

API Conjunto de rotinas e padrões estabelecidos por um software para utilização de suas funcionalidades por programas aplicativos.

ASIO Tecnologia criada pela Steinberg para melhorar a performance de processamento digital de áudio.

Buffer Região de memória temporária utilizada para escrita e leitura de dados.

Equalização Alterar a intensidade de certas freqüências do sinal de áudio.

Espectro Distribuição, no domínio das freqüências, do conjunto de todas as ondas que formam um som.

Framework Conjunto de elementos e suas interligações constituindo a base de um sistema ou projeto.

Latência Diferença de tempo entre o início de um evento e o momento em que seus efeitos tornam-se perceptíveis.

MIDI Tecnologia utilizada para representação de música em formato digital.

Modulação Processo de variação de altura, intensidade, freqüência ou duração de uma onda sonora.

Plugin Ferramentas que acrescentam funcionalidades a uma aplicação.

Saturação Ocorre quando a intensidade do sinal ultrapassa sua capacidade máxima permitida.

SDK Conjunto de ferramentas de desenvolvimento que permite criar aplicações para um determinado software.

VST Tecnologia criada pela Steinberg para produção de efeitos digitais e instrumentos virtuais.

Page 97: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

ANEXOS

Page 98: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

I CÓDIGO 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 bool getEffectName (char* name);

virtual bool getVendorString (char* text);

virtual bool getProductString (char* text);

virtual VstInt32 getVendorVersion ();

protected:

float fGain;

char programName[kVstMaxProgNameLen + 1];

};

#endif

Page 99: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

88

// 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'); // identificação

canProcessReplacing (); // supports replacing volume

canDoubleReplacing (); // supports double precision processing

fGain = 1.f; // default to 0 dB

vst_strncpy (programName, "Default", kVstMaxProgNameLen); // default

program name

}

//------------------------------------------------------------------------------

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;

}

Page 100: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

89

//------------------------------------------------------------------------------

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];

Page 101: Área de Computação Musical por Daniel Krueger Adhemar ...siaibib01.univali.br/pdf/Daniel Krueger.pdf · ... 9 2.1.3 Efeitos Digitais ... ASIO Audio Stream Input/Output DFT Discrete

90

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;

}

}