2010-05-25 5 views
2

Je programme actuellement un éditeur de clavier de piano, un peu comme celui que vous pouvez trouver dans Cubase, Logic, Reason etc ..Midiplayer arrête la lecture des sons après 16 notes

Je possède ce grand réseau, double nouveau tableau int [ 13] [9], ce qui en fait 13 lignes, 9 colonnes. La première colonne [0-12] [0] est le clavier, en haut il y a "high C" (note midi 72) et en bas il y a "low C" (note midi 60). Cette colonne est un tableau de JButtons et lorsque vous appuyez par exemple sur "low C", la note 60 est jouée par le synthétiseur.

J'ai réussi à obtenir un bon fonctionnement pour l'instant, mais un de mes problèmes est que je ne peux jouer que 16 notes d'affilée, alors c'est comme si le synthétiseur s'arrêtait ou quelque chose comme ça.

Avez-vous une idée de ce qu'est le problème?

Un peu du code:

import java.awt.*; 
     import javax.swing.*; 
     import java.awt.event.*; 
     import java.util.*; 
     import javax.sound.midi.*; 

    actionPerformed(ActionEvent ae){ 
    for(int i = 0; i<13; i++){ 
      if(o== instr[i]){//instr is the button array 
       SpelaTangent(i); 
      } 
     } 

    } 

    public void SpelaTangent(int tangent){ 


      int [] klaviatur = new int[13]; 
      for(int i = 0; i<13; i++){ 

       klaviatur[i] = (72-i); 
       } 

         try { 
         Synthesizer synth = MidiSystem.getSynthesizer();     

synth.open(); 
         final MidiChannel[] mc = synth.getChannels();    

Instrument[]  instrument = synth.getDefaultSoundbank().getInstruments();  

       synth.loadInstrument(instrument[1]); 
         mc[0].noteOn(klaviatur[tangent],350); 
         mc[0].noteOff(klaviatur[tangent],350); 

        } catch (MidiUnavailableException e) {} 
    } 

aide est très appréciée!

Répondre

0

Vous semblez initialiser le système MIDI nouveau pour chaque note jouée. Essayez de déplacer le code d'initialisation à un endroit où il n'est exécuté qu'une seule fois au début de votre programme et réutilisez le MidiChannel que vous créez là.

Questions connexes