3.2 IMPLEMENTAÇÃO
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
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.
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. 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.
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 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
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