• Nenhum resultado encontrado

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA CURSO DE ENGENHARIA ELÉTRICA JOÃO VITOR BAZER MICROFONE DIGITAL

N/A
N/A
Protected

Academic year: 2021

Share "PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA CURSO DE ENGENHARIA ELÉTRICA JOÃO VITOR BAZER MICROFONE DIGITAL"

Copied!
50
0
0

Texto

(1)

CURSO DE ENGENHARIA ELÉTRICA

JOÃO VITOR BAZER

MICROFONE DIGITAL

CURITIBA

2019


(2)

MICROFONE DIGITAL

Implementação final apresentado ao

Curso de Graduação em Engenharia

Elétrica da Pontifícia Universidade

Católica

Orientador: Prof. Dr. Marcelo Eduardo

Pellenz

——————————————————

CURITIBA

2019


(3)

Figura 2 – Diagramas de blocos de um parâmetro em interação com a DAW 10

..

Figura 3 – Diagrama de blocos do funcionamento do sistema

...

10

Figura 4– Diagrama de blocos do script do plugin

...

12

Figura 5 – Diagrama de blocos da captação da resposta em frequência.

...

13

Figura 6– Resposta em frequência do microfone Shure SM57, fornecida pelo

fabricante

...

14

Figura 7 – Resposta em frequência do microfone Shure SM57, levantada pelo autor

14

...

Figura 8– Resposta em frequência do microfone Shure SM48, fornecida pelo

fabricante

...

15

Figura 9– Resposta em frequência do microfone Shure SM48, levantada pelo autor

15

...

Figura 10 – Resposta em frequência do microfone Beringher XM1800S, fornecida

pelo fabricante

...

16

Figura 11 – Resposta em frequência do microfone Beringher XM1800S, levantada

pelo autor

...

16

Figura 12– Resposta em frequência do microfone Beringher AKG P220, fornecida

pelo fabricante

...

17

Figura 13– Resposta em frequência do microfone AKG P220, levantada pelo autor

17

...

Figura 14 – Resposta em frequência do microfone sem fabricante, levantada pelo

autor

...

18

Figura 15 –Sistemas de múltiplos filtros aplicados a um sinal de áudio

...

19

Figura 16 –Sistemas de múltiplos filtros

...

19

Figura 17 – Resposta de um sistema após a passagem do filtro.

...

20

Figura 18 – Sistema LTI

...

21

Figura 19 – Diagrama geral do projeto

...

26

Figura 20 – Interface grafica do Audio Test Bench no Matlab

...

28

Figura 21 – Resposta ao impulso da simulação do AKG

...

31

Figura 22– Resposta ao impulso da simulação do Shure SM48

...

31

(4)

Figura 26– Resposta ao impulso da simulação do microfone sem fabricante 33

..

Figura 27– Resposta ao impulso da simulação do microfone sem fabricante 34

..

Figura 28 – Plugin desenvolvido dentro do Matlab

...

35

Figura 29 – Ferramenta de ajuste de latência

...

36

Figura 30 – Plugin desenvolvido dentro do Matlab

...

37

Figura 31 – Exemplo de um sistema embarcado de processamento digital de sinais.

40

...

(5)

2.INTRODUÇÃO

...

7

3.DETALHAMENTO DO PROJETO

...

8

3.1 COMO PLUGIN INTERAGE COM A DAW

...

8

3.2 ENTRADAS E SAÍDAS DO SISTEMA

...

10

3.3 DESENVOLVENDO E DEFINIDO UM PLUGIN NO AMBIENTE MATLAB 11

..

3.4 LEVANTAMENTO DE CAMPO

...

13

3.5 TÉCNICA UTILIZADA PARA ADQUIRIR OS FILTROS EQUIVALENTES A

RESPOSTA EM FREQUÊNCIA DO MICROFONE

...

18

3.6 CONVOLUÇÃO ENTRE A RESPOSTA AO IMPULSO DO MICROFONE E

UM SINAL DE ENTRADA

...

20

4.PROCEDIMENTOS DE TESTE E VALIDAÇÃO

...

21

4.1 TESTE E VALIDAÇÃO DO PONTO DE VISTA DO USUÁRIO

...

22

4.2 TESTE E VALIDAÇÃO DO PONTO DE VISTA DO SISTEMA

...

22

5.RISCOS

...

24

5.1 LATÊNCIA

...

24

5.2 SIGNAL DROPS (PERDAS DE SINAL) E SINAIS DE SILÊNCIO

...

25

6.DIAGRAMA DE BLOCOS GERAL DO PROJETO

...

26

7.PLANO DE TESTES

...

27

6.1 PRIMEIRO TESTE AUDIO TESTE BENCH

...

27

6.1.1 RESULTADO DO AUDIO TESTE BENCH

...

27

6.1.2 FUNCIONALIDADE VALIDADA PELO AUDIO TESTE BENCH

...

29

6.2 SEGUNDO TESTE PLOTAGEM DA RESPOSTA EM FREQUÊNCIA PÓS

PROCESSAMENTO

...

30

6.2.1 RESULTADO DA PLOTAGEM

...

30

6.2.2 FUNCIONALIDADE VALIDADA PELA PLOTAGEM

...

34

6.3 TERCEIRO TESTE IMPLEMENTAR O PLUGIN DENTRO DE UMA DAW 34

.

6.3.1 RESULTADO DA IMPLEMENTAÇÃO

...

35

6.3.2 FUNCIONALIDADE VALIDADA PELA IMPLEMENTAÇÃO

...

35

6.2 TERCEIRO TESTE PROCESSAMENTO EM TEMPO REAL

...

36

(6)

7.CRONOGRAMA ATUALIZADO

...

38

8.CONSIDERAÇÕES FINAIS OU CONCLUSÃO

...

39

8.TRABALHOS FUTUROS

...

39

8.1 MELHORIAS

...

40

9.REFERÊNCIAS

...

41

ANEXO A – CÓDIGO PARA LEVANTAMENTO DE CAMPO

...

42

ANEXO B – CÓDIGOS DO PLUGINS

...

44

(7)

1.RESUMO

O microfone digital é composto por um conjunto de hardware e/ou software

que fornece um sistema para a modelagem de microfones. A tecnologia é baseada

em técnicas de processamento digital de sinais por meio de um VST (Virtual Studio

Technology), software com formato capaz de ser utilizado nas principais DAW

(Digital Audio Workstations). Os filtros do software são modelados com o objetivo de

corrigir a reposta em frequência do microfone e para se obter uma determinada

resposta em frequência análoga a um microfone desejado. O hardware do

