Antworten auf deine Fragen:
Neues Thema erstellen

Javascript Frage

C

consansri

Guest

Hallo,

ich bin gerade daran einen Audiovisualizer für einen eigenen Webplayer zu programmieren.
Mein Ziel ist es auf einem Canvas Objekt immer die Frequenzen des gerade spielenden Audio Objekts anzuzeigen.

Zur Erklärung:
Immer wenn Play gedrückt wird die initPlayer Funktion mit dem entsprechenden audioElement aufgerufen.

Code des Visualizers:

var canvas, ctx, source, context, analyser, fbc_array, bars, bar_x, bar_width, bar_height;
var audio = [document.getElementById("aBleibBeiUns"), document.getElementById("aOffline"), document.getElementById("aLeuchtturm"), document.getElementById("aImmerBegleiten"), document.getElementById("aCan'tHelpFallingInLove"), document.getElementById("aDerGedanke"), document.getElementById("aGefälltMir"),document.getElementById("aGL713"),document.getElementById("aDuBistDa"),document.getElementById("aAllOfMe"),document.getElementById("aCelloSuiteNo2"),document.getElementById("aDerSchwan"),document.getElementById("aRhapsodie")];

function initPlayer(audio){

document.getElementById('audioselect').appendChild(audio);
context = new AudioContext(); //DIE ANZAHL IST AUF 6 BESCHRÄNKT

analyser = context.createAnalyser();
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');

try{
source = context.createMediaElementSource(audio); //WIE KANN ICH DAS SOURCE ELEMENT IMMER WIEDER NEU ERSTELLEN BZW. DIE VERBINDUNG MIT DER VORHERIGEN SOURCE NODE ENTFERNEN?
source.connect(analyser);
}catch(e){console.log(e);}
analyser.connect(context.destination);

new frameLooper();
}
//loop Grafik
function frameLooper(){

window.requestAnimationFrame(frameLooper);
fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
ctx.clearRect(0,0, canvas.width, canvas.height);
ctx.fillStyle = '#333'; //Color of the Bars
bars = 400;
for (var i = 0; i < bars; i++){
bar_x = i * 6;
bar_width = 5;
bar_height = -(fbc_array / 2);
//fillRect(x,y,width,height)
ctx.fillRect(bar_x, canvas.height, bar_width, bar_height);
}
}

Und hier noch der Code aus dem die Funktion ausgeführt wird:
function aselect(snmbr){
var audio = [document.getElementById("aBleibBeiUns"), document.getElementById("aOffline"), document.getElementById("aLeuchtturm"), document.getElementById("aImmerBegleiten"), document.getElementById("aCan'tHelpFallingInLove"), document.getElementById("aDerGedanke"), document.getElementById("aGefälltMir"),document.getElementById("aGL713"),document.getElementById("aDuBistDa"),document.getElementById("aAllOfMe"),document.getElementById("aCelloSuiteNo2"),document.getElementById("aDerSchwan"),document.getElementById("aRhapsodie")];

if(!audio[snmbr].paused){
audio[snmbr].pause();
document.getElementById("a"+snmbr).style.backgroundColor="rgba(241,241,241, .8)";
document.getElementById("at"+snmbr).style.color="#333";
} else if(audio[snmbr].paused){
audio[snmbr].play();
new initPlayer(audio[snmbr], snmbr); // AUFRUF
audio[snmbr].volume = document.getElementById("currentvolume").value/100;
new playtime(snmbr);
}
for(var i=0;i < audio.length; i++){
if(i != snmbr){
audio.pause();
audio.currentTime = 0;
}
}
}
 

Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben