Estou tentando programaticamente gerar uma onda (seno ou quadrado) com uma frequência continuamente decrescente. Para fazer isso, simplesmente multiplico a frequência inicial por um valor decrescente, que linearmente passa de 1 a 0, em etapas intermediárias ao longo de um determinado período de tempo. Fiquei intrigado ao ver (e ouvir) que, exatamente na metade do período, a frequência começou a aumentar novamente. Eu verifiquei o valor da frequência, mas está tudo ok. Só posso usar a primeira metade da onda, mas seria ótimo entender o que estou experimentando. Qualquer ajuda apreciada! obrigado
7
Respostas:
Verifique se sua frequência não atinge valores abaixo de 0 ou acima da metade da taxa de amostragem.
Poste mais informações / código sobre como você gera sua forma de onda! Provavelmente, você não está fazendo isso corretamente.
Por exemplo, se você deseja gerar uma onda senoidal com uma frequência variável no tempof(t) (por exemplo, para implementar a modulação de frequência), gerando algo como:
está errado, porque sua frequência instantânea é:
E:
Exceto no caso específico em quef(t) é uma constante.
A maneira correta de gerar uma onda senoidal com frequência variável no tempof(t) é assim com:
Na fala do sintetizador, o registro / variável acumulando a frequência instantânea para avaliar a∫t0f(τ)dτ quantidade é chamada de acumulador de fase.
http://en.wikipedia.org/wiki/Frequency_modulation
http://en.wikipedia.org/wiki/Instantaneous_phase
fonte