equipamento é composto por um microfone e um pré amplificador, modelados para

serem sem características, com transparência no sinal, e também atua como um

agente passivo no sistema, deixando o software influenciar na resposta em

frequência da captação de um evento sonoro. Pode-se utilizar a Audio Toolbox do

Matlab para desenvolver a aplicação, além disso sabe-se que precisamos de um

conversor A/D para se realizar a conversão do domínio analógico para digital e do

digital para o analógico.

(8)

2.INTRODUÇÃO

A captação de um evento sonoro específico, seja ele para a finalidade musical

ou para sistemas de comunicação, é realizada por meio de um transdutor

eletroacústico, conhecido como microfone. O microfone surgiu com a necessidade

de registrar longos discursos, porém, esse invento acabou interessando músicos

que gostariam de ter suas performances musicais registradas. Com o início das

gravações musicais, e o interesse em desenvolver tecnologia para o áudio, diversos

tipos de microfones surgiram, cada um para uma finalidade específica e com

características específicas. Os microfones são agentes diretos no timbre

(características únicas de um determinado som), modificando as características do

evento sonoro inicial, realizando atenuações e ganhos em determinadas

frequências, o que consequentemente altera o timbre de um determinado som. Com

o objetivo de obter um controle maior sobre a influência dos microfones na captação

de eventos sonoros, hardwares e softwares de controle e simulação são criados, e

com sua utilização atinge-se um resultado desejado. O documento em questão

descreve o detalhamento da construção de um plugin VST, a sua definição, como

ele interage com outros softwares de processamento, a linguagem de programação,

como os parâmetros do plugins serão desenvolvimentos, levantamento de campo da

características de microfones, resultados obtidos com o plugin o cronograma final do

projeto, os riscos de projeto a conclusão e os trabalhos futuros em que a aplicação

poderá ser utilizada

(9)

3.DETALHAMENTO DO PROJETO

O projeto em questão visa realizar o desenvolvimento de um plugin. Os

plugins são trechos de códigos independentes que podem ser “plugados” em outros

softwares. para aumentar as suas funcionalidades. Quando se trata de plugins de

áudio, esses podem ser utilizados para processamento digital de sinais, análises ou

síntese sonora. Com o intuito de facilitar a interação do usuário, plugins utilizam

interface gráficas para a interação humano-máquina, essas interfaces são chamadas

de "Widgets"

Para processar um streaming de dados de áudio a estação de trabalho de

áudio digital chama o plugin, o qual encapsula a entrada de áudio em um frame, e

recebe de volta os frames em uma saída de áudio processada. Quando um

parâmetro do plugin muda, por exemplo, quando você move um controle na "Widget"

do plugin, a DAW notifica o plugin do seu novo valor de parâmetro. Plugins

geralmente possuem sua própria interface gráfica, porém todas as DAWS, fornecem

uma interface genérica para todos os plugins.

3.1 COMO PLUGIN INTERAGE COM A DAW

Algumas considerações devem se levadas em conta no desenvolvimento de

um plugin, ele deve ser compatível com o ambiente da DAW, o ambiente interage

através da função de processamento, a função de reset e interface de propriedades

do plugin. Essas funções estão descritas abaixo:

•Inicialização e reset

O ambiente da DAW chama a função de reset do plugin pela primeira vez que

o plugin é usado, ou toda vez que a taxa de amostragem da DAW é modificado.

Geralmente utiliza-se uma função do tipo "getSampleRate" para adquirir os

parâmetros de taxa de amostragem do ambiente

•Processamento

O ambiente da DAW passa um frame de um sinal de áudio plugin. A DAW

determina o tamanho de cada frame. A função de processamento do plugin é

(10)

responsável por realizar o algoritmo de processamento de áudio baseado em

frames. A função de processamento do sinal é responsável por passar o sinal de

áudio processado para o ambiente da DAW. O processamento é realizado frame a

frame em um sinal de áudio.

•Parâmetros e propriedades

Os parâmetros são valores em constante mudança, eles são responsáveis por

mudar as caraterísticas do processamento digital de sinais, como por exemplo a sua

taxa de amostragem o tamanho do frame. As propriedades são valores fixos

definidos durante o desenvolvimento do plugin. Tipicamente as propriedades estão

sincronizadas com os parâmetros assim um plugin não modifica propriedades que

são associadas à parâmetros. Na figura abaixo podemos observar como as

diferentes funções interagem de um plugin interagem entre si.

Figura 1 – Diagramas de blocos de um plugin em interação com a DAW

(11)

Figura 2 – Diagramas de blocos de um parâmetro em interação com a DAW

Fonte: Documentação do Matlab; Disponível em: https://www.mathworks.com/help/audio/

3.2 ENTRADAS E SAÍDAS DO SISTEMA

O ambiente que o plugin funciona deve interagir com dispositivos de entrada

e saída, como por exemplo conversores de áudio analógico para digital e digital para

analógico, além disso para que não aconteça atrasos no sistema ele deve funcionar

com processamento em tempo real. Na figura abaixo pode-se observar o

funcionamento do sistema completo desde as entradas do sistemas até a saída

Figura 3 – Diagrama de blocos do funcionamento do sistema

(12)

O microfone capta o som e envia um sinal de corrente elétrica até placa de som. A

placa de som possui as informações de taxa de amostragem, número de frames e o

tamanho de cada buffer do sistema, com auxilio dessas informações a placa de som

realiza a conversão analógica para digital do áudio, e escreve as informações

digitais para um buffer de entrada. O buffer armazena temporariamente informações

digitais do áudio análogo ao áudio de entrada do microfone, logo após essas

entradas são encaminhadas ao driver de áudio, o qual interpreta as informações

vindas da placa de áudio e transfere essa informação diretamente para um ambiente

de processamento digital do sinal, o qual pode ser, por exemplo, uma DAW. Por

ultimo após entrar no ambiente o áudio sofre o processamento com auxílio de um

plugin. Simultaneamente após o processamento dentro a estação digital de trabalho

as amostra de áudio digitais são enviadas para um buffer de saída , o qual

armazena temporariamente os áudios, e os encaminha para um conversor digital

para analógico que converterá as informações digitais processadas e as encaminha

para um transdutor de áudio ligado a sua saída.

3.3 DESENVOLVENDO E DEFINIDO UM PLUGIN NO AMBIENTE MATLAB

Para se iniciar o desenvolvimento do plugin no MATLAB podemos utilizar a

Audio Toolbox™. Ela provem ferramentas para processamento de áudio, análise de

áudio e estimação da resposta ao impulso. Além disso essa ferramenta suporta

realizar testes em tempo real compatíveis com placas de som ASIO™, WASAPI,

