Terceiro trabalho maior

Terceiro trabalho maior

por Marcelo Queiroz -
Número de respostas: 6

Boa tarde!

O enunciado do terceiro trabalho maior está disponível no PACA. Ele possui duas fases: a primeira é simples e tem data limite de entrega em 22/11/2019 até 23:55; a segunda fase poderá ser entregue até 06/12/2019.

Bom trabalho!

Marcelo

Em resposta à Marcelo Queiroz

Re: Terceiro trabalho maior

por Gabriel Sarti Massukado -
Olá professor!
Acho que você tinha dito que colocaria arquivos de teste para o Terceiro Trabalho Maior aqui no PACA. Você já tem eles disponíveis?
Peço desculpas se entendi errado e teremos que fazer nossos próprios códigos de teste.
Obrigado!
Em resposta à Gabriel Sarti Massukado

Re: Terceiro trabalho maior

por Marcelo Queiroz -
Bom dia!
 
Segue em anexo um arquivo de teste simples, que transforma o teclado do computador em um teclado musical, mapeando as teclas de 'a' a 'z' em comandos para o algoritmo de Karplus-Strong. O patch tentará carregar o arquivo karplusstrong~.lua de vocês, que deverá ser colocado no mesmo diretório.
Em resposta à Marcelo Queiroz

Re: Terceiro trabalho maior

por Marcelo Queiroz -

Boa tarde!

Segue outro arquivo de teste: esse patch abre um arquivo MIDI e produz uma sequência de instruções para o sintetizador Karplus-Strong. Arquivos MIDI em geral possuem eventos para vários canais diferentes, então pode ser necessário adaptar o patch para usar outros arquivos MIDI. O arquivo bach.midi em anexo possui instruções para os canais 144 e 145, que são direcionadas para dois sintetizadores KS independentes. Se o seu programa funcionar para 1 canal e começar a se comportar de forma estranha com dois canais, pode ser que você esteja usando variáveis globais (por exemplo "tabela" ou "tamanho") onde deveria estar usando variáveis locais ou restritas ao módulo (por exemplo M.tabela ou M.tamanho).

Em resposta à Marcelo Queiroz

[IMPORTANTE]: Terceiro trabalho maior

por Marcelo Queiroz -

Pessoal,

há um pequeno erro no enunciado que pode ser difícil de achar: a fórmula correta para calcular o L nesta fase é math.floor(R/F-S), não tem aquele 0.5 que corresponderia ao arredondamento. O enunciado em pdf já está atualizado no PACA.

A razão é que para o filtro passa-tudo funcionar, o L não pode ser arredondado para o valor inteiro mais próximo, mas tem realmente que ser truncado para um valor inteiro menor, assim o passa-tudo completará o que falta para o atraso ideal correspondente à frequência fundamental pretendida. Para verificarem que essa correção de afinação está de fato melhorando o resultado, sugiro usarem o objeto [sigmund~] para verificarem a frequência fundamental do som da saída (assim como eu fiz na reformulação do patch de exemplo do Felipe).

 

Em resposta à Marcelo Queiroz

Re: [IMPORTANTE]: Terceiro trabalho maior

por Marcelo Queiroz -

Mais um detalhezinho para deixar o enunciado mais preciso: no item "Controle da duração percebida", caso G0<G1 devemos resolver a equação quadrática (2-2cos(2πF/R))S²+(2cos(2πF/R)-2)S+(1-G12) = 0 para encontrar um S∈[0,½] (e não "o menor S", que poderia estar fora dessa faixa): link para o PDF atualizado.