本文整理匯總了Java中javax.sound.midi.MidiChannel類的典型用法代碼示例。如果您正苦於以下問題:Java MidiChannel類的具體用法?Java MidiChannel怎麽用?Java MidiChannel使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
MidiChannel類屬於javax.sound.midi包,在下文中一共展示了MidiChannel類的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: playWarningSound
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
private static void playWarningSound() {
// if (2 > 1) {
// return;
// }
try {
// int velocity = 127; // max volume
int velocity = 90; // max volume
int sound = 65;
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
MidiChannel channel = synthesizer.getChannels()[9]; // drums channel.
for (int i = 0; i < 10; i++) {
Thread.sleep(100);
channel.noteOn(sound + i, velocity);
Thread.sleep(100);
channel.noteOff(sound + i);
}
} catch (MidiUnavailableException | InterruptedException e1) {
e1.printStackTrace();
}
}
示例2: getChannels
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public MidiChannel[] getChannels() {
synchronized (control_mutex) {
// if (external_channels == null) => the synthesizer is not open,
// create 16 proxy channels
// otherwise external_channels has the same length as channels array
if (external_channels == null) {
external_channels = new SoftChannelProxy[16];
for (int i = 0; i < external_channels.length; i++)
external_channels[i] = new SoftChannelProxy();
}
MidiChannel[] ret;
if (isOpen())
ret = new MidiChannel[channels.length];
else
ret = new MidiChannel[16];
for (int i = 0; i < ret.length; i++)
ret[i] = external_channels[i];
return ret;
}
}
示例3: getChannels
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
@Override
public MidiChannel[] getChannels() {
synchronized (control_mutex) {
// if (external_channels == null) => the synthesizer is not open,
// create 16 proxy channels
// otherwise external_channels has the same length as channels array
if (external_channels == null) {
external_channels = new SoftChannelProxy[16];
for (int i = 0; i < external_channels.length; i++)
external_channels[i] = new SoftChannelProxy();
}
MidiChannel[] ret;
if (isOpen())
ret = new MidiChannel[channels.length];
else
ret = new MidiChannel[16];
for (int i = 0; i < ret.length; i++)
ret[i] = external_channels[i];
return ret;
}
}
示例4: render
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
@Override
public void render() throws RenderCommandException {
sleepUntil(getFrame().playOutTime);
for(MidiMessage msg : getFrame().messages) {
if(msg instanceof ShortMessage) {
final ShortMessage sm = (ShortMessage)msg;
final MidiChannel ch = synth.getChannels()[sm.getChannel()];
switch(sm.getCommand()) {
case ShortMessage.NOTE_ON:
ch.noteOn(sm.getData1(), sm.getData2());
continue;
case ShortMessage.NOTE_OFF:
ch.noteOff(sm.getData1(), sm.getData2());
continue;
case ShortMessage.PROGRAM_CHANGE:
ch.programChange(sm.getData1());
continue;
case ShortMessage.CONTROL_CHANGE:
ch.controlChange(sm.getData1(), sm.getData2());
continue;
}
}
throw new RenderCommandException("Unknown MIDI Command:" + MidiToString.toString(msg));
}
}
示例5: allNotesOff
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
/**
* Stops all notes from playing on all MIDI channels.
*/
public static void allNotesOff(Synthesizer synth)
{
try {
if (!synth.isOpen()) {
synth.open();
}
MidiChannel[] channels = synth.getChannels();
for (int i=0; i < channels.length; i++)
{
channels[i].allNotesOff();
}
} catch (MidiUnavailableException e)
{
throw new JFugueException(JFugueException.GENERAL_ERROR);
}
}
示例6: loadMidiSeq
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public void loadMidiSeq(File newseqfile) {
try {
seq_errmsg = null;
Sequence newseq = MidiSystem.getSequence(newseqfile);
seq = newseq;
seqfile = newseqfile;
// boolean running = seqr.isRunning();
seqr.stop();
// Reset All Channels
for(MidiChannel c : softsynth.getChannels())
c.resetAllControllers();
seqr.setSequence(seq);
seqr.setTickPosition(0);
seqr.start();
} catch (Throwable e1) {
seq_errmsg = e1.toString();
}
}
示例7: getChannel
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
/**
* Returns the MIDI channel.
*
* @param synthesizer the synthesizer.
* @param channel the channel number.
* @param required if {@code true} then throws exception when not found or not available. Otherwise returns {@code null}.
* @return the MIDI channel.
*/
public static MidiChannel getChannel(Synthesizer synthesizer, int channel, boolean required) {
MidiChannel[] channels = synthesizer.getChannels();
if (channel >= channels.length || channels[channel] == null) {
if (required) {
throw new IllegalArgumentException("Channel " + channel + " is not available");
} else {
return null;
}
}
return channels[channel];
}
示例8: noteOn
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public void noteOn(MidiChannel channel, VoiceStatus voice, int noteNumber,
int velocity) {
this.channel = channel;
this.voice = voice;
this.noteNumber = noteNumber;
this.velocity = velocity;
on = true;
}
示例9: main
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public static void main(String[] args) throws Exception
{
AudioSynthesizer synth = new SoftSynthesizer();
AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
AudioInputStream stream = synth.openStream(format, null);
// Make all voices busy, e.g.
// send midi on and midi off on all available voices
MidiChannel ch1 = synth.getChannels()[0];
ch1.programChange(48); // Use contionus instrument like string ensemble
for (int i = 0; i < synth.getMaxPolyphony(); i++) {
ch1.noteOn(64, 64);
ch1.noteOff(64);
}
// Now send single midi on, and midi off message
ch1.noteOn(64, 64);
ch1.noteOff(64);
// Read 10 sec from stream, by this time all voices should be inactvie
stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 20)));
// If no voice are active, then this test will pass
VoiceStatus[] v = synth.getVoiceStatus();
for (int i = 0; i < v.length; i++) {
if(v[i].active)
{
throw new RuntimeException("Not all voices are inactive!");
}
}
// Close the synthesizer after use
synth.close();
}
示例10: createTestSoundbankWithChannelMixer
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public static Soundbank createTestSoundbankWithChannelMixer() {
SF2Soundbank soundbank = createTestSoundbank();
SimpleSoundbank simplesoundbank = new SimpleSoundbank();
SimpleInstrument simpleinstrument = new SimpleInstrument() {
public ModelChannelMixer getChannelMixer(MidiChannel channel,
AudioFormat format) {
return new ModelAbstractChannelMixer() {
boolean active = true;
public boolean process(float[][] buffer, int offset, int len) {
for (int i = 0; i < buffer.length; i++) {
float[] cbuffer = buffer[i];
for (int j = 0; j < cbuffer.length; j++) {
cbuffer[j] = -cbuffer[j];
}
}
return active;
}
public void stop() {
active = false;
}
};
}
};
simpleinstrument.add(soundbank.getInstruments()[0]);
simplesoundbank.addInstrument(simpleinstrument);
return simplesoundbank;
}
示例11: main
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
public static void main(String[] args) throws Exception {
AudioSynthesizer synth = new SoftSynthesizer();
synth.openStream(null, null);
assertTrue(synth.getChannels() != null);
assertTrue(synth.getChannels().length == 16);
MidiChannel[] channels = synth.getChannels();
for (int i = 0; i < channels.length; i++) {
assertTrue(channels[i] != null);
}
synth.close();
}
示例12: noteOn
import javax.sound.midi.MidiChannel; //導入依賴的package包/類
@Override
public void noteOn(MidiChannel channel, VoiceStatus voice, int noteNumber,
int velocity) {
this.channel = channel;
this.voice = voice;
this.noteNumber = noteNumber;
this.velocity = velocity;
on = true;
}