ALSA, e CoreAudio, além disso a Toolbox tem compatibilidade com dispositivos que

utilizam o protocolo MIDI.

Com a Audio Toolbox™ é possível criar protótipos de algoritmos para

processamento de áudio em tempo real com uma baixa latência de audio. Além

disso é possível validar o algoritmo para ele se tornar um plugin de áudio capaz de

funcionar em hosts externos, como, por exemplo, as Digital Audio Workstations.

Analisando um script de um plugin programado no MATLAB podemos dividi-lo

em três partes partes: variáveis de inicialização, objetos de construção, método de

inicialização/reset, interface gráfica e transmissão de áudio. Elas estão descritas

abaixo:

(13)

Variáveis de inicialização: possuem variáveis de inicialização e valores

conhecidos necessários para o funcionamento do sistema, como, por exemplo

taxa de amostragem e o número de amostra em cada frame processado pelo

plugin.

Objetos de construção: São responsáveis por conter os parâmetros do

plugin

Transmissão de áudio: É onde acontece o procedimento de leitura de

audio, escrita e processamento do áudio.

Método de inicialização/reset: responsável por inicializar o plugin ou

mudar as suas propriedades toda vez que a taxa de amostragem do sistema

muda.

Interface gráfica: Parte responsável pela interação do código com o

usuário

Assim podemos dividir a construção do um script de um plugin de áudio

conforme o digrama de blocos abaixo:

Figura 4– Diagrama de blocos do script do plugin Fonte: o autor, 2019

(14)

3.4 LEVANTAMENTO DE CAMPO

Conforme apresentado anteriormente é necessário indicar quais são os

parâmetros do plugin de áudio. No trabalho proposto deseja-se implementar

digitalmente a resposta em frequência de microfones e desenvolver um filtro capaz

de recriar as suas respostas por meio de processamento digital de sinais. As

propriedades do nosso plugin de áudio são definidas pelas características dos

microfones que desejamos emular, e a emulação está embutida na parte de

processamento do nosso sistema.

Com o objetivo de se obter e programar os parâmetros do sistema foi

realizado um levantamento de campo. Foi implementado na entrada do microfone

um sinal do tipo impulso , logo após digitalizou-se e verificou-se como o mesmo se

comportava. Para traçar os gráficos da resposta em frequência foi utilizado o código

do ANEXO A, o impulso foi gerado com uma palma, e o processo de captação da

palma foi realizado conforme o esquemático abaixo:

Figura 5 – Diagrama de blocos da captação da resposta em frequência.

(15)

O teste anterior foi realizado com 4 microfones das seguintes marcas e

modelos, SHURE SM57, SHURE SM48, AKG P220, BERINGHER XM1800S e um

microfone sem fabricante especificado. Os resultados das respostas em frequência

estão apresentadas abaixo juntamente com a resposta em frequência que a própria

fabricante divulga no DATASHEET do equipamento.

Figura 6– Resposta em frequência do microfone Shure SM57, fornecida pelo fabricante

Fonte: http://www.shure.com/americas/products/microphones/sm/sm57-instrument-microphone . Acesso em 19 de abril de 2019

Figura 7 – Resposta em frequência do microfone Shure SM57, levantada pelo autor Fonte: o autor, 2019

(16)

Figura 8– Resposta em frequência do microfone Shure SM48, fornecida pelo fabricante

Fonte: http://www.shure.com/americas/products/microphones/sm/sm48-vocal-microphone . Acesso em 19 de Abril de 2019

Figura 9– Resposta em frequência do microfone Shure SM48, levantada pelo autor Fonte: o autor, 2019

(17)

Figura 10 – Resposta em frequência do microfone Beringher XM1800S, fornecida pelo fabricante Fonte: o autor, 2019

Figura 11 – Resposta em frequência do microfone Beringher XM1800S, levantada pelo autor Fonte: o autor, 2019

(18)

Figura 12– Resposta em frequência do microfone Beringher AKG P220, fornecida pelo fabricante Fonte: https://www.akg.com/Microphones/Condenser%20Microphones/P220.html . Acesso em 19 de Abril de 2019.

Figura 13– Resposta em frequência do microfone AKG P220, levantada pelo autor Fonte: o autor, 2019

(19)

Figura 14 – Resposta em frequência do microfone sem fabricante, levantada pelo autor Fonte: o autor, 2019

Os testes foram realizados em um estúdio de música devidamente isolado em

todas as paredes com fibra de vidro, drywall e espuma acústica, o que minimizou os

efeitos das múltiplas reflexões do ambiente.Para a análise foi utilizada a

Transformada rápida de Fourier, essa análise converte um sinal do seu domínio

original para uma representação no domínio da frequência e vice-versa.

Nos gráficos anteriores foi possível observar que as respostas de alguns

microfones podem ser inseridas em outras, as quais podem mudar seu timbre e

suas características por meio de processamento digital de sinais. Também pode-se

observar que os gráficos estão bem próximos dos levantados pelos fabricantes e

que os riscos apresentados anteriormente do ambiente não são relevantes para o

sistema.

3.5 TÉCNICA UTILIZADA PARA ADQUIRIR OS FILTROS EQUIVALENTES A

RESPOSTA EM FREQUÊNCIA DO MICROFONE

Sabe-se que para representar a resposta em frequência deve-se realizar um

filtro que seja capaz de representar a resposta do sequencia de forma que esse filtro

seja análogo a reposta ao impulso do microfone.

(20)

Figura 15 –Sistemas de múltiplos filtros aplicados a um sinal de áudio Fonte: o autor, 2019

Um sistema de múltiplos filtros pode ser obtido por diversos filtros passa

baixa, passa alta, passa faixa e rejeita faixa, de modo a esses filtros serem

análogos a resposta em frequencia da resposta ao impulso do sinal original.

Figura 16 –Sistemas de múltiplos filtros Fonte: o autor, 2019

O filtro estará na parte de processamento do sistema e o mesmo será

responsável por modificar a resposta de um outro sinal, inserindo essas

caracterizas no timbre do som sem modificações. Na figura abaixo podem

(21)

observar um exemplo do sistema atuando e mudando as características do

sinal original.

Figura 17 – Resposta de um sistema após a passagem do filtro.

Fonte: o autor, 2019.

3.6 CONVOLUÇÃO ENTRE A RESPOSTA AO IMPULSO DO MICROFONE E UM

SINAL DE ENTRADA

O termo filtro é utilizado para descrever um dispositivo que modifica algum atributo

do objeto aplicado na entrada. A maneira mais simples de se implementar um filtro

