Jouer un son aavec un bpm precis

Résolu
nien Messages postés 43 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 31 mars 2008 - 11 nov. 2004 à 21:17
JBAware Messages postés 174 Date d'inscription lundi 23 septembre 2002 Statut Membre Dernière intervention 6 avril 2011 - 27 nov. 2004 à 20:01
bonjour ..
alors ouveau que je suis je m'attaque a de grd projet je veux realiser un sampleur...mais j'ai un probleme grace a la classe suivante je peut lire un son mais je ne sais pas comment faire pour la jouer tant de foi a la minute .. j'ai pourtant eplucher google en long large et travers
mais bon
si qq a l'aimable gentillesse de me donner la solution ca serait super classe!!!!
ou mieux si qq peut me m'indiquer ou je peut trouver la source de la fonction loop(int i) de la class clip ca serait de la balle
merci

/* player non bloquant
* play stop
* restart on replay
* looping marche mais merdique (à revoir)
*/
package sampleur51;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Object.*;

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.Line;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Mixer;
import java.util.Timer.*;
import javax.swing.Timer;

class player implements LineListener
{
private static final int EXTERNAL_BUFFER_SIZE = 128000;
private Clip m_clip;
private File clipFile;
private static int loop;
private static boolean b;
private String nomSample;
static ActionListener taskPerformer2;
static ActionListener taskPerformer;
public Timer t2;
public player( String nom )
{

nomSample = new String(nom);

}
public void update(LineEvent event)
{
if (event.getType().equals(LineEvent.Type.STOP))
{
m_clip.close();
}
else if (event.getType().equals(LineEvent.Type.CLOSE))
{
//System.exit(0);
}

}
public void stopfile()
{
m_clip.close();
clipFile=null;
}
public void playfile()
{

if(clipFile==null)
{
clipFile = new File(nomSample);

AudioInputStream audioInputStream = null;
try
{
audioInputStream = AudioSystem.getAudioInputStream(clipFile);
}
catch (Exception e)
{}
if (audioInputStream != null)
{
AudioFormat format = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
try
{
m_clip = (Clip) AudioSystem.getLine(info);
m_clip.addLineListener(this);
m_clip.open(audioInputStream);
}
catch (LineUnavailableException e)
{}
catch (IOException e)
{}
m_clip.open();
}
else
{}
}
else
{}
}

public Clip getClip()
{
return m_clip;
}
}

5 réponses

JBAware Messages postés 174 Date d'inscription lundi 23 septembre 2002 Statut Membre Dernière intervention 6 avril 2011 1
17 nov. 2004 à 12:45
Salut

il faut que tu joues le son avec une certaine fréquence donc ton algo ressemble à peu près à ca :


JoueBPM(int nbBPM){
int temps = 60000/nbBpm 
// 60000 correspondant au nombre de millisecondes dns 1 //minute
Tant que Vrai{
 joueSon;
 attend( temps);
}
}


8-) JB@WAre
3
JBAware Messages postés 174 Date d'inscription lundi 23 septembre 2002 Statut Membre Dernière intervention 6 avril 2011 1
17 nov. 2004 à 14:10
précision

utilise la classe Thread et sa méthode sleep(int nbMillis);

8-) JB@WAre
3
JBAware Messages postés 174 Date d'inscription lundi 23 septembre 2002 Statut Membre Dernière intervention 6 avril 2011 1
27 nov. 2004 à 20:01
OK


public void playBPM(int nbBPM){

java.lang.Thread t = new java.lang.Tread();
long temps = 60000/nbBPM;

while (true){
this.playFile();
t.sleep(temps);
}
}


Voili VOILOU

8-) JB@WAre
3
_jules_ Messages postés 25 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 12 novembre 2004
12 nov. 2004 à 13:53
comment est ce que vous arrivez a trouver de pareilles classes dans l'API...... pour moi il est si flou et illisible....... comment voir que tel import correspond a tel méthode .......

ou vous trichez, ou vous etes tres forts !!!

Jules
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nien Messages postés 43 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 31 mars 2008
27 nov. 2004 à 17:31
yo ..
au risque de parraitre inculte et idiot .. tu voudrait pas m'aider un peu plus .. steuplai .. paske je sais pas du tout mainupler ce genre de chose .. et si tu pouvvait me fournir 2 3 explication sucinte.. ca serait sympa come tout
....
ou qq ligne qui me permettrai de faire tourné playfile() en boucle ..
stp ...
merci d'avancec
0
Rejoignez-nous