Duvida sobre trabalho maior 2

Duvida sobre trabalho maior 2

por Bruno Maldonado Brisola -
Número de respostas: 18

Boa Noite!

Tenho uma dúvida sobre o "FMdinamica~.pd". Qual o tempo a ser utilizado para que ocorra a variação entre os índices de modulação I1 e I2? Seria relacionando este tempo a freq. moduladora?

Em resposta à Bruno Maldonado Brisola

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Olá, Bruno!

Tanto este patch quanto o da FM com três portadoras devem usar os índices I1 e I2 como os extremos associados linearmente às amplitudes 0 e 1, respectivamente. Em outras palavras, a entrada de amplitude (que é um sinal a[n]) determinará o sinal do índice como I[n]=a[n]*I2+(1-a[n])*I1.

Marcelo

Em resposta à Bruno Maldonado Brisola

Re: Duvida sobre trabalho maior 2

por Antonio Abello -

Olá! Estou tendo alguns problemas na implementação do ASDRlinear~, não consigo lembrar da implementação que fizemos em classe...

Estou fazendo por meio de um esquema de line + sel. Ao receber o bang, manda-se os argumentos de attack para um line, que manda informação para um *~ e para um sel $1. Quando o sel encontra o $1 (amplitude de ataque), manda-se os argumentos de decay para o mesmo line e assim vai.

O problema é que isso leva a algumas notificações de stack overflow na linha de comando e alguns ruídos estranhos que me parecem consequencia disso. Mudo a implementação ou tem um modo de contornar isso? (lembro que não era recomendavel usar o metro, mas não sei porque...)

Em resposta à Antonio Abello

Re: Duvida sobre trabalho maior 2

por Antonio Abello -

Ah sim, outra pergunta. Para o ADSRexponencial, posso fazer um patch separado para a função phi(a)? Além disso, para manter a amplitude como o argumento $1 ao invés de phi($1) precisaria implementar uma função inversa? Qual seria a inversa de phi()?

Em resposta à Antonio Abello

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Oi, Antonio!

A implementação do ADSR que fizemos em aula está aqui: http://paca.ime.usp.br/mod/forum/discuss.php?d=26415#p75872

O seu "stack overflow" certamente indica uma recursão sem a finalização apropriada. Não parece fazer sentido fazer a saída da mensagem com valores para o [line~] ser processada (via [sel] etc) e realimentar a mesma mensagem. O ADSR é um processo em etapas, então as mensagens deveriam ser diferentes para cada etapa (ou então usar o esquema daquela implementação que fizemos, que não envolve nenhuma recursão, mas fica segurando as mensagens pelo tempo necessário para se alcançar a etapa certa do ADSR).

Não entendi seu exemplo de uso do [sel], mas fiquei com a impressão de que pode haver algum mal-entendido sério aí. Não dá para ficar esperando valores de amplitude para se decidir quando se está em cada etapa do ADSR. Apenas as durações é que fazem sentido para coordenar o processo todo. O [metro] também não faz sentido pois ele usa um pulso regular, e as durações dos trechos do envelope não precisam ter nenhuma relação com este pulso.

Quanto à inversa de φ, é só isolar o a em função de φ(a); algo como a=ln(1-(1-eβ)φ(a))/β, mas reconfirme.

Marcelo

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Bruno Maldonado Brisola -

Obrigado pela resposta! Consegui fazer o FMdinamica~.

Tenho outra dúvida agora, o FMblocodemadeira~ deve conter uma função Rexponencial~ para controlar o índice de modulação, certo? E quanto ao envelope ultilizado para controlar a amplitude deste e outros instrumentos, deve estar contido dentro de cada instrumento ou deve servir de sinal para alimentar a amplitude dos instrumentos?

Em resposta à Bruno Maldonado Brisola

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Olá!

Sim, o envelope que controla o índice deve ser gerado dentro do FMblocodemadeira~. Já a amplitude será controlada por fora, ou seja, no uso do instrumento você deve acoplar o gerador de envelope apropriado.

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Thilo Koch -

Não entendi.

"Dentro" do FMblocodemadeira~, eu não sei quando disparar o envelope para calcular I (não temos disparo na entrada de FMblocodemadeira~) e nem a duração (para a curva). ???

 

Em resposta à Thilo Koch

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Essa especificação não estava boa. Vamos utilizar como envelope para controle do índice o valor do primeiro inlet (amplitude) elevado à terceira ou quarta potência (testem!). Assim se essa entrada for alimentada com um Rexponencial~ a(t) o valor (a(t))^4 cairá para 0 muito mais rapidamente do que a amplitude do sinal; por outro lado o instrumento poderá ser explorado com outros envelopes de amplitude também (e consequentemente outras variações de índices bem diferentes daquela indicada no artigo).

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Bruno Maldonado Brisola -

Eu tinha implementado a FMblocodemadeira utilizando sigzero~ e select para criar o disparo que inicializa a Rexponencial. Assim quando um sinal alimentava a amplitude (e supondo que era um dos envelopes, por exemplo ARtambor~) a Rexponencial iniciaria imediatamente. O problema é que não dava para controlar a duração do Rexponencial, daí coloquei um valor fixo mesmo.

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Antonio Abello -

Obrigado, professor! Deu certinho

Abraços

Antonio

Em resposta à Antonio Abello

Re: Duvida sobre trabalho maior 2

por Alessandro Palmeira -

Olá professor,

gostaria de checar se a implementação dos envelopes ADSR é pra ser feita usando vários inlet~. Não vejo sentido em utilizar várias entradas de sinal para o envelope, dado que o primeiro inlet (bang) é responsável por disparar o sinal..

Em resposta à Alessandro Palmeira

Re: Duvida sobre trabalho maior 2

por Alessandro Palmeira -

Outra dúvida: na FMdinamica~  eu não entendi se precisamos ter uma entrada "duração da nota" ou não.

O jeito que eu fiz foi o seguinte: usando a[n], I1[n] e I2[n] eu calculei um a1[n] que eu utilizo como modulação de amplitude da saída final. Além desse a1[n], criei um a2[n] = (fm * I1) +  (fm * ( I2 - I1)) que modula a amplitude da fm. Isso está certo?

Em resposta à Alessandro Palmeira

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Oi, Alessandro!

Sobre o ADSR, você tem toda a razão, não faz sentido usar [inlet~], aqui todos podem ser [inlet] (um para bang e 6 para float).

Sobre a [FMdinamica~], não sei se entendi o que você escreveu (em particular a expressão de a2[n], que não tem relação com a síntese FM). Quem vai controlar a duração é quem estiver alimentando o primeiro [inlet~], que define a amplitude final (a[n]) do sinal da FM; por exemplo se este [inlet~] for alimentado por um [ADSRlinear~] então a duração é a soma dos 4 tempos definidos neste último gerador de envelope.

Os índices I1 e I2 serão usados exclusivamente para definir o índice instantâneo como I[n] = a[n]*I2+(1-a[n])*I1, que provavelmente é o que você chamou de a1[n], mas que não tem nada a ver com a amplitude da saída final. Este é o valor que aparece na expressão analítica da FM como y[n]=sin(2πfcn/R+I[n]*sin(2πfmn/R)).

A "amplitude de modulação" ou "profundidade de modulação", chamada de "d=peak deviation" na página 1 do artigo do Chowning, pode ou não ser usada explicitamente na sua implementação; provavelmente ela será usada se você estiver trabalhando com dois [osc~], mas não se você estiver trabalhando com dois [cos~] ou [sin~]. Esta amplitude instantânea do oscilador "interno" da FM é definida como A[n]=fm*I[n] (ou d=I*m na notação da pg. 1 do artigo), e representa a variação da frequência instantânea do oscilador "externo" (que varia entre fc+A[n] e fc-A[n]).

Espero ter esclarecido sua dúvida!

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Alessandro Palmeira -

Eu estou usando dois [osc~] mesmo.. Eu estava realmente aplicando o I[n] no primeiro seno, e não no segundo. Me confundi um pouco com a Fig. 10. Na verdade ainda não entendi o que significam as duas entradas das unidades geradoras com o símbolo de um envelope ADSR.

E como as coisas estão soando parecidas com os instrumentos reais, acho que deve estar certo sorriso

Agora surgiu outra dúvida: no envelope do tambor, eu posso separá-lo em duas Rexponencial, usando -beta no primeiro e +beta no segundo? Acho que ficaria algo como isso aqui:

Em resposta à Alessandro Palmeira

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Olás!

Para quem perdeu a última aula, a entrega ficou para domingo 16/11 até 23:55.

Sobre o envelope do tambor, o enunciado sugere o uso de um AR exponencial (que não é um dos que já está implementado), usando o mesmo beta. Apesar de a figura não ficar idêntica à do paper, a ideia ao usar o instrumento é tentar chegar suficientemente próximo dela; em particular, atentar para as curvaturas da rampa de ataque e de relaxamento, e também para as amplitudes e durações indicadas lá (por exemplo, o ataque começa com amplitude 0.75, e não com 0, dura 3 ms, e o relaxamento dura 12 ms naquela figura).

Em resposta à Marcelo Queiroz

Re: Duvida sobre trabalho maior 2

por Alessandro Palmeira -

Acho que os valores são mais próximos de 40ms e 160 ms, pois o P3=0.2s..

Agora sobre o bloco de madeira, precisamos fazer uma nova FMdinamica? Uma que ao invés de receber dois índices recebe no lugar um sinal - um envelope - como na figura 16? Acho que não entendi nada desse instrumento...

Em resposta à Alessandro Palmeira

Re: Duvida sobre trabalho maior 2

por Marcelo Queiroz -

Sim, sobre as durações, eu li errado as figuras... 40 ms e 160 ms faz sentido!

Sobre o bloco de madeira, dê uma lida na resposta que dei ao Thilo sobre o assunto (http://paca.ime.usp.br/mod/forum/discuss.php?d=26619&parent=76403), e veja se resolve sua dúvida também. Não precisa mudar nada da especificação, mas o índice (entre I1 e I2) vai acompanhar (com um ajuste no expoente) o que quer que seja enviado como envelope de amplitude.