موضوع محذوف - تم حذفه
موضوع محذوف - تم حذفه
اعجبني ال motion blur لاكن هل الخوارزمية سريعه في الوقت الحقيقي real-time .. اين الكووود لنرى الخوارزمية المستعمله ؟ P: .
;
let audio = new Audio();
audio.src = 'Junk/kara.mp3';
audio.play();
let audCtx = new AudioContext(),
analyser = audCtx.createAnalyser(),
source = audCtx.createMediaElementSource(audio);
let cX, cY, sum = 0, xOff = 0, yOff = 46877, angle = 0;
source.connect(analyser);
analyser.connect(audCtx.destination);
function setup () {
createCanvas(windowWidth, windowHeight);
noStroke();
cX = windowWidth/2;
cY = windowHeight/2;
}
let last = 0, sOff = 500;
var d = 1;
var time = 0;
function draw () {
sum = 0;
noStroke();
let amplitudes = new Uint8Array(100);
analyser.getByteFrequencyData(amplitudes);
for(let i = 0; i < 100; i++){
sum += amplitudes[i];
}
sum /= 100;
fill('rgba(255, 255, 255, 0.1)');
rect(0, 0, width, sum*2);
background('rgba(15, 14, 98, 0.2)');
let x = noise(xOff) * sum * sin(angle) * 2 * cos(angle),
y = noise(yOff) * sum * sin(angle) * 2 * cos(angle);
let x2 = noise(xOff) * sum * sin(-angle) * 2.5,
y2 = noise(yOff) * sum * cos(angle) * 2.5;
let size = sum * noise(sOff);
if(sum - last > 10){
d*=-1; // to flip rotation direction
}
fill('#c4a4d4');
ellipse(cX +x, cY +y, size, size);
fill('#a2c6b2');
ellipse(cX -x,cY -y, size, size);
fill('#c4a4d4');
ellipse(cX +x2, cY +y2, sum, sum);
fill('#a2c6b2');
ellipse(cX -x2,cY -y2, sum, sum);
xOff += 0.01;
yOff += 0.02;
sOff += 0.01;
angle += sum/8000 * d;
last = sum;
}
اهااا .. انت اعتمدت على ال height للقيم المستقبلة من ال analyzer للاصوات :D .. رائع ياصديقي ... القيم المعادة اقصى قيمة هي analyzer.fftSize/2 او بالاعتماد على ال getByteFrequencyData .length اي قد تكون 512 او 256 من الممكن تغيير القيمة - ساجرب لاحقا - بدل ال100 .
let amplitudes = new Uint8Array(100);
analyser.getByteFrequencyData(amplitudes);
for(let i = 0; i < 100; i++){
sum += amplitudes[i];
}
sum /= 100;
التعليقات