análogo a resposta ao impulso do microfone é realizar uma convolução entre a

resposta ao impulso do sistema e sinal de entrada no sistema. A operação de

convolução é definida em sistemas LTI (linear and Time-Invariant), ou seja, lineares

e invariantes no tempo. A forma da filtragem é definida pela resposta de frequência

H(ω) que depende da escolha de parâmetros do sistema (como os coeficientes do

filtro). Em geral, um sistema LTI modifica o espectro do sinal de entrada X(ω) de

acordo com a resposta em frequência H(ω) que leva a um sinal de saída com

espectro Y(ω) = H(ω)X(ω).

(22)

Figura 18 – Sistema LTI Fonte: o autor, 2019.

Em sistemas LTI podemos relacionar os sinais de entra e saída do sistema através

da soma de convolução, definida pela seguinte equação:

Se conhecermos a resposta ao impulso do sistema (por exemplo um filtro digital)

podemos calcular a saída y[n] fazendo a convolução do sinal de entrada, x[n], com a

resposta ao impulso do sistema, h[n]. No ambiente Matlab uma rápida

implementação de uma convolução com o comando CONV.

4.PROCEDIMENTOS DE TESTE E VALIDAÇÃO

Podemos dividir os testes e validação em duas seções as do ponto de vista

do usuário e a do ponto de vista do sistema.

(23)

4.1 TESTE E VALIDAÇÃO DO PONTO DE VISTA DO USUÁRIO

Para o usuário o plugin deve ser uma ferramenta que auxilie em realizar no

processamento digital de sinais, análises ou síntese sonora, dessa forma o usuário

deve notar a mudança por meio da audição. Uma vez que a percepção sonora do

timbre pode variar de pessoa a pessoa podemos realizar os seguintes testes abaixo:

1.Implementar o plugin dentro de uma DAW e verificar compatibilidade

2.Verificar se o plugin é capaz de realizar processamento de áudio digital em

tempo real.

3.Verificar a resposta em frequência do sinal de saída e verificar se ele fez

uma mudança significativa e se essa mudança é equivalente aos parâmetros do

sistema.

4.2 TESTE E VALIDAÇÃO DO PONTO DE VISTA DO SISTEMA

Do ponto de vista de sistema o plugin deve:

Ser compatível com a geração de códigos do MATLAB

• Ser compatível com qualquer estação digital de trabalho

• Determinar qual a taxa de amostragem e o tamanho de cada frame que o plugin

está funcionando os dois os quais são variáveis.

• Chamar um função de reset para o plugin a cada inicio de uso ou cada mudança de

taxa de amostragem

• Deve ser sincronizado com os parâmetro, o plugin não deve mudar propriedades

associadas a parâmetros.

•Requer uma constante entrada e saída de dados no sistema

•Requer que nas propriedades associadas aos parâmetros seja escalares.

•Requer realizar um mudança significativa na resposta em frequencia do áudio de

saída.

Tendo esses requisitos podemos realizar os seguintes testes para validar o

sistema.

(24)

1. Compilar o código no Matlab

2.Implementar o plugin dentro de uma DAW e verificar compatibilidade

3.Verificar se o plugin é capaz de realizar processamento de áudio digital em

tempo real.

4.Verificar a resposta em frequência do sinal de saída e verificar se ele fez

uma mudança significativa e se essa mudança é equivalente aos parâmetros do

sistema.

(25)

5.RISCOS

Após apresentar os fator adversos na captação e emissão apresentados no

trabalho anterior, no levantamento de campo foi observado que, apesar de reais os

problemas apresentados anteriormente não afetaram as respostas dos microfones,

sendo assim é importante destacar que durante o desenvolvimento do VST deve-se

obter a melhor otimização de processamento e buscar resolver os riscos de latência

e perda de sinal.

5.1 LATÊNCIA

A latência acontece durante todo o processamento do sistema, tipicamente

existem a latência de entrada do sistema e a latência de saída do sistema ambas

possuem uma probabilidade alta, impacto alto e podem impactar severamente o

sistema.

A latência de saída é medida pelo tempo de atraso entre a geração de um

frame do áudio após o processamento até chegar ao conversor AD.

A latência de entrada é medida como o tempo de atraso entre a entrada do

áudio do sistema até o momento que o frame é processado.

A latência total é dada pela soma da latência de saída e de entrada do

sistema, e para se minimizar esse problema podemos tomar algumas das medidas

abaixo:

1.Otimizar o estágio de processamento, se o estágio de processamento

atinge o máximo de capacidade um estratégia é compilar o código do MATLAB para

um código em C usando o MATLAB Coder, o que resultará em uma execução mais

rápida.

2.Aumentar a taxa de amostragem

3.Diminuir o tamanho de cada frame

(26)

5.2 SIGNAL DROPS (PERDAS DE SINAL) E SINAIS DE SILÊNCIO

Durante o processamento digital do sinal pode acontecer a perda de sinal

provenientes do buffer do sistema. As perdas de sinal possuem uma probabilidade

alta de acontecer e impacta negativamente o sistema. Podemos detalhar esse

sistema por meio de duas definições: Underrun e Overrun

O Underrun se refere a um sinal de silencio, ocorre quando o buffer é lido,

ou esvaziado, mais rapidamente do que é reescrito, ou preenchido. Isto pode

eventualmente levar a um esvaziamento completo do buffer, causando a interrupção

do fluxo de dados.

O Overrun se refere a uma perda do sinal. A perda de sinal é uma anomalia

onde um programa, ao escrever dados em um buffer, ultrapassa os limites

do buffer e sobrescreve a memória adjacente.

Se você encontrar uma dessas anomalias uma das soluções é melhorar o

sistema de entrada/saída em uma ou mais das seguintes maneiras.

1.Identificar quando o Underrun e Overrun acontece. Se isso acontecer nas

primeiras iterações considere inicializar o dispositivo de entrada/saída do sistema

com informações relevantes nos primeiros frases antes de inicializar o

processamento real.

2.Adicionar mais latência para a sua aplicação, considerando o aumento do

tamanho do buffer do sinal digitalizado. Por padrão o tamanho do buffer é o tamanho

do frame da\os dados processados.

3.Diminuir a resolução do áudio, considerando diminuir a taxa de amostragem

do sistema.

4.Fechar todos os processos não essenciais na sua máquina, esses

processos podem pedir requisições à CPU e interrompeu o processamento do áudio

5.Para maximizar a performance remover a visualização e plotagem de

gráficos em tempo real.

(27)

6.DIAGRAMA DE BLOCOS GERAL DO PROJETO

Figura 19 – Diagrama geral do projeto Fonte: o autor, 2019

