We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Como posso usar o aúdio e o "desenho de frequência" fora do draw() ?
import ddf.minim.*;
Minim minim;
AudioPlayer groove;
void setup()
{
size(512, 200, P3D);
minim = new Minim(this);
groove = minim.loadFile("groove.mp3", 2048);
groove.loop();
}
void draw()
{
background(0);
stroke(255);
for(int i = 0; i < groove.bufferSize() - 1; i++)
{
line(i, 50 + groove.left.get(i)*50, i+1, 50 + groove.left.get(i+1)*50);
line(i, 150 + groove.right.get(i)*50, i+1, 150 + groove.right.get(i+1)*50);
}
}
Answers
see
http://code.compartmental.net/minim/fft_class_fft.html
Não é isto. Quero que esta parte do código fique fora da função draw() "
"
Pq vc quer o loop fora de draw()? Tá tendo problemas com performance?
Why do you want the loop outside draw()? Having any performance issues?
Pra isso teremos q usar um thread() separado c/ loop infinito só pra lidar c/ isso:
For that we're gonna need to use some separate thread() w/ infinite loop just to deal w/ that:
https://Processing.org/reference/thread_.html
Infelizmente ñ devemos modificar o canvas do sketch fora do Thread "Animation".
Unfortunately we shouldn't modify sketch's canvas outside "Animation" Thread.
Ao invés disto, criamos um PGraphics separado e usamos line() ali.
Instead, we create some separate PGraphics and use line() there.
Então o único encargo de draw() é mostrar o resultado final do PGraphics.
Then draw()'s solely task is to display PGraphics's final result.
Podemos escolher image(), set() ou mesmo background() pra por o PGraphics no canvas.
We can choose image(), set() or even background() in order to put PGraphics in the canvas.
GoToLoop, pq eu preciso executar outras tarefas antes desse trecho de código.
Pode me mandar algum código de exemplo para fazer isso fora do draw()?
O que faz a função bufferSize() ? Posso usá-la fora do draw() ?
http://code.Compartmental.net/minim/audioplayer_method_buffersize.html
Como afirmara antes:
As I had stated before:
Método bufferSize() do AudioPlayer ñ modifica o canvas do sketch em nada.
AudioPlayer's bufferSize() method doesn't change sketch's canvas at all.
Mas é claramente óbvio line() faz exatamente isso! :-\"
But it's clearly obvious line() does exactly that! :-\"
O que faz a função groove.left.get(i)*50? Posso usá-la fora do draw()?
@GoToLoop, fiz um programa usando praticamente toda a tela do computador, mas a linha não está indo até o final (height). Como posso melhorar isso?
Tem q saber os valores mínimo & máximo q y varia pra poder fazer o map() de 0 & height:
https://Processing.org/reference/map_.html