Midiplayer stops playing sounds after 16 notes.
Posted
by user349673
on Stack Overflow
See other posts from Stack Overflow
or by user349673
Published on 2010-05-25T07:37:58Z
Indexed on
2010/05/25
7:41 UTC
Read the original article
Hit count: 276
Hi.
I am currently programming a Piano Keyboard editor, much like the one you can find in Cubase, Logic, Reason etc..
I have this big grid, double array new int [13][9], which makes it 13 rows, 9 columns. The first column [0-12][0] is the Keyboard, at the top there's "high C" (midi note 72) and at the bottom there's "low C" (midi note 60). That column is an array of JButtons and when you press for example "low C", note 60 is being played by the Synthesizer.
I've gotten this to work pretty OK as for now, but one problem I have is that I can only play 16 notes in a row, then it's like the Synthesizer shuts down or something.
Do you guys have ANY idea of what the problem is?
A bit of the 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) {}
}
Help is very much appreciated!
© Stack Overflow or respective owner