(28)

Como explicado durante o documento a Audio Toolbox suporta diversas

ferramentas para o desenvolvimento de algoritmos e para o processamento de audio

digital. No desenvolvimento do código em questão foram utilizadas duas

ferramentas, a programação utilizando scripts do MATLAB e a programação

orientada objeto utilizando classes . A classe de um plugin de áudio é utilizada como

um paradigma para o desenvolvimento do algoritmo do processamento digital.

7.PLANO DE TESTES

Os teste que apresentados nessa pesquisa devem apresentar com precisão

que houve uma alteração no stream de audio de entrada, o qual será processado

pelo sistema LTI, tais testes podem ser executado por etapas, preservando assim a

lógica sequencial gerada para a composição do plugin de audio. Segue abaixo os

testes escolhidos para essa etapa.

6.1 PRIMEIRO TESTE AUDIO TESTE BENCH

Existe disponível dentro da Audio Tool Box uma ferramenta auxiliar para

debugar, testar e aferir o plugin de audio, e o nome dessa ferramenta é o Audio Test

Bench. O Audio Test Bench provem uma interface gráfica para o plugin, a qual pode

desenvolver, debugar, testa e aferir o plugin em tempo real, ela pode interagir com

as propriedades do seu plugin associando eles a uma interface gráfica. Com ele é

possível:

• Debugar o plugin de audio

• Simular o plugin de audio como será gerado na Digital Audio Workstation

• Visualizar o processamento no domínio do tempo e no domínio da frequência

• Interagir e sincronizar controles MIDI com as propriedades do plugin

• Validar e gerar Plugin VST

6.1.1 RESULTADO DO AUDIO TESTE BENCH

Com esse teste é possível verificar se o plugin é utilizável se ele tem a

capacidade de ser funcional dentro da plataforma do Matlab além da capacidade de

se exportar para outras DAWs. Para utilizar esse teste podemos acessar a

configuração por meio da linha de comando audioTestBench(nome da classe do

plugin).Segue abaixo um pouco da funcionalidade dessa ferramenta:

(29)

Figura 20 – Interface grafica do Audio Test Bench no Matlab Fonte: o autor, 2019.

Segue abaixo cada uma das funcionalidades e resultados que o Audio Test Bench

pode prover

Tabela 1 – Botões e funcionalidade do Audio Test Bench

Botão Nome Descrição

Rodar Roda o plugin de audio partir de um "stream"de audio especificado nas configurações de entrada e saida. É possível aferir os parâmetros

do seu plugin em tempo real. As linhas de comando do Matlab e os objetos que estão sob o teste ficam bloqueados enquanto o audio test

bench está rodando

Pausar Pausa o stream de audio, a linhan de comando do MATLAB é liberada, o objeto sob este se mantém travado

Proximo passo

Chama a função de processamento do plugin uma vez em um stream em looping. Com

Parar Para o stream de audio. A linha de comando e os objetos no teste são liberados

Reset Resta os valores iniciais do plugin de audio e seta os parâmetros para os valores iniciais

Ver o código fonte

Abre o arquivo fonte do plugin de audio

Sincronizar. controles MIDI

Inicia a configuração MIDI com auxilio de interface de usuário do seu plugin

!

!

!

(30)

Fonte: o autor, 2019

6.1.2 FUNCIONALIDADE VALIDADA PELO AUDIO TESTE BENCH

Tendo como base o digrama de blocos geral apresentado em nosso trabalho

com a Audio Test Bench podemos validar as seguinte etapas do plugin.

Entrada e Saída de Áudio, Manipulação do conversor DA e AD e o driver

de audio.

As entradas e saída são testadas por meio das configurações de entrada e

saída de audio, nela é possível identificar de qual será o stream de audio que será

injetado no sistema e qual será o arquivo ou o dispositivo de saída do audio

processado. Além de poder definir as entradas e saída esse teste garante que o

plugin é apto de realizar a comunicação com o driver da placa de som, o qual é

usado como suporte para converter o audio de analógico para digital e de digital

para analógico.

Abrir o visualizado do

objeto sobre teste

Chama a função de visualização do objeto sob teste sem argumentos de entrada. Se o seu objeto sob teste não tiver definido uma função

de visualização esse botão não aparecerá

Osciloscopio no tempo

Provem um visualização no domínio do tempo saída do seu stream de áudio

Analizador de Espectro

Provem um visualização no dominio da freqüência da saída do seu stream de áudio

Gerar um plugin VST2

Abre uma interface de usuario para validar e gerar o objetivo o em teste

Gerar um script do

Matlab

Gera um script do MATLAB e implementa o audio test bench

Ajuda abre a documentação do audio test bench

Configurar a entrada

Abre as configurações de entrada de audio. Pode-se escolher qual o stream de audio ou o sinal de entrada do sistema

Configurar a saída

Abre a configuração de saída do plugin, pode-se escolher salvar em um arquivo ou enviar para um disposto(placa de som)

(31)

Implementação do plugin, o processamento e acesso as propriedades e

reset

Durante o procedimento podemos testar o processamento do audio dentro da

plataforma do próprio matlab, com isso podemos repara uma diferença audível do

processamento do audio, além de poder verificar se as principais funcionalidades do

plugin funcionam, como por exemplo o acesso as propriedades do plugins e a

função.

6.2 SEGUNDO TESTE PLOTAGEM DA RESPOSTA EM FREQUÊNCIA PÓS

PROCESSAMENTO

Afim de se garantir o funcionamento da etapa do processamento e garantir

que a mesma está funcionando podemos verificar o gráfico da resposta em

frequencia da saída do sistema LTI, o qual se encontra na etapa do processamento.

O sinal de y(t) deve ser análogo a convolução do sinal de entrada com o sinal da

resposta ao impulso do sistema.

6.2.1 RESULTADO DA PLOTAGEM

Para a realização do teste implementamos um sinal de audio na entrada do

sistema, processamos e observamos o resultado, além disso utilizamos um áudio de

uma gravação de voz para observar se o sistema altera a resposta em frequência do

sistema:

Com o resultado da plotagem podemos comprovar de maneira gráfica a

mudança significativa que o plugin irá desenvolver no processamento do audio.

Segue abaixo os gráficos gerados após o processamento dos microfones

utilizados na composição do plugin:

(32)

Figura 21 – Resposta ao impulso da simulação do AKG Fonte: o autor, 2019.

Figura 22– Resposta ao impulso da simulação do Shure SM48 Fonte: o autor, 2019.

(33)

Figura 23 – Resposta ao impulso da simulação do Shure SM57 Fonte: o autor, 2019

