Visualizzazione risultati 1 fino 6 di 6

Discussione: Array di suoni

  1. #1
    Guest

    Predefinito Array di suoni

    Rieccomi con un altro problema

    Sto creando un pianoforte virtuale in javascript, ma non riesco a fare in modo che le note che vengono suonate possano poi essere riascoltate. Ho associato ad ogni nota un'immagine e quando voglio riascoltare le note premute, prendo l'array delle immagini corrispondenti e utilizzo la setTimeout per riprodurre le note a intervalli regolari:

    Codice:
    function loop(i, immagini) {
    	if(i == immagini.length)
    		return;
    	i++;
    	var indice = immagini[i].getAttribute("id");
    	oggetti[indice].Play();
    	setTimeout(function() {loop(i, immagini);}, 500);
    }
    
    function playButton() {
    	var display = document.getElementById("display");
    	var immagini = display.getElementsByTagName("img");
    	var i = 0;
    	loop(i, immagini);
    }
    "display" è il div contenente le immagini corrispondenti alle note premute e "oggetti" è l'array contenente gli object corrispondenti alle note.
    Facendo così, ogni volta riproduce un gruppo di note diverso..
    purtroppo per specifiche di progetto non posso usare nè jquery, nè html5.. non so proprio più come risolvere.. qualcuno può aiutarmi? grazie! spero di aver dato informazioni sufficienti..

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Citazione Originalmente inviato da ciakfoto Visualizza messaggio
    Facendo così, ogni volta riproduce un gruppo di note diverso..
    Cioè?? Il problema è che non riproduce quello che vuoi? Quale è il problema? Ci sono errori? Puoi linkare la pagina (o una bozza) per vedere lo script?

    Ciao!

  3. #3
    Guest

    Predefinito

    Provo ad isolare il problema. In sostanza quello che voglio fare è: dato l'array di object corrispondenti ai suoni midi caricati nella pagina html, riprodurli uno alla volta ad intervalli di tempo regolari quando si preme un tasto.

    Ho pensato ad una funzione di questo tipo.. ma non va..

    Codice:
    function suona() {
    	var i = 0;
    	while(i < oggetti.length) {
    		setTimeout("oggetti[i].Play()", 500);
    		i++;
    	}
    }

  4. #4
    Guest

    Predefinito

    Codice:
    function ciclo(i) {
    	if(i == oggetti.length)
    		return;
    	oggetti[i].Play();
    	i++;
    	setTimeout(function() {ciclo(i);}, 500);
    }
    
    function playNotes() {
    	var i = 0;
    	ciclo(i);
    }
    in questo modo funzionerebbe.. ma non mi suona tutti i midi, ne suona alcuni all'inizio, poi rimane in silenzio per un po' di tempo e ne suona altri..

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,683

    Predefinito

    Puoi linkare una pagina di esempio? A me funziona...

    Ciao!
    Ultima modifica di alemoppo : 16-05-2013 alle ore 22.54.07

  6. #6
    Guest

    Predefinito

    Ecco la pagina di esempio

    La funzione getClass() individua gli oggetti appartenenti alla classe specificata dal parametro stringa. Serve per distinguere i midi supportati da explorer e quelli supportati da firefox. Non posso usare gli Audio() in javascript e devo fare in modo che funzioni sia su firefox sia su internet explorer. Quindi ho duvuto usare il tag object per inserire i midi specificando il classid supportato da explorer, poi l'ho duplicato dinamicamente in javascript e ho ottenuto l'array oggetti. Il problema, come si può vedere, è che non si sentono tutte le note anche se gli autoplay partono..

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •