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?
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?
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
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...)
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()?
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
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?
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.
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). ???
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).
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.
Obrigado, professor! Deu certinho
Abraços
Antonio
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..
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?
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!
Ola Prof, alguma chance de ganharmos mais um ou dois diss de prazo? A
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
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:
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).
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...
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.