Figura 24– Resposta ao impulso da simulação do Beringher xms1800 Fonte: o autor, 2019

(34)

Figura 25– Resposta ao impulso da simulação do microfone sem fabricante Fonte: o autor, 2019.

Durante a etapa final foi implementado mais um tipo de microfone, o microfone de fita, segue abaixo o levantamento do microfone a partir da sua resposta ao impulso:

Figura 26– Resposta ao impulso da simulação do microfone sem fabricante Fonte: o autor, 2019.

(35)

Figura 27– Resposta ao impulso da simulação do microfone sem fabricante Fonte: o autor, 2019.

6.2.2 FUNCIONALIDADE VALIDADA PELA PLOTAGEM

Implementação do plugin, o processamento e acesso as propriedades e

reset

Com a plotagem podemos verificar graficamente a resposta em frequencia do

sinal de saída e com isso podemos validar se ela tem propriedades análogas ao

audio do processamento digital, isso implica que a fase do processamento digital

está funcionando com sucesso, e o acesso das propriedade e do reset também.

6.3 TERCEIRO TESTE IMPLEMENTAR O PLUGIN DENTRO DE UMA DAW

Com o intuito de ser garantir o funcionamento do plugin dentro de DAW

deve-se implementar o plugin dentro da Digital Audio Workstation verificar deve-se o programa

é apto de iniciar o plugin e implementar as funcionalidade do mesmo.

(36)

6.3.1 RESULTADO DA IMPLEMENTAÇÃO

Segue abaixo a implementação de um plugin desenvolvido durante o

procedimento dentro do Ableton live. Como pode-se observar o mesmo obteve a

compatibilidade com a plataforma e foi possível verificar a funcionalidade do mesmo

Figura 28 – Plugin desenvolvido dentro do Matlab Fonte: o autor, 2019

6.3.2 FUNCIONALIDADE VALIDADA PELA IMPLEMENTAÇÃO

Com essa implementação podemos todas as etapas do diagrama desde as

entradas e saídas até o processamento do plugin. Podemos afirmar com segurança

que o plugin tem a capacidade de interagir com as entradas e saídas do sistema por

meio das instancias do Matlab, além disso podemos verificar que o plugin pode

interagir com a DAW e além disso a DAW pode inicializar o plugin e podemos

modificar ele, desligar e ligar por meio de uma interface gráfica simplificada.

(37)

6.2 TERCEIRO TESTE PROCESSAMENTO EM TEMPO REAL

Para a implementação da etapa final foi realizado uma melhoria no código

com o objetivo de gerar uma ferramenta de processamento de tempo real, para isso

foi utilizado o cenário de captação e reprodução em tempo real. Foi utilizado uma

ferramenta que ajusta os parâmetros do plugin para se obter uma melhor

funcionamento em tempo real: segue abaixo um captura de tela dessa ferramenta

funcionando:

Figura 29 – Ferramenta de ajuste de latência Fonte: o autor, 2019

(38)

6.3.1 RESULTADO DO PROCESSAMENTO EM TEMPO REAL

Após implementado os paramentos foi possível obter um latência máxima na

plataforma de aproximadamente 3 ms( três milisegundos), o que é pouco perceptível

para os ouvintes que estão utilizando o plugin. Para se obter uma melhoria nos

valores da latência deve-se considerar um computador com processamento melhor,

ajustar a taxa de amostragem e o tamanho do buffer do plugin de acordo com a

necessidade.

Figura 30 – Plugin desenvolvido dentro do Matlab Fonte: o autor, 2019

7.3.2 FUNCIONALIDADE VALIDADA PELO PROCESSAMENTO EM TEMPO

REAL

Com essa implementação podemos todas as etapas do diagrama desde as

entradas e saídas até o processamento do plugin. Podemos afirmar com segurança

que o plugin tem a capacidade de interagir com as entradas e saídas do sistema por

meio das instancias do Matlab, além disso podemos verificar que o plugin pode

(39)

interagir com a DAW e além disso a DAW pode inicializar o plugin e podemos

modificar ele, desligar e ligar por meio de uma interface gráfica simplificada.

7.CRONOGRAMA ATUALIZADO

Durante a implementação final foram adotadas melhorias no código do Plugin,

para que o mesmo fosse apto a funcionar em tempo real e também foram

capturados mais microfones e consequentemente implementados na forma de VST.

abril maio junho agosto setembro outubro novembro Atividades /Quinzena 1ª 2ª 1ª Fundamentação do plano de projeto 🎤 Entrega do plano de projeto 🎤 Escolhas dos microfones 🎤 🎤 Aferição e captura de

dados dos microfones 🎤 🎤 Codificação plugin no MATLAB 🎤 🎤 Codificação do projeto físico no MATLAB 🎤 🎤 Entrega do Projeto Físico 🎤 🎤 Primeiro protótipo 🎤 🎤

Inicio dos testes

dentro da DAW 🎤 🎤 Integração da codificação em Matlab para VST 🎤 🎤 Inicio da Codificação em VST 🎤 🎤 Desenvolvimento da implementação final 🎤 🎤

Defesa dos protótipos

🎤 🎤 Desenvolvimento do segundo protótipo ( versão beta) 🎤 🎤 Vídeo Promocional Simples 🎤 🎤 Entrega da implementação final 🎤 🎤

(40)

8.CONSIDERAÇÕES FINAIS OU CONCLUSÃO

Com a capacidade de alterar as características de um som, o microfone

digital é uma solução para a simulação de microfones. Com controle sobre as

frequências e o nível de intensidade sonora que o microfone possui, pode-se captar

qualquer instrumento, preservando suas características de maneira fiel. Para se

implementar esse tipo de solução é necessário a implementação de um plugin de

áudio. Os plugins são trechos de códigos independentes que podem ser “plugados”

em outros softwares, para aumentar as suas funcionalidades. Para o

desenvolvimento de um plugin pode-se utilizar o ambiente MATLAB com auxilio da

Audio Toolbox™, que prove ferramentas para processamento de áudio, análise de

áudio e estimação da resposta ao impulso. Além disso, essa ferramenta suporta

realizar testes em tempo real compatíveis com diversas placas de som. Durante

essa etapa foi realizada a implementação final do plugin de áudio. Ademais, foi

codificado e utilizados diferentes tipos de microfones para ser possível observar a

sua resposta em frequencia na plataforma de processamento desenvolvida. Foi

possível concluir também que o Matlab é um poderosa ferramenta de modelagem e

e desenvolvimento de processamento digital de sinais.

8.TRABALHOS FUTUROS

Conforme apresentado nesse trabalho softwares de processamento digital de

sinal estão presentes em diversas aplicações musicas. Na ferramenta em questão

foi desenvolvido um plugin de áudio compatível com as principais Digital Audio

Workstations, porém seria de grande interesse implementar esse tipo de

processamento em um circuito embarcado, com o intuito de reduzir custos, facilitar a

interação do usuário com a plataforma, uma vez que não é necessário ter um

computador com um plataforma com uma digital audio workstation instalada.

Um exemplo de aplicação pratica de sistema embarcado são as pedaleiras e

pedais de efeitos, nesse tipo de circuito tipicamente existem circuitos que modificam

o som a fim de se obter respostas em frequencia e timbres diferentes da entrada do

sistema. O processamento deve acontecer em tempo real para que seja possível

tocar ao vivo sem que aconteça um latência perceptível ao usuário.

(41)

Figura 31 – Exemplo de um sistema embarcado de processamento digital de sinais. Fonte: o autor, 2019

8.1 MELHORIAS

Durante o processo foi observado que poderia ser implementado em nosso

plugin uma interface gráfica de manipulação dos parâmetros do plugin. Essa

interface gráfica atuaria em conjunto com a DAW e seria a interface de interação

entre o humano e maquina, facilitando o entendimento e a utilização da plataforma.

Uma outra melhoria implementada seria a extensão dos parâmetros dos microfones

que o plugin abrange, no trabalho realizado foi implementado um plugin no qual é

realizada a correção da resposta ao impulso do microfone, entretanto, quando

inserimos o microfone em um ambiente real com influencias do ambiente, dos

equipamento que estão no circuito de captação, os parâmetros que influenciam a

resposta do microfone se expandem, seria de grande interesse simular tanto o

circuito de captação quanto a ambiente, sendo possível parametrizar, por exemplo, a

distância do microfone da fonte de emissão sonora, a influencia em relação sinal

ruídos dos equipamentos as atenuações por cabeamento e outra fontes ativas e

passivas de sinais.

(42)

9.REFERÊNCIAS

Boudreau, J., Frank, R., Sigismondi, G., Vear, T., & Waller, R. (2009). "Microphone

Techniques for Music - Studio Recording".. Disponível em:<http://www.shure.com/

americas/support/find-an-answer/educational-articles-online-booklets-and-bulletins>. Acesso em 01 de abril de 2019.

Boudreau, J., Frank, R., Sigismondi, G., Vear, T., & Waller, R. (2009). Microphone

Techniques for Music - Sound Reinforcement. Disponível em: <http://

www.shure.com/americas/support/find-an-answer/educational-articles-online-

booklets-and-bulletins>. Acesso em 01 de abril de 2019.

Costa, Denio G., and D. G. C. Audio. "Microfones: Características e Aplicações."

Seminário Brasileiro de Engenharia de Áudio (2002).

Davis, Gary, and Gary D. Davis. The sound reinforcement handbook. Hal Leonard

Corporation, 1989.

HALLIDAY, David; RESNICK, Robert; WALKER, Jearl. Fundamentos de física. 8.

ed. Rio de Janeiro, RJ: LTC, c2009 vol 1;

HALLIDAY, David; RESNICK, Robert; WALKER, Jearl. Fundamentos de física. 8.

ed. Rio de Janeiro, RJ: LTC, c2009 vol 2;

Oppenheim, A. V; Shafer R. W and Buck J. R. (1999) “DiscreteTime Signal

Processing”, 2nd Edition, Prentice Hall – New Jersey .

VALLE, Sólon do. Microfones. 2a ed. Rio de Janeiro: Editora Musica&Tecnologia,

2002.

International Organization for Standardization. Acoustics –– Preferred frequencies.

ISO 266:1997(E). Second Edition. 1997.

Acoustical Society of America. American National Standard Speci cation for

Octave- Band and Fractional-Octave-Band Analog and Digital Filters. ANSI

S1.11-2004. Melville, NY: Acoustical Society of America, 2009.

Oliver, Richard J., and Jean-Marc Jot. "E icient Multi-Band Digital Audio Graphic

Equalizer with Accurate Frequency Response Control." Presented at the 139th

Convention of the AES, New York, October 2015.

(43)

ANEXO A – CÓDIGO PARA LEVANTAMENTO DE CAMPO

clc;

clear;

close all;

%%a)Abrir o Arquivo de audio

[x,Fs] = audioread('4 Shure sm57-1-1.wav');

%b)Tocar o Audio na placa de audio do PC

%sound(x,Fs)

%pause(20)

%%c)Traçar o Grafico no dominio do tempo

%dsp.ColoredNoise('Color','pink');

Ts=1/Fs;

t=Ts.*[0:length(x)-1];

figure(1);

plot(x)

title('Dominio do Tempo');

%pause(20)

%d)TraÁar o grafico do espectro do sinal usando a DFT/FFT

X1 = fft(x);

N1 = length(x);

k=[0:N1-1];

x = x';

wk = (2.*pi.*k)./N1;

for i = 1:N1

if(wk(i) > pi)

wk(i) = wk(i)-2*pi;

end

end

Faudio = (wk./(2*pi)).*Fs;

Modulo = abs(X1);

Angulo = angle(X1);

(44)

figure(2);

subplot (2,1,1);

plot(Faudio, Modulo);

axis([-3000 3000 0 400])

xlabel('Frequencia (Hz)');

ylabel ('Modulo');

title('Resposta AUDIO.wav');

subplot (2,1,2);

plot(Faudio, Angulo, 'blue');

axis([-3000 3000 -4 4])

xlabel('Frequencia(Hz)');

ylabel ('Angulo');

%pause(20)

X_mags = abs(fft(x));

bin_vals = [0 : N1-1];

fax_Hz = bin_vals*Fs/N1;

N_2 = ceil(N1/2);

figure(3);

semilogx(fax_Hz(1:N_2), 20*log10(X_mags(1:N_2)))

xlabel('Frequency (Hz)')

ylabel('Magnitude (dB)');

title({'Single-sided Power spectrum' ...

' (Frequency in shown on a log scale)'});

axis([0 40000 -40 100])

(45)

ANEXO B – CÓDIGOS DO PLUGINS

classdef Stereo_Convolver_Basic_test < audioPlugin

properties

Gain = 0.5;

end

properties (Constant)

% audioPluginInterface manages the number of input/output channels

% and uses audioPluginParameter to generate plugin UI parameters.

IR = audioread('1 AKG-1.wav');

PartitionSize = 1024;

end

properties (Constant)

