2016-12-28 2 views
0

Kürzlich habe ich eine Wellenform basierend auf Amplitude in p5.js, aber nur mit Funktion preload(), die eine einzige basierte Spur verwendet. Ich möchte dieses Skript in Android Studio einfügen, um eine beliebige Musikdatei von meinem Telefon auszuwählen und diese Wellenform für jeden Ton zu erstellen.Lade irgendeinen Song von meiner Wahl in p5.js

Hier ist mein Code:

var song; 
var button; 
var amp; 
var volHistory = []; 

function preload() { 
song = loadSound('da.mp3'); 
} 
function btnToggle() { 
if (song.isPlaying()) { 
     song.pause(); 
} else { 
     song.play(); 
} 
} 

function setup() { 
createCanvas(1080, 720); 
song.play(); 
angleMode(DEGREES); 
button = createButton('toggle'); 
button.mousePressed(btnToggle); 
amp = new p5.Amplitude(); 
} 

function draw() { 
background(0); 
var ampLevel = amp.getLevel(); 

volHistory.push(ampLevel); 
stroke(255); 
noFill(); 
translate(width/2, height/2); 
beginShape(); 
for (i = 0; i < 360; i++) { 
     var r = map(volHistory[i], 0, 1, 150, 700); 
     var x = r * cos(i); 
     var y = r * sin(i); 
     vertex(x, y); 
} 
endShape(); 

if (volHistory.length > 360) { 
     volHistory.splice(0, 1); 
} 

} 

Gibt es eine andere Funktionalität in Java aus meiner Wahl mit jedem Song zu ersetzen?

function preload() { 
song = loadSound('da.mp3'); 
} 

Antwort

0

Sie möchten mit einer lokalen Datei in Ihrem JavaScript-Code arbeiten. Das Problem ist, dass JavaScript nicht auf lokale Dateien zugreifen kann, ohne dass der Benutzer eine Datei speziell auswählt. Denken Sie darüber nach, wie gruselig es wäre, wenn jede von Ihnen besuchte Website Ihre Festplatte lesen könnte!

Sie können jedoch festlegen, dass der Benutzer eine Datei auswählen und dann mit dieser Datei in Ihrem JavaScript-Code arbeiten kann. Siehe die Antworten auf this question für weitere Informationen, oder versuchen Sie eine Google-Suche von "JavaScript-Zugriff lokale Datei" für eine Tonne von Ergebnissen.

+0

Danke. Ich werde mehr darüber recherchieren –