當前位置: 首頁>>代碼示例>>Java>>正文


Java MidiChannel類代碼示例

本文整理匯總了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();
        }
    }
 
開發者ID:teddyted,項目名稱:iSeleda,代碼行數:23,代碼來源:Dialogs.java

示例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;
        }
    }
 
開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:22,代碼來源:SoftSynthesizer.java

示例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;
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:23,代碼來源:SoftSynthesizer.java

示例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));
	}
}
 
開發者ID:arisona,項目名稱:ether,代碼行數:27,代碼來源:JavaMidiSynthesizerTarget.java

示例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);
    }
}
 
開發者ID:d2fn,項目名稱:passage,代碼行數:20,代碼來源:Player.java

示例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();
	}

}
 
開發者ID:bluenote10,項目名稱:gervill,代碼行數:23,代碼來源:SimpleMidiPlayer.java

示例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];
}
 
開發者ID:softelnet,項目名稱:sponge,代碼行數:21,代碼來源:MidiUtils.java

示例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;
}
 
開發者ID:SunburstApps,項目名稱:OpenJSharp,代碼行數:9,代碼來源:ModelAbstractOscillator.java

示例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();
}
 
開發者ID:lambdalab-mirror,項目名稱:jdk8u-jdk,代碼行數:35,代碼來源:NoteOverFlowTest.java

示例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;
}
 
開發者ID:lambdalab-mirror,項目名稱:jdk8u-jdk,代碼行數:34,代碼來源:TestPreciseTimestampRendering.java

示例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();

}
 
開發者ID:lambdalab-mirror,項目名稱:jdk8u-jdk,代碼行數:13,代碼來源:GetChannels.java

示例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;
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:10,代碼來源:ModelAbstractOscillator.java


注:本文中的javax.sound.midi.MidiChannel類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。