PluginInterface = audioPluginInterface(...

'InputChannels',2,...

'OutputChannels',2,...

audioPluginParameter('Gain',... %<---

'DisplayName','Echo Gain',... %<---

'Mapping',{'lin',0,1})) %<---

end

properties(Access = private)

pFIR_L

pFIR_R

end

methods

function plugin = Stereo_Convolver_Basic_test

plugin.pFIR_L = dsp.FrequencyDomainFIRFilter('Numerator',

plugin.IR(:,1).', ...

(46)

'PartitionForReducedLatency', true, 'PartitionLength',

plugin.PartitionSize);

plugin.pFIR_R = dsp.FrequencyDomainFIRFilter('Numerator',

plugin.IR(:,1).', ...

'PartitionForReducedLatency', true, 'PartitionLength',

plugin.PartitionSize);

end

function y = process(plugin,u)

x = u(:,1)+u(:,2);

x = x * 0.5;

yL = step(plugin.pFIR_L,x);

yR = step(plugin.pFIR_R,x);

y = [yL,yR];

out = y/plugin.Gain;

end

end

end

(47)

ANEXO C – CÓDIGOS DO AUDIO TEST BRENCH

function out = testbench_Stereo_Convolver_Basic

% TESTBENCH_STEREO_CONVOLVER_BASIC Exercise audio plug-in

class

% to check for violations of plug-in constraints and other errors.

%

% OUT = TESTBENCH_STEREO_CONVOLVER_BASIC Return the output

data from the

% plug-in. This is useful to verify that plug-in numeric behavior has not

% changed, when you are changing your plug-in in ways that should not

% affect that behavior (eg, refactoring code).

%

% You can test whether your MATLAB plug-in code is ready for code

% generation by creating and running a mex function from this testbench:

%

% codegen testbench_Stereo_Convolver_Basic % Create the mex function

% testbench_Stereo_Convolver_Basic_mex % Run the mex function

%

% You can use this testbench as a template and edit it to meet your

% testing needs. Rename the file to ensure your work is not

% accidentally overwritten and lost by another run of

% validateAudioPlugin.

%

% Automatically generated by validateAudioPlugin 23-Sep-2019 01:17:13

% Set basic test parameters

sampleRates = [44100, 48000, 96000, 192000, 32000];

frameSizes = [ 2.^(1:13) 2.^(2:13)-1 2.^(1:13)+1];

totalFrameSize = sum(frameSizes);

% Create output buffer if requested

(48)

if nargout > 0

nout = 2;

obuf = zeros(totalFrameSize*numel(sampleRates), nout);

optr = 1;

end

% Instantiate the plug-in

plugin = Stereo_Convolver_Basic;

% Test at each sample rate

for sampleRate = sampleRates

% Tell plug-in the current sample rate

setSampleRate(plugin, sampleRate);

% Plug-in has no reset method to call after setting sample rate

% Create input data: logarithmically swept sine waves, with a

% different initial phase for each channel

phaseOffsets = (0:1)/1 * 0.5 * pi;

ibuf = logchirp(20, 20e3, sampleRate, totalFrameSize, phaseOffsets);

iptr = 1;

% Process data using different frame sizes

for i = 1:numel(frameSizes)

samplesPerFrame = frameSizes(i);

% Get a frame of input data

in = ibuf(iptr:iptr+samplesPerFrame-1, :);

iptr = iptr + samplesPerFrame;

% Run the plug-in

(49)

% Save the output data if requested

if nargout > 0

obuf(optr:optr+samplesPerFrame-1, :) = o1;

optr = optr + samplesPerFrame;

end

% Verify class and size of outputs

if ~isa(o1, 'double')

error('ValidateAudioPlugin:OutputNotDouble', ...

['Output 1 is of class %s, ' ...

'but should have been double.'], ...

class(o1));

end

if size(o1,1) ~= samplesPerFrame

error('ValidateAudioPlugin:BadOutputFrameSize', ...

['Output 1 produced a frame size of %d, ' ...

'but should have matched the input frame size of %d.'], ...

size(o1,1), samplesPerFrame);

end

if size(o1,2) ~= 2

error('ValidateAudioPlugin:BadOutputWidth', ...

['Width of output 1 was %d, ' ...

'but should have been 2 (OutputChannels(1)).'], ...

size(o1,2));

end

checkForTampering(plugin, sampleRate, 'Running plugin');

end

end

% Return output data if requested

if nargout > 0

(50)

end

end

function checkForTampering(plugin, sampleRate, cause)

% Verify sample rate was not tampered with

if ~isequal(getSampleRate(plugin), sampleRate)

error('ValidateAudioPlugin:SampleRateChanged', ...

'%s changed sample rate from %g to %g.', ...

cause, sampleRate, getSampleRate(plugin));

end

end

function y = logchirp(f0, f1, Fs, nsamples, initialPhase)

% logarithmically swept sine from f0 to f1 over nsamples, at Fs

y = zeros(nsamples,numel(initialPhase));

instPhi = logInstantaneousPhase(f0, f1, Fs, nsamples);

for i = 1:numel(initialPhase)

y(:,i) = sin(instPhi + initialPhase(i));

end

end

function phi = logInstantaneousPhase(f0, f1, Fs, n)

final = n-1;

t = (0:final)/final;

t1 = final/Fs;

phi = 2*pi * t1/log(f1/f0) * (f0 * (f1/f0).^(t') - f0);

end

Referências

Outline

Documentos relacionados

[r]

O sétimo anjo está na terra no tempo de sua vinda, pois como João, ele o introduziria, agora ligue isso com o que falou o profeta na mensagem “A Festa das Trombetas”, 307?. O

Vejo que esse é o caminho para podermos melhorar a vida das pessoas, seja na área da saúde, onde o cidadão não tem obtido o atendimento que merece; seja na geração de renda

Sin olvidar, las distintas maneras de leer la Biblia que desde hace más de dos décadas las mujeres, en América Latina y el Caribe vienen proponiendo, por medio de la

Mas ela, muito incomodada, falava como que para si mesma, que estava mais alta do que todo mundo e olhava para o chão e para os lados, buscando solução para o problema.. Eu,

ARRUELA LISA GOVERN.GE700/GW TRAVA GRAMPO EIXO GOV.GE700 PARAFUSO SEXT.FL.M6X14.. Motor Estacionário a Gasolina Linha

O SIPERGS fica autorizado, desde que devidamente oficiado e sem oposição individual dos empregados dentro do prazo de 5 (cinco) dias úteis a contar da Assinatura do presente

Pela prestação dos serviços previstos no(s) ANEXO(s) a este contrato, a CONTRATANTE pagará à ECT os valores contidos nas Tabelas específicas a